From d2d279969bad48a6446786463dadab49b432ae45 Mon Sep 17 00:00:00 2001 From: Jorrin Date: Wed, 1 May 2024 20:40:43 +0200 Subject: [PATCH 01/49] Update package.json --- packages/provider-utils/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/provider-utils/package.json b/packages/provider-utils/package.json index 443106a..d841e98 100644 --- a/packages/provider-utils/package.json +++ b/packages/provider-utils/package.json @@ -29,7 +29,7 @@ }, "prettier": "@movie-web/prettier-config", "dependencies": { - "@movie-web/providers": "https://github.com/sussy-code/providers", + "@movie-web/providers": "github:sussy-code/providers", "parse-hls": "^1.0.7", "srt-webvtt": "^2.0.0", "tmdb-ts": "^1.6.1" From 8280fa992cafa16c66957e0e58f3184697d05cda Mon Sep 17 00:00:00 2001 From: Jorrin Date: Wed, 1 May 2024 20:42:56 +0200 Subject: [PATCH 02/49] Update pnpm-lock.yaml --- pnpm-lock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7ba1261..5381679 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -287,7 +287,7 @@ importers: packages/provider-utils: dependencies: '@movie-web/providers': - specifier: https://github.com/sussy-code/providers + specifier: github:sussy-code/providers version: https://codeload.github.com/sussy-code/providers/tar.gz/ead928c5d09cad1c23aeab58687d3fae7f426dba parse-hls: specifier: ^1.0.7 From e308033ffe793f2f5c273b40f60cb40909559d45 Mon Sep 17 00:00:00 2001 From: Jorrin Date: Wed, 1 May 2024 22:14:43 +0200 Subject: [PATCH 03/49] buffer style color --- .github/workflows/build-mobile.yml | 4 ++-- apps/expo/src/components/player/VideoSlider.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-mobile.yml b/.github/workflows/build-mobile.yml index 10df0f4..7ca80fc 100644 --- a/.github/workflows/build-mobile.yml +++ b/.github/workflows/build-mobile.yml @@ -2,8 +2,8 @@ name: build mobile app on: pull_request: - branches: - - "*" + types: [opened, ready_for_review] + workflow_dispatch: permissions: contents: write diff --git a/apps/expo/src/components/player/VideoSlider.tsx b/apps/expo/src/components/player/VideoSlider.tsx index f7344da..a0d8cc2 100644 --- a/apps/expo/src/components/player/VideoSlider.tsx +++ b/apps/expo/src/components/player/VideoSlider.tsx @@ -115,7 +115,7 @@ const VideoSlider = ({ onSlidingComplete }: VideoSliderProps) => { const bufferStyle = useAnimatedStyle(() => { return { width: bufferTranslateX.value + knobSize_, - backgroundColor: "rgba(255, 255, 255, 0.5)", + backgroundColor: theme.ash300.val, borderRadius: trackSize_ / 2, }; }); From 4484bfe2510b6785b876358c4adcc2ae636ed2de Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Wed, 1 May 2024 23:05:12 +0200 Subject: [PATCH 04/49] chore: bump action version --- .github/workflows/build-mobile.yml | 2 +- pnpm-lock.yaml | 18695 ++++++++++++--------------- 2 files changed, 8593 insertions(+), 10104 deletions(-) diff --git a/.github/workflows/build-mobile.yml b/.github/workflows/build-mobile.yml index 7ca80fc..56df6fd 100644 --- a/.github/workflows/build-mobile.yml +++ b/.github/workflows/build-mobile.yml @@ -97,7 +97,7 @@ jobs: run: cd apps/expo && pnpm ipa - name: Upload movie-web.ipa as artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: ipa path: ./apps/expo/ios/build/movie-web.ipa diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5381679..0cf33ae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '9.0' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -13,22 +13,22 @@ importers: version: link:tooling/prettier '@turbo/gen': specifier: ^1.11.3 - version: 1.12.2(@swc/core@1.4.8(@swc/helpers@0.5.6))(@types/node@20.12.7)(typescript@5.4.3) + version: 1.13.3(@types/node@20.12.8)(typescript@5.4.5) prettier: specifier: ^3.1.1 - version: 3.2.4 + version: 3.2.5 turbo: specifier: ^1.11.3 - version: 1.12.2 + version: 1.13.3 typescript: specifier: ^5.4.3 - version: 5.4.3 + version: 5.4.5 apps/expo: dependencies: '@expo/metro-config': specifier: ^0.17.3 - version: 0.17.3(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + version: 0.17.7(@react-native/babel-preset@0.74.81) '@movie-web/api': specifier: workspace:* version: link:../../packages/api @@ -43,112 +43,112 @@ importers: version: link:../../packages/tmdb '@octokit/rest': specifier: ^20.0.2 - version: 20.0.2 + version: 20.1.0 '@react-native-anywhere/polyfill-base64': specifier: 0.0.1-alpha.0 version: 0.0.1-alpha.0 '@react-navigation/native': specifier: ^6.1.9 - version: 6.1.9(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 6.1.17(react-native@0.73.6)(react@18.2.0) '@salihgun/react-native-video-processor': specifier: ^0.3.1 - version: 0.3.1(ffmpeg-kit-react-native@6.0.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-video@5.2.1)(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 0.3.1(ffmpeg-kit-react-native@6.0.2)(react-native-video@5.2.1)(react-native@0.73.6)(react@18.2.0) '@tamagui/animations-moti': specifier: ^1.94.0 - version: 1.94.0(react-dom@18.2.0(react@18.2.0))(react-native-reanimated@3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)) + version: 1.96.0(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react@18.2.0) '@tamagui/babel-plugin': specifier: ^1.94.0 - version: 1.94.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.4.3) + version: 1.96.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5) '@tamagui/config': specifier: ^1.94.0 - version: 1.94.0(react-dom@18.2.0(react@18.2.0))(react-native-reanimated@3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 1.96.0(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react-native@0.73.6)(react@18.2.0) '@tamagui/metro-plugin': specifier: ^1.94.0 - version: 1.94.0(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react-native-reanimated@3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-svg@14.1.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)(tailwindcss@3.4.3(ts-node@10.9.2(@swc/core@1.4.8(@swc/helpers@0.5.6))(@types/node@20.12.7)(typescript@5.4.3)))(typescript@5.4.3) + version: 1.96.0(@babel/core@7.24.5)(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react-native-safe-area-context@4.8.2)(react-native-svg@14.1.0)(react-native@0.73.6)(react@18.2.0)(tailwindcss@3.4.3)(typescript@5.4.5) '@tamagui/toast': specifier: 1.94.0 - version: 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 1.94.0(react-native@0.73.6)(react@18.2.0) '@tanstack/react-query': specifier: ^5.22.2 - version: 5.22.2(react@18.2.0) + version: 5.32.1(react@18.2.0) burnt: specifier: ^0.12.2 - version: 0.12.2(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 0.12.2(expo@50.0.17)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) class-variance-authority: specifier: ^0.7.0 version: 0.7.0 expo: specifier: ~50.0.14 - version: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + version: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) expo-alternate-app-icons: specifier: ^0.1.7 - version: 0.1.7(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 0.1.7(expo@50.0.17)(react-native@0.73.6)(react@18.2.0) expo-application: specifier: ~5.8.3 - version: 5.8.3(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 5.8.4(expo@50.0.17) expo-av: specifier: ~13.10.5 - version: 13.10.5(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 13.10.6(expo@50.0.17) expo-brightness: specifier: ~11.8.0 - version: 11.8.0(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 11.8.0(expo@50.0.17) expo-build-properties: specifier: ~0.11.1 - version: 0.11.1(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 0.11.1(expo@50.0.17) expo-clipboard: specifier: ^5.0.1 - version: 5.0.1(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 5.0.1(expo@50.0.17) expo-constants: specifier: ~15.4.5 - version: 15.4.5(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 15.4.6(expo@50.0.17) expo-file-system: specifier: ~16.0.8 - version: 16.0.8(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 16.0.9(expo@50.0.17) expo-haptics: specifier: ~12.8.1 - version: 12.8.1(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 12.8.1(expo@50.0.17) expo-linear-gradient: specifier: ^12.7.2 - version: 12.7.2(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 12.7.2(expo@50.0.17) expo-linking: specifier: ~6.2.2 - version: 6.2.2(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 6.2.2(expo@50.0.17) expo-media-library: specifier: ~15.9.1 - version: 15.9.1(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 15.9.2(expo@50.0.17) expo-navigation-bar: specifier: ^2.8.1 - version: 2.8.1(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 2.8.1(expo@50.0.17) expo-network: specifier: ~5.8.0 - version: 5.8.0(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 5.8.0(expo@50.0.17) expo-pod-pinner: specifier: ^1.0.1 version: 1.0.1 expo-router: specifier: ~3.4.8 - version: 3.4.8(expo-constants@15.4.5(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))))(expo-linking@6.2.2(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))))(expo-modules-autolinking@1.10.3)(expo-status-bar@1.11.1)(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))))(react-dom@18.2.0(react@18.2.0))(react-native-reanimated@3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-screens@3.29.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 3.4.8(expo-constants@15.4.6)(expo-linking@6.2.2)(expo-modules-autolinking@1.10.3)(expo-status-bar@1.11.1)(expo@50.0.17)(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react-native-safe-area-context@4.8.2)(react-native-screens@3.29.0)(react-native@0.73.6)(react@18.2.0) expo-screen-orientation: specifier: ~6.4.1 - version: 6.4.1(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 6.4.1(expo@50.0.17) expo-splash-screen: specifier: ~0.26.4 - version: 0.26.4(expo-modules-autolinking@1.10.3)(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 0.26.4(expo-modules-autolinking@1.10.3)(expo@50.0.17) expo-status-bar: specifier: ~1.11.1 version: 1.11.1 expo-system-ui: specifier: ^2.9.3 - version: 2.9.3(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 2.9.4(expo@50.0.17) expo-web-browser: specifier: ^12.8.2 - version: 12.8.2(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + version: 12.8.2(expo@50.0.17) ffmpeg-kit-react-native: specifier: ^6.0.2 - version: 6.0.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 6.0.2(react-native@0.73.6)(react@18.2.0) immer: specifier: ^10.0.3 - version: 10.0.3 + version: 10.1.1 iso-639-1: specifier: ^3.1.2 version: 3.1.2 @@ -160,65 +160,65 @@ importers: version: 18.2.0(react@18.2.0) react-native: specifier: 0.73.6 - version: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + version: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) react-native-context-menu-view: specifier: ^1.14.1 - version: 1.14.1(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 1.16.0(react-native@0.73.6)(react@18.2.0) react-native-gesture-handler: specifier: ~2.14.1 - version: 2.14.1(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 2.14.1(react-native@0.73.6)(react@18.2.0) react-native-markdown-display: specifier: ^7.0.2 - version: 7.0.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 7.0.2(react-native@0.73.6)(react@18.2.0) react-native-mmkv: specifier: ^2.12.2 - version: 2.12.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 2.12.2(react-native@0.73.6)(react@18.2.0) react-native-modal: specifier: ^13.0.1 - version: 13.0.1(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 13.0.1(react-native@0.73.6)(react@18.2.0) react-native-quick-base64: specifier: ^2.0.8 - version: 2.0.8(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 2.1.2(react-native@0.73.6)(react@18.2.0) react-native-quick-crypto: specifier: ^0.6.1 - version: 0.6.1(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 0.6.1(react-native@0.73.6)(react@18.2.0) react-native-reanimated: specifier: ~3.6.2 - version: 3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 3.6.3(@babel/core@7.24.5)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6)(@babel/plugin-proposal-optional-chaining@7.21.0)(@babel/plugin-transform-arrow-functions@7.24.1)(@babel/plugin-transform-shorthand-properties@7.24.1)(@babel/plugin-transform-template-literals@7.24.1)(react-native@0.73.6)(react@18.2.0) react-native-safe-area-context: specifier: ~4.8.2 - version: 4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 4.8.2(react-native@0.73.6)(react@18.2.0) react-native-screens: specifier: ~3.29.0 - version: 3.29.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 3.29.0(react-native@0.73.6)(react@18.2.0) react-native-svg: specifier: 14.1.0 - version: 14.1.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 14.1.0(react-native@0.73.6)(react@18.2.0) react-native-web: specifier: ^0.19.10 - version: 0.19.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 0.19.11(react-dom@18.2.0)(react@18.2.0) subsrt-ts: specifier: ^2.1.2 version: 2.1.2 tamagui: specifier: ^1.94.0 - version: 1.94.0(@types/react@18.2.52)(immer@10.0.3)(react-dom@18.2.0(react@18.2.0))(react-native-web@0.19.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + version: 1.96.0(@types/react@18.3.1)(immer@10.1.1)(react-dom@18.2.0)(react-native-web@0.19.11)(react-native@0.73.6)(react@18.2.0) text-encoding-polyfill: specifier: ^0.6.7 version: 0.6.7 zustand: specifier: ^4.4.7 - version: 4.4.7(@types/react@18.2.52)(immer@10.0.3)(react@18.2.0) + version: 4.5.2(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0) devDependencies: '@babel/core': specifier: ^7.23.9 - version: 7.23.9 + version: 7.24.5 '@babel/preset-env': specifier: ^7.23.9 - version: 7.23.9(@babel/core@7.23.9) + version: 7.24.5(@babel/core@7.24.5) '@babel/runtime': specifier: ^7.23.9 - version: 7.23.9 + version: 7.24.5 '@movie-web/eslint-config': specifier: workspace:^0.2.0 version: link:../../tooling/eslint @@ -230,25 +230,25 @@ importers: version: link:../../tooling/typescript '@tanstack/eslint-plugin-query': specifier: ^5.20.1 - version: 5.20.1(eslint@8.56.0)(typescript@5.4.3) + version: 5.32.1(eslint@8.57.0)(typescript@5.4.5) '@types/babel__core': specifier: ^7.20.5 version: 7.20.5 '@types/react': specifier: ^18.2.48 - version: 18.2.52 + version: 18.3.1 babel-plugin-module-resolver: specifier: ^5.0.0 - version: 5.0.0 + version: 5.0.2 eslint: specifier: ^8.56.0 - version: 8.56.0 + version: 8.57.0 prettier: specifier: ^3.1.1 - version: 3.2.4 + version: 3.2.5 typescript: specifier: ^5.4.3 - version: 5.4.3 + version: 5.4.5 packages/api: dependencies: @@ -276,19 +276,19 @@ importers: version: 1.3.11 eslint: specifier: ^8.56.0 - version: 8.56.0 + version: 8.57.0 prettier: specifier: ^3.1.1 - version: 3.2.4 + version: 3.2.5 typescript: specifier: ^5.4.3 - version: 5.4.3 + version: 5.4.5 packages/provider-utils: dependencies: '@movie-web/providers': specifier: github:sussy-code/providers - version: https://codeload.github.com/sussy-code/providers/tar.gz/ead928c5d09cad1c23aeab58687d3fae7f426dba + version: github.com/sussy-code/providers/ead928c5d09cad1c23aeab58687d3fae7f426dba parse-hls: specifier: ^1.0.7 version: 1.0.7 @@ -297,7 +297,7 @@ importers: version: 2.0.0 tmdb-ts: specifier: ^1.6.1 - version: 1.6.1 + version: 1.8.0 devDependencies: '@movie-web/eslint-config': specifier: workspace:^0.2.0 @@ -310,19 +310,19 @@ importers: version: link:../../tooling/typescript eslint: specifier: ^8.56.0 - version: 8.56.0 + version: 8.57.0 prettier: specifier: ^3.1.1 - version: 3.2.4 + version: 3.2.5 typescript: specifier: ^5.4.3 - version: 5.4.3 + version: 5.4.5 packages/tmdb: dependencies: tmdb-ts: specifier: ^1.6.1 - version: 1.6.1 + version: 1.8.0 devDependencies: '@movie-web/eslint-config': specifier: workspace:^0.2.0 @@ -335,13 +335,13 @@ importers: version: link:../../tooling/typescript eslint: specifier: ^8.56.0 - version: 8.56.0 + version: 8.57.0 prettier: specifier: ^3.1.1 - version: 3.2.4 + version: 3.2.5 typescript: specifier: ^5.4.3 - version: 5.4.3 + version: 5.4.5 tooling/colors: devDependencies: @@ -356,40 +356,40 @@ importers: version: link:../typescript eslint: specifier: ^8.56.0 - version: 8.56.0 + version: 8.57.0 prettier: specifier: ^3.1.1 - version: 3.2.4 + version: 3.2.5 typescript: specifier: ^5.4.3 - version: 5.4.3 + version: 5.4.5 tooling/eslint: dependencies: '@typescript-eslint/eslint-plugin': specifier: ^6.19.1 - version: 6.20.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0)(typescript@5.4.3) + version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': specifier: ^6.19.1 - version: 6.20.0(eslint@8.56.0)(typescript@5.4.3) + version: 6.21.0(eslint@8.57.0)(typescript@5.4.5) eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.56.0) + version: 9.1.0(eslint@8.57.0) eslint-config-turbo: specifier: ^1.11.3 - version: 1.12.2(eslint@8.56.0) + version: 1.13.3(eslint@8.57.0) eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0) + version: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0) eslint-plugin-jsx-a11y: specifier: ^6.8.0 - version: 6.8.0(eslint@8.56.0) + version: 6.8.0(eslint@8.57.0) eslint-plugin-react: specifier: ^7.33.2 - version: 7.33.2(eslint@8.56.0) + version: 7.34.1(eslint@8.57.0) eslint-plugin-react-hooks: specifier: ^4.6.0 - version: 4.6.0(eslint@8.56.0) + version: 4.6.2(eslint@8.57.0) devDependencies: '@movie-web/prettier-config': specifier: workspace:^0.1.0 @@ -399,16 +399,16 @@ importers: version: link:../typescript '@types/eslint': specifier: ^8.56.2 - version: 8.56.2 + version: 8.56.10 eslint: specifier: ^8.56.0 - version: 8.56.0 + version: 8.57.0 prettier: specifier: ^3.1.1 - version: 3.2.4 + version: 3.2.5 typescript: specifier: ^5.4.3 - version: 5.4.3 + version: 5.4.5 tooling/github: {} @@ -416,7890 +416,1727 @@ importers: dependencies: '@ianvs/prettier-plugin-sort-imports': specifier: ^4.1.1 - version: 4.1.1(prettier@3.2.4) + version: 4.2.1(prettier@3.2.5) prettier: specifier: ^3.1.1 - version: 3.2.4 + version: 3.2.5 prettier-plugin-tailwindcss: specifier: ^0.5.10 - version: 0.5.11(@ianvs/prettier-plugin-sort-imports@4.1.1(prettier@3.2.4))(prettier@3.2.4) + version: 0.5.14(@ianvs/prettier-plugin-sort-imports@4.2.1)(prettier@3.2.5) devDependencies: '@movie-web/tsconfig': specifier: workspace:^0.1.0 version: link:../typescript typescript: specifier: ^5.4.3 - version: 5.4.3 + version: 5.4.5 tooling/typescript: {} packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - - '@alloc/quick-lru@5.2.0': + /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} + dev: false - '@ampproject/remapping@2.2.1': - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 - '@babel/code-frame@7.10.4': + /@babel/code-frame@7.10.4: resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} + dependencies: + '@babel/highlight': 7.24.5 + dev: false - '@babel/code-frame@7.23.5': - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + /@babel/code-frame@7.24.2: + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.5 + picocolors: 1.0.0 - '@babel/compat-data@7.23.5': - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + /@babel/compat-data@7.24.4: + resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.23.9': - resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} + /@babel/core@7.24.5: + resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helpers': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@babel/generator@7.23.6': - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + /@babel/generator@7.24.5: + resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.5 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 - '@babel/helper-annotate-as-pure@7.22.5': + /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.5 - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.5 - '@babel/helper-compilation-targets@7.23.6': + /@babel/helper-compilation-targets@7.23.6: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.23.0 + lru-cache: 5.1.1 + semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.23.10': - resolution: {integrity: sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==} + /@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.24.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.5 + semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.22.15': + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.5): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.5.0': - resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} + /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.5): + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.5 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color - '@babel/helper-environment-visitor@7.22.20': + /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} - '@babel/helper-function-name@7.23.0': + /@babel/helper-function-name@7.23.0: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/types': 7.24.5 - '@babel/helper-hoist-variables@7.22.5': + /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.5 - '@babel/helper-member-expression-to-functions@7.23.0': - resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + /@babel/helper-member-expression-to-functions@7.24.5: + resolution: {integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.5 - '@babel/helper-module-imports@7.22.15': - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + /@babel/helper-module-imports@7.24.3: + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.5 - '@babel/helper-module-transforms@7.23.3': - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + /@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-simple-access': 7.24.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/helper-validator-identifier': 7.24.5 - '@babel/helper-optimise-call-expression@7.22.5': + /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.5 - '@babel/helper-plugin-utils@7.22.5': - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.24.0': - resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + /@babel/helper-plugin-utils@7.24.5: + resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==} engines: {node: '>=6.9.0'} - '@babel/helper-remap-async-to-generator@7.22.20': + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.5): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.24.5 - '@babel/helper-replace-supers@7.22.20': - resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.24.5 + '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-simple-access@7.22.5': - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + /@babel/helper-simple-access@7.24.5: + resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.5 - '@babel/helper-split-export-declaration@7.22.6': - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + /@babel/helper-split-export-declaration@7.24.5: + resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.5 - '@babel/helper-string-parser@7.23.4': - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + /@babel/helper-string-parser@7.24.1: + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + /@babel/helper-validator-identifier@7.24.5: + resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.23.5': + /@babel/helper-validator-option@7.23.5: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.22.20': - resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + /@babel/helper-wrap-function@7.24.5: + resolution: {integrity: sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.24.0 + '@babel/types': 7.24.5 - '@babel/helpers@7.23.9': - resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} + /@babel/helpers@7.24.5: + resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + transitivePeerDependencies: + - supports-color - '@babel/highlight@7.23.4': - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + /@babel/highlight@7.24.5: + resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.0 - '@babel/parser@7.23.9': - resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} + /@babel/parser@7.24.5: + resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.24.5 - '@babel/parser@7.24.0': - resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==} - engines: {node: '>=6.0.0'} - hasBin: true + /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3': - resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3': - resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7': - resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-proposal-async-generator-functions@7.20.7': + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.24.5): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) + dev: false - '@babel/plugin-proposal-class-properties@7.18.6': + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.5): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + dev: false + + /@babel/plugin-proposal-decorators@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-decorators': 7.24.1(@babel/core@7.24.5) + dev: false - '@babel/plugin-proposal-decorators@7.23.9': - resolution: {integrity: sha512-hJhBCb0+NnTWybvWq2WpbCYDOcflSbx0t+BYP65e5R9GVnukiDTi+on5bFkk4p7QGuv190H6KfNiV9Knf/3cZA==} + /@babel/plugin-proposal-export-default-from@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-+0hrgGGV3xyYIjOrD/bUZk/iUwOIGuoANfRfVg1cPhYBxF+TIXSEcc42DqzBICmWsnAQ+SfKedY0bj8QD+LuMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.5) + dev: false - '@babel/plugin-proposal-export-default-from@7.23.3': - resolution: {integrity: sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==} + /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.24.5): + resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) + dev: false - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.5): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + dev: false - '@babel/plugin-proposal-numeric-separator@7.18.6': + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.5): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) + dev: false - '@babel/plugin-proposal-object-rest-spread@7.20.7': + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.5): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) + dev: false - '@babel/plugin-proposal-optional-catch-binding@7.18.6': + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.24.5): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) + dev: false - '@babel/plugin-proposal-optional-chaining@7.21.0': + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.5): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + dev: false - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 - '@babel/plugin-syntax-async-generators@7.8.4': + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.5): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-class-properties@7.12.13': + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.5): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-class-static-block@7.14.5': + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.5): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-decorators@7.23.3': - resolution: {integrity: sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==} + /@babel/plugin-syntax-decorators@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: false - '@babel/plugin-syntax-dynamic-import@7.8.3': + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-export-default-from@7.23.3': - resolution: {integrity: sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==} + /@babel/plugin-syntax-export-default-from@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-cNXSxv9eTkGUtd0PsNMK8Yx5xeScxfpWOUAxE+ZPAXXEcAMOC3fk7LRdXq5fvpra2pLx2p1YtkAhpUbB2SwaRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: false - '@babel/plugin-syntax-export-namespace-from@7.8.3': + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-flow@7.23.3': - resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} + /@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: false - '@babel/plugin-syntax-import-assertions@7.23.3': - resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} + /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-import-attributes@7.23.3': - resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} + /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-import-meta@7.10.4': + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-json-strings@7.8.3': + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-jsx@7.23.3': - resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: false - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.5): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-numeric-separator@7.10.4': + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.5): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-object-rest-spread@7.8.3': + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-optional-catch-binding@7.8.3': + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-optional-chaining@7.8.3': + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.5): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-private-property-in-object@7.14.5': + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.5): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-top-level-await@7.14.5': + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.5): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-typescript@7.23.3': - resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: false - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.5): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-arrow-functions@7.23.3': - resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-arrow-functions@7.24.1': + /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.5): resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-async-generator-functions@7.23.9': - resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==} + /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.5): + resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) - '@babel/plugin-transform-async-to-generator@7.23.3': - resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} + /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoped-functions@7.23.3': - resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} + /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-block-scoping@7.23.4': - resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} + /@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-class-properties@7.23.3': - resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} + /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-class-static-block@7.23.4': - resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} + /@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.5): + resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-transform-classes@7.23.8': - resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} + /@babel/plugin-transform-classes@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) + '@babel/helper-split-export-declaration': 7.24.5 + globals: 11.12.0 - '@babel/plugin-transform-computed-properties@7.23.3': - resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} + /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/template': 7.24.0 - '@babel/plugin-transform-destructuring@7.23.3': - resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} + /@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-dotall-regex@7.23.3': - resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} + /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-duplicate-keys@7.23.3': - resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} + /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-dynamic-import@7.23.4': - resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} + /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-exponentiation-operator@7.23.3': - resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} + /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-export-namespace-from@7.23.4': - resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} + /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-flow-strip-types@7.23.3': - resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==} + /@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) + dev: false - '@babel/plugin-transform-for-of@7.23.6': - resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} + /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-function-name@7.23.3': - resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} + /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-json-strings@7.23.4': - resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} + /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-literals@7.23.3': - resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} + /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-logical-assignment-operators@7.23.4': - resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} + /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-transform-member-expression-literals@7.23.3': - resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} + /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-modules-amd@7.23.3': - resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} + /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-modules-commonjs@7.23.3': - resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-simple-access': 7.24.5 - '@babel/plugin-transform-modules-systemjs@7.23.9': - resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==} + /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-identifier': 7.24.5 - '@babel/plugin-transform-modules-umd@7.23.3': - resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} + /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.5): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-new-target@7.23.3': - resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} + /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-nullish-coalescing-operator@7.23.4': - resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} + /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-numeric-separator@7.23.4': - resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} + /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-transform-object-assign@7.23.3': - resolution: {integrity: sha512-TPJ6O7gVC2rlQH2hvQGRH273G1xdoloCj9Pc07Q7JbIZYDi+Sv5gaE2fu+r5E7qK4zyt6vj0FbZaZTRU5C3OMA==} + /@babel/plugin-transform-object-assign@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-I1kctor9iKtupb7jv7FyjApHCuKLBKCblVAeHVK9PB6FW7GI0ac6RtobC3MwwJy8CZ1JxuhQmnbrsqI5G8hAIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: false - '@babel/plugin-transform-object-rest-spread@7.23.4': - resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} + /@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-object-super@7.23.3': - resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} + /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-catch-binding@7.23.4': - resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} + /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-optional-chaining@7.23.4': - resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} + /@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-parameters@7.23.3': - resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} + /@babel/plugin-transform-parameters@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-private-methods@7.23.3': - resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} + /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-private-property-in-object@7.23.4': - resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} + /@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-transform-property-literals@7.23.3': - resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} + /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-react-display-name@7.23.3': - resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} + /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: false - '@babel/plugin-transform-react-jsx-development@7.22.5': + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.5): resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) + dev: false - '@babel/plugin-transform-react-jsx-self@7.23.3': - resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} + /@babel/plugin-transform-react-jsx-self@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-RtCJoUO2oYrYwFPtR1/jkoBEcFuI1ae9a9IMxeyAVa3a1Ap4AnxmyIKG2b2FaJKqkidw/0cxRbWN+HOs6ZWd1w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: false - '@babel/plugin-transform-react-jsx-source@7.23.3': - resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} + /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: false - '@babel/plugin-transform-react-jsx@7.23.4': + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.5): resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-pure-annotations@7.23.3': - resolution: {integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.23.3': - resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) + '@babel/types': 7.24.5 + dev: false + + /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.24.5 + dev: false - '@babel/plugin-transform-reserved-words@7.23.3': - resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + regenerator-transform: 0.15.2 - '@babel/plugin-transform-runtime@7.24.0': - resolution: {integrity: sha512-zc0GA5IitLKJrSfXlXmp8KDqLrnGECK7YRfQBmEKg1NmBOQ7e+KuclBEKJgzifQeUYLdNiAw4B4bjyvzWVLiSA==} + /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-shorthand-properties@7.23.3': - resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + /@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.5): + resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-module-imports': 7.24.3 + '@babel/helper-plugin-utils': 7.24.5 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false - '@babel/plugin-transform-shorthand-properties@7.24.1': + /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.5): resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-spread@7.23.3': - resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.23.3': - resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-template-literals@7.23.3': - resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} + /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-template-literals@7.24.1': + /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.5): resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-typeof-symbol@7.23.3': - resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} + /@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-typescript@7.23.6': - resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} + /@babel/plugin-transform-typescript@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5) + dev: false - '@babel/plugin-transform-unicode-escapes@7.23.3': - resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} + /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-unicode-property-regex@7.23.3': - resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} + /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-unicode-regex@7.23.3': - resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} + /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-transform-unicode-sets-regex@7.23.3': - resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} + /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) + '@babel/helper-plugin-utils': 7.24.5 - '@babel/preset-env@7.23.9': - resolution: {integrity: sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==} + /@babel/preset-env@7.24.5(@babel/core@7.24.5): + resolution: {integrity: sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.5) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.5) + '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.5) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.5) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) + core-js-compat: 3.37.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@babel/preset-flow@7.23.3': - resolution: {integrity: sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==} + /@babel/preset-flow@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5) + dev: false - '@babel/preset-modules@0.1.6-no-external-plugins': + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.5): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/types': 7.24.5 + esutils: 2.0.3 - '@babel/preset-react@7.23.3': - resolution: {integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==} + /@babel/preset-react@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - - '@babel/preset-typescript@7.23.3': - resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.5) + '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.5) + dev: false + + /@babel/preset-typescript@7.24.1(@babel/core@7.24.5): + resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5) + dev: false - '@babel/register@7.23.7': + /@babel/register@7.23.7(@babel/core@7.24.5): resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.5 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.6 + source-map-support: 0.5.21 + dev: false - '@babel/regjsgen@0.8.0': + /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - '@babel/runtime-corejs3@7.23.9': - resolution: {integrity: sha512-oeOFTrYWdWXCvXGB5orvMTJ6gCZ9I6FBjR+M38iKNXCsPxr4xT0RTdg5uz1H7QP8pp74IzPtwritEr+JscqHXQ==} - engines: {node: '>=6.9.0'} - - '@babel/runtime@7.23.9': - resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} + /@babel/runtime-corejs3@7.24.5: + resolution: {integrity: sha512-GWO0mgzNMLWaSYM4z4NVIuY0Cd1fl8cPnuetuddu5w/qGuvt5Y7oUi/kvvQGK9xgOkFJDQX2heIvTRn/OQ1XTg==} engines: {node: '>=6.9.0'} + dependencies: + core-js-pure: 3.37.0 + regenerator-runtime: 0.14.1 + dev: true - '@babel/template@7.23.9': - resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} + /@babel/runtime@7.24.5: + resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 - '@babel/template@7.24.0': + /@babel/template@7.24.0: resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 - '@babel/traverse@7.23.9': - resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.23.9': - resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.24.0': - resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + /@babel/traverse@7.24.5: + resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color - '@craftzdog/react-native-buffer@6.0.5': + /@babel/types@7.24.5: + resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.1 + '@babel/helper-validator-identifier': 7.24.5 + to-fast-properties: 2.0.0 + + /@craftzdog/react-native-buffer@6.0.5(react-native@0.73.6)(react@18.2.0): resolution: {integrity: sha512-Av+YqfwA9e7jhgI9GFE/gTpwl/H+dRRLmZyJPOpKTy107j9Oj7oXlm3/YiMNz+C/CEGqcKAOqnXDLs4OL6AAFw==} + dependencies: + ieee754: 1.2.1 + react-native-quick-base64: 2.1.2(react-native@0.73.6)(react@18.2.0) + transitivePeerDependencies: + - react + - react-native + dev: false - '@cspotcode/source-map-support@0.8.1': + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true - '@egjs/hammerjs@2.0.17': + /@egjs/hammerjs@2.0.17: resolution: {integrity: sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==} engines: {node: '>=0.8.0'} + dependencies: + '@types/hammerjs': 2.0.45 + dev: false - '@emotion/is-prop-valid@0.8.8': + /@emotion/is-prop-valid@0.8.8: resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} + requiresBuild: true + dependencies: + '@emotion/memoize': 0.7.4 + dev: false + optional: true - '@emotion/memoize@0.7.4': + /@emotion/memoize@0.7.4: resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + requiresBuild: true + dev: false + optional: true - '@esbuild/aix-ppc64@0.20.2': + /@esbuild/aix-ppc64@0.20.2: resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] + requiresBuild: true + dev: false + optional: true - '@esbuild/android-arm64@0.20.2': + /@esbuild/android-arm64@0.20.2: resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} cpu: [arm64] os: [android] + requiresBuild: true + dev: false + optional: true - '@esbuild/android-arm@0.20.2': + /@esbuild/android-arm@0.20.2: resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} cpu: [arm] os: [android] + requiresBuild: true + dev: false + optional: true - '@esbuild/android-x64@0.20.2': + /@esbuild/android-x64@0.20.2: resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} cpu: [x64] os: [android] + requiresBuild: true + dev: false + optional: true - '@esbuild/darwin-arm64@0.20.2': + /@esbuild/darwin-arm64@0.20.2: resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] + requiresBuild: true + dev: false + optional: true - '@esbuild/darwin-x64@0.20.2': + /@esbuild/darwin-x64@0.20.2: resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] + requiresBuild: true + dev: false + optional: true - '@esbuild/freebsd-arm64@0.20.2': + /@esbuild/freebsd-arm64@0.20.2: resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] + requiresBuild: true + dev: false + optional: true - '@esbuild/freebsd-x64@0.20.2': + /@esbuild/freebsd-x64@0.20.2: resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] + requiresBuild: true + dev: false + optional: true - '@esbuild/linux-arm64@0.20.2': + /@esbuild/linux-arm64@0.20.2: resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} cpu: [arm64] os: [linux] + requiresBuild: true + dev: false + optional: true - '@esbuild/linux-arm@0.20.2': + /@esbuild/linux-arm@0.20.2: resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} cpu: [arm] os: [linux] + requiresBuild: true + dev: false + optional: true - '@esbuild/linux-ia32@0.20.2': + /@esbuild/linux-ia32@0.20.2: resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.20.2': - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.20.2': - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.20.2': - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.20.2': - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.20.2': - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.20.2': - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.20.2': - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.20.2': - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.20.2': - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.20.2': - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.20.2': - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.20.2': - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.10.0': - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@eslint/js@8.56.0': - resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@expo/bunyan@4.0.0': - resolution: {integrity: sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA==} - engines: {'0': node >=0.10.0} - - '@expo/cli@0.17.8': - resolution: {integrity: sha512-yfkoghCltbGPDbRI71Qu3puInjXx4wO82+uhW82qbWLvosfIN7ep5Gr0Lq54liJpvlUG6M0IXM1GiGqcCyP12w==} - hasBin: true - - '@expo/code-signing-certificates@0.0.5': - resolution: {integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==} - - '@expo/config-plugins@7.8.4': - resolution: {integrity: sha512-hv03HYxb/5kX8Gxv/BTI8TLc9L06WzqAfHRRXdbar4zkLcP2oTzvsLEF4/L/TIpD3rsnYa0KU42d0gWRxzPCJg==} - - '@expo/config-types@50.0.0': - resolution: {integrity: sha512-0kkhIwXRT6EdFDwn+zTg9R2MZIAEYGn1MVkyRohAd+C9cXOb5RA8WLQi7vuxKF9m1SMtNAUrf0pO+ENK0+/KSw==} - - '@expo/config@8.5.4': - resolution: {integrity: sha512-ggOLJPHGzJSJHVBC1LzwXwR6qUn8Mw7hkc5zEKRIdhFRuIQ6s2FE4eOvP87LrNfDF7eZGa6tJQYsiHSmZKG+8Q==} - - '@expo/devcert@1.1.0': - resolution: {integrity: sha512-ghUVhNJQOCTdQckSGTHctNp/0jzvVoMMkVh+6SHn+TZj8sU15U/npXIDt8NtQp0HedlPaCgkVdMu8Sacne0aEA==} - - '@expo/env@0.2.1': - resolution: {integrity: sha512-deZmRS7Dvp18VM8s559dq/ZjPlV1D9vtLoLXwHmCK/JYOvtNptdKsfxcWjI7ewmo6ln2PqgNI9HRI74q6Wk2eA==} - - '@expo/env@0.2.2': - resolution: {integrity: sha512-m9nGuaSpzdvMzevQ1H60FWgf4PG5s4J0dfKUzdAGnDu7sMUerY/yUeDaA4+OBo3vBwGVQ+UHcQS9vPSMBNaPcg==} - - '@expo/fingerprint@0.6.0': - resolution: {integrity: sha512-KfpoVRTMwMNJ/Cf5o+Ou8M/Y0EGSTqK+rbi70M2Y0K2qgWNfMJ1gm6sYO9uc8lcTr7YSYM1Rme3dk7QXhpScNA==} - hasBin: true - - '@expo/image-utils@0.4.1': - resolution: {integrity: sha512-EZb+VHSmw+a5s2hS9qksTcWylY0FDaIAVufcxoaRS9tHIXLjW5zcKW7Rhj9dSEbZbRVy9yXXdHKa3GQdUQIOFw==} - - '@expo/json-file@8.3.0': - resolution: {integrity: sha512-yROUeXJXR5goagB8c3muFLCzLmdGOvoPpR5yDNaXrnTp4euNykr9yW0wWhJx4YVRTNOPtGBnEbbJBW+a9q+S6g==} - - '@expo/metro-config@0.17.3': - resolution: {integrity: sha512-YW8ixbaz6yL7/Mg1rJJejiAAVQQKjGY1wXvT2Dh487r/r9/j1yE1YRS/oRY1yItYzbnHvO0p0jMnEGfiFYL3Tg==} - peerDependencies: - '@react-native/babel-preset': '*' - - '@expo/metro-config@0.17.6': - resolution: {integrity: sha512-WaC1C+sLX/Wa7irwUigLhng3ckmXIEQefZczB8DfYmleV6uhfWWo2kz/HijFBpV7FKs2cW6u8J/aBQpFkxlcqg==} - peerDependencies: - '@react-native/babel-preset': '*' - - '@expo/metro-runtime@3.1.3': - resolution: {integrity: sha512-u1CaQJJlSgvxBB5NJ6YMVvSDTTRzjT71dHpEBnKPZhpFv5ebVry52FZ2sEeEEA6mHG5zGxWXmHImW3hNKHh8EA==} - peerDependencies: - react-native: '*' - - '@expo/osascript@2.1.0': - resolution: {integrity: sha512-bOhuFnlRaS7CU33+rFFIWdcET/Vkyn1vsN8BYFwCDEF5P1fVVvYN7bFOsQLTMD3nvi35C1AGmtqUr/Wfv8Xaow==} - engines: {node: '>=12'} - - '@expo/package-manager@1.4.2': - resolution: {integrity: sha512-LKdo/6y4W7llZ6ghsg1kdx2CeH/qR/c6QI/JI8oPUvppsZoeIYjSkdflce978fAMfR8IXoi0wt0jA2w0kWpwbg==} - - '@expo/plist@0.1.0': - resolution: {integrity: sha512-xWD+8vIFif0wKyuqe3fmnmnSouXYucciZXFzS0ZD5OV9eSAS1RGQI5FaGGJ6zxJ4mpdy/4QzbLdBjnYE5vxA0g==} - - '@expo/prebuild-config@6.7.4': - resolution: {integrity: sha512-x8EUdCa8DTMZ/dtEXjHAdlP+ljf6oSeSKNzhycXiHhpMSMG9jEhV28ocCwc6cKsjK5GziweEiHwvrj6+vsBlhA==} - peerDependencies: - expo-modules-autolinking: '>=0.8.1' - - '@expo/rudder-sdk-node@1.1.1': - resolution: {integrity: sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==} - engines: {node: '>=12'} - - '@expo/sdk-runtime-versions@1.0.0': - resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} - - '@expo/server@0.3.0': - resolution: {integrity: sha512-5oIqedpLVMnf1LGI9Xd5OOGmK3DjgH9VpuqVN4e/6DwLT05RZJMyI7ylfG6QSy1e44yOgjv242tLyg0e/zdZ+A==} - - '@expo/spawn-async@1.5.0': - resolution: {integrity: sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew==} - engines: {node: '>=4'} - - '@expo/spawn-async@1.7.2': - resolution: {integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==} - engines: {node: '>=12'} - - '@expo/vector-icons@14.0.0': - resolution: {integrity: sha512-5orm59pdnBQlovhU9k4DbjMUZBHNlku7IRgFY56f7pcaaCnXq9yaLJoOQl9sMwNdFzf4gnkTyHmR5uN10mI9rA==} - - '@expo/xcpretty@4.3.1': - resolution: {integrity: sha512-sqXgo1SCv+j4VtYEwl/bukuOIBrVgx6euIoCat3Iyx5oeoXwEA2USCoeL0IPubflMxncA2INkqJ/Wr3NGrSgzw==} - hasBin: true - - '@floating-ui/core@1.6.0': - resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} - - '@floating-ui/dom@1.6.3': - resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} - - '@floating-ui/react-dom@2.0.8': - resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/react-native@0.10.4': - resolution: {integrity: sha512-R0RiZ+XiC+S2Xw11i+HjXj8/ik006edp2SDGKELOlkP55SNE1UMfxackchi/rJfnv+qL9YHQRNySte967+kyVA==} - peerDependencies: - react: '>=16.8.0' - react-native: '>=0.64.0' - - '@floating-ui/react@0.26.9': - resolution: {integrity: sha512-p86wynZJVEkEq2BBjY/8p2g3biQ6TlgT4o/3KgFKyTWoJLU1GZ8wpctwRqtkEl2tseYA+kw7dBAIDFcednfI5w==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/utils@0.2.1': - resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} - - '@gar/promisify@1.1.3': - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - - '@graphql-typed-document-node/core@3.2.0': - resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@hapi/hoek@9.3.0': - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - - '@hapi/topo@5.1.0': - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - - '@humanwhocodes/config-array@0.11.14': - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/object-schema@2.0.2': - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} - - '@ianvs/prettier-plugin-sort-imports@4.1.1': - resolution: {integrity: sha512-kJhXq63ngpTQ2dxgf5GasbPJWsJA3LgoOdd7WGhpUSzLgLgI4IsIzYkbJf9kmpOHe7Vdm/o3PcRA3jmizXUuAQ==} - peerDependencies: - '@vue/compiler-sfc': '>=3.0.0' - prettier: 2 || 3 - peerDependenciesMeta: - '@vue/compiler-sfc': - optional: true - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@isaacs/ttlcache@1.4.1': - resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} - engines: {node: '>=12'} - - '@jest/create-cache-key-function@29.7.0': - resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/types@26.6.2': - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} - engines: {node: '>= 10.14.2'} - - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jridgewell/gen-mapping@0.3.3': - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.1': - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.1.2': - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.5': - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} - - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - '@jridgewell/trace-mapping@0.3.22': - resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - - '@motionone/animation@10.17.0': - resolution: {integrity: sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg==} - - '@motionone/dom@10.12.0': - resolution: {integrity: sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==} - - '@motionone/easing@10.17.0': - resolution: {integrity: sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg==} - - '@motionone/generators@10.17.0': - resolution: {integrity: sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ==} - - '@motionone/types@10.17.0': - resolution: {integrity: sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA==} - - '@motionone/utils@10.17.0': - resolution: {integrity: sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg==} - - '@movie-web/providers@https://codeload.github.com/sussy-code/providers/tar.gz/ead928c5d09cad1c23aeab58687d3fae7f426dba': - resolution: {tarball: https://codeload.github.com/sussy-code/providers/tar.gz/ead928c5d09cad1c23aeab58687d3fae7f426dba} - version: 2.3.0 - - '@noble/hashes@1.4.0': - resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} - engines: {node: '>= 16'} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@npmcli/fs@1.1.1': - resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} - - '@npmcli/move-file@1.1.2': - resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} - engines: {node: '>=10'} - deprecated: This functionality has been moved to @npmcli/fs - - '@octokit/auth-token@4.0.0': - resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} - engines: {node: '>= 18'} - - '@octokit/core@5.1.0': - resolution: {integrity: sha512-BDa2VAMLSh3otEiaMJ/3Y36GU4qf6GI+VivQ/P41NC6GHcdxpKlqV0ikSZ5gdQsmS3ojXeRx5vasgNTinF0Q4g==} - engines: {node: '>= 18'} - - '@octokit/endpoint@9.0.4': - resolution: {integrity: sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==} - engines: {node: '>= 18'} - - '@octokit/graphql@7.0.2': - resolution: {integrity: sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==} - engines: {node: '>= 18'} - - '@octokit/openapi-types@20.0.0': - resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==} - - '@octokit/plugin-paginate-rest@9.2.1': - resolution: {integrity: sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '5' - - '@octokit/plugin-request-log@4.0.1': - resolution: {integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '5' - - '@octokit/plugin-rest-endpoint-methods@10.4.1': - resolution: {integrity: sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '5' - - '@octokit/request-error@5.0.1': - resolution: {integrity: sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==} - engines: {node: '>= 18'} - - '@octokit/request@8.2.0': - resolution: {integrity: sha512-exPif6x5uwLqv1N1irkLG1zZNJkOtj8bZxuVHd71U5Ftuxf2wGNvAJyNBcPbPC+EBzwYEbBDdSFb8EPcjpYxPQ==} - engines: {node: '>= 18'} - - '@octokit/rest@20.0.2': - resolution: {integrity: sha512-Ux8NDgEraQ/DMAU1PlAohyfBBXDwhnX2j33Z1nJNziqAfHi70PuxkFYIcIt8aIAxtRE7KVuKp8lSR8pA0J5iOQ==} - engines: {node: '>= 18'} - - '@octokit/types@12.6.0': - resolution: {integrity: sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@radix-ui/react-compose-refs@1.0.0': - resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - - '@radix-ui/react-slot@1.0.1': - resolution: {integrity: sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - - '@react-native-anywhere/polyfill-base64@0.0.1-alpha.0': - resolution: {integrity: sha512-OF3idcETV622AyFvvK54ot2EG0G43tZTZJyWtFHtrEKUmoUvSuC5DOMeLino0TwBQJn2s26MBnIPVgokBJb/xw==} - - '@react-native-community/cli-clean@12.3.6': - resolution: {integrity: sha512-gUU29ep8xM0BbnZjwz9MyID74KKwutq9x5iv4BCr2im6nly4UMf1B1D+V225wR7VcDGzbgWjaezsJShLLhC5ig==} - - '@react-native-community/cli-config@12.3.6': - resolution: {integrity: sha512-JGWSYQ9EAK6m2v0abXwFLEfsqJ1zkhzZ4CV261QZF9MoUNB6h57a274h1MLQR9mG6Tsh38wBUuNfEPUvS1vYew==} - - '@react-native-community/cli-debugger-ui@12.3.6': - resolution: {integrity: sha512-SjUKKsx5FmcK9G6Pb6UBFT0s9JexVStK5WInmANw75Hm7YokVvHEgtprQDz2Uvy5znX5g2ujzrkIU//T15KQzA==} - - '@react-native-community/cli-doctor@12.3.6': - resolution: {integrity: sha512-fvBDv2lTthfw4WOQKkdTop2PlE9GtfrlNnpjB818MhcdEnPjfQw5YaTUcnNEGsvGomdCs1MVRMgYXXwPSN6OvQ==} - - '@react-native-community/cli-hermes@12.3.6': - resolution: {integrity: sha512-sNGwfOCl8OAIjWCkwuLpP8NZbuO0dhDI/2W7NeOGDzIBsf4/c4MptTrULWtGIH9okVPLSPX0NnRyGQ+mSwWyuQ==} - - '@react-native-community/cli-platform-android@12.3.6': - resolution: {integrity: sha512-DeDDAB8lHpuGIAPXeeD9Qu2+/wDTFPo99c8uSW49L0hkmZJixzvvvffbGQAYk32H0TmaI7rzvzH+qzu7z3891g==} - - '@react-native-community/cli-platform-ios@12.3.6': - resolution: {integrity: sha512-3eZ0jMCkKUO58wzPWlvAPRqezVKm9EPZyaPyHbRPWU8qw7JqkvnRlWIaYDGpjCJgVW4k2hKsEursLtYKb188tg==} - - '@react-native-community/cli-plugin-metro@12.3.6': - resolution: {integrity: sha512-3jxSBQt4fkS+KtHCPSyB5auIT+KKIrPCv9Dk14FbvOaEh9erUWEm/5PZWmtboW1z7CYeNbFMeXm9fM2xwtVOpg==} - - '@react-native-community/cli-server-api@12.3.6': - resolution: {integrity: sha512-80NIMzo8b2W+PL0Jd7NjiJW9mgaT8Y8wsIT/lh6mAvYH7mK0ecDJUYUTAAv79Tbo1iCGPAr3T295DlVtS8s4yQ==} - - '@react-native-community/cli-tools@12.3.6': - resolution: {integrity: sha512-FPEvZn19UTMMXUp/piwKZSh8cMEfO8G3KDtOwo53O347GTcwNrKjgZGtLSPELBX2gr+YlzEft3CoRv2Qmo83fQ==} - - '@react-native-community/cli-types@12.3.6': - resolution: {integrity: sha512-xPqTgcUtZowQ8WKOkI9TLGBwH2bGggOC4d2FFaIRST3gTcjrEeGRNeR5aXCzJFIgItIft8sd7p2oKEdy90+01Q==} - - '@react-native-community/cli@12.3.6': - resolution: {integrity: sha512-647OSi6xBb8FbwFqX9zsJxOzu685AWtrOUWHfOkbKD+5LOpGORw+GQo0F9rWZnB68rLQyfKUZWJeaD00pGv5fw==} - engines: {node: '>=18'} - hasBin: true - - '@react-native/assets-registry@0.73.1': - resolution: {integrity: sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg==} - engines: {node: '>=18'} - - '@react-native/babel-plugin-codegen@0.73.4': - resolution: {integrity: sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ==} - engines: {node: '>=18'} - - '@react-native/babel-preset@0.73.21': - resolution: {integrity: sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' - - '@react-native/codegen@0.73.3': - resolution: {integrity: sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg==} - engines: {node: '>=18'} - peerDependencies: - '@babel/preset-env': ^7.1.6 - - '@react-native/community-cli-plugin@0.73.17': - resolution: {integrity: sha512-F3PXZkcHg+1ARIr6FRQCQiB7ZAA+MQXGmq051metRscoLvgYJwj7dgC8pvgy0kexzUkHu5BNKrZeySzUft3xuQ==} - engines: {node: '>=18'} - - '@react-native/debugger-frontend@0.73.3': - resolution: {integrity: sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw==} - engines: {node: '>=18'} - - '@react-native/dev-middleware@0.73.8': - resolution: {integrity: sha512-oph4NamCIxkMfUL/fYtSsE+JbGOnrlawfQ0kKtDQ5xbOjPKotKoXqrs1eGwozNKv7FfQ393stk1by9a6DyASSg==} - engines: {node: '>=18'} - - '@react-native/gradle-plugin@0.73.4': - resolution: {integrity: sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg==} - engines: {node: '>=18'} - - '@react-native/js-polyfills@0.73.1': - resolution: {integrity: sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g==} - engines: {node: '>=18'} - - '@react-native/metro-babel-transformer@0.73.15': - resolution: {integrity: sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' - - '@react-native/normalize-color@2.1.0': - resolution: {integrity: sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA==} - - '@react-native/normalize-colors@0.73.2': - resolution: {integrity: sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w==} - - '@react-native/virtualized-lists@0.73.4': - resolution: {integrity: sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog==} - engines: {node: '>=18'} - peerDependencies: - react-native: '*' - - '@react-navigation/bottom-tabs@6.5.11': - resolution: {integrity: sha512-CBN/NOdxnMvmjw+AJQI1kltOYaClTZmGec5pQ3ZNTPX86ytbIOylDIITKMfTgHZcIEFQDymx1SHeS++PIL3Szw==} - peerDependencies: - '@react-navigation/native': ^6.0.0 - react: '*' - react-native: '*' - react-native-safe-area-context: '>= 3.0.0' - react-native-screens: '>= 3.0.0' - - '@react-navigation/core@6.4.10': - resolution: {integrity: sha512-oYhqxETRHNHKsipm/BtGL0LI43Hs2VSFoWMbBdHK9OqgQPjTVUitslgLcPpo4zApCcmBWoOLX2qPxhsBda644A==} - peerDependencies: - react: '*' - - '@react-navigation/elements@1.3.21': - resolution: {integrity: sha512-eyS2C6McNR8ihUoYfc166O1D8VYVh9KIl0UQPI8/ZJVsStlfSTgeEEh+WXge6+7SFPnZ4ewzEJdSAHH+jzcEfg==} - peerDependencies: - '@react-navigation/native': ^6.0.0 - react: '*' - react-native: '*' - react-native-safe-area-context: '>= 3.0.0' - - '@react-navigation/native-stack@6.9.17': - resolution: {integrity: sha512-X8p8aS7JptQq7uZZNFEvfEcPf6tlK4PyVwYDdryRbG98B4bh2wFQYMThxvqa+FGEN7USEuHdv2mF0GhFKfX0ew==} - peerDependencies: - '@react-navigation/native': ^6.0.0 - react: '*' - react-native: '*' - react-native-safe-area-context: '>= 3.0.0' - react-native-screens: '>= 3.0.0' - - '@react-navigation/native@6.1.9': - resolution: {integrity: sha512-AMuJDpwXE7UlfyhIXaUCCynXmv69Kb8NzKgKJO7v0k0L+u6xUTbt6xvshmJ79vsvaFyaEH9Jg5FMzek5/S5qNw==} - peerDependencies: - react: '*' - react-native: '*' - - '@react-navigation/routers@6.1.9': - resolution: {integrity: sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA==} - - '@remix-run/node@1.19.3': - resolution: {integrity: sha512-z5qrVL65xLXIUpU4mkR4MKlMeKARLepgHAk4W5YY3IBXOreRqOGUC70POViYmY7x38c2Ia1NwqL80H+0h7jbMw==} - engines: {node: '>=14.0.0'} - - '@remix-run/router@1.7.2': - resolution: {integrity: sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==} - engines: {node: '>=14'} - - '@remix-run/server-runtime@1.19.3': - resolution: {integrity: sha512-KzQ+htUsKqpBgKE2tWo7kIIGy3MyHP58Io/itUPvV+weDjApwr9tQr9PZDPA3yAY6rAzLax7BU0NMSYCXWFY5A==} - engines: {node: '>=14.0.0'} - - '@remix-run/web-blob@3.1.0': - resolution: {integrity: sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==} - - '@remix-run/web-fetch@4.4.2': - resolution: {integrity: sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==} - engines: {node: ^10.17 || >=12.3} - - '@remix-run/web-file@3.1.0': - resolution: {integrity: sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==} - - '@remix-run/web-form-data@3.1.0': - resolution: {integrity: sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==} - - '@remix-run/web-stream@1.1.0': - resolution: {integrity: sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==} - - '@salihgun/react-native-video-processor@0.3.1': - resolution: {integrity: sha512-LBHmH7dp+gxaXZFaVc+OXwLxhHI/zrqyPO7Y7e0NL0k7/hG3ern/y7T4jlSl8lLjz20nqi1BU3sIE+QBEqNJxg==} - peerDependencies: - ffmpeg-kit-react-native: ^5.1.0 - react: '*' - react-native: '*' - react-native-video: ^5.2.1 - - '@scure/base@1.1.6': - resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} - - '@scure/bip39@1.3.0': - resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} - - '@segment/loosely-validate-event@2.0.0': - resolution: {integrity: sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==} - - '@sideway/address@4.1.5': - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} - - '@sideway/formula@3.0.1': - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - - '@sideway/pinpoint@2.0.0': - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@sinonjs/commons@3.0.1': - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - - '@swc/core-darwin-arm64@1.4.8': - resolution: {integrity: sha512-hhQCffRTgzpTIbngSnC30vV6IJVTI9FFBF954WEsshsecVoCGFiMwazBbrkLG+RwXENTrMhgeREEFh6R3KRgKQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - - '@swc/core-darwin-x64@1.4.8': - resolution: {integrity: sha512-P3ZBw8Jr8rKhY/J8d+6WqWriqngGTgHwtFeJ8MIakQJTbdYbFgXSZxcvDiERg3psbGeFXaUaPI0GO6BXv9k/OQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - - '@swc/core-linux-arm-gnueabihf@1.4.8': - resolution: {integrity: sha512-PP9JIJt19bUWhAGcQW6qMwTjZOcMyzkvZa0/LWSlDm0ORYVLmDXUoeQbGD3e0Zju9UiZxyulnpjEN0ZihJgPTA==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - - '@swc/core-linux-arm64-gnu@1.4.8': - resolution: {integrity: sha512-HvEWnwKHkoVUr5iftWirTApFJ13hGzhAY2CMw4lz9lur2m+zhPviRRED0FCI6T95Knpv7+8eUOr98Z7ctrG6DQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-arm64-musl@1.4.8': - resolution: {integrity: sha512-kY8+qa7k/dEeBq9p0Hrta18QnJPpsiJvDQSLNaTIFpdM3aEM9zbkshWz8gaX5VVGUEALowCBUWqmzO4VaqM+2w==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-x64-gnu@1.4.8': - resolution: {integrity: sha512-0WWyIw432wpO/zeGblwq4f2YWam4pn8Z/Ig4KzHMgthR/KmiLU3f0Z7eo45eVmq5vcU7Os1zi/Zb65OOt09q/w==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-linux-x64-musl@1.4.8': - resolution: {integrity: sha512-p4yxvVS05rBNCrBaSTa20KK88vOwtg8ifTW7ec/yoab0bD5EwzzB8KbDmLLxE6uziFa0sdjF0dfRDwSZPex37Q==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-win32-arm64-msvc@1.4.8': - resolution: {integrity: sha512-jKuXihxAaqUnbFfvPxtmxjdJfs87F1GdBf33il+VUmSyWCP4BE6vW+/ReDAe8sRNsKyrZ3UH1vI5q1n64csBUA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@swc/core-win32-ia32-msvc@1.4.8': - resolution: {integrity: sha512-O0wT4AGHrX8aBeH6c2ADMHgagAJc5Kf6W48U5moyYDAkkVnKvtSc4kGhjWhe1Yl0sI0cpYh2In2FxvYsb44eWw==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.4.8': - resolution: {integrity: sha512-C2AYc3A2o+ECciqsJWRgIpp83Vk5EaRzHe7ed/xOWzVd0MsWR+fweEsyOjlmzHfpUxJSi46Ak3/BIZJlhZbXbg==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@swc/core@1.4.8': - resolution: {integrity: sha512-uY2RSJcFPgNOEg12RQZL197LZX+MunGiKxsbxmh22VfVxrOYGRvh4mPANFlrD1yb38CgmW1wI6YgIi8LkIwmWg==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': ^0.5.0 - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/helpers@0.5.6': - resolution: {integrity: sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==} - - '@swc/types@0.1.5': - resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} - - '@tamagui/accordion@1.94.0': - resolution: {integrity: sha512-73WnEAqv4d1+HRgk3euZTA4zrsD4vhIfe3Spny292Ef62nvXW8gyOhJe5n+w9RtG3MrMNW1jGaWYoCdTOAXUsg==} - peerDependencies: - react: '*' - - '@tamagui/adapt@1.94.0': - resolution: {integrity: sha512-EYPCg1X24CEAs2rmxCYXpoAJK54u12Ycwo/MHxWemcDLi7FwBtaIWyCmzsMjwAF2dDqevrhWQyZFun2RPfC5vg==} - - '@tamagui/alert-dialog@1.94.0': - resolution: {integrity: sha512-y3eItHbnODOBg8dzawyMmonKwiJI6Z1PVEB6/uDXUc9QrCZJefACCCAjgknOZBIFeFDtv+8myFBuqmLnrUjPdA==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/animate-presence@1.94.0': - resolution: {integrity: sha512-vdjwMjXBYaTvlzBKdcxPzuf7opSg/ipXH3debtpVpbBgCllC4r5X8P00btYxLKrkI0I7NVTDUMOQRln1OH4IdQ==} - - '@tamagui/animate@1.94.0': - resolution: {integrity: sha512-UmA5afxrJzBc3m/oP2ZdoEyfmL/2zIQsJjCs6Nci/W5WLIQbbiaKcgKXUNvvRR5qz3sfAsdl4AMVrjkt9wfH3g==} - - '@tamagui/animations-css@1.94.0': - resolution: {integrity: sha512-GLa/DQfHi4615ocZhkl3A43jS3v2MR+h7vvjysLcffoqvOqbL6k1FJmOKNI7HlcgZD6cjmC17KoR7KBNwd9TOA==} - - '@tamagui/animations-moti@1.94.0': - resolution: {integrity: sha512-TOI/p8tI5NI8wMIMgQic8EabcAvIARkF/Ty4Tk71yYZt7X0mrro7OaljGlpwiXc1sg08zL5hUumWwsZ5s4dKfQ==} - - '@tamagui/animations-react-native@1.94.0': - resolution: {integrity: sha512-SVvyyx8nf++5orMSrREIORKKyHPLRF5wPL+lWo5JcRX9sa4KeeOdSFEcJuQhzVqm89ARk/YHOHRE4GPITUCUug==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/aria-hidden@1.94.0': - resolution: {integrity: sha512-/IDSMXglUkrXu8tAjRJU/EheRYYLi5uhSDkLOFDZN0b005xlQW5rb45E1oy3gtBTSV2+dbZFZnCmFCYWbzqf6g==} - peerDependencies: - react: '*' - - '@tamagui/avatar@1.94.0': - resolution: {integrity: sha512-wundEccr+HlVNy5NeRSrsVt30MEzFwxflrizbSgHQydMTEgFR3CBXRqMF8ZLhcUUQHv5ZSqVgjjq4YUdWlXDfQ==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/babel-plugin@1.94.0': - resolution: {integrity: sha512-hx+EXbx12AKlAhqfNbUQWk+QtlPit0eJBrRZrEZodtFeS1GxwhssbZhKsgsEKJmN3d30p+jhZdbamomLSfnNew==} - - '@tamagui/build@1.94.0': - resolution: {integrity: sha512-SrCzg9a6ibu4GfpprLm0r6Gt5txUAUE0qLchaCnhJdmXls0y7y57LgOZkPO6T5IiCjyrVdDmpgxLJqx0+S+/Yg==} - hasBin: true - peerDependencies: - typescript: '*' - - '@tamagui/button@1.94.0': - resolution: {integrity: sha512-1eoYy4GW7kFTEqW7IKYHtO3uayRd1m/yxjybQDnmoE+VT6/oexMXV7AlWR/zbEyAgVLujyfPJa9F0emMzM/RIw==} - peerDependencies: - react: '*' - - '@tamagui/card@1.94.0': - resolution: {integrity: sha512-kyq/A+Jr1A9RjBmQBKHJqYypcxeeAOHu9PE3uTqHsbSwoQIY0qlygu5k6cSl5LEpMhk99vTYH+p3WpUue0ky/w==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/checkbox-headless@1.94.0': - resolution: {integrity: sha512-lqXN8V6E72GTtlKCyapw5VH3hsuHpOjbeY9LYCtvOxVasZFtqP1f3Lq2E2TbNEHb0/DofpdWCrwPLcMJpe7yPQ==} - peerDependencies: - react: '*' - - '@tamagui/checkbox@1.94.0': - resolution: {integrity: sha512-URsXT2ndE7KNXMG8TxY0JXSiZlEZORObX8GeVEqJ4JHBffq8jhkKEYHwXLTerodZFG/MIn0N+8D+JwAzbs8UDw==} - peerDependencies: - react: '*' - - '@tamagui/cli-color@1.94.0': - resolution: {integrity: sha512-Htqs79GLfNvlExDSMjFynkV2cmj46NN/j/MVN7YBbAP9GHYwSEllRAJ9QS4y8oN0z9OzJk/0RWctBbRcubMF1Q==} - - '@tamagui/collapsible@1.94.0': - resolution: {integrity: sha512-SiPi34a2OFDYjaWFPRzzVUVFm/qIwYWQtVpU6rU0gd6FBj+WPTO5fRoUKJJqqB4X92i2yybTBNxZPkgm6emJyQ==} - peerDependencies: - react: '*' - - '@tamagui/collection@1.94.0': - resolution: {integrity: sha512-+mk3JjUDgKGNxsgU4zBe4Ieu85pFOYhAJxOdL4Gl69IaXxdtpgOC3XD9n4uz4QcKyRX9huVV8OpIUdDyj4bJig==} - peerDependencies: - react: '*' - - '@tamagui/colors@1.94.0': - resolution: {integrity: sha512-GrNAf+sQOm9Bxxu9gszvy5bRFEfNN44644MKHbAbSzSP28vEGHcyJe421VtthSjT91FU2O5WmOFmz2zcNj9ZeQ==} - - '@tamagui/compose-refs@1.94.0': - resolution: {integrity: sha512-acbqt+5PR3AQtfJ1eyxAaRArg+40DXLjyJZou57+vZ2fB4bAY1NHBhsiDp0ytKBWDefZWB5ltie7lL3BImBRBg==} - peerDependencies: - react: '*' - - '@tamagui/config-default@1.94.0': - resolution: {integrity: sha512-unJhvES888AEzhd7VMVgY+u57UoEUNOFXL/2yPt1TfyGTpklW04ju/Ph3aiJp2VO057FS/IqfcPtldxC5O7PUQ==} - - '@tamagui/config@1.94.0': - resolution: {integrity: sha512-byYwMhcTk4CpLOiQlB+qJjp+uwONmPZPd+dGxXZqLOhbtw2R6iIjpvuJSoSxHOW+NKv4lEq0wU5dW+T1onhYxQ==} - - '@tamagui/constants@1.94.0': - resolution: {integrity: sha512-2G44sIpoSw7YuK1yIM5dzBg9z5IwYcvnVJ4Tcv2sSPYVvcErZLODTbe3fc4ssXEIVTNPWbhD69LRvq+LW2vV9g==} - peerDependencies: - react: '*' - - '@tamagui/core@1.94.0': - resolution: {integrity: sha512-L6QJ5avPXVzozoMwJEvMnYt4xAO59Ht/nv2kf51c0QCP84BbwsNDrTJztjdWQ2J3f3QOczKCzBPsIOU4iEevVw==} - peerDependencies: - react: '*' - - '@tamagui/create-context@1.94.0': - resolution: {integrity: sha512-WJLbRU2HKppZJBNPvUHBpF6B0sKxG1EQ/0YaQw+H8jIsn3ogSt6NzAR86DkpWg/yahWhz5humcNKwNeNkrIbFA==} - peerDependencies: - react: '*' - - '@tamagui/create-theme@1.94.0': - resolution: {integrity: sha512-xQKfRHpDC6hdrrx9cQzGIZEeMizMAyb9CyvKqOM2qts0xzODhYhUBvP7lFsBoNvS76MD0bHz2P+sRX1orYhx8g==} - - '@tamagui/cubic-bezier-animator@1.94.0': - resolution: {integrity: sha512-P7FmLli3Va2DslINfWJXzxJOCJ3wr5Im3DkE1tfcoHPeO5ksSKbdq4Yxu+0F848SYz+Qu4iVN+PbGSfTL9gHlw==} - - '@tamagui/dialog@1.94.0': - resolution: {integrity: sha512-Cg24UgNLmq2rWZDYIY1PFcISzJ3cOw6V0YXSOLkRr48D77KBwWlm4JUiyQkiu8N8KqIDxGOvaiU4VAzSzrLygw==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/dismissable@1.94.0': - resolution: {integrity: sha512-jWgB2hQin9evkCqv5/WGvuzAQuRuaIfF+NzL+N/V3rVrV9HaoFwtpoRjKrGZSZNUT98msr1vBjfxS9+3m00/Tw==} - peerDependencies: - react: '*' - - '@tamagui/elements@1.94.0': - resolution: {integrity: sha512-pPIl+bUOsIpbxyPNy4OPDfSQQvjDQXkzsPa98T/t8MdN/rFIXZk+5+XzXWdj5bswCXAwRJLK8lHWYIfyEiK5Hw==} - peerDependencies: - react: '*' - react-dom: '*' - - '@tamagui/fake-react-native@1.94.0': - resolution: {integrity: sha512-828RRIlOVmnIW0M3gDvFDg9Q10Kv0yBiQ9MC2noB9tsPhAvEbiZbNVDi10t1jZWPwV3Ee5CaPsh29xKnp4groQ==} - - '@tamagui/floating@1.94.0': - resolution: {integrity: sha512-QQ5ojfSKn2H9925qPNnHwjqlKmXDO/JdBgivn1f1NLk0IMcU8ayayJGoqCsGoLrVOQIGL+qx+Wdn9Oxrhj59CA==} - peerDependencies: - react: '*' - - '@tamagui/focus-scope@1.94.0': - resolution: {integrity: sha512-6paDAuRUHeaLDeiu06m+mD7j3p85xkNS2O5q/7qYAz4pBLD+8iH8sWo/hv7xCOayzQkItGDMMfnI2zyzfE4qWw==} - peerDependencies: - react: '*' - - '@tamagui/focusable@1.94.0': - resolution: {integrity: sha512-khfJTNe6r+jX2P4GryVOH++DkMtQLgUB+GzCD/XqOvnxt5Y4kE++oJ6QeamMkDqkPuWYVXoqKk9LVRTYUempww==} - peerDependencies: - react: '*' - - '@tamagui/font-inter@1.94.0': - resolution: {integrity: sha512-RbsPzicK02DPq9ocPLmfYxUqP6XuAqAFsEH395MLkLLYU6KPkcxrIRpeahX35Zx2mA9PYNJkgv8Y0qUZu8BFtg==} - - '@tamagui/font-silkscreen@1.94.0': - resolution: {integrity: sha512-sWPVH/pTBPLlW1rinLfvsWY8Q5nynJp5GZVSaB7QepfVhRBvvTMNUtdEIatMfvBkLmZZaMmKhwXPdrmwy8kYZQ==} - - '@tamagui/font-size@1.94.0': - resolution: {integrity: sha512-PuqoBbSefk+ZIidreUSXg4B4tPI3EvqfcqJk2YBmkO9aTaPH+m4bvgNo+oXNCrJl5PZea4r53XNqWtpHGa5AaQ==} - peerDependencies: - react: '*' - - '@tamagui/form@1.94.0': - resolution: {integrity: sha512-v7kqdrQ7OMJP4wFLBtXYFIug5V9V1I55NIyILAkwl+brNhmDVEwOsoJXD3DZfBW+xMjhDQITL7fRsW6AfGU/rg==} - peerDependencies: - react: '*' - - '@tamagui/generate-themes@1.94.0': - resolution: {integrity: sha512-LTzRKWtc8bUaiI5KNXHZuSt1Xw7LDhbydpuE1gjsJFBRG0qXKHVEHYimVeJ5wVuvkBmGAaRmybd8AAUNFWj4GQ==} - - '@tamagui/get-button-sized@1.94.0': - resolution: {integrity: sha512-uA3t+HdilpNfhPc/z6h2tGct6zhM8bquC23cEIqj98K9S6XlhfIk5KRsLxh53Vg+Hi07jG+PSah9aErT4+ykUA==} - peerDependencies: - react: '*' - - '@tamagui/get-font-sized@1.94.0': - resolution: {integrity: sha512-c+Ddga34d4jZ6qnX48XUJ1mDXYkuMysaLoPGg6YFOE5eKdWYpDDbGcwrB8Wwh+0SV2ae/1hYQc0JbxHVSvwbNw==} - peerDependencies: - react: '*' - - '@tamagui/get-token@1.94.0': - resolution: {integrity: sha512-MClb6R/0w6cHyr+RnDIx5qQ1mXlJQx92CRPbinBUisiM435t8IBMg7sGi7BhBbLpbXls4HSMjDWwHUpq0+51AQ==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/group@1.94.0': - resolution: {integrity: sha512-BSJ7bwWtz7fgRhazYMIkbmoRquwtaHwSQyVWPhZryegMHcNSesnOIEPQoMTAH6/hiz54Emyaviaw/59YuXIxtw==} - peerDependencies: - react: '*' - - '@tamagui/helpers-node@1.94.0': - resolution: {integrity: sha512-BFTLjLpHMJrNKv0IqJLjlfTdZYBJuy1+HU6CHQNOv/FUqGzDTERceoUWSHLn3+QjlOLP7NbO+8tbOQC1IpkmMA==} - - '@tamagui/helpers-tamagui@1.94.0': - resolution: {integrity: sha512-gVfoRUIs1zZb5zzP87+8slKP/PTHHkIiaLMsVsV3/e4MjegOfDNU9LJDiAAZddQEItu+5kFVCFHgx3Q1ek1r9g==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/helpers@1.94.0': - resolution: {integrity: sha512-7GJN2UztmI5hdmcBwhlGqGg2uxr3+S9LhnjjIitmveXchgqv0Zik4pCLagh9SQeTDoEkoZ5X3/PmM25jbTvGcw==} - - '@tamagui/image@1.94.0': - resolution: {integrity: sha512-FH8zDrP6Mk4zKZMZ8/bgSXBT1LmBV7ZGV8qQu1Frl0zg0G2qGMZhMA1w9vzQVdURMAm99CyYkTguR8LSrvHk8A==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/label@1.94.0': - resolution: {integrity: sha512-G4jMLOfOTbMtrPNr2d3MkBAB82Oa6EuwBbUUqD2dHR0OcDIMi66Hq4+GU+ZexwX2AY+/FKQedVsK3xkqkqSACA==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/linear-gradient@1.94.0': - resolution: {integrity: sha512-lMGw3uQuoMa9bqem2plABUPksWqEYiSPQuBOn1oZ3k1iRtdH1RrGrVmm3Yz4PMr6J/NI3UhR2KQznEiXGLtiSw==} - peerDependencies: - react: '*' - - '@tamagui/list-item@1.94.0': - resolution: {integrity: sha512-f/oQmcRT8zbZ+OI03qMvM53izaD32aI1x65owt5qV+k9c3LQw8ADjczsSV7pVYuv8WbSCxuZvo6804sK14oF4Q==} - peerDependencies: - react: '*' - - '@tamagui/metro-plugin@1.94.0': - resolution: {integrity: sha512-ZBhbnbuXs8ulJXzNDCVij8I5S9hRu6JSGbSFijgMF0YkVx4L/t4JZOjYYbP8PF/KsjZmwq/B2DvqkMBmY55APA==} - - '@tamagui/normalize-css-color@1.94.0': - resolution: {integrity: sha512-Uf65nZneTx6Jvqpq28lGvfMEoXSS4bE3cTlbNbeABwogGd3e5x15NiPkMraq08oPHw/P+rl+844FTEkeMFxv/g==} - - '@tamagui/polyfill-dev@1.94.0': - resolution: {integrity: sha512-aK2XRxzDIlixyn1n+Os+2gL370nbD/SBXi6vb9hfxZmuJH5DpNCMUuFjTzamhd/CjixLhnLLoOZtp1FIA+reLg==} - - '@tamagui/popover@1.94.0': - resolution: {integrity: sha512-5PWAKS/7FGhvkhnUr2wbGhYJmpTYq2G+UrRHW+824/c8RYHLBV9vDiSG4KtJAMQdTFOxllVH5vrw4tBJuzvuvA==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/popper@1.94.0': - resolution: {integrity: sha512-xVhixAz2aXevY7n7zCVX085/9vY7hpbpGDHF7KA+YpOvzWO8GDmU2wP+N/ioKlWrJQtFEKJaVSSJ2Lih3XFzDQ==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/portal@1.94.0': - resolution: {integrity: sha512-ns/fRTL62psU0WnyTR+MEIIGwwp+s90or6zlFe4PsilTKLbW+ZZLA8ovP2F0NOrC7sagBIIYhuD2WxvXprZMXw==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/progress@1.94.0': - resolution: {integrity: sha512-cDTEWJRCbzi98C+pyOlEoFq0acOFBXc12lEyHnD+/lsOCnXQj8tSujx/gHEXl8tiWZMjtKY6SfP/0lhLFhS87g==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/proxy-worm@1.94.0': - resolution: {integrity: sha512-AfKa6QVjsV/lNU2lpoUniawq/w9v+aTFj1IacB3mpgLvGUr6P2ACuE779Fsyl8bqRlIZbQUxmg94EdBfjUOk8w==} - - '@tamagui/radio-group@1.94.0': - resolution: {integrity: sha512-qwHdO/d++/G1rAmGYtcEUF/UiptIuZGz/MoDPPgE9PqKu+iOLvvBdLoL8iK9IcABPf9Fv6YLRVX/PWmGCDPXpg==} - peerDependencies: - react: '*' - - '@tamagui/react-native-media-driver@1.94.0': - resolution: {integrity: sha512-RKwrgx0Cje+j3VOCqiUDiqrNV3hgxbvYmPAbb5YGsPsIj6MOqHjjT5wf5WCGXlRqF2Oqy3q3wKzUpjwRfwVRNQ==} - peerDependencies: - react-native: '*' - - '@tamagui/react-native-use-pressable@1.94.0': - resolution: {integrity: sha512-t4jIdBjvoYo8yCF6ja2ggO2jkKznUE6PfZ8sWWhi92Kph9s4zdFEhnYSx1/VCY3GQ5mnWBa8cftrCKFFWkdM5g==} - peerDependencies: - react: '*' - - '@tamagui/react-native-use-responder-events@1.94.0': - resolution: {integrity: sha512-G6jsichSB3X5ycqxl++jcPbok7bofXmmFYgLH5Rgleo9k7U2NTlWRzkfNAowJ9hLy6doL9Hky5IN/3Kwtpj3vg==} - peerDependencies: - react: '*' - - '@tamagui/remove-scroll@1.94.0': - resolution: {integrity: sha512-jvyv9DiFK66o7U3czDZnRNfbcmQy8kYhFKFukk35VImeurZWKOG3E3kVC2YQhelLJkgzfuUmTcTiWhhwijKFFQ==} - peerDependencies: - react: '*' - - '@tamagui/roving-focus@1.94.0': - resolution: {integrity: sha512-q5jz4iakTT3YnAFmqJSIzckCzNCRTL5oSgZWiJSvNK/JPNbrgBJ275t//DKZyO5Ee7nOj9O2xh+LFZPAtAoM8w==} - peerDependencies: - react: '*' - - '@tamagui/scroll-view@1.94.0': - resolution: {integrity: sha512-77LKh3ectAy9kKJCwFf7ixPm5LXbu3XPn13KUPTYli4SDiQp6kcOgsPdiUepWqghg7r70vY2R1yQai6fBXg92A==} - peerDependencies: - react: '*' - - '@tamagui/select@1.94.0': - resolution: {integrity: sha512-wFB3wcDPc6CmlyC67NUk0wU/S2DB1Ylcy8+VE+DtwcdCS6M0stbNjPvAIyj8JX97xo/IYcq5V2H3yNE72bAUtg==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/separator@1.94.0': - resolution: {integrity: sha512-Tt+A9FsprnG9wtyUfXlUzlW5GI4FvDH9qZKua7pFdDYvbH6+V9MSUGFUeR1NLxO42G5kkIqk0sZnG7j3w+FBpA==} - peerDependencies: - react: '*' - - '@tamagui/shapes@1.94.0': - resolution: {integrity: sha512-ksp0pVEPAzINYhtbXm8ijdKxVnodisj3iIyowkBHi63j1lHsFG9LDPfMI7FF1o2qEq8kqEqBRNdFCTq11iwRlQ==} - peerDependencies: - react: '*' - - '@tamagui/sheet@1.94.0': - resolution: {integrity: sha512-QDzgG/+0wP/OK1SPnBdHw5ihuzhzp/WW58ANn5Suh3fVWoUZUlhlppNrenmN+OGTbNg2CJhR9exddRTspfsFjg==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/shorthands@1.94.0': - resolution: {integrity: sha512-+WXHf7fGOMFI/HtBMOmX9Ep/YgVguxxH5SDYbtpSohw7h9uzJ05si19kxt0tBh2i12gm8qPiKKJqUC9Cvcq3BA==} - - '@tamagui/simple-hash@1.94.0': - resolution: {integrity: sha512-r3YeMhrDHo9vcKxgh0KXtWsRaZ2w57MngsL030tH1//pBtu8TcEZRZVbWBrgSsSUFiVBqob7ZEwSBvjnkKxdBQ==} - - '@tamagui/slider@1.94.0': - resolution: {integrity: sha512-rUFeJFAUx8o7qV/r01/wudYC3B77AaP5OArJOSuvqQW2YweaVXZAAeBChvKJFXbIfJ6AXFvNtC59b5VIaOdSxw==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/stacks@1.94.0': - resolution: {integrity: sha512-oH1P+IUtreKQloVM9aCE9tY9OXjXMdABg0dxFYnkJSZSia025DaOfUzqH0fQJXmDrqOO6+rYWgo3vEnngeLTlg==} - peerDependencies: - react: '*' - - '@tamagui/static@1.94.0': - resolution: {integrity: sha512-OMljTwyW+Vxwj7suUIgwBhveBD2ZKuWnagMLw5kEi+/09/A09ILsXnUtpwIOV9WAnwln5xIagwaX+8C+rRdAUw==} - - '@tamagui/switch-headless@1.94.0': - resolution: {integrity: sha512-s3EcAGYfmRdy3TIChBX/Meuy4par4BYmkYJKUakpFPxRtXXR30RgHgGjwmFYMgMH8adQxpnWzVpX+jMxql4OEA==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/switch@1.94.0': - resolution: {integrity: sha512-JXCGWR5GJJr/7jUGuxj3hn6mWNm+j5sB+bvSivdYmYODiDA7JR6YukUu7S/oI+zovAugDtJRHRjUEt4aERjEJQ==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/tabs@1.94.0': - resolution: {integrity: sha512-hHR48xqmGEWcLkTanBs076zAvN4lJuLVgAi57Hk1WMJOQNDTuSUrBn6i2hSYHV7zlkYK7zY8R9iYZ9faC6lDcg==} - peerDependencies: - react: '*' - react-dom: '*' - - '@tamagui/text@1.94.0': - resolution: {integrity: sha512-CGkjuwSHl+PF3HoZ/LDQfQH+NuzX2FN4AQzUFxoCZuf34Jafmbi31P1pbE2lY1+LdGE/joRBeZ3GwkJJU16M9A==} - peerDependencies: - react: '*' - - '@tamagui/theme-builder@1.94.0': - resolution: {integrity: sha512-S/TwOCcgvSazmfnDjcz1wWsEVFQRxT8yQvy2bA7UON6CdADs5TURBGNx5ytrxKrEMFArR2GMKWZXl2XX+9ezqw==} - - '@tamagui/theme@1.94.0': - resolution: {integrity: sha512-q7hCdNNsXanw0qkibMQnDaFG5SLj8/eCdP6phg3+KmtNrmeRNe4BVYunrDWXqLM8zE07ZqLjZRnrgTZX+4hBAg==} - peerDependencies: - react: '*' - - '@tamagui/themes@1.94.0': - resolution: {integrity: sha512-s7aMgSm8CCEBw/r4PiLsSqM73DhiKNsx4t1buIqRjqzlYjsQJihQp5RtK6DoRsb2CoLB0o50g/Yc6XpO/FIAbg==} - - '@tamagui/timer@1.94.0': - resolution: {integrity: sha512-YNmripupVw06ZPccuuEBBEvWhZFHasZ0G2fYM4Pu4jWlUFt+ZhlRRs3BOZsANHH8xVSqE+KKTL0XSfcBbJMPnw==} - - '@tamagui/toast@1.94.0': - resolution: {integrity: sha512-4+0bw+NzvlXRAK19BUy6AIxsVXW7pXmNxDszZPu5Jax1gEunNgTzhLaSeBkFq9oIJNuer9i8E4m3I9P5XBV7tw==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/toggle-group@1.94.0': - resolution: {integrity: sha512-4+UkqnaldjJCWjcQ05vG1HMn+32TsTj3L9o8tSNtbDjfbM6DoWMHtPbTeudUtGmJ/EWQw62jMB3JVkV8Ekw0RQ==} - peerDependencies: - react: '*' - - '@tamagui/tooltip@1.94.0': - resolution: {integrity: sha512-TLfaYXWbD6MM+M5dmnFoW/mpdAr1vpwx+ZyCkaVphodS7FgLSgbKhlnLIbQunFqgG4LIsT/xqi3YYWoldwyk4Q==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/types@1.94.0': - resolution: {integrity: sha512-xPkJqf9EVtcUkiw9+08PKkanl/fNY+PFgskcqn7LkmgrG28ekueEnVBV8t5EXvByaK7oo5r+zyAPXjgb18gJHQ==} - - '@tamagui/use-callback-ref@1.94.0': - resolution: {integrity: sha512-R++Xk2K9zWGPHdJV0T4mbrKVG3bNmCZleIlWyEIwAkzhXiDVD0vMFRyToAv6mJWbCcqe+2YVOUmoVFmGfS/QEA==} - - '@tamagui/use-constant@1.94.0': - resolution: {integrity: sha512-Ufd4GbyKljLtwG6y1j8oufAuM+wjeGHmCSC690IGrZY/yREYG/6DoSZaTt3ToDfo7P5HG/6SSLd0IwcMg1h8ig==} - peerDependencies: - react: '*' - - '@tamagui/use-controllable-state@1.94.0': - resolution: {integrity: sha512-DnTbjx1zfJMyzWzZ8mnWdbe3bRTyIBkFFEZXYiFEDDEbaOREKO2wDZRrA8jsvR+AYixAHWpIREPfk75X0lXy9A==} - peerDependencies: - react: '*' - - '@tamagui/use-debounce@1.94.0': - resolution: {integrity: sha512-yfbDMmd+pcafpFCyw8vcmF6pfEARIYWCTaEaBh7wB2+wdRpzNqMm4KTdiQNqHEq09IdoIY2iQGTYt/88Nhkuvw==} - peerDependencies: - react: '*' - - '@tamagui/use-did-finish-ssr@1.94.0': - resolution: {integrity: sha512-QX3i5nN4FulFXlrN3S792B2r67fz0GkOu7rkqDJj3hDmJTFFK2BMMDR0TS2zeZI1Lhf3NRW4V5QvadTZ05uRaQ==} - peerDependencies: - react: '*' - - '@tamagui/use-direction@1.94.0': - resolution: {integrity: sha512-CMEyGSt0sZnSPHfKXFZq7blLUxGyzI2hHeIEgNG6HY5SVE3sGq+7AgKI5skL6uf9ENLiJgdOOitfjOMYSPBKUQ==} - peerDependencies: - react: '*' - - '@tamagui/use-escape-keydown@1.94.0': - resolution: {integrity: sha512-Oqmhh8kb3UcUlSZvMB7B1MGiHah5zfeCQYO6KyxfStQcIvScChCYOsjNsBRdnElB4l679pelS5TKrjsnG8s8/Q==} - - '@tamagui/use-event@1.94.0': - resolution: {integrity: sha512-1oXVBHksOtGnk1znzunVTUywGYCjTnOoMbwgxB2qyXJOiKeMKULb1h3oNIJ3sliA0Vf4W6CdG3nX16RqrikvSw==} - peerDependencies: - react: '*' - - '@tamagui/use-force-update@1.94.0': - resolution: {integrity: sha512-8sYdNDssnKJhZ/2UTVpO9364Ml4HAMXz8rajKo88r3Y6IU8qGJ9VK9fFYre6X5mWcBewHK9FS7lk/ivpk65QhA==} - peerDependencies: - react: '*' - - '@tamagui/use-keyboard-visible@1.94.0': - resolution: {integrity: sha512-Tyn5bQRu8Q82Q4psm9UgOTrUuXJ0bKacybaOIr1PIaC5AwsYPB3Qzxut2lpg87RK05xmsRrwTcgwlDVlGJIXqw==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/use-presence@1.94.0': - resolution: {integrity: sha512-kGrysrGYYm4teL+P3tFHopvb2Q8cYqSpsbBZ0WZgadS3Ne6UaMzhjyPXz3ASOVGWiSTLJtrkmW9rPfywELzUPg==} - peerDependencies: - react: '*' - - '@tamagui/use-previous@1.94.0': - resolution: {integrity: sha512-Mo+tHM4uy6SnSiA0EPSQc7vD8hOwD2qNfyAjx6PT47r10dzi+0cC3xbYM/6zpvZrcSl8ugT5HbS6FpYeveC/jg==} - - '@tamagui/use-window-dimensions@1.94.0': - resolution: {integrity: sha512-6yewGpv2lTRbicGglDss171bCdFFeKjWybOR2CgE+Uu37rIUCZmeWYqgtcBBS30plcMaOpy5fQC3LOwxFvC05A==} - peerDependencies: - react: '*' - react-native: '*' - - '@tamagui/visually-hidden@1.94.0': - resolution: {integrity: sha512-YmmNOfiJTkCx4EE25RyHBxDuDSiVyShBBNNtPSgZRs3zqjY7NT/UZyseGk/g+aYbW5L27stYa5aNNRFLKqSwlQ==} - peerDependencies: - react: '*' - - '@tamagui/web@1.94.0': - resolution: {integrity: sha512-Mwv/JLks46FoXncv2h6RI4AUYdEXJlnOZog450ZwDEgn13JQJLS8VEZsAgVOK5sc4zt/WzeS7pEvquS9DEridg==} - - '@tanstack/eslint-plugin-query@5.20.1': - resolution: {integrity: sha512-oIp7Wh90KHOm1FKCvcv87fiD2H96xo/crFrlhbvqBzR2f0tMEGOK/ANKMGNFQprd6BT6lyZhQPlOEkFdezsjIg==} - peerDependencies: - eslint: ^8.0.0 - - '@tanstack/query-core@5.22.2': - resolution: {integrity: sha512-z3PwKFUFACMUqe1eyesCIKg3Jv1mysSrYfrEW5ww5DCDUD4zlpTKBvUDaEjsfZzL3ULrFLDM9yVUxI/fega1Qg==} - - '@tanstack/react-query@5.22.2': - resolution: {integrity: sha512-TaxJDRzJ8/NWRT4lY2jguKCrNI6MRN+67dELzPjNUlvqzTxGANlMp68l7aC7hG8Bd1uHNxHl7ihv7MT50i/43A==} - peerDependencies: - react: ^18.0.0 - - '@tootallnate/quickjs-emscripten@0.23.0': - resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - - '@tsconfig/node10@1.0.9': - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@turbo/gen@1.12.2': - resolution: {integrity: sha512-XmdaB4J3JvDs6/L+JkCHTf/s74+O4xKZC0HDQxvV+cyicvYocPcR5NTOuH5gdG81roR9tVQWhkAza2hgGOlSyw==} - hasBin: true - - '@turbo/workspaces@1.12.2': - resolution: {integrity: sha512-B1WybqMR2/7jq9j3EqSuWiYHK/9ZUQPZjy7DIt8PGc+AdrP1nVYW2vOpApKO9j/dLvycDGAmn5LtL5vcSrMlfg==} - hasBin: true - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.5': - resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} - - '@types/cookie@0.4.1': - resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} - - '@types/eslint@8.56.2': - resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} - - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - - '@types/fs-extra@9.0.13': - resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} - - '@types/glob@7.2.0': - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - - '@types/hammerjs@2.0.45': - resolution: {integrity: sha512-qkcUlZmX6c4J8q45taBKTL3p+LbITgyx7qhlPYOdOHZB7B31K0mXbP5YA7i7SgDeEGuI9MnumiKPEMrxg8j3KQ==} - - '@types/inquirer@6.5.0': - resolution: {integrity: sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==} - - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - - '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - - '@types/js-yaml@4.0.9': - resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/minimatch@5.1.2': - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - - '@types/node-forge@1.3.11': - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - - '@types/node@17.0.45': - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - - '@types/node@20.11.16': - resolution: {integrity: sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==} - - '@types/node@20.11.24': - resolution: {integrity: sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==} - - '@types/node@20.11.30': - resolution: {integrity: sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==} - - '@types/node@20.12.7': - resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} - - '@types/prop-types@15.7.11': - resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} - - '@types/react@18.2.52': - resolution: {integrity: sha512-E/YjWh3tH+qsLKaUzgpZb5AY0ChVa+ZJzF7ogehVILrFpdQk6nC/WXOv0bfFEABbXbgNxLBGU7IIZByPKb6eBw==} - - '@types/scheduler@0.16.8': - resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} - - '@types/semver@7.5.6': - resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} - - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - - '@types/through@0.0.33': - resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} - - '@types/tinycolor2@1.4.6': - resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} - - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - - '@types/yargs@15.0.19': - resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} - - '@types/yargs@17.0.32': - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - - '@typescript-eslint/eslint-plugin@6.20.0': - resolution: {integrity: sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@6.20.0': - resolution: {integrity: sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@6.20.0': - resolution: {integrity: sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/type-utils@6.20.0': - resolution: {integrity: sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@6.20.0': - resolution: {integrity: sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@typescript-eslint/typescript-estree@6.20.0': - resolution: {integrity: sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@6.20.0': - resolution: {integrity: sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - - '@typescript-eslint/visitor-keys@6.20.0': - resolution: {integrity: sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw==} - engines: {node: ^16.0.0 || >=18.0.0} - - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - '@urql/core@2.3.6': - resolution: {integrity: sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==} - peerDependencies: - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - - '@urql/exchange-retry@0.3.0': - resolution: {integrity: sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==} - peerDependencies: - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - - '@web3-storage/multipart-parser@1.0.0': - resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==} - - '@xmldom/xmldom@0.7.13': - resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==} - engines: {node: '>=10.0.0'} - - '@xmldom/xmldom@0.8.10': - resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} - engines: {node: '>=10.0.0'} - - '@zxing/text-encoding@0.9.0': - resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} - - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - - acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - - agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} - engines: {node: '>= 14'} - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - - anser@1.4.10: - resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-fragments@0.2.1: - resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} - - ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - appdirsjs@1.2.7: - resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} - - application-config-path@0.1.1: - resolution: {integrity: sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==} - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - aria-hidden@1.2.3: - resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} - engines: {node: '>=10'} - - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - - array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} - - array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} - engines: {node: '>= 0.4'} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - - array.prototype.tosorted@1.1.2: - resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} - - arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} - engines: {node: '>= 0.4'} - - asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - - asn1.js@5.4.1: - resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} - - ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - - ast-types@0.13.4: - resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} - engines: {node: '>=4'} - - ast-types@0.15.2: - resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} - engines: {node: '>=4'} - - astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} - - astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - - async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - - asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - - available-typed-arrays@1.0.6: - resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} - engines: {node: '>= 0.4'} - - axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} - engines: {node: '>=4'} - - axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} - - babel-core@7.0.0-bridge.0: - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-literal-to-ast@2.1.0: - resolution: {integrity: sha512-CxfpQ0ysQ0bZOhlaPgcWjl79Em16Rhqc6++UAFn0A3duiXmuyhhj8yyl9PYbj0I0CyjrHovdDbp2QEKT7uIMxw==} - peerDependencies: - '@babel/core': ^7.1.2 - - babel-plugin-fully-specified@1.3.0: - resolution: {integrity: sha512-STW+rXLxwCB839gmwBizuipaDBb/iGZ5Vg0bmfynYLyXRTWgofXDrePuW5VvBJq2x8yB6xvT+3J7Z0U79uQYNw==} - peerDependencies: - '@babel/core': '*' - - babel-plugin-module-resolver@5.0.0: - resolution: {integrity: sha512-g0u+/ChLSJ5+PzYwLwP8Rp8Rcfowz58TJNCe+L/ui4rpzE/mg//JVX0EWBUYoxaextqnwuGHzfGp2hh0PPV25Q==} - engines: {node: '>= 16'} - - babel-plugin-polyfill-corejs2@0.4.8: - resolution: {integrity: sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.9.0: - resolution: {integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.5.5: - resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-react-native-web@0.18.12: - resolution: {integrity: sha512-4djr9G6fMdwQoD6LQ7hOKAm39+y12flWgovAqS1k5O8f42YQ3A1FFMyV5kKfetZuGhZO5BmNmOdRRZQ1TixtDw==} - - babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: - resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} - - babel-plugin-tester@11.0.4: - resolution: {integrity: sha512-cqswtpSPo0e++rZB0l/54EG17LL25l9gLgh59yXfnmNxX+2lZTIOpx2zt4YI9QIClVXc8xf63J6yWwKkzy0jNg==} - engines: {node: ^14.20.0 || ^16.16.0 || >=18.5.0} - peerDependencies: - '@babel/core': '>=7.11.6' - - babel-plugin-transform-flow-enums@0.0.2: - resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} - - babel-preset-expo@10.0.1: - resolution: {integrity: sha512-uWIGmLfbP3dS5+8nesxaW6mQs41d4iP7X82ZwRdisB/wAhKQmuJM9Y1jQe4006uNYkw6Phf2TT03ykLVro7KuQ==} - - babel-preset-fbjs@3.4.0: - resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} - peerDependencies: - '@babel/core': ^7.0.0 - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base-64@0.1.0: - resolution: {integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - basic-ftp@5.0.4: - resolution: {integrity: sha512-8PzkB0arJFV4jJWSGOYR+OEic6aeKMu/osRhBULN6RY0ykby6LKhbmuQ5ublvaas5BOwboah5D87nrHyuh8PPA==} - engines: {node: '>=10.0.0'} - - before-after-hook@2.2.3: - resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} - - better-opn@3.0.2: - resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} - engines: {node: '>=12.0.0'} - - big-integer@1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} - - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - - blueimp-md5@2.19.0: - resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} - - bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - - bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - bplist-creator@0.1.0: - resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==} - - bplist-parser@0.3.1: - resolution: {integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==} - engines: {node: '>= 5.10.0'} - - bplist-parser@0.3.2: - resolution: {integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==} - engines: {node: '>= 5.10.0'} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - - brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - - browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - - browserify-cipher@1.0.1: - resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} - - browserify-des@1.0.2: - resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} - - browserify-rsa@4.1.0: - resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} - - browserify-sign@4.2.2: - resolution: {integrity: sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==} - engines: {node: '>= 4'} - - browserslist@4.22.3: - resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - - buffer-alloc-unsafe@1.1.0: - resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} - - buffer-alloc@1.2.0: - resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} - - buffer-fill@1.0.0: - resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - builtins@1.0.3: - resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} - - builtins@5.0.1: - resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} - - burnt@0.12.2: - resolution: {integrity: sha512-bbZjGN4Om7dykr8ZcLb0tTO5L2becMR+HIez1ySUGgG/rvK+ePgBEuBA6lMOZqOTsUXhIKFUBH0sCXQ25fq5SA==} - peerDependencies: - expo: '*' - react: '*' - react-native: '*' - - bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - - cacache@15.3.0: - resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} - engines: {node: '>= 10'} - - call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} - - caller-callsite@2.0.0: - resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} - engines: {node: '>=4'} - - caller-path@2.0.0: - resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} - engines: {node: '>=4'} - - callsites@2.0.0: - resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} - engines: {node: '>=4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camel-case@3.0.0: - resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} - - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - camelize@1.0.1: - resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - - caniuse-lite@1.0.30001583: - resolution: {integrity: sha512-acWTYaha8xfhA/Du/z4sNZjHUWjkiuoAi2LM+T/aL+kemKQgPT1xBb/YKjlQ0Qo8gvbHsGNplrEJ+9G3gL7i4Q==} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - change-case@3.1.0: - resolution: {integrity: sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==} - - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - - charenc@0.0.2: - resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - - check-dependency-version-consistency@4.1.0: - resolution: {integrity: sha512-xghkzKgMxpAfeP9OJfVrErtv8BU4h5kHYQyheHC0j0RYRVNWti0qI3+HkFgWBKejq2UE2wOnoWZlvDKFj6jFoA==} - engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} - hasBin: true - - cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - - cheerio@1.0.0-rc.12: - resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} - engines: {node: '>= 6'} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - - chrome-launcher@0.15.2: - resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} - engines: {node: '>=12.13.0'} - hasBin: true - - chromium-edge-launcher@1.0.0: - resolution: {integrity: sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==} - - ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - - cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} - - class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} - - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - cli-cursor@2.1.0: - resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} - engines: {node: '>=4'} - - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - clone@2.1.2: - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} - engines: {node: '>=0.8'} - - clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color2k@2.0.3: - resolution: {integrity: sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog==} - - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - - colorette@1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - command-exists@1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - - commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - compare-urls@2.0.0: - resolution: {integrity: sha512-eCJcWn2OYFEIqbm70ta7LQowJOOZZqq1a2YbbFCFI1uwSvj+TWMwXVn7vPR1ceFNcAIt5RSTDbwdlX82gYLTkA==} - engines: {node: '>=6'} - - component-type@1.2.2: - resolution: {integrity: sha512-99VUHREHiN5cLeHm3YLq312p6v+HUEcwtLCAtelvUDI6+SH5g5Cr85oNR2S1o6ywzL0ykMbuwLzM2ANocjEOIA==} - - compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - - compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} - engines: {node: '>= 0.8.0'} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - connect@3.7.0: - resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} - engines: {node: '>= 0.10.0'} - - constant-case@2.0.0: - resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - cookie-signature@1.2.1: - resolution: {integrity: sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==} - engines: {node: '>=6.6.0'} - - cookie@0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} - engines: {node: '>= 0.6'} - - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - - core-js-compat@3.35.1: - resolution: {integrity: sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==} - - core-js-pure@3.35.1: - resolution: {integrity: sha512-zcIdi/CL3MWbBJYo5YCeVAAx+Sy9yJE9I3/u9LkFABwbeaPhTMRWraM8mYFp9jW5Z50hOy7FVzCc8dCrpZqtIQ==} - - core-js@3.36.0: - resolution: {integrity: sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw==} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cosmiconfig@5.2.1: - resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} - engines: {node: '>=4'} - - create-ecdh@4.0.4: - resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} - - create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - - create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - cross-fetch@3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} - - cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - crypt@0.0.2: - resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} - - crypto-browserify@3.12.0: - resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} - - crypto-js@4.2.0: - resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - - crypto-random-string@1.0.0: - resolution: {integrity: sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==} - engines: {node: '>=4'} - - crypto-random-string@2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} - engines: {node: '>=8'} - - css-color-keywords@1.0.0: - resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} - engines: {node: '>=4'} - - css-in-js-utils@3.1.0: - resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} - - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - - css-to-react-native@3.2.0: - resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} - - css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - dag-map@1.0.2: - resolution: {integrity: sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==} - - damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - - data-uri-to-buffer@3.0.1: - resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} - engines: {node: '>= 6'} - - data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - - data-uri-to-buffer@6.0.1: - resolution: {integrity: sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg==} - engines: {node: '>= 14'} - - dayjs@1.11.10: - resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} - - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - default-gateway@4.2.0: - resolution: {integrity: sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==} - engines: {node: '>=6'} - - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - - define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} - engines: {node: '>= 0.4'} - - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - degenerator@5.0.1: - resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} - engines: {node: '>= 14'} - - del@5.1.0: - resolution: {integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==} - engines: {node: '>=8'} - - del@6.1.1: - resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} - engines: {node: '>=10'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - denodeify@1.2.1: - resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - deprecated-react-native-prop-types@2.3.0: - resolution: {integrity: sha512-pWD0voFtNYxrVqvBMYf5gq3NA2GCpfodS1yNynTPc93AYA/KEMGeWDqqeUB6R2Z9ZofVhks2aeJXiuQqKNpesA==} - - deprecated-react-native-prop-types@5.0.0: - resolution: {integrity: sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ==} - engines: {node: '>=18'} - - deprecation@2.3.1: - resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - des.js@1.1.0: - resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} - - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - - detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - diffie-hellman@5.0.3: - resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - - dot-case@2.1.1: - resolution: {integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==} - - dotenv-expand@10.0.0: - resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} - engines: {node: '>=12'} - - dotenv@16.0.3: - resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} - engines: {node: '>=12'} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - edit-json-file@1.8.0: - resolution: {integrity: sha512-IBOpbe2aQufNl5oZ4jsr2AmNVUy5bO7jS5hk0cCyWhOLdH59Xv41B3XQObE/JB89Ae5qDY9hVsq13/hgGhFBZg==} - - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - - electron-to-chromium@1.4.656: - resolution: {integrity: sha512-9AQB5eFTHyR3Gvt2t/NwR0le2jBSUNwCnMbUCejFWHD+so4tH40/dRLgoE+jxlPeWS43XJewyvCv+I8LPMl49Q==} - - elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} - - eme-encryption-scheme-polyfill@2.1.1: - resolution: {integrity: sha512-njD17wcUrbqCj0ArpLu5zWXtaiupHb/2fIUQGdInf83GlI+Q6mmqaPGLdrke4savKAu15J/z1Tg/ivDgl14g0g==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - entities@2.0.3: - resolution: {integrity: sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - env-editor@0.4.2: - resolution: {integrity: sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==} - engines: {node: '>=8'} - - envinfo@7.11.1: - resolution: {integrity: sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==} - engines: {node: '>=4'} - hasBin: true - - eol@0.9.1: - resolution: {integrity: sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==} - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - - errorhandler@1.5.1: - resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} - engines: {node: '>= 0.8'} - - es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} - engines: {node: '>= 0.4'} - - es-errors@1.0.0: - resolution: {integrity: sha512-yHV74THqMJUyFKkHyN7hyENcEZM3Dj2a2IrdClY+IT4BFQHkIVwlh8s6uZfjsFydMdNHv0F5mWgAA3ajFbsvVQ==} - engines: {node: '>= 0.4'} - - es-iterator-helpers@1.0.15: - resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} - - es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} - engines: {node: '>= 0.4'} - - es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - - esbuild-plugin-es5@2.1.0: - resolution: {integrity: sha512-V0rsjIHa/pswTvqM/N+jrhhBAiOdp+Ppwmhk9HQKfpvhYRUKsdeImiHeFP0oWkc+GX7pFxJzmceaPJT1RA7jyQ==} - engines: {node: '>=12.0'} - peerDependencies: - esbuild: ^0.19.0 - - esbuild-register@3.5.0: - resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} - peerDependencies: - esbuild: '>=0.12 <1' - - esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} - engines: {node: '>=12'} - hasBin: true - - escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - - eslint-config-prettier@9.1.0: - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-config-turbo@1.12.2: - resolution: {integrity: sha512-JHTGtDQuISBEWIorHenu5AeX1nv16NiDgDVRi1i0VyeYw0SiVh+lSQbv4BawXSnG1nOFpjbopAQdZvdB3PwXbQ==} - peerDependencies: - eslint: '>6.6.0' - - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - - eslint-module-utils@2.8.0: - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-import@2.29.1: - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - - eslint-plugin-jsx-a11y@6.8.0: - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - - eslint-plugin-react-hooks@4.6.0: - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - - eslint-plugin-react@7.33.2: - resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - - eslint-plugin-turbo@1.12.2: - resolution: {integrity: sha512-/l0aGvZRzK1LMRTibRd6ZbEEuD5TtGotDTkZpxSIWA1FI764pWVvQduQMKBaRuz7aTuAo0WxatD8v1scK+qRWw==} - peerDependencies: - eslint: '>6.6.0' - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint@8.56.0: - resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - - exec-async@2.2.0: - resolution: {integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==} - - execa@1.0.0: - resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} - engines: {node: '>=6'} - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - expo-alternate-app-icons@0.1.7: - resolution: {integrity: sha512-4hIIGVRaNSedreT2GbujpR+vyz7x+/j8GPfGn/WHFYy8V0lmAOa8KgT2JeXuK1nB6s4Ler4yahrxUhcSI/lmqQ==} - peerDependencies: - expo: '*' - react: '*' - react-native: '*' - - expo-application@5.8.3: - resolution: {integrity: sha512-IISxzpPX+Xe4ynnwX8yY52T6dm1g9sME1GCj4lvUlrdc5xeTPM6U35x7Wj82V7lLWBaVGe+/Tg9EeKqfylCEwA==} - peerDependencies: - expo: '*' - - expo-asset@9.0.2: - resolution: {integrity: sha512-PzYKME1MgUOoUvwtdzhAyXkjXOXGiSYqGKG/MsXwWr0Ef5wlBaBm2DCO9V6KYbng5tBPFu6hTjoRNil1tBOSow==} - - expo-av@13.10.5: - resolution: {integrity: sha512-w45oCoe+8PunDeM0rh/Ut6UaGh7OjEJOCjAiQy3nCxpA8FaXB17KaqpsvkAXIMvceHYWndH8+D29esUTS6wEsA==} - peerDependencies: - expo: '*' - - expo-brightness@11.8.0: - resolution: {integrity: sha512-ipQA7s8PvJVhy+Ls6Dsql0veXXV5CdMcbXNPwQuXTbUofRE+8FHO0vasShMZlKYcD9KNgFygjx0U+THi80dtAw==} - peerDependencies: - expo: '*' - - expo-build-properties@0.11.1: - resolution: {integrity: sha512-m4j4aEjFaDuBE6KWYMxDhWgLzzSmpE7uHKAwtvXyNmRK+6JKF0gjiXi0sXgI5ngNppDQpsyPFMvqG7uQpRuCuw==} - peerDependencies: - expo: '*' - - expo-clipboard@5.0.1: - resolution: {integrity: sha512-JH853QJPr5W3h87If3aDTnMK+ESSIrwzU2TdfZrqZttVDY2pMIf/w37mVHHNYodXM4ATHXadtOkjKbAa0DWwUg==} - peerDependencies: - expo: '*' - - expo-constants@15.4.5: - resolution: {integrity: sha512-1pVVjwk733hbbIjtQcvUFCme540v4gFemdNlaxM2UXKbfRCOh2hzgKN5joHMOysoXQe736TTUrRj7UaZI5Yyhg==} - peerDependencies: - expo: '*' - - expo-file-system@16.0.8: - resolution: {integrity: sha512-yDbVT0TUKd7ewQjaY5THum2VRFx2n/biskGhkUmLh3ai21xjIVtaeIzHXyv9ir537eVgt4ReqDNWi7jcXjdUcA==} - peerDependencies: - expo: '*' - - expo-font@11.10.3: - resolution: {integrity: sha512-q1Td2zUvmLbCA9GV4OG4nLPw5gJuNY1VrPycsnemN1m8XWTzzs8nyECQQqrcBhgulCgcKZZJJ6U0kC2iuSoQHQ==} - peerDependencies: - expo: '*' - - expo-haptics@12.8.1: - resolution: {integrity: sha512-ntLsHkfle8K8w9MW8pZEw92ZN3sguaGUSSIxv30fPKNeQFu7Cq/h47Qv3tONv2MO3wU48N9FbKnant6XlfptpA==} - peerDependencies: - expo: '*' - - expo-keep-awake@12.8.2: - resolution: {integrity: sha512-uiQdGbSX24Pt8nGbnmBtrKq6xL/Tm3+DuDRGBk/3ZE/HlizzNosGRIufIMJ/4B4FRw4dw8KU81h2RLuTjbay6g==} - peerDependencies: - expo: '*' - - expo-linear-gradient@12.7.2: - resolution: {integrity: sha512-Wwb2EF18ywgrlTodcXJ6Yt/UEcKitRMdXPNyP/IokmeKh4emoq9DxZJpZdkXm3HUTLlbRpi6/t32jrFVqXB9AQ==} - peerDependencies: - expo: '*' - - expo-linking@6.2.2: - resolution: {integrity: sha512-FEe6lP4f7xFT/vjoHRG+tt6EPVtkEGaWNK1smpaUevmNdyCJKqW0PDB8o8sfG6y7fly8ULe8qg3HhKh5J7aqUQ==} - - expo-media-library@15.9.1: - resolution: {integrity: sha512-Y29uKFJ3qWwNejIrjoCppXp3OgIFs/RYHWXkF9xey6evpNrUlHoP1WHG2jYAMSrss6aIRVt3tO7EtYUCZxz50Q==} - peerDependencies: - expo: '*' - - expo-modules-autolinking@1.10.3: - resolution: {integrity: sha512-pn4n2Dl4iRh/zUeiChjRIe1C7EqOw1qhccr85viQV7W6l5vgRpY0osE51ij5LKg/kJmGRcJfs12+PwbdTplbKw==} - hasBin: true - - expo-modules-core@1.11.12: - resolution: {integrity: sha512-/e8g4kis0pFLer7C0PLyx98AfmztIM6gU9jLkYnB1pU9JAfQf904XEi3bmszO7uoteBQwSL6FLp1m3TePKhDaA==} - - expo-navigation-bar@2.8.1: - resolution: {integrity: sha512-aT5G+7SUsXDVPsRwp8fF940ycka1ABb4g3QKvTZN3YP6kMWvsiYEmRqMIJVy0zUr/i6bxBG1ZergkXimWrFt3w==} - peerDependencies: - expo: '*' - - expo-network@5.8.0: - resolution: {integrity: sha512-mTtyqRgLKvXWB+xCoY5WMtRrpVqYmcXWz3YbyN+X0HRGqXg7a+UYOXeKlxrkwBiadsElhmfMeaj1UpmW79Zw/w==} - peerDependencies: - expo: '*' - - expo-pod-pinner@1.0.1: - resolution: {integrity: sha512-UeyCRXrI13tjb+rtQkjBjgs+eS1KntAgTRnLoawFdMp8s1T2bOcm9P4cIrFlLHt9aZBLLMdHra1TY6LiMI3+kw==} - - expo-router@3.4.8: - resolution: {integrity: sha512-fOOAWHH4LSPjPFtIZbApxdTNU8xSS8qKvhZ7PfWNMfx9510J1R1Ce/nwENPzcRLHRuVofDsSAEBfi4kV03fJwg==} - peerDependencies: - '@react-navigation/drawer': ^6.5.8 - '@testing-library/jest-native': '*' - expo: '*' - expo-constants: '*' - expo-linking: '*' - expo-status-bar: '*' - react-native-reanimated: '*' - react-native-safe-area-context: '*' - react-native-screens: '*' - peerDependenciesMeta: - '@react-navigation/drawer': - optional: true - '@testing-library/jest-native': - optional: true - react-native-reanimated: - optional: true - - expo-screen-orientation@6.4.1: - resolution: {integrity: sha512-VM0C9ORNL1aT6Dr2OUeryzV519n0FjtXI2m+HlijOMi1QT2bPg4tBkCd7HLgywU4dZ1Esa46ewUudmk+fOqmMQ==} - peerDependencies: - expo: '*' - - expo-splash-screen@0.26.4: - resolution: {integrity: sha512-2DwofTQ0FFQCsvDysm/msENsbyNsJiAJwK3qK/oXeizECAPqD7bK19J4z9kuEbr7ORPX9MLnTQYKl6kmX3keUg==} - peerDependencies: - expo: '*' - - expo-status-bar@1.11.1: - resolution: {integrity: sha512-ddQEtCOgYHTLlFUe/yH67dDBIoct5VIULthyT3LRJbEwdpzAgueKsX2FYK02ldh440V87PWKCamh7R9evk1rrg==} - - expo-system-ui@2.9.3: - resolution: {integrity: sha512-RNFNBLJ9lhnjOGrHhtfDc15Ry/lF+SA4kwulmHzYGqaTeYvsL9q0K0+m9qmxuDdrbKJkuurvzvjVylDNnKNFVg==} - peerDependencies: - expo: '*' - - expo-web-browser@12.8.2: - resolution: {integrity: sha512-Mw8WoFMSADecNjtC4PZVsVj1/lYdxIAH1jOVV+F8v8SEWYxORWofoShfXg7oUxRLu0iUG8JETfO5y4m8+fOgdg==} - peerDependencies: - expo: '*' - - expo@50.0.14: - resolution: {integrity: sha512-yLPdxCMVAbmeEIpzzyAuJ79wvr6ToDDtQmuLDMAgWtjqP8x3CGddXxUe07PpKEQgzwJabdHvCLP5Bv94wMFIjQ==} - hasBin: true - - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fast-loops@1.1.3: - resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==} - - fast-xml-parser@4.3.4: - resolution: {integrity: sha512-utnwm92SyozgA3hhH2I8qldf2lBqm6qHOICawRNRFu1qMe3+oqr+GcXjGqTmXTMGE5T4eC03kr/rlh5C1IRdZA==} - hasBin: true - - fastq@1.17.0: - resolution: {integrity: sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==} - - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - - fbemitter@3.0.0: - resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} - - fbjs-css-vars@1.0.2: - resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} - - fbjs@3.0.5: - resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} - - fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - - fetch-retry@4.1.1: - resolution: {integrity: sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==} - - ffmpeg-kit-react-native@6.0.2: - resolution: {integrity: sha512-r9uSmahq8TeyIb7fXf3ft+uUXyoeWRFa99+khjo0TAzWO9y0z9wU7eGnab9JLw1MmCB9v64o4yojNluJhVm9nQ==} - peerDependencies: - react: '*' - react-native: '*' - - figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - - filter-obj@1.1.0: - resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} - engines: {node: '>=0.10.0'} - - finalhandler@1.1.2: - resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} - engines: {node: '>= 0.8'} - - find-babel-config@2.0.0: - resolution: {integrity: sha512-dOKT7jvF3hGzlW60Gc3ONox/0rRZ/tz7WCil0bqA1In/3I8f1BctpXahRnEKDySZqci7u+dqq93sZST9fOJpFw==} - engines: {node: '>=16.0.0'} - - find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} - - find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} - - find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - - find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - find-value@1.0.12: - resolution: {integrity: sha512-OCpo8LTk8eZ2sdDCwbU2Lc3ivYsdM6yod6jP2jHcNEFcjPhkgH0+POzTIol7xx1LZgtbI5rkO5jqxsG5MWtPjQ==} - - find-yarn-workspace-root@2.0.0: - resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} - - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - - flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} - - flow-enums-runtime@0.0.6: - resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - - flow-parser@0.206.0: - resolution: {integrity: sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==} - engines: {node: '>=0.4.0'} - - fontfaceobserver@2.3.0: - resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} - - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - - form-data@3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} - - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - - formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - - framer-motion@6.5.1: - resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} - peerDependencies: - react: '>=16.8 || ^17.0.0 || ^18.0.0' - react-dom: '>=16.8 || ^17.0.0 || ^18.0.0' - - framesync@6.0.1: - resolution: {integrity: sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==} - - freeport-async@2.0.0: - resolution: {integrity: sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==} - engines: {node: '>=8'} - - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - - fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@9.0.0: - resolution: {integrity: sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==} - engines: {node: '>=10'} - - fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-intrinsic@1.2.3: - resolution: {integrity: sha512-JIcZczvcMVE7AUOP+X72bh8HqHBRxFdz5PDHYtNG/lE3yk9b3KZBJlwFcTyPYjg3L4RLLmZJzvjxhaZVapxFrQ==} - engines: {node: '>= 0.4'} - - get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - - get-port@3.2.0: - resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} - engines: {node: '>=4'} - - get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - - get-tsconfig@4.7.3: - resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} - - get-uri@6.0.2: - resolution: {integrity: sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==} - engines: {node: '>= 14'} - - getenv@1.0.0: - resolution: {integrity: sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==} - engines: {node: '>=6'} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@10.3.12: - resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - glob@6.0.4: - resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} - - glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - - glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - - globby@10.0.2: - resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} - engines: {node: '>=8'} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - gradient-string@2.0.2: - resolution: {integrity: sha512-rEDCuqUQ4tbD78TpzsMtt5OIf0cBCSDWSJtUDaF6JsAh+k0v9r++NzxNEG87oDZx9ZwGhD8DaezR2L/yrw0Jdw==} - engines: {node: '>=10'} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - graphql-tag@2.12.6: - resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} - engines: {node: '>=10'} - peerDependencies: - graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - - graphql@15.8.0: - resolution: {integrity: sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==} - engines: {node: '>= 10.x'} - - handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} - engines: {node: '>=0.4.7'} - hasBin: true - - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} - - has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} - - hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - - hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} - engines: {node: '>= 0.4'} - - header-case@1.0.1: - resolution: {integrity: sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==} - - hermes-estree@0.15.0: - resolution: {integrity: sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ==} - - hermes-estree@0.18.2: - resolution: {integrity: sha512-KoLsoWXJ5o81nit1wSyEZnWUGy9cBna9iYMZBR7skKh7okYAYKqQ9/OczwpMHn/cH0hKDyblulGsJ7FknlfVxQ==} - - hermes-parser@0.15.0: - resolution: {integrity: sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==} - - hermes-parser@0.18.2: - resolution: {integrity: sha512-1eQfvib+VPpgBZ2zYKQhpuOjw1tH+Emuib6QmjkJWJMhyjM8xnXMvA+76o9LhF0zOAJDZgPfQhg43cyXEyl5Ew==} - - hermes-profile-transformer@0.0.6: - resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} - engines: {node: '>=8'} - - hey-listen@1.0.8: - resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} - - hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - - hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - - hosted-git-info@3.0.8: - resolution: {integrity: sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==} - engines: {node: '>=10'} - - htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - http-proxy-agent@7.0.0: - resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} - engines: {node: '>= 14'} - - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - - https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} - engines: {node: '>= 14'} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - hyphenate-style-name@1.0.4: - resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - - image-size@1.1.1: - resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} - engines: {node: '>=16.x'} - hasBin: true - - immer@10.0.3: - resolution: {integrity: sha512-pwupu3eWfouuaowscykeckFmVTpqbzW+rXFCX8rQLkZzM9ftBmU/++Ra+o+L27mz03zJTlyV4UUr+fdKNffo4A==} - - import-fresh@2.0.0: - resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} - engines: {node: '>=4'} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - inline-style-prefixer@6.0.4: - resolution: {integrity: sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==} - - inquirer@7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} - - inquirer@8.2.6: - resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} - engines: {node: '>=12.0.0'} - - internal-ip@4.3.0: - resolution: {integrity: sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==} - engines: {node: '>=6'} - - internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} - engines: {node: '>= 0.4'} - - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - - ip-regex@2.1.0: - resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} - engines: {node: '>=4'} - - ip@1.1.8: - resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} - - ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} - - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - - is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - - is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} - - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - - is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - - is-directory@0.3.1: - resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} - engines: {node: '>=0.10.0'} - - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - - is-extglob@1.0.0: - resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==} - engines: {node: '>=0.10.0'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - - is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - - is-glob@2.0.1: - resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==} - engines: {node: '>=0.10.0'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - - is-invalid-path@0.1.0: - resolution: {integrity: sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==} - engines: {node: '>=0.10.0'} - - is-lower-case@1.1.3: - resolution: {integrity: sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==} - - is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - - is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - - is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - - is-primitive@3.0.1: - resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} - engines: {node: '>=0.10.0'} - - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - - is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - - is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - - is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - is-upper-case@1.1.2: - resolution: {integrity: sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==} - - is-valid-path@0.1.1: - resolution: {integrity: sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==} - engines: {node: '>=0.10.0'} - - is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - - is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} - - is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isbinaryfile@4.0.10: - resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} - engines: {node: '>= 8.0.0'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - iso-639-1@3.1.2: - resolution: {integrity: sha512-Le7BRl3Jt9URvaiEHJCDEdvPZCfhiQoXnFgLAWNRhzFMwRFdWO7/5tLRQbiPzE394I9xd7KdRCM7S6qdOhwG5A==} - engines: {node: '>=6.0'} - - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - - iterate-object@1.3.4: - resolution: {integrity: sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==} - - iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - - jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - - jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jimp-compact@0.16.1: - resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} - - jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} - hasBin: true - - joi@17.12.1: - resolution: {integrity: sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==} - - join-component@1.1.0: - resolution: {integrity: sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsc-android@250231.0.0: - resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} - - jsc-safe-url@0.2.4: - resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} - - jscodeshift@0.14.0: - resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - - jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - - json-schema-deref-sync@0.13.0: - resolution: {integrity: sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==} - engines: {node: '>=6.0.0'} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - - keymirror@0.1.1: - resolution: {integrity: sha512-vIkZAFWoDijgQT/Nvl2AHCMmnegN2ehgTPYuyy2hWQkQSntI0S7ESYqdLkoSe1HyEBFHHkCgSIvVdSEiWwKvCg==} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - - language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} - - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lighthouse-logger@1.4.2: - resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} - - lightningcss-darwin-arm64@1.19.0: - resolution: {integrity: sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - - lightningcss-darwin-arm64@1.22.0: - resolution: {integrity: sha512-aH2be3nNny+It5YEVm8tBSSdRlBVWQV8m2oJ7dESiYRzyY/E/bQUe2xlw5caaMuhlM9aoTMtOH25yzMhir0qPg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - - lightningcss-darwin-x64@1.19.0: - resolution: {integrity: sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] - - lightningcss-darwin-x64@1.22.0: - resolution: {integrity: sha512-9KHRFA0Y6mNxRHeoQMp0YaI0R0O2kOgUlYPRjuasU4d+pI8NRhVn9bt0yX9VPs5ibWX1RbDViSPtGJvYYrfVAQ==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] - - lightningcss-freebsd-x64@1.22.0: - resolution: {integrity: sha512-xaYL3xperGwD85rQioDb52ozF3NAJb+9wrge3jD9lxGffplu0Mn35rXMptB8Uc2N9Mw1i3Bvl7+z1evlqVl7ww==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [freebsd] - - lightningcss-linux-arm-gnueabihf@1.19.0: - resolution: {integrity: sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] - - lightningcss-linux-arm-gnueabihf@1.22.0: - resolution: {integrity: sha512-epQGvXIjOuxrZpMpMnRjK54ZqzhiHhCPLtHvw2fb6NeK2kK9YtF0wqmeTBiQ1AkbWfnnXGTstYaFNiadNK+StQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] - - lightningcss-linux-arm64-gnu@1.19.0: - resolution: {integrity: sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - - lightningcss-linux-arm64-gnu@1.22.0: - resolution: {integrity: sha512-AArGtKSY4DGTA8xP8SDyNyKtpsUl1Rzq6FW4JomeyUQ4nBrR71uPChksTpj3gmWuGhZeRKLeCUI1DBid/zhChg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - - lightningcss-linux-arm64-musl@1.19.0: - resolution: {integrity: sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - - lightningcss-linux-arm64-musl@1.22.0: - resolution: {integrity: sha512-RRraNgP8hnBPhInTTUdlFm+z16C/ghbxBG51Sw00hd7HUyKmEUKRozyc5od+/N6pOrX/bIh5vIbtMXIxsos0lg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - - lightningcss-linux-x64-gnu@1.19.0: - resolution: {integrity: sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - - lightningcss-linux-x64-gnu@1.22.0: - resolution: {integrity: sha512-grdrhYGRi2KrR+bsXJVI0myRADqyA7ekprGxiuK5QRNkv7kj3Yq1fERDNyzZvjisHwKUi29sYMClscbtl+/Zpw==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - - lightningcss-linux-x64-musl@1.19.0: - resolution: {integrity: sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - - lightningcss-linux-x64-musl@1.22.0: - resolution: {integrity: sha512-t5f90X+iQUtIyR56oXIHMBUyQFX/zwmPt72E6Dane3P8KNGlkijTg2I75XVQS860gNoEFzV7Mm5ArRRA7u5CAQ==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - - lightningcss-win32-x64-msvc@1.19.0: - resolution: {integrity: sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] - - lightningcss-win32-x64-msvc@1.22.0: - resolution: {integrity: sha512-64HTDtOOZE9PUCZJiZZQpyqXBbdby1lnztBccnqh+NtbKxjnGzP92R2ngcgeuqMPecMNqNWxgoWgTGpC+yN5Sw==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] - - lightningcss@1.19.0: - resolution: {integrity: sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==} - engines: {node: '>= 12.0.0'} - - lightningcss@1.22.0: - resolution: {integrity: sha512-+z0qvwRVzs4XGRXelnWRNwqsXUx8k3bSkbP8vD42kYKSk3z9OM2P3e/gagT7ei/gwh8DTS80LZOFZV6lm8Z8Fg==} - engines: {node: '>= 12.0.0'} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - linkify-it@2.2.0: - resolution: {integrity: sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==} - - locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - - lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.mergewith@4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - - lodash.throttle@4.1.1: - resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - - lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-symbols@2.2.0: - resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} - engines: {node: '>=4'} - - log-symbols@3.0.0: - resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} - engines: {node: '>=8'} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - logkitty@0.7.1: - resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} - hasBin: true - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lower-case-first@1.0.2: - resolution: {integrity: sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==} - - lower-case@1.1.4: - resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} - - lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - - make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - - markdown-it@10.0.0: - resolution: {integrity: sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==} - hasBin: true - - marky@1.2.5: - resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} - - md5-file@3.2.3: - resolution: {integrity: sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==} - engines: {node: '>=0.10'} - hasBin: true - - md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - - md5@2.2.1: - resolution: {integrity: sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==} - - md5@2.3.0: - resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} - - md5hex@1.0.0: - resolution: {integrity: sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ==} - - mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - - mdurl@1.0.1: - resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} - - memoize-one@5.2.1: - resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - - memoize-one@6.0.0: - resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} - - memory-cache@0.2.0: - resolution: {integrity: sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - metro-babel-transformer@0.80.5: - resolution: {integrity: sha512-sxH6hcWCorhTbk4kaShCWsadzu99WBL4Nvq4m/sDTbp32//iGuxtAnUK+ZV+6IEygr2u9Z0/4XoZ8Sbcl71MpA==} - engines: {node: '>=18'} - - metro-cache-key@0.80.5: - resolution: {integrity: sha512-fr3QLZUarsB3tRbVcmr34kCBsTHk0Sh9JXGvBY/w3b2lbre+Lq5gtgLyFElHPecGF7o4z1eK9r3ubxtScHWcbA==} - engines: {node: '>=18'} - - metro-cache@0.80.5: - resolution: {integrity: sha512-2u+dQ4PZwmC7eZo9uMBNhQQMig9f+w4QWBZwXCdVy/RYOHM0eObgGdMEOwODo73uxie82T9lWzxr3aZOZ+Nqtw==} - engines: {node: '>=18'} - - metro-config@0.80.5: - resolution: {integrity: sha512-elqo/lwvF+VjZ1OPyvmW/9hSiGlmcqu+rQvDKw5F5WMX48ZC+ySTD1WcaD7e97pkgAlJHVYqZ98FCjRAYOAFRQ==} - engines: {node: '>=18'} - - metro-core@0.80.5: - resolution: {integrity: sha512-vkLuaBhnZxTVpaZO8ZJVEHzjaqSXpOdpAiztSZ+NDaYM6jEFgle3/XIbLW91jTSf2+T8Pj5yB1G7KuOX+BcVwg==} - engines: {node: '>=18'} - - metro-file-map@0.80.5: - resolution: {integrity: sha512-bKCvJ05drjq6QhQxnDUt3I8x7bTcHo3IIKVobEr14BK++nmxFGn/BmFLRzVBlghM6an3gqwpNEYxS5qNc+VKcg==} - engines: {node: '>=18'} - - metro-minify-terser@0.80.5: - resolution: {integrity: sha512-S7oZLLcab6YXUT6jYFX/ZDMN7Fq6xBGGAG8liMFU1UljX6cTcEC2u+UIafYgCLrdVexp/+ClxrIetVPZ5LtL/g==} - engines: {node: '>=18'} - - metro-resolver@0.80.5: - resolution: {integrity: sha512-haJ/Hveio3zv/Fr4eXVdKzjUeHHDogYok7OpRqPSXGhTXisNXB+sLN7CpcUrCddFRUDLnVaqQOYwhYsFndgUwA==} - engines: {node: '>=18'} - - metro-runtime@0.80.5: - resolution: {integrity: sha512-L0syTWJUdWzfUmKgkScr6fSBVTh6QDr8eKEkRtn40OBd8LPagrJGySBboWSgbyn9eIb4ayW3Y347HxgXBSAjmg==} - engines: {node: '>=18'} - - metro-source-map@0.80.5: - resolution: {integrity: sha512-DwSF4l03mKPNqCtyQ6K23I43qzU1BViAXnuH81eYWdHglP+sDlPpY+/7rUahXEo6qXEHXfAJgVoo1sirbXbmsQ==} - engines: {node: '>=18'} - - metro-symbolicate@0.80.5: - resolution: {integrity: sha512-IsM4mTYvmo9JvIqwEkCZ5+YeDVPST78Q17ZgljfLdHLSpIivOHp9oVoiwQ/YGbLx0xRHRIS/tKiXueWBnj3UWA==} - engines: {node: '>=18'} - hasBin: true - - metro-transform-plugins@0.80.5: - resolution: {integrity: sha512-7IdlTqK/k5+qE3RvIU5QdCJUPk4tHWEqgVuYZu8exeW+s6qOJ66hGIJjXY/P7ccucqF+D4nsbAAW5unkoUdS6g==} - engines: {node: '>=18'} - - metro-transform-worker@0.80.5: - resolution: {integrity: sha512-Q1oM7hfP+RBgAtzRFBDjPhArELUJF8iRCZ8OidqCpYzQJVGuJZ7InSnIf3hn1JyqiUQwv2f1LXBO78i2rAjzyA==} - engines: {node: '>=18'} - - metro@0.80.5: - resolution: {integrity: sha512-OE/CGbOgbi8BlTN1QqJgKOBaC27dS0JBQw473JcivrpgVnqIsluROA7AavEaTVUrB9wPUZvoNVDROn5uiM2jfw==} - engines: {node: '>=18'} - hasBin: true - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - miller-rabin@4.0.1: - resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} - hasBin: true - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - - mimic-fn@1.2.0: - resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} - engines: {node: '>=4'} - - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - - minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - - minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - - minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - moti@0.27.5: - resolution: {integrity: sha512-6PbHgNTzSyipTon57TBm5w3/cKKMZVugq/Ey2YLbZbMLxsmL4uz6zGO0uBcZWkKaVqm9O8LcK+WdGMyNiR2yrg==} - peerDependencies: - react-native-reanimated: '*' - - mrmime@1.0.1: - resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} - engines: {node: '>=10'} - - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - - mv@2.1.1: - resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} - engines: {node: '>=0.8.0'} - - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - ncp@2.0.0: - resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} - hasBin: true - - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - nested-error-stacks@2.0.1: - resolution: {integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==} - - netmask@2.0.2: - resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} - engines: {node: '>= 0.4.0'} - - nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - - no-case@2.3.2: - resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} - - nocache@3.0.4: - resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} - engines: {node: '>=12.0.0'} - - node-abort-controller@3.1.1: - resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - - node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} - - node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - - node-plop@0.26.3: - resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==} - engines: {node: '>=8.9.4'} - - node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - - node-stream-zip@1.15.0: - resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} - engines: {node: '>=0.12.0'} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-url@2.0.1: - resolution: {integrity: sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==} - engines: {node: '>=4'} - - npm-package-arg@7.0.0: - resolution: {integrity: sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==} - - npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - nullthrows@1.1.1: - resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - - ob1@0.80.5: - resolution: {integrity: sha512-zYDMnnNrFi/1Tqh0vo3PE4p97Tpl9/4MP2k2ECvkbLOZzQuAYZJLTUYVLZb7hJhbhjT+JJxAwBGS8iu5hCSd1w==} - engines: {node: '>=18'} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - - object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} - engines: {node: '>= 0.4'} - - object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} - - object.hasown@1.1.3: - resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} - - object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} - engines: {node: '>= 0.4'} - - on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - - on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@2.0.1: - resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} - engines: {node: '>=4'} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - open@6.4.0: - resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} - engines: {node: '>=8'} - - open@7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} - - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - - ora@3.4.0: - resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} - engines: {node: '>=6'} - - ora@4.1.1: - resolution: {integrity: sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==} - engines: {node: '>=8'} - - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - - os-homedir@1.0.2: - resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} - engines: {node: '>=0.10.0'} - - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - osenv@0.1.5: - resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} - - p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-map@3.0.0: - resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} - engines: {node: '>=8'} - - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - pac-proxy-agent@7.0.1: - resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==} - engines: {node: '>= 14'} - - pac-resolver@7.0.0: - resolution: {integrity: sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==} - engines: {node: '>= 14'} - - param-case@2.1.1: - resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-asn1@5.1.6: - resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} - - parse-hls@1.0.7: - resolution: {integrity: sha512-tnAK2nXe8J/Jf66SwY2cUAKKXInLR9hkNhTtcS7t6J4CgkG8LGBfC1GuuXg7kLLbIQLXpVhZrY/tfyhDbqfzwg==} - - parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - - parse-png@2.1.0: - resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==} - engines: {node: '>=10'} - - parse5-htmlparser2-tree-adapter@7.0.0: - resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} - - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - - pascal-case@2.0.1: - resolution: {integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==} - - password-prompt@1.1.3: - resolution: {integrity: sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==} - - path-case@2.1.1: - resolution: {integrity: sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==} - - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.10.2: - resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} - engines: {node: '>=16 || 14 >=14.17'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} - - performant-array-to-tree@1.11.0: - resolution: {integrity: sha512-YwCqIDvnaebXaKuKQhI5yJD6ryDc3FxvoeX/5ougXTKDUWb7s5S2BuBgIyftCa4sBe1+ZU5Kmi4RJy+pjjjrpw==} - - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - picomatch@3.0.1: - resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} - engines: {node: '>=10'} - - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - pkg-up@3.1.0: - resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} - engines: {node: '>=8'} - - plist@3.1.0: - resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} - engines: {node: '>=10.4.0'} - - pngjs@3.4.0: - resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} - engines: {node: '>=4.0.0'} - - popmotion@11.0.3: - resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} - - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-nested@6.0.1: - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-selector-parser@6.0.16: - resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.33: - resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.4.36: - resolution: {integrity: sha512-/n7eumA6ZjFHAsbX30yhHup/IMkOmlmvtEi7P+6RMYf+bGJSUHc3geH4a0NSZxAz/RJfiS9tooCTs9LAVYUZKw==} - engines: {node: ^10 || ^12 || >=14} - - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} - engines: {node: ^10 || ^12 || >=14} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prepend-http@2.0.0: - resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} - engines: {node: '>=4'} - - prettier-plugin-tailwindcss@0.5.11: - resolution: {integrity: sha512-AvI/DNyMctyyxGOjyePgi/gqj5hJYClZ1avtQvLlqMT3uDZkRbi4HhGUpok3DRzv9z7Lti85Kdj3s3/1CeNI0w==} - engines: {node: '>=14.21.3'} - peerDependencies: - '@ianvs/prettier-plugin-sort-imports': '*' - '@prettier/plugin-pug': '*' - '@shopify/prettier-plugin-liquid': '*' - '@trivago/prettier-plugin-sort-imports': '*' - prettier: ^3.0 - prettier-plugin-astro: '*' - prettier-plugin-css-order: '*' - prettier-plugin-import-sort: '*' - prettier-plugin-jsdoc: '*' - prettier-plugin-marko: '*' - prettier-plugin-organize-attributes: '*' - prettier-plugin-organize-imports: '*' - prettier-plugin-style-order: '*' - prettier-plugin-svelte: '*' - prettier-plugin-twig-melody: '*' - peerDependenciesMeta: - '@ianvs/prettier-plugin-sort-imports': - optional: true - '@prettier/plugin-pug': - optional: true - '@shopify/prettier-plugin-liquid': - optional: true - '@trivago/prettier-plugin-sort-imports': - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-import-sort: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-marko: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-style-order: - optional: true - prettier-plugin-svelte: - optional: true - prettier-plugin-twig-melody: - optional: true - - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - - prettier@3.2.4: - resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==} - engines: {node: '>=14'} - hasBin: true - - pretty-bytes@5.6.0: - resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} - engines: {node: '>=6'} - - pretty-format@26.6.2: - resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} - engines: {node: '>= 10'} - - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - - promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - - promise@7.3.1: - resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} - - promise@8.3.0: - resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} - - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - proxy-agent@6.3.1: - resolution: {integrity: sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==} - engines: {node: '>= 14'} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - - public-encrypt@4.0.3: - resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} - - pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - - punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - qrcode-terminal@0.11.0: - resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==} - hasBin: true - - qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} - engines: {node: '>=0.6'} - - query-string@5.1.1: - resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} - engines: {node: '>=0.10.0'} - - query-string@7.1.3: - resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} - engines: {node: '>=6'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - queue@6.0.2: - resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} - - r-json@1.3.0: - resolution: {integrity: sha512-xesd+RHCpymPCYd9DvDvUr1w1IieSChkqYF1EpuAYrvCfLXji9NP36DvyYZJZZB5soVDvZ0WUtBoZaU1g5Yt9A==} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - randomfill@1.0.4: - resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} - - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - - react-devtools-core@4.28.5: - resolution: {integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==} - - react-dom@18.2.0: - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 - - react-fast-compare@3.2.2: - resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - - react-freeze@1.0.3: - resolution: {integrity: sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==} - engines: {node: '>=10'} - peerDependencies: - react: '>=17.0.0' - - react-helmet-async@1.3.0: - resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - - react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - - react-native-animatable@1.3.3: - resolution: {integrity: sha512-2ckIxZQAsvWn25Ho+DK3d1mXIgj7tITkrS4pYDvx96WyOttSvzzFeQnM2od0+FUMzILbdHDsDEqZvnz1DYNQ1w==} - - react-native-context-menu-view@1.14.1: - resolution: {integrity: sha512-rPtC6RCbEVismTQ6M7WSt1HisNvgbS9bWqWX4RQXNXHKOKsVvXpI+bWRypFAjeBN/P+winn6Dxn1+meLBMrjmQ==} - peerDependencies: - react: ^16.8.1 || ^17.0.0 || ^18.0.0 - react-native: '>=0.60.0-rc.0 <1.0.x' - - react-native-css-interop@0.0.35: - resolution: {integrity: sha512-renqiX1UGsOIWUrDBzEaYQ1zapyTg69W7eIFvIYRZyEWPQ/16A+6pM8SkybOMu9pp7qInpUy888xmYhTQhg1UA==} - engines: {node: '>=18'} - peerDependencies: - react: '>=18' - react-native: '*' - react-native-reanimated: '>=3.6.2' - react-native-safe-area-context: '*' - react-native-svg: '*' - tailwindcss: ~3 - peerDependenciesMeta: - react-native-safe-area-context: - optional: true - react-native-svg: - optional: true - - react-native-fit-image@1.5.5: - resolution: {integrity: sha512-Wl3Vq2DQzxgsWKuW4USfck9zS7YzhvLNPpkwUUCF90bL32e1a0zOVQ3WsJILJOwzmPdHfzZmWasiiAUNBkhNkg==} - - react-native-gesture-handler@2.14.1: - resolution: {integrity: sha512-YiM1BApV4aKeuwsM6O4C2ufwewYEKk6VMXOt0YqEZFMwABBFWhXLySFZYjBSNRU2USGppJbfHP1q1DfFQpKhdA==} - peerDependencies: - react: '*' - react-native: '*' - - react-native-markdown-display@7.0.2: - resolution: {integrity: sha512-Mn4wotMvMfLAwbX/huMLt202W5DsdpMO/kblk+6eUs55S57VVNni1gzZCh5qpznYLjIQELNh50VIozEfY6fvaQ==} - peerDependencies: - react: '>=16.2.0' - react-native: '>=0.50.4' - - react-native-mmkv@2.12.2: - resolution: {integrity: sha512-6058Aq0p57chPrUutLGe9fYoiDVDNMU2PKV+lLFUJ3GhoHvUrLdsS1PDSCLr00yqzL4WJQ7TTzH+V8cpyrNcfg==} - peerDependencies: - react: '*' - react-native: '>=0.71.0' - - react-native-modal@13.0.1: - resolution: {integrity: sha512-UB+mjmUtf+miaG/sDhOikRfBOv0gJdBU2ZE1HtFWp6UixW9jCk/bhGdHUgmZljbPpp0RaO/6YiMmQSSK3kkMaw==} - peerDependencies: - react: '*' - react-native: '>=0.65.0' - - react-native-quick-base64@2.0.8: - resolution: {integrity: sha512-2kMlnLSy0qz4NA0KXMGugd3qNB5EAizxZ6ghEVNGIxAOlc9CGvC8miv35wgpFbSKeiaBRfcPfkdTM/5Erb/6SQ==} - peerDependencies: - react: '*' - react-native: '*' - - react-native-quick-crypto@0.6.1: - resolution: {integrity: sha512-s6uFo7tcI3syo8/y5j+t6Rf+KVSuRKDp6tH04A0vjaHptJC6Iu7DVgkNYO7aqtfrYn8ZUgQ/Kqaq+m4i9TxgIQ==} - peerDependencies: - react: '*' - react-native: '>=0.71.0' - - react-native-reanimated@3.6.2: - resolution: {integrity: sha512-IIMREMOrxhtK35drfpzh2UhxNqAOHnuvGgtMofj7yHcMj16tmWZR2zFvMUf6z2MfmXv+aVgFQ6TRZ6yKYf7LNA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-nullish-coalescing-operator': ^7.0.0-0 - '@babel/plugin-proposal-optional-chaining': ^7.0.0-0 - '@babel/plugin-transform-arrow-functions': ^7.0.0-0 - '@babel/plugin-transform-shorthand-properties': ^7.0.0-0 - '@babel/plugin-transform-template-literals': ^7.0.0-0 - react: '*' - react-native: '*' - - react-native-safe-area-context@4.8.2: - resolution: {integrity: sha512-ffUOv8BJQ6RqO3nLml5gxJ6ab3EestPiyWekxdzO/1MQ7NF8fW1Mzh1C5QE9yq573Xefnc7FuzGXjtesZGv7cQ==} - peerDependencies: - react: '*' - react-native: '*' - - react-native-screens@3.29.0: - resolution: {integrity: sha512-yB1GoAMamFAcYf4ku94uBPn0/ani9QG7NdI98beJ5cet2YFESYYzuEIuU+kt+CNRcO8qqKeugxlfgAa3HyTqlg==} - peerDependencies: - react: '*' - react-native: '*' - - react-native-svg@14.1.0: - resolution: {integrity: sha512-HeseElmEk+AXGwFZl3h56s0LtYD9HyGdrpg8yd9QM26X+d7kjETrRQ9vCjtxuT5dCZEIQ5uggU1dQhzasnsCWA==} - peerDependencies: - react: '*' - react-native: '*' - - react-native-video@5.2.1: - resolution: {integrity: sha512-aJlr9MeTuQ0LpZ4n+EC9RvhoKeiPbLtI2Rxy8u7zo/wzGevbRpWHSBj9xZ5YDBXnAVXzuqyNIkGhdw7bfdIBZw==} - - react-native-web-internals@1.94.0: - resolution: {integrity: sha512-olyjQ3b9cEHsIriFp69dDzwR9pKeNkrfQOpWoSl9aoYA9/NZmee5GdL6mP4QQt127dknJVGo9gijEvgh7UxIaw==} - - react-native-web-lite@1.94.0: - resolution: {integrity: sha512-DfHy6gCHlaDaBvLIberaWEbTr1L6WAFMY3MB3oAq9fuFSm2OWFupovy63sRW2cVyvu0OYc6z3sUKpZviLKSnqw==} - peerDependencies: - react: '*' - react-dom: '*' - - react-native-web@0.19.10: - resolution: {integrity: sha512-IQoHiTQq8egBCVVwmTrYcFLgEFyb4LMZYEktHn4k22JMk9+QTCEz5WTfvr+jdNoeqj/7rtE81xgowKbfGO74qg==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - react-native@0.73.6: - resolution: {integrity: sha512-oqmZe8D2/VolIzSPZw+oUd6j/bEmeRHwsLn1xLA5wllEYsZ5zNuMsDus235ONOnCRwexqof/J3aztyQswSmiaA==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - react: 18.2.0 - - react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} - engines: {node: '>=0.10.0'} - - react-remove-scroll-bar@2.3.6: - resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.5.5: - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-shallow-renderer@16.15.0: - resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - - react-style-singleton@2.2.1: - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - readline@1.3.0: - resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - - recast@0.21.5: - resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} - engines: {node: '>= 4'} - - reflect.getprototypeof@1.0.4: - resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} - engines: {node: '>= 0.4'} - - reforest@0.13.0: - resolution: {integrity: sha512-f0It/s51f1UWCCCni0viULALDBhxWBPFnLmZRYtKcz4zYeNWqeNTdcnU/OpBry9tk+jyMQcH3MLK8UdzsAvA5w==} - peerDependencies: - react: '>=16.8' - - regenerate-unicode-properties@10.1.1: - resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - - regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} - engines: {node: '>= 0.4'} - - regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} - engines: {node: '>=4'} - - registry-auth-token@3.3.2: - resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} - - registry-url@3.1.0: - resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} - engines: {node: '>=0.10.0'} - - regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true - - remove-trailing-slash@0.1.1: - resolution: {integrity: sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - - requireg@0.2.2: - resolution: {integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==} - engines: {node: '>= 4.0.0'} - - reselect@4.1.8: - resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} - - resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - - resolve@1.7.1: - resolution: {integrity: sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==} - - resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - - restore-cursor@2.0.0: - resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} - engines: {node: '>=4'} - - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rimraf@2.4.5: - resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==} - hasBin: true - - rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - hasBin: true - - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - - ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - - run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - - rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - - safe-array-concat@1.1.0: - resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} - engines: {node: '>=0.4'} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-json-stringify@1.2.0: - resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==} - - safe-regex-test@1.0.2: - resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==} - engines: {node: '>= 0.4'} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sax@1.3.0: - resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} - - scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} - - scheduler@0.24.0-canary-efb381bbf-20230505: - resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} - - schema-utils@4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} - - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.3.2: - resolution: {integrity: sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==} - engines: {node: '>=10'} - hasBin: true - - semver@7.5.3: - resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} - engines: {node: '>=10'} - hasBin: true - - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - - send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} - - sentence-case@2.1.1: - resolution: {integrity: sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==} - - serialize-error@2.1.0: - resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} - engines: {node: '>=0.10.0'} - - serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} - - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - set-cookie-parser@2.6.0: - resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - - set-function-length@1.2.0: - resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} - engines: {node: '>= 0.4'} - - set-value@4.1.0: - resolution: {integrity: sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==} - engines: {node: '>=11.0'} - - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - sf-symbols-typescript@1.0.0: - resolution: {integrity: sha512-DkS7q3nN68dEMb4E18HFPDAvyrjDZK9YAQQF2QxeFu9gp2xRDXFMF8qLJ1EmQ/qeEGQmop4lmMM1WtYJTIcCMw==} - engines: {node: '>=10'} - - sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true - - shaka-player@2.5.23: - resolution: {integrity: sha512-3MC9k0OXJGw8AZ4n/ZNCZS2yDxx+3as5KgH6Tx4Q5TRboTBBCu6dYPI5vp1DxKeyU12MBN1Zcbs7AKzXv2EnCg==} - deprecated: Shaka Player < v4.2 is no longer supported. - - shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - - shallowequal@1.1.0: - resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - - side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - simple-plist@1.3.1: - resolution: {integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==} - - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - - slice-ansi@2.1.0: - resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} - engines: {node: '>=6'} - - slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - - slugify@1.6.6: - resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} - engines: {node: '>=8.0.0'} - - smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - - snake-case@2.1.0: - resolution: {integrity: sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==} - - socks-proxy-agent@8.0.2: - resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} - engines: {node: '>= 14'} - - socks@2.7.1: - resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} - - sonner@0.3.5: - resolution: {integrity: sha512-yIwaQ4dftMvFApuruto2t7wGyyaPRpj5qYBWYJIz4Z7uGcVn0IfqI/hWN0JyJN4izNbZFuCYZISf3fOGnvSlNQ==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - - sort-keys@2.0.0: - resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} - engines: {node: '>=4'} - - source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} - - source-map-js@1.1.0: - resolution: {integrity: sha512-9vC2SfsJzlej6MAaMPLu8HiBSHGdRAJ9hVFYN1ibZoNkeanmDmLUcIrj6G9DGL7XMJ54AKg/G75akXl1/izTOw==} - engines: {node: '>=0.10.0'} - - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - - split-on-first@1.1.0: - resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} - engines: {node: '>=6'} - - split@1.0.1: - resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - srt-webvtt@2.0.0: - resolution: {integrity: sha512-G2Z7/Jf2NRKrmLYNSIhSYZZYE6OFlKXFp9Au2/zJBKgrioUzmrAys1x7GT01dwl6d2sEnqr5uahEIOd0JW/Rbw==} - - ssri@8.0.1: - resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} - engines: {node: '>= 8'} - - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - - stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - - stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} - - statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - stream-browserify@3.0.0: - resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} - - stream-buffers@2.2.0: - resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} - engines: {node: '>= 0.10.0'} - - stream-slice@0.1.2: - resolution: {integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==} - - strict-uri-encode@1.1.0: - resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} - engines: {node: '>=0.10.0'} - - strict-uri-encode@2.0.0: - resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} - engines: {node: '>=4'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} - - string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} - - string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - - structured-headers@0.4.1: - resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} - - style-value-types@5.0.0: - resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} - - styleq@0.1.3: - resolution: {integrity: sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==} - - subsrt-ts@2.1.2: - resolution: {integrity: sha512-45yNlK42Z0pz4lAaNYbR5P60M2jmHl+gfAaiJxDIXsXXqoE7TkDCzl/00HgWyZXKkdIU6s8FiNtRvrlOZb+5Qg==} - hasBin: true - - sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} - hasBin: true - - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - - sudo-prompt@8.2.5: - resolution: {integrity: sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==} - - sudo-prompt@9.1.1: - resolution: {integrity: sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==} - - sudo-prompt@9.2.1: - resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - swap-case@1.1.2: - resolution: {integrity: sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==} - - tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - - table@6.8.1: - resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} - engines: {node: '>=10.0.0'} - - tailwindcss@3.4.3: - resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} - engines: {node: '>=14.0.0'} - hasBin: true - - tamagui@1.94.0: - resolution: {integrity: sha512-n+5GGfNiOa2nDY8WQPZSblBrM8tRAyD7rCu1wSTrMMvswJhshUbxaLu7UbNEMlYTFdAHsEtRYugQCwgkYRn6Mw==} - peerDependencies: - react: '*' - react-native: '*' - react-native-web: '*' - - tar@6.2.0: - resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} - engines: {node: '>=10'} - - temp-dir@1.0.0: - resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} - engines: {node: '>=4'} - - temp-dir@2.0.0: - resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} - engines: {node: '>=8'} - - temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} - - tempy@0.3.0: - resolution: {integrity: sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==} - engines: {node: '>=8'} - - tempy@0.7.1: - resolution: {integrity: sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==} - engines: {node: '>=10'} - - terminal-link@2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} - - terser@5.27.0: - resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==} - engines: {node: '>=10'} - hasBin: true - - text-encoding-polyfill@0.6.7: - resolution: {integrity: sha512-/DZ1XJqhbqRkCop6s9ZFu8JrFRwmVuHg4quIRm+ziFkR3N3ec6ck6yBvJ1GYeEQZhLVwRW0rZE+C3SSJpy0RTg==} - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - throat@5.0.0: - resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} - - through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - tinycolor2@1.6.0: - resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} - - tinygradient@1.1.5: - resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==} - - title-case@2.1.1: - resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==} - - tmdb-ts@1.6.1: - resolution: {integrity: sha512-TJQYQctzky03z8bhlJtZ9ZjFHNvLhpow3qKHMMZj2LEOvlqcJ/Dyy33IyuBROrhzWLelkmGraAA718B0ENP1Fg==} - - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - traverse@0.6.8: - resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} - engines: {node: '>= 0.4'} - - ts-api-utils@1.0.3: - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} - peerDependencies: - typescript: '>=4.2.0' - - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - turbo-darwin-64@1.12.2: - resolution: {integrity: sha512-Aq/ePQ5KNx6XGwlZWTVTqpQYfysm1vkwkI6kAYgrX5DjMWn+tUXrSgNx4YNte0F+V4DQ7PtuWX+jRG0h0ZNg0A==} - cpu: [x64] - os: [darwin] - - turbo-darwin-arm64@1.12.2: - resolution: {integrity: sha512-wTr+dqkwJo/eXE+4SPTSeNBKyyfQJhI6I9sKVlCSBmtaNEqoGNgdVzgMUdqrg9AIFzLIiKO+zhfskNaSWpVFow==} - cpu: [arm64] - os: [darwin] - - turbo-linux-64@1.12.2: - resolution: {integrity: sha512-BggBKrLojGarDaa2zBo+kUR3fmjpd6bLA8Unm3Aa2oJw0UvEi3Brd+w9lNsPZHXXQYBUzNUY2gCdxf3RteWb0g==} - cpu: [x64] - os: [linux] - - turbo-linux-arm64@1.12.2: - resolution: {integrity: sha512-v/apSRvVuwYjq1D9MJFsHv2EpGd1S4VoSdZvVfW6FaM06L8CFZa92urNR1svdGYN28YVKwK9Ikc9qudC6t/d5A==} - cpu: [arm64] - os: [linux] - - turbo-windows-64@1.12.2: - resolution: {integrity: sha512-3uDdwXcRGkgopYFdPDpxQiuQjfQ12Fxq0fhj+iGymav0eWA4W4wzYwSdlUp6rT22qOBIzaEsrIspRwx1DsMkNg==} - cpu: [x64] - os: [win32] - - turbo-windows-arm64@1.12.2: - resolution: {integrity: sha512-zNIHnwtQfJSjFi7movwhPQh2rfrcKZ7Xv609EN1yX0gEp9GxooCUi2yNnBQ8wTqFjioA2M5hZtGJQ0RrKaEm/Q==} - cpu: [arm64] - os: [win32] - - turbo@1.12.2: - resolution: {integrity: sha512-BcoQjBZ+LJCMdjzWhzQflOinUjek28rWXj07aaaAQ8T3Ehs0JFSjIsXOm4qIbo52G4xk3gFVcUtJhh/QRADl7g==} - hasBin: true - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-fest@0.16.0: - resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} - engines: {node: '>=10'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - type-fest@0.3.1: - resolution: {integrity: sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==} - engines: {node: '>=6'} - - type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - - type-fest@3.13.1: - resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} - engines: {node: '>=14.16'} - - typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - - typescript@5.4.3: - resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} - engines: {node: '>=14.17'} - hasBin: true - - ua-parser-js@1.0.37: - resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} - - uc.micro@1.0.6: - resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - - uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} - engines: {node: '>=0.8.0'} - hasBin: true - - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - - unique-filename@1.1.1: - resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} - - unique-slug@2.0.2: - resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} - - unique-string@1.0.0: - resolution: {integrity: sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==} - engines: {node: '>=4'} - - unique-string@2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} - engines: {node: '>=8'} - - universal-user-agent@6.0.1: - resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} - - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - - universalify@1.0.0: - resolution: {integrity: sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==} - engines: {node: '>= 10.0.0'} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - unpacker@1.0.1: - resolution: {integrity: sha512-0HTljwp8+JBdITpoHcK1LWi7X9U2BspUmWv78UWZh7NshYhbh1nec8baY/iSbe2OQTZ2bhAtVdnr6/BTD0DKVg==} - - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - - update-browserslist-db@1.0.13: - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - update-check@1.5.4: - resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} - - upper-case-first@1.1.2: - resolution: {integrity: sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==} - - upper-case@1.1.3: - resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - url-join@4.0.0: - resolution: {integrity: sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA==} - - url@0.11.3: - resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} - - use-callback-ref@1.3.1: - resolution: {integrity: sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-latest-callback@0.1.9: - resolution: {integrity: sha512-CL/29uS74AwreI/f2oz2hLTW7ZqVeV5+gxFeGudzQrgkCytrHw33G4KbnQOrRlAEzzAFXi7dDLMC9zhWcVpzmw==} - peerDependencies: - react: '>=16.8' - - use-sidecar@1.1.2: - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-sync-external-store@1.2.0: - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - - uuid@7.0.3: - resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==} - hasBin: true - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - valid-url@1.0.9: - resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==} - - validate-npm-package-name@3.0.0: - resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} - - validate-npm-package-name@5.0.0: - resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - - vlq@1.0.1: - resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} - - w-json@1.3.10: - resolution: {integrity: sha512-XadVyw0xE+oZ5FGApXsdswv96rOhStzKqL53uSe5UaTadABGkWIg1+DTx8kiZ/VqTZTBneoL0l65RcPe4W3ecw==} - - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - - warn-once@0.1.1: - resolution: {integrity: sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==} - - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - - web-encoding@1.1.5: - resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} - - web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - webidl-conversions@5.0.0: - resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} - engines: {node: '>=8'} - - whatwg-fetch@3.6.20: - resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - - whatwg-url-without-unicode@8.0.0-3: - resolution: {integrity: sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==} - engines: {node: '>=10'} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - - which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} - engines: {node: '>= 0.4'} - - which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} - - which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - - which-typed-array@1.1.14: - resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} - engines: {node: '>= 0.4'} - - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - wonka@4.0.15: - resolution: {integrity: sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==} - - wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - - ws@6.2.2: - resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - ws@8.16.0: - resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - xcode@3.0.1: - resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==} - engines: {node: '>=10.0.0'} - - xml2js@0.6.0: - resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==} - engines: {node: '>=4.0.0'} - - xmlbuilder@11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} - - xmlbuilder@14.0.0: - resolution: {integrity: sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==} - engines: {node: '>=8.0'} - - xmlbuilder@15.1.1: - resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} - engines: {node: '>=8.0'} - - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@2.4.1: - resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} - engines: {node: '>= 14'} - hasBin: true - - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - zustand@4.4.7: - resolution: {integrity: sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==} - engines: {node: '>=12.7.0'} - peerDependencies: - '@types/react': '>=16.8' - immer: '>=9.0' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true - -snapshots: - - '@aashutoshrathi/word-wrap@1.2.6': {} - - '@alloc/quick-lru@5.2.0': {} - - '@ampproject/remapping@2.2.1': - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 - - '@babel/code-frame@7.10.4': - dependencies: - '@babel/highlight': 7.23.4 - - '@babel/code-frame@7.23.5': - dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 - - '@babel/compat-data@7.23.5': {} - - '@babel/core@7.23.9': - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helpers': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.23.6': - dependencies: - '@babel/types': 7.23.9 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.22 - jsesc: 2.5.2 - - '@babel/helper-annotate-as-pure@7.22.5': - dependencies: - '@babel/types': 7.23.9 - - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': - dependencies: - '@babel/types': 7.23.9 - - '@babel/helper-compilation-targets@7.23.6': - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.22.3 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-create-class-features-plugin@7.23.10(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 - - '@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-environment-visitor@7.22.20': {} - - '@babel/helper-function-name@7.23.0': - dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.23.9 - - '@babel/helper-hoist-variables@7.22.5': - dependencies: - '@babel/types': 7.23.9 - - '@babel/helper-member-expression-to-functions@7.23.0': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-module-imports@7.22.15': - dependencies: - '@babel/types': 7.23.9 - - '@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - - '@babel/helper-optimise-call-expression@7.22.5': - dependencies: - '@babel/types': 7.24.0 - - '@babel/helper-plugin-utils@7.22.5': {} - - '@babel/helper-plugin-utils@7.24.0': {} - - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.22.20 - - '@babel/helper-replace-supers@7.22.20(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - - '@babel/helper-simple-access@7.22.5': - dependencies: - '@babel/types': 7.23.9 - - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - dependencies: - '@babel/types': 7.23.9 - - '@babel/helper-split-export-declaration@7.22.6': - dependencies: - '@babel/types': 7.23.9 - - '@babel/helper-string-parser@7.23.4': {} - - '@babel/helper-validator-identifier@7.22.20': {} - - '@babel/helper-validator-option@7.23.5': {} - - '@babel/helper-wrap-function@7.22.20': - dependencies: - '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.24.0 - '@babel/types': 7.24.0 - - '@babel/helpers@7.23.9': - dependencies: - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - transitivePeerDependencies: - - supports-color - - '@babel/highlight@7.23.4': - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - - '@babel/parser@7.23.9': - dependencies: - '@babel/types': 7.23.9 - - '@babel/parser@7.24.0': - dependencies: - '@babel/types': 7.24.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) - - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-proposal-decorators@7.23.9(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.23.9) - - '@babel/plugin-proposal-export-default-from@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.9) - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) - - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.9)': - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - - '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-decorators@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-export-default-from@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) - - '@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) - - '@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) - - '@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) - '@babel/helper-split-export-declaration': 7.22.6 - globals: 11.12.0 - - '@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.23.9 - - '@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) - - '@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) - - '@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - - '@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - - '@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) - - '@babel/plugin-transform-object-assign@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - - '@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) - - '@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - - '@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) - - '@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) - - '@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/types': 7.23.9 - - '@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - regenerator-transform: 0.15.2 - - '@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-runtime@7.24.0(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.24.0 - babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.9) - babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - - '@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.10(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) - - '@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) - '@babel/helper-plugin-utils': 7.22.5 - - '@babel/preset-env@7.23.9(@babel/core@7.23.9)': - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.23.9) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.23.9) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.9) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.9) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.23.9) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.9) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.9) - babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.9) - babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9) - core-js-compat: 3.35.1 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-flow@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.9) - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.23.9 - esutils: 2.0.3 - - '@babel/preset-react@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.9) - - '@babel/preset-typescript@7.23.3(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9) - - '@babel/register@7.23.7(@babel/core@7.23.9)': - dependencies: - '@babel/core': 7.23.9 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.6 - source-map-support: 0.5.21 - - '@babel/regjsgen@0.8.0': {} - - '@babel/runtime-corejs3@7.23.9': - dependencies: - core-js-pure: 3.35.1 - regenerator-runtime: 0.14.1 - - '@babel/runtime@7.23.9': - dependencies: - regenerator-runtime: 0.14.1 - - '@babel/template@7.23.9': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 - - '@babel/template@7.24.0': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - - '@babel/traverse@7.23.9': - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.23.9': - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - - '@babel/types@7.24.0': - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - - '@craftzdog/react-native-buffer@6.0.5(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': - dependencies: - ieee754: 1.2.1 - react-native-quick-base64: 2.0.8(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - transitivePeerDependencies: - - react - - react-native - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@egjs/hammerjs@2.0.17': - dependencies: - '@types/hammerjs': 2.0.45 - - '@emotion/is-prop-valid@0.8.8': - dependencies: - '@emotion/memoize': 0.7.4 - optional: true - - '@emotion/memoize@0.7.4': - optional: true - - '@esbuild/aix-ppc64@0.20.2': - optional: true - - '@esbuild/android-arm64@0.20.2': - optional: true - - '@esbuild/android-arm@0.20.2': - optional: true - - '@esbuild/android-x64@0.20.2': - optional: true - - '@esbuild/darwin-arm64@0.20.2': - optional: true - - '@esbuild/darwin-x64@0.20.2': - optional: true - - '@esbuild/freebsd-arm64@0.20.2': - optional: true - - '@esbuild/freebsd-x64@0.20.2': - optional: true - - '@esbuild/linux-arm64@0.20.2': - optional: true - - '@esbuild/linux-arm@0.20.2': - optional: true - - '@esbuild/linux-ia32@0.20.2': + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false optional: true - '@esbuild/linux-loong64@0.20.2': + /@esbuild/linux-loong64@0.20.2: + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@esbuild/linux-mips64el@0.20.2': + /@esbuild/linux-mips64el@0.20.2: + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false optional: true - '@esbuild/linux-ppc64@0.20.2': + /@esbuild/linux-ppc64@0.20.2: + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@esbuild/linux-riscv64@0.20.2': + /@esbuild/linux-riscv64@0.20.2: + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@esbuild/linux-s390x@0.20.2': + /@esbuild/linux-s390x@0.20.2: + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false optional: true - '@esbuild/linux-x64@0.20.2': + /@esbuild/linux-x64@0.20.2: + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@esbuild/netbsd-x64@0.20.2': + /@esbuild/netbsd-x64@0.20.2: + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false optional: true - '@esbuild/openbsd-x64@0.20.2': + /@esbuild/openbsd-x64@0.20.2: + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false optional: true - '@esbuild/sunos-x64@0.20.2': + /@esbuild/sunos-x64@0.20.2: + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false optional: true - '@esbuild/win32-arm64@0.20.2': + /@esbuild/win32-arm64@0.20.2: + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false optional: true - '@esbuild/win32-ia32@0.20.2': + /@esbuild/win32-ia32@0.20.2: + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false optional: true - '@esbuild/win32-x64@0.20.2': + /@esbuild/win32-x64@0.20.2: + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.56.0)': + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.56.0 + eslint: 8.57.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.10.0': {} + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/eslintrc@2.1.4': + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 @@ -8313,30 +2150,37 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.56.0': {} + /@eslint/js@8.57.0: + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@expo/bunyan@4.0.0': + /@expo/bunyan@4.0.0: + resolution: {integrity: sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA==} + engines: {'0': node >=0.10.0} dependencies: uuid: 8.3.2 optionalDependencies: mv: 2.1.1 safe-json-stringify: 1.2.0 + dev: false - '@expo/cli@0.17.8(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))(expo-modules-autolinking@1.10.3)': + /@expo/cli@0.17.10(@react-native/babel-preset@0.74.81)(expo-modules-autolinking@1.10.3): + resolution: {integrity: sha512-Jw2wY+lsavP9GRqwwLqF/SvB7w2GZ4sWBMcBKTZ8F0lWjwmLGAUt4WYquf20agdmnY/oZUHvWNkrz/t3SflhnA==} + hasBin: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 '@expo/code-signing-certificates': 0.0.5 - '@expo/config': 8.5.4 - '@expo/config-plugins': 7.8.4 + '@expo/config': 8.5.6 + '@expo/config-plugins': 7.9.1 '@expo/devcert': 1.1.0 - '@expo/env': 0.2.2 - '@expo/image-utils': 0.4.1 - '@expo/json-file': 8.3.0 - '@expo/metro-config': 0.17.6(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + '@expo/env': 0.2.3 + '@expo/image-utils': 0.4.2 + '@expo/json-file': 8.3.1 + '@expo/metro-config': 0.17.7(@react-native/babel-preset@0.74.81) '@expo/osascript': 2.1.0 - '@expo/package-manager': 1.4.2 - '@expo/plist': 0.1.0 - '@expo/prebuild-config': 6.7.4(expo-modules-autolinking@1.10.3) + '@expo/package-manager': 1.5.2 + '@expo/plist': 0.1.1 + '@expo/prebuild-config': 6.8.1(expo-modules-autolinking@1.10.3) '@expo/rudder-sdk-node': 1.1.1 '@expo/spawn-async': 1.5.0 '@expo/xcpretty': 4.3.1 @@ -8386,20 +2230,20 @@ snapshots: resolve: 1.22.8 resolve-from: 5.0.0 resolve.exports: 2.0.2 - semver: 7.5.4 + semver: 7.6.0 send: 0.18.0 slugify: 1.6.6 source-map-support: 0.5.21 stacktrace-parser: 0.1.10 structured-headers: 0.4.1 - tar: 6.2.0 + tar: 6.2.1 temp-dir: 2.0.0 tempy: 0.7.1 terminal-link: 2.1.1 text-table: 0.2.0 url-join: 4.0.0 wrap-ansi: 7.0.0 - ws: 8.16.0 + ws: 8.17.0 transitivePeerDependencies: - '@react-native/babel-preset' - bluebird @@ -8408,18 +2252,46 @@ snapshots: - expo-modules-autolinking - supports-color - utf-8-validate + dev: false - '@expo/code-signing-certificates@0.0.5': + /@expo/code-signing-certificates@0.0.5: + resolution: {integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==} dependencies: node-forge: 1.3.1 nullthrows: 1.1.1 + dev: false + + /@expo/config-plugins@7.8.4: + resolution: {integrity: sha512-hv03HYxb/5kX8Gxv/BTI8TLc9L06WzqAfHRRXdbar4zkLcP2oTzvsLEF4/L/TIpD3rsnYa0KU42d0gWRxzPCJg==} + dependencies: + '@expo/config-types': 50.0.1 + '@expo/fingerprint': 0.6.1 + '@expo/json-file': 8.3.1 + '@expo/plist': 0.1.1 + '@expo/sdk-runtime-versions': 1.0.0 + '@react-native/normalize-color': 2.1.0 + chalk: 4.1.2 + debug: 4.3.4 + find-up: 5.0.0 + getenv: 1.0.0 + glob: 7.1.6 + resolve-from: 5.0.0 + semver: 7.5.3 + slash: 3.0.0 + slugify: 1.6.6 + xcode: 3.0.1 + xml2js: 0.6.0 + transitivePeerDependencies: + - supports-color + dev: false - '@expo/config-plugins@7.8.4': + /@expo/config-plugins@7.9.1: + resolution: {integrity: sha512-ICt6Jed1J0tPYMQrJ8K5Qusgih2I6pZ2PU4VSvxsN3T4n97L13XpYV1vyq1Uc/HMl3UhOwldipmgpEbCfeDqsQ==} dependencies: - '@expo/config-types': 50.0.0 - '@expo/fingerprint': 0.6.0 - '@expo/json-file': 8.3.0 - '@expo/plist': 0.1.0 + '@expo/config-types': 50.0.1 + '@expo/fingerprint': 0.6.1 + '@expo/json-file': 8.3.1 + '@expo/plist': 0.1.1 '@expo/sdk-runtime-versions': 1.0.0 '@react-native/normalize-color': 2.1.0 chalk: 4.1.2 @@ -8428,22 +2300,26 @@ snapshots: getenv: 1.0.0 glob: 7.1.6 resolve-from: 5.0.0 - semver: 7.5.4 + semver: 7.6.0 slash: 3.0.0 slugify: 1.6.6 xcode: 3.0.1 xml2js: 0.6.0 transitivePeerDependencies: - supports-color + dev: false - '@expo/config-types@50.0.0': {} + /@expo/config-types@50.0.1: + resolution: {integrity: sha512-EZHMgzkWRB9SMHO1e9m8s+OMahf92XYTnsCFjxhSfcDrcEoSdFPyJWDJVloHZPMGhxns7Fi2+A+bEVN/hD4NKA==} + dev: false - '@expo/config@8.5.4': + /@expo/config@8.5.6: + resolution: {integrity: sha512-wF5awSg6MNn1cb1lIgjnhOn5ov2TEUTnkAVCsOl0QqDwcP+YIerteSFwjn9V52UZvg58L+LKxpCuGbw5IHavbg==} dependencies: '@babel/code-frame': 7.10.4 - '@expo/config-plugins': 7.8.4 - '@expo/config-types': 50.0.0 - '@expo/json-file': 8.3.0 + '@expo/config-plugins': 7.9.1 + '@expo/config-types': 50.0.1 + '@expo/json-file': 8.3.1 getenv: 1.0.0 glob: 7.1.6 require-from-string: 2.0.2 @@ -8453,8 +2329,10 @@ snapshots: sucrase: 3.34.0 transitivePeerDependencies: - supports-color + dev: false - '@expo/devcert@1.1.0': + /@expo/devcert@1.1.0: + resolution: {integrity: sha512-ghUVhNJQOCTdQckSGTHctNp/0jzvVoMMkVh+6SHn+TZj8sU15U/npXIDt8NtQp0HedlPaCgkVdMu8Sacne0aEA==} dependencies: application-config-path: 0.1.1 command-exists: 1.2.9 @@ -8471,28 +2349,23 @@ snapshots: tslib: 2.6.2 transitivePeerDependencies: - supports-color + dev: false - '@expo/env@0.2.1': - dependencies: - chalk: 4.1.2 - debug: 4.3.4 - dotenv: 16.0.3 - dotenv-expand: 10.0.0 - getenv: 1.0.0 - transitivePeerDependencies: - - supports-color - - '@expo/env@0.2.2': + /@expo/env@0.2.3: + resolution: {integrity: sha512-a+uJ/e6MAVxPVVN/HbXU5qxzdqrqDwNQYxCfxtAufgmd5VZj54e5f3TJA3LEEUW3pTSZR8xK0H0EtVN297AZnw==} dependencies: chalk: 4.1.2 debug: 4.3.4 - dotenv: 16.0.3 - dotenv-expand: 10.0.0 + dotenv: 16.4.5 + dotenv-expand: 11.0.6 getenv: 1.0.0 transitivePeerDependencies: - supports-color + dev: false - '@expo/fingerprint@0.6.0': + /@expo/fingerprint@0.6.1: + resolution: {integrity: sha512-ggLn6unI6qowlA1FihdQwPpLn16VJulYkvYAEL50gaqVahfNEglRQMSH2giZzjD0d6xq2/EQuUdFyHaJfyJwOQ==} + hasBin: true dependencies: '@expo/spawn-async': 1.7.2 chalk: 4.1.2 @@ -8503,8 +2376,10 @@ snapshots: resolve-from: 5.0.0 transitivePeerDependencies: - supports-color + dev: false - '@expo/image-utils@0.4.1': + /@expo/image-utils@0.4.2: + resolution: {integrity: sha512-CxP+1QXgRXsNnmv2FAUA2RWwK6kNBFg4QEmVXn2K9iLoEAI+i+1IQXcUgc+J7nTJl9pO7FIu2gIiEYGYffjLWQ==} dependencies: '@expo/spawn-async': 1.5.0 chalk: 4.1.2 @@ -8518,51 +2393,31 @@ snapshots: tempy: 0.3.0 transitivePeerDependencies: - encoding + dev: false - '@expo/json-file@8.3.0': + /@expo/json-file@8.3.1: + resolution: {integrity: sha512-QIMMaqPvm8EGflp041h27OG8DDgh3RxzkEjEEvHJ9AUImgeieMCGrpDsnGOcPI4TR6MpJpLNAk5rZK4szhEwIQ==} dependencies: '@babel/code-frame': 7.10.4 json5: 2.2.3 write-file-atomic: 2.4.3 + dev: false - '@expo/metro-config@0.17.3(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))': - dependencies: - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 - '@expo/config': 8.5.4 - '@expo/env': 0.2.1 - '@expo/json-file': 8.3.0 - '@expo/spawn-async': 1.7.2 - '@react-native/babel-preset': 0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)) - babel-preset-fbjs: 3.4.0(@babel/core@7.23.9) - chalk: 4.1.2 - debug: 4.3.4 - find-yarn-workspace-root: 2.0.0 - fs-extra: 9.1.0 - getenv: 1.0.0 - glob: 7.2.3 - jsc-safe-url: 0.2.4 - lightningcss: 1.19.0 - postcss: 8.4.33 - resolve-from: 5.0.0 - sucrase: 3.34.0 - transitivePeerDependencies: - - supports-color - - '@expo/metro-config@0.17.6(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))': + /@expo/metro-config@0.17.7(@react-native/babel-preset@0.74.81): + resolution: {integrity: sha512-3vAdinAjMeRwdhGWWLX6PziZdAPvnyJ6KVYqnJErHHqH0cA6dgAENT3Vq6PEM1H2HgczKr2d5yG9AMgwy848ow==} + peerDependencies: + '@react-native/babel-preset': '*' dependencies: - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - '@expo/config': 8.5.4 - '@expo/env': 0.2.2 - '@expo/json-file': 8.3.0 + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + '@expo/config': 8.5.6 + '@expo/env': 0.2.3 + '@expo/json-file': 8.3.1 '@expo/spawn-async': 1.7.2 - '@react-native/babel-preset': 0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)) - babel-preset-fbjs: 3.4.0(@babel/core@7.23.9) + '@react-native/babel-preset': 0.74.81(@babel/core@7.24.5)(@babel/preset-env@7.24.5) + babel-preset-fbjs: 3.4.0(@babel/core@7.24.5) chalk: 4.1.2 debug: 4.3.4 find-yarn-workspace-root: 2.0.0 @@ -8571,24 +2426,33 @@ snapshots: glob: 7.2.3 jsc-safe-url: 0.2.4 lightningcss: 1.19.0 - postcss: 8.4.36 + postcss: 8.4.38 resolve-from: 5.0.0 sucrase: 3.34.0 transitivePeerDependencies: - supports-color + dev: false - '@expo/metro-runtime@3.1.3(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))': + /@expo/metro-runtime@3.1.3(react-native@0.73.6): + resolution: {integrity: sha512-u1CaQJJlSgvxBB5NJ6YMVvSDTTRzjT71dHpEBnKPZhpFv5ebVry52FZ2sEeEEA6mHG5zGxWXmHImW3hNKHh8EA==} + peerDependencies: + react-native: '*' dependencies: - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@expo/osascript@2.1.0': + /@expo/osascript@2.1.0: + resolution: {integrity: sha512-bOhuFnlRaS7CU33+rFFIWdcET/Vkyn1vsN8BYFwCDEF5P1fVVvYN7bFOsQLTMD3nvi35C1AGmtqUr/Wfv8Xaow==} + engines: {node: '>=12'} dependencies: - '@expo/spawn-async': 1.7.2 + '@expo/spawn-async': 1.5.0 exec-async: 2.2.0 + dev: false - '@expo/package-manager@1.4.2': + /@expo/package-manager@1.5.2: + resolution: {integrity: sha512-IuA9XtGBilce0q8cyxtWINqbzMB1Fia0Yrug/O53HNuRSwQguV/iqjV68bsa4z8mYerePhcFgtvISWLAlNEbUA==} dependencies: - '@expo/json-file': 8.3.0 + '@expo/json-file': 8.3.1 '@expo/spawn-async': 1.7.2 ansi-regex: 5.0.1 chalk: 4.1.2 @@ -8600,20 +2464,47 @@ snapshots: ora: 3.4.0 split: 1.0.1 sudo-prompt: 9.1.1 + dev: false - '@expo/plist@0.1.0': + /@expo/plist@0.1.1: + resolution: {integrity: sha512-90qbbblHYWR/z0R+HP2t7yRx0IG5AsEL0BqTY/vXcj4emhGhm39Dbwg4BO2t6qfdLljJISzUwEtWWTl1HNHAAg==} dependencies: '@xmldom/xmldom': 0.7.13 base64-js: 1.5.1 xmlbuilder: 14.0.0 + dev: false - '@expo/prebuild-config@6.7.4(expo-modules-autolinking@1.10.3)': + /@expo/prebuild-config@6.7.4(expo-modules-autolinking@1.10.3): + resolution: {integrity: sha512-x8EUdCa8DTMZ/dtEXjHAdlP+ljf6oSeSKNzhycXiHhpMSMG9jEhV28ocCwc6cKsjK5GziweEiHwvrj6+vsBlhA==} + peerDependencies: + expo-modules-autolinking: '>=0.8.1' dependencies: - '@expo/config': 8.5.4 + '@expo/config': 8.5.6 '@expo/config-plugins': 7.8.4 - '@expo/config-types': 50.0.0 - '@expo/image-utils': 0.4.1 - '@expo/json-file': 8.3.0 + '@expo/config-types': 50.0.1 + '@expo/image-utils': 0.4.2 + '@expo/json-file': 8.3.1 + debug: 4.3.4 + expo-modules-autolinking: 1.10.3 + fs-extra: 9.1.0 + resolve-from: 5.0.0 + semver: 7.5.3 + xml2js: 0.6.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /@expo/prebuild-config@6.8.1(expo-modules-autolinking@1.10.3): + resolution: {integrity: sha512-ptK9e0dcj1eYlAWV+fG+QkuAWcLAT1AmtEbj++tn7ZjEj8+LkXRM73LCOEGaF0Er8i8ZWNnaVsgGW4vjgP5ZsA==} + peerDependencies: + expo-modules-autolinking: '>=0.8.1' + dependencies: + '@expo/config': 8.5.6 + '@expo/config-plugins': 7.9.1 + '@expo/config-types': 50.0.1 + '@expo/image-utils': 0.4.2 + '@expo/json-file': 8.3.1 debug: 4.3.4 expo-modules-autolinking: 1.10.3 fs-extra: 9.1.0 @@ -8623,8 +2514,11 @@ snapshots: transitivePeerDependencies: - encoding - supports-color + dev: false - '@expo/rudder-sdk-node@1.1.1': + /@expo/rudder-sdk-node@1.1.1: + resolution: {integrity: sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==} + engines: {node: '>=12'} dependencies: '@expo/bunyan': 4.0.0 '@segment/loosely-validate-event': 2.0.0 @@ -8635,10 +2529,14 @@ snapshots: uuid: 8.3.2 transitivePeerDependencies: - encoding + dev: false - '@expo/sdk-runtime-versions@1.0.0': {} + /@expo/sdk-runtime-versions@1.0.0: + resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} + dev: false - '@expo/server@0.3.0': + /@expo/server@0.3.1: + resolution: {integrity: sha512-cCKyVA2IR9J4hDFPXzj3L08+Ngd/7z2F+JtdW0NLy03qShXBI5NSEEcaiHtjrgsLXPDe9PBw5Xgsfmxuduyggg==} dependencies: '@remix-run/node': 1.19.3 abort-controller: 3.0.0 @@ -8646,193 +2544,275 @@ snapshots: source-map-support: 0.5.21 transitivePeerDependencies: - supports-color + dev: false - '@expo/spawn-async@1.5.0': + /@expo/spawn-async@1.5.0: + resolution: {integrity: sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew==} + engines: {node: '>=4'} dependencies: cross-spawn: 6.0.5 + dev: false - '@expo/spawn-async@1.7.2': + /@expo/spawn-async@1.7.2: + resolution: {integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==} + engines: {node: '>=12'} dependencies: cross-spawn: 7.0.3 + dev: false - '@expo/vector-icons@14.0.0': {} + /@expo/vector-icons@14.0.1: + resolution: {integrity: sha512-7oIe1RRWmRQXNxmewsuAaIRNAQfkig7EFTuI5T8PCI7T4q/rS5iXWvlzAEXndkzSOSs7BAANrLyj7AtpEhTksg==} + dependencies: + prop-types: 15.8.1 + dev: false - '@expo/xcpretty@4.3.1': + /@expo/xcpretty@4.3.1: + resolution: {integrity: sha512-sqXgo1SCv+j4VtYEwl/bukuOIBrVgx6euIoCat3Iyx5oeoXwEA2USCoeL0IPubflMxncA2INkqJ/Wr3NGrSgzw==} + hasBin: true dependencies: '@babel/code-frame': 7.10.4 chalk: 4.1.2 find-up: 5.0.0 js-yaml: 4.1.0 + dev: false - '@floating-ui/core@1.6.0': + /@floating-ui/core@1.6.1: + resolution: {integrity: sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==} dependencies: - '@floating-ui/utils': 0.2.1 + '@floating-ui/utils': 0.2.2 + dev: false - '@floating-ui/dom@1.6.3': + /@floating-ui/dom@1.6.4: + resolution: {integrity: sha512-0G8R+zOvQsAG1pg2Q99P21jiqxqGBW1iRe/iXHsBRBxnpXKFI8QwbB4x5KmYLggNO5m34IQgOIu9SCRfR/WWiQ==} dependencies: - '@floating-ui/core': 1.6.0 - '@floating-ui/utils': 0.2.1 + '@floating-ui/core': 1.6.1 + '@floating-ui/utils': 0.2.2 + dev: false - '@floating-ui/react-dom@2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@floating-ui/react-dom@2.0.9(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-q0umO0+LQK4+p6aGyvzASqKbKOJcAHJ7ycE9CuUvfx3s9zTHWmGJTPOIlM/hmSBfUfg/XfY5YhLBLR/LHwShQQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' dependencies: - '@floating-ui/dom': 1.6.3 + '@floating-ui/dom': 1.6.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false - '@floating-ui/react-native@0.10.4(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@floating-ui/react-native@0.10.5(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-r3CLdjMLLyIYKl34ltNN9hHZBRWC4BVsLLnqBf5yl3GlcaBFpMMX/NdtTKJVfbhQMurfsGbefhZrh8A9cVwkDA==} + peerDependencies: + react: '>=16.8.0' + react-native: '>=0.64.0' dependencies: - '@floating-ui/core': 1.6.0 + '@floating-ui/core': 1.6.1 react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@floating-ui/react@0.26.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@floating-ui/react@0.26.13(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-kBa9wntpugzrZ8t/4yWelvSmEKZdeTXTJzrxqyrLmcU/n1SM4nvse8yQh2e1b37rJGvtu0EplV9+IkBrCJ1vkw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' dependencies: - '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@floating-ui/utils': 0.2.1 + '@floating-ui/react-dom': 2.0.9(react-dom@18.2.0)(react@18.2.0) + '@floating-ui/utils': 0.2.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tabbable: 6.2.0 + dev: false - '@floating-ui/utils@0.2.1': {} + /@floating-ui/utils@0.2.2: + resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==} + dev: false - '@gar/promisify@1.1.3': {} + /@gar/promisify@1.1.3: + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + dev: false - '@graphql-typed-document-node/core@3.2.0(graphql@15.8.0)': + /@graphql-typed-document-node/core@3.2.0(graphql@15.8.0): + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 15.8.0 + dev: false - '@hapi/hoek@9.3.0': {} + /@hapi/hoek@9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + dev: false - '@hapi/topo@5.1.0': + /@hapi/topo@5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} dependencies: '@hapi/hoek': 9.3.0 + dev: false - '@humanwhocodes/config-array@0.11.14': + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.2 + '@humanwhocodes/object-schema': 2.0.3 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - '@humanwhocodes/module-importer@1.0.1': {} + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.2': {} + /@humanwhocodes/object-schema@2.0.3: + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - '@ianvs/prettier-plugin-sort-imports@4.1.1(prettier@3.2.4)': + /@ianvs/prettier-plugin-sort-imports@4.2.1(prettier@3.2.5): + resolution: {integrity: sha512-NKN1LVFWUDGDGr3vt+6Ey3qPeN/163uR1pOPAlkWpgvAqgxQ6kSdUf1F0it8aHUtKRUzEGcK38Wxd07O61d7+Q==} + peerDependencies: + '@vue/compiler-sfc': 2.7.x || 3.x + prettier: 2 || 3 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true dependencies: - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 - '@babel/parser': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - prettier: 3.2.4 - semver: 7.5.4 + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + prettier: 3.2.5 + semver: 7.6.0 transitivePeerDependencies: - supports-color + dev: false - '@isaacs/cliui@8.0.2': + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} dependencies: string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 + string-width-cjs: /string-width@4.2.3 strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 + strip-ansi-cjs: /strip-ansi@6.0.1 wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: false - '@isaacs/ttlcache@1.4.1': {} + /@isaacs/ttlcache@1.4.1: + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} + dev: false - '@jest/create-cache-key-function@29.7.0': + /@jest/create-cache-key-function@29.7.0: + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 + dev: false - '@jest/environment@29.7.0': + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.30 + '@types/node': 20.12.8 jest-mock: 29.7.0 + dev: false - '@jest/fake-timers@29.7.0': + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.11.30 + '@types/node': 20.12.8 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 + dev: false - '@jest/schemas@29.6.3': + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 + dev: false - '@jest/types@26.6.2': + /@jest/types@26.6.2: + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.11.30 + '@types/node': 20.12.8 '@types/yargs': 15.0.19 chalk: 4.1.2 + dev: false - '@jest/types@29.6.3': + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.11.16 + '@types/node': 20.12.8 '@types/yargs': 17.0.32 chalk: 4.1.2 + dev: false - '@jridgewell/gen-mapping@0.3.3': - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.22 - - '@jridgewell/gen-mapping@0.3.5': + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/resolve-uri@3.1.1': {} - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.1.2': {} + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': {} + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.5': + /@jridgewell/source-map@0.3.6: + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + dev: false - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/trace-mapping@0.3.22': - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - '@jridgewell/trace-mapping@0.3.25': + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping@0.3.9': + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: - '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 + dev: true - '@motionone/animation@10.17.0': + /@motionone/animation@10.17.0: + resolution: {integrity: sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg==} dependencies: '@motionone/easing': 10.17.0 '@motionone/types': 10.17.0 '@motionone/utils': 10.17.0 tslib: 2.6.2 + dev: false - '@motionone/dom@10.12.0': + /@motionone/dom@10.12.0: + resolution: {integrity: sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==} dependencies: '@motionone/animation': 10.17.0 '@motionone/generators': 10.17.0 @@ -8840,169 +2820,252 @@ snapshots: '@motionone/utils': 10.17.0 hey-listen: 1.0.8 tslib: 2.6.2 + dev: false - '@motionone/easing@10.17.0': + /@motionone/easing@10.17.0: + resolution: {integrity: sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg==} dependencies: '@motionone/utils': 10.17.0 tslib: 2.6.2 + dev: false - '@motionone/generators@10.17.0': + /@motionone/generators@10.17.0: + resolution: {integrity: sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ==} dependencies: '@motionone/types': 10.17.0 '@motionone/utils': 10.17.0 tslib: 2.6.2 + dev: false - '@motionone/types@10.17.0': {} + /@motionone/types@10.17.0: + resolution: {integrity: sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA==} + dev: false - '@motionone/utils@10.17.0': + /@motionone/utils@10.17.0: + resolution: {integrity: sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg==} dependencies: '@motionone/types': 10.17.0 hey-listen: 1.0.8 tslib: 2.6.2 + dev: false - '@movie-web/providers@https://codeload.github.com/sussy-code/providers/tar.gz/ead928c5d09cad1c23aeab58687d3fae7f426dba': - dependencies: - cheerio: 1.0.0-rc.12 - cookie: 0.6.0 - crypto-js: 4.2.0 - form-data: 4.0.0 - iso-639-1: 3.1.2 - nanoid: 3.3.7 - node-fetch: 3.3.2 - set-cookie-parser: 2.6.0 - unpacker: 1.0.1 - - '@noble/hashes@1.4.0': {} + /@noble/hashes@1.4.0: + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + dev: false - '@nodelib/fs.scandir@2.1.5': + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - '@nodelib/fs.stat@2.0.5': {} + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} - '@nodelib/fs.walk@1.2.8': + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.0 + fastq: 1.17.1 - '@npmcli/fs@1.1.1': + /@npmcli/fs@1.1.1: + resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} dependencies: '@gar/promisify': 1.1.3 - semver: 7.5.4 + semver: 7.6.0 + dev: false - '@npmcli/move-file@1.1.2': + /@npmcli/move-file@1.1.2: + resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} + engines: {node: '>=10'} + deprecated: This functionality has been moved to @npmcli/fs dependencies: mkdirp: 1.0.4 rimraf: 3.0.2 + dev: false - '@octokit/auth-token@4.0.0': {} + /@octokit/auth-token@4.0.0: + resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} + engines: {node: '>= 18'} + dev: false - '@octokit/core@5.1.0': + /@octokit/core@5.2.0: + resolution: {integrity: sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==} + engines: {node: '>= 18'} dependencies: '@octokit/auth-token': 4.0.0 - '@octokit/graphql': 7.0.2 - '@octokit/request': 8.2.0 - '@octokit/request-error': 5.0.1 - '@octokit/types': 12.6.0 + '@octokit/graphql': 7.1.0 + '@octokit/request': 8.4.0 + '@octokit/request-error': 5.1.0 + '@octokit/types': 13.5.0 before-after-hook: 2.2.3 universal-user-agent: 6.0.1 + dev: false - '@octokit/endpoint@9.0.4': + /@octokit/endpoint@9.0.5: + resolution: {integrity: sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==} + engines: {node: '>= 18'} dependencies: - '@octokit/types': 12.6.0 + '@octokit/types': 13.5.0 universal-user-agent: 6.0.1 + dev: false - '@octokit/graphql@7.0.2': + /@octokit/graphql@7.1.0: + resolution: {integrity: sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==} + engines: {node: '>= 18'} dependencies: - '@octokit/request': 8.2.0 - '@octokit/types': 12.6.0 + '@octokit/request': 8.4.0 + '@octokit/types': 13.5.0 universal-user-agent: 6.0.1 + dev: false + + /@octokit/openapi-types@20.0.0: + resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==} + dev: false - '@octokit/openapi-types@20.0.0': {} + /@octokit/openapi-types@22.2.0: + resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==} + dev: false - '@octokit/plugin-paginate-rest@9.2.1(@octokit/core@5.1.0)': + /@octokit/plugin-paginate-rest@9.2.1(@octokit/core@5.2.0): + resolution: {integrity: sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '5' dependencies: - '@octokit/core': 5.1.0 + '@octokit/core': 5.2.0 '@octokit/types': 12.6.0 + dev: false - '@octokit/plugin-request-log@4.0.1(@octokit/core@5.1.0)': + /@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.0): + resolution: {integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '5' dependencies: - '@octokit/core': 5.1.0 + '@octokit/core': 5.2.0 + dev: false - '@octokit/plugin-rest-endpoint-methods@10.4.1(@octokit/core@5.1.0)': + /@octokit/plugin-rest-endpoint-methods@10.4.1(@octokit/core@5.2.0): + resolution: {integrity: sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '5' dependencies: - '@octokit/core': 5.1.0 + '@octokit/core': 5.2.0 '@octokit/types': 12.6.0 + dev: false - '@octokit/request-error@5.0.1': + /@octokit/request-error@5.1.0: + resolution: {integrity: sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==} + engines: {node: '>= 18'} dependencies: - '@octokit/types': 12.6.0 + '@octokit/types': 13.5.0 deprecation: 2.3.1 once: 1.4.0 + dev: false - '@octokit/request@8.2.0': + /@octokit/request@8.4.0: + resolution: {integrity: sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==} + engines: {node: '>= 18'} dependencies: - '@octokit/endpoint': 9.0.4 - '@octokit/request-error': 5.0.1 - '@octokit/types': 12.6.0 + '@octokit/endpoint': 9.0.5 + '@octokit/request-error': 5.1.0 + '@octokit/types': 13.5.0 universal-user-agent: 6.0.1 + dev: false - '@octokit/rest@20.0.2': + /@octokit/rest@20.1.0: + resolution: {integrity: sha512-STVO3itHQLrp80lvcYB2UIKoeil5Ctsgd2s1AM+du3HqZIR35ZH7WE9HLwUOLXH0myA0y3AGNPo8gZtcgIbw0g==} + engines: {node: '>= 18'} dependencies: - '@octokit/core': 5.1.0 - '@octokit/plugin-paginate-rest': 9.2.1(@octokit/core@5.1.0) - '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.1.0) - '@octokit/plugin-rest-endpoint-methods': 10.4.1(@octokit/core@5.1.0) + '@octokit/core': 5.2.0 + '@octokit/plugin-paginate-rest': 9.2.1(@octokit/core@5.2.0) + '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.0) + '@octokit/plugin-rest-endpoint-methods': 10.4.1(@octokit/core@5.2.0) + dev: false - '@octokit/types@12.6.0': + /@octokit/types@12.6.0: + resolution: {integrity: sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==} dependencies: '@octokit/openapi-types': 20.0.0 + dev: false + + /@octokit/types@13.5.0: + resolution: {integrity: sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==} + dependencies: + '@octokit/openapi-types': 22.2.0 + dev: false - '@pkgjs/parseargs@0.11.0': + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: false optional: true - '@radix-ui/react-compose-refs@1.0.0(react@18.2.0)': + /@radix-ui/react-compose-refs@1.0.0(react@18.2.0): + resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 react: 18.2.0 + dev: false - '@radix-ui/react-slot@1.0.1(react@18.2.0)': + /@radix-ui/react-slot@1.0.1(react@18.2.0): + resolution: {integrity: sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) react: 18.2.0 + dev: false - '@react-native-anywhere/polyfill-base64@0.0.1-alpha.0': + /@react-native-anywhere/polyfill-base64@0.0.1-alpha.0: + resolution: {integrity: sha512-OF3idcETV622AyFvvK54ot2EG0G43tZTZJyWtFHtrEKUmoUvSuC5DOMeLino0TwBQJn2s26MBnIPVgokBJb/xw==} dependencies: base-64: 0.1.0 + dev: false - '@react-native-community/cli-clean@12.3.6': + /@react-native-community/cli-clean@12.3.6: + resolution: {integrity: sha512-gUU29ep8xM0BbnZjwz9MyID74KKwutq9x5iv4BCr2im6nly4UMf1B1D+V225wR7VcDGzbgWjaezsJShLLhC5ig==} dependencies: '@react-native-community/cli-tools': 12.3.6 chalk: 4.1.2 execa: 5.1.1 transitivePeerDependencies: - encoding + dev: false - '@react-native-community/cli-config@12.3.6': + /@react-native-community/cli-config@12.3.6: + resolution: {integrity: sha512-JGWSYQ9EAK6m2v0abXwFLEfsqJ1zkhzZ4CV261QZF9MoUNB6h57a274h1MLQR9mG6Tsh38wBUuNfEPUvS1vYew==} dependencies: '@react-native-community/cli-tools': 12.3.6 chalk: 4.1.2 cosmiconfig: 5.2.1 deepmerge: 4.3.1 glob: 7.2.3 - joi: 17.12.1 + joi: 17.13.0 transitivePeerDependencies: - encoding + dev: false - '@react-native-community/cli-debugger-ui@12.3.6': + /@react-native-community/cli-debugger-ui@12.3.6: + resolution: {integrity: sha512-SjUKKsx5FmcK9G6Pb6UBFT0s9JexVStK5WInmANw75Hm7YokVvHEgtprQDz2Uvy5znX5g2ujzrkIU//T15KQzA==} dependencies: serve-static: 1.15.0 transitivePeerDependencies: - supports-color + dev: false - '@react-native-community/cli-doctor@12.3.6': + /@react-native-community/cli-doctor@12.3.6: + resolution: {integrity: sha512-fvBDv2lTthfw4WOQKkdTop2PlE9GtfrlNnpjB818MhcdEnPjfQw5YaTUcnNEGsvGomdCs1MVRMgYXXwPSN6OvQ==} dependencies: '@react-native-community/cli-config': 12.3.6 '@react-native-community/cli-platform-android': 12.3.6 @@ -9011,19 +3074,21 @@ snapshots: chalk: 4.1.2 command-exists: 1.2.9 deepmerge: 4.3.1 - envinfo: 7.11.1 + envinfo: 7.13.0 execa: 5.1.1 hermes-profile-transformer: 0.0.6 node-stream-zip: 1.15.0 ora: 5.4.1 - semver: 7.5.4 + semver: 7.6.0 strip-ansi: 5.2.0 wcwidth: 1.0.1 - yaml: 2.4.1 + yaml: 2.4.2 transitivePeerDependencies: - encoding + dev: false - '@react-native-community/cli-hermes@12.3.6': + /@react-native-community/cli-hermes@12.3.6: + resolution: {integrity: sha512-sNGwfOCl8OAIjWCkwuLpP8NZbuO0dhDI/2W7NeOGDzIBsf4/c4MptTrULWtGIH9okVPLSPX0NnRyGQ+mSwWyuQ==} dependencies: '@react-native-community/cli-platform-android': 12.3.6 '@react-native-community/cli-tools': 12.3.6 @@ -9031,32 +3096,40 @@ snapshots: hermes-profile-transformer: 0.0.6 transitivePeerDependencies: - encoding + dev: false - '@react-native-community/cli-platform-android@12.3.6': + /@react-native-community/cli-platform-android@12.3.6: + resolution: {integrity: sha512-DeDDAB8lHpuGIAPXeeD9Qu2+/wDTFPo99c8uSW49L0hkmZJixzvvvffbGQAYk32H0TmaI7rzvzH+qzu7z3891g==} dependencies: '@react-native-community/cli-tools': 12.3.6 chalk: 4.1.2 execa: 5.1.1 - fast-xml-parser: 4.3.4 + fast-xml-parser: 4.3.6 glob: 7.2.3 logkitty: 0.7.1 transitivePeerDependencies: - encoding + dev: false - '@react-native-community/cli-platform-ios@12.3.6': + /@react-native-community/cli-platform-ios@12.3.6: + resolution: {integrity: sha512-3eZ0jMCkKUO58wzPWlvAPRqezVKm9EPZyaPyHbRPWU8qw7JqkvnRlWIaYDGpjCJgVW4k2hKsEursLtYKb188tg==} dependencies: '@react-native-community/cli-tools': 12.3.6 chalk: 4.1.2 execa: 5.1.1 - fast-xml-parser: 4.3.4 + fast-xml-parser: 4.3.6 glob: 7.2.3 ora: 5.4.1 transitivePeerDependencies: - encoding + dev: false - '@react-native-community/cli-plugin-metro@12.3.6': {} + /@react-native-community/cli-plugin-metro@12.3.6: + resolution: {integrity: sha512-3jxSBQt4fkS+KtHCPSyB5auIT+KKIrPCv9Dk14FbvOaEh9erUWEm/5PZWmtboW1z7CYeNbFMeXm9fM2xwtVOpg==} + dev: false - '@react-native-community/cli-server-api@12.3.6': + /@react-native-community/cli-server-api@12.3.6: + resolution: {integrity: sha512-80NIMzo8b2W+PL0Jd7NjiJW9mgaT8Y8wsIT/lh6mAvYH7mK0ecDJUYUTAAv79Tbo1iCGPAr3T295DlVtS8s4yQ==} dependencies: '@react-native-community/cli-debugger-ui': 12.3.6 '@react-native-community/cli-tools': 12.3.6 @@ -9072,8 +3145,10 @@ snapshots: - encoding - supports-color - utf-8-validate + dev: false - '@react-native-community/cli-tools@12.3.6': + /@react-native-community/cli-tools@12.3.6: + resolution: {integrity: sha512-FPEvZn19UTMMXUp/piwKZSh8cMEfO8G3KDtOwo53O347GTcwNrKjgZGtLSPELBX2gr+YlzEft3CoRv2Qmo83fQ==} dependencies: appdirsjs: 1.2.7 chalk: 4.1.2 @@ -9082,17 +3157,23 @@ snapshots: node-fetch: 2.7.0 open: 6.4.0 ora: 5.4.1 - semver: 7.5.4 + semver: 7.6.0 shell-quote: 1.8.1 sudo-prompt: 9.2.1 transitivePeerDependencies: - encoding + dev: false - '@react-native-community/cli-types@12.3.6': + /@react-native-community/cli-types@12.3.6: + resolution: {integrity: sha512-xPqTgcUtZowQ8WKOkI9TLGBwH2bGggOC4d2FFaIRST3gTcjrEeGRNeR5aXCzJFIgItIft8sd7p2oKEdy90+01Q==} dependencies: - joi: 17.12.1 + joi: 17.13.0 + dev: false - '@react-native-community/cli@12.3.6': + /@react-native-community/cli@12.3.6: + resolution: {integrity: sha512-647OSi6xBb8FbwFqX9zsJxOzu685AWtrOUWHfOkbKD+5LOpGORw+GQo0F9rWZnB68rLQyfKUZWJeaD00pGv5fw==} + engines: {node: '>=18'} + hasBin: true dependencies: '@react-native-community/cli-clean': 12.3.6 '@react-native-community/cli-config': 12.3.6 @@ -9111,94 +3192,195 @@ snapshots: fs-extra: 8.1.0 graceful-fs: 4.2.11 prompts: 2.4.2 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate + dev: false + + /@react-native/assets-registry@0.73.1: + resolution: {integrity: sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg==} + engines: {node: '>=18'} + dev: false - '@react-native/assets-registry@0.73.1': {} + /@react-native/babel-plugin-codegen@0.73.4(@babel/preset-env@7.24.5): + resolution: {integrity: sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ==} + engines: {node: '>=18'} + dependencies: + '@react-native/codegen': 0.73.3(@babel/preset-env@7.24.5) + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + dev: false - '@react-native/babel-plugin-codegen@0.73.4(@babel/preset-env@7.23.9(@babel/core@7.23.9))': + /@react-native/babel-plugin-codegen@0.74.81(@babel/preset-env@7.24.5): + resolution: {integrity: sha512-Bj6g5/xkLMBAdC6665TbD3uCKCQSmLQpGv3gyqya/ydZpv3dDmDXfkGmO4fqTwEMunzu09Sk55st2ipmuXAaAg==} + engines: {node: '>=18'} dependencies: - '@react-native/codegen': 0.73.3(@babel/preset-env@7.23.9(@babel/core@7.23.9)) + '@react-native/codegen': 0.74.81(@babel/preset-env@7.24.5) transitivePeerDependencies: - '@babel/preset-env' - supports-color + dev: false - '@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))': - dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.23.9) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-export-default-from': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.9) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.9) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.9) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-runtime': 7.24.0(@babel/core@7.23.9) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.9) + /@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5): + resolution: {integrity: sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.24.5 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.24.5) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-export-default-from': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.5) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.5) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) '@babel/template': 7.24.0 - '@react-native/babel-plugin-codegen': 0.73.4(@babel/preset-env@7.23.9(@babel/core@7.23.9)) - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.23.9) + '@react-native/babel-plugin-codegen': 0.73.4(@babel/preset-env@7.24.5) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.24.5) react-refresh: 0.14.0 transitivePeerDependencies: - '@babel/preset-env' - supports-color + dev: false + + /@react-native/babel-preset@0.74.81(@babel/core@7.24.5)(@babel/preset-env@7.24.5): + resolution: {integrity: sha512-H80B3Y3lBBVC4x9tceTEQq/04lx01gW6ajWCcVbd7sHvGEAxfMFEZUmVZr0451Cafn02wVnDJ8psto1F+0w5lw==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.24.5 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.24.5) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-export-default-from': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.24.5) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.5) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.5) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) + '@babel/template': 7.24.0 + '@react-native/babel-plugin-codegen': 0.74.81(@babel/preset-env@7.24.5) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.24.5) + react-refresh: 0.14.2 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + dev: false - '@react-native/codegen@0.73.3(@babel/preset-env@7.23.9(@babel/core@7.23.9))': + /@react-native/codegen@0.73.3(@babel/preset-env@7.24.5): + resolution: {integrity: sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg==} + engines: {node: '>=18'} + peerDependencies: + '@babel/preset-env': ^7.1.6 dependencies: - '@babel/parser': 7.24.0 - '@babel/preset-env': 7.23.9(@babel/core@7.23.9) + '@babel/parser': 7.24.5 + '@babel/preset-env': 7.24.5(@babel/core@7.24.5) flow-parser: 0.206.0 glob: 7.2.3 invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.23.9(@babel/core@7.23.9)) + jscodeshift: 0.14.0(@babel/preset-env@7.24.5) + mkdirp: 0.5.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@react-native/codegen@0.74.81(@babel/preset-env@7.24.5): + resolution: {integrity: sha512-hhXo4ccv2lYWaJrZDsdbRTZ5SzSOdyZ0MY6YXwf3xEFLuSunbUMu17Rz5LXemKXlpVx4KEgJ/TDc2pPVaRPZgA==} + engines: {node: '>=18'} + peerDependencies: + '@babel/preset-env': ^7.1.6 + dependencies: + '@babel/parser': 7.24.5 + '@babel/preset-env': 7.24.5(@babel/core@7.24.5) + glob: 7.2.3 + hermes-parser: 0.19.1 + invariant: 2.2.4 + jscodeshift: 0.14.0(@babel/preset-env@7.24.5) mkdirp: 0.5.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color + dev: false - '@react-native/community-cli-plugin@0.73.17(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))': + /@react-native/community-cli-plugin@0.73.17(@babel/core@7.24.5)(@babel/preset-env@7.24.5): + resolution: {integrity: sha512-F3PXZkcHg+1ARIr6FRQCQiB7ZAA+MQXGmq051metRscoLvgYJwj7dgC8pvgy0kexzUkHu5BNKrZeySzUft3xuQ==} + engines: {node: '>=18'} dependencies: '@react-native-community/cli-server-api': 12.3.6 '@react-native-community/cli-tools': 12.3.6 '@react-native/dev-middleware': 0.73.8 - '@react-native/metro-babel-transformer': 0.73.15(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)) + '@react-native/metro-babel-transformer': 0.73.15(@babel/core@7.24.5)(@babel/preset-env@7.24.5) chalk: 4.1.2 execa: 5.1.1 - metro: 0.80.5 - metro-config: 0.80.5 - metro-core: 0.80.5 + metro: 0.80.8 + metro-config: 0.80.8 + metro-core: 0.80.8 node-fetch: 2.7.0 readline: 1.3.0 transitivePeerDependencies: @@ -9208,10 +3390,16 @@ snapshots: - encoding - supports-color - utf-8-validate + dev: false - '@react-native/debugger-frontend@0.73.3': {} + /@react-native/debugger-frontend@0.73.3: + resolution: {integrity: sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw==} + engines: {node: '>=18'} + dev: false - '@react-native/dev-middleware@0.73.8': + /@react-native/dev-middleware@0.73.8: + resolution: {integrity: sha512-oph4NamCIxkMfUL/fYtSsE+JbGOnrlawfQ0kKtDQ5xbOjPKotKoXqrs1eGwozNKv7FfQ393stk1by9a6DyASSg==} + engines: {node: '>=18'} dependencies: '@isaacs/ttlcache': 1.4.1 '@react-native/debugger-frontend': 0.73.3 @@ -9229,43 +3417,79 @@ snapshots: - encoding - supports-color - utf-8-validate + dev: false - '@react-native/gradle-plugin@0.73.4': {} + /@react-native/gradle-plugin@0.73.4: + resolution: {integrity: sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg==} + engines: {node: '>=18'} + dev: false - '@react-native/js-polyfills@0.73.1': {} + /@react-native/js-polyfills@0.73.1: + resolution: {integrity: sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g==} + engines: {node: '>=18'} + dev: false - '@react-native/metro-babel-transformer@0.73.15(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))': + /@react-native/metro-babel-transformer@0.73.15(@babel/core@7.24.5)(@babel/preset-env@7.24.5): + resolution: {integrity: sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' dependencies: - '@babel/core': 7.23.9 - '@react-native/babel-preset': 0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)) + '@babel/core': 7.24.5 + '@react-native/babel-preset': 0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5) hermes-parser: 0.15.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' - supports-color + dev: false - '@react-native/normalize-color@2.1.0': {} + /@react-native/normalize-color@2.1.0: + resolution: {integrity: sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA==} + dev: false + + /@react-native/normalize-colors@0.73.2: + resolution: {integrity: sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w==} + dev: false - '@react-native/normalize-colors@0.73.2': {} + /@react-native/normalize-colors@0.74.81: + resolution: {integrity: sha512-g3YvkLO7UsSWiDfYAU+gLhRHtEpUyz732lZB+N8IlLXc5MnfXHC8GKneDGY3Mh52I3gBrs20o37D5viQX9E1CA==} + dev: false - '@react-native/virtualized-lists@0.73.4(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))': + /@react-native/virtualized-lists@0.73.4(react-native@0.73.6): + resolution: {integrity: sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog==} + engines: {node: '>=18'} + peerDependencies: + react-native: '*' dependencies: invariant: 2.2.4 nullthrows: 1.1.1 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@react-navigation/bottom-tabs@6.5.11(@react-navigation/native@6.1.9(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-screens@3.29.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@react-navigation/bottom-tabs@6.5.20(@react-navigation/native@6.1.17)(react-native-safe-area-context@4.8.2)(react-native-screens@3.29.0)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-ow6Z06iS4VqBO8d7FP+HsGjJLWt2xTWIvuWjpoCvsM/uQXzCRDIjBv9HaKcXbF0yTW7IMir0oDAbU5PFzEDdgA==} + peerDependencies: + '@react-navigation/native': ^6.0.0 + react: '*' + react-native: '*' + react-native-safe-area-context: '>= 3.0.0' + react-native-screens: '>= 3.0.0' dependencies: - '@react-navigation/elements': 1.3.21(@react-navigation/native@6.1.9(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@react-navigation/native': 6.1.9(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + '@react-navigation/elements': 1.3.30(@react-navigation/native@6.1.17)(react-native-safe-area-context@4.8.2)(react-native@0.73.6)(react@18.2.0) + '@react-navigation/native': 6.1.17(react-native@0.73.6)(react@18.2.0) color: 4.2.3 react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) - react-native-safe-area-context: 4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - react-native-screens: 3.29.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + react-native-safe-area-context: 4.8.2(react-native@0.73.6)(react@18.2.0) + react-native-screens: 3.29.0(react-native@0.73.6)(react@18.2.0) warn-once: 0.1.1 + dev: false - '@react-navigation/core@6.4.10(react@18.2.0)': + /@react-navigation/core@6.4.16(react@18.2.0): + resolution: {integrity: sha512-UDTJBsHxnzgFETR3ZxhctP+RWr4SkyeZpbhpkQoIGOuwSCkt1SE0qjU48/u6r6w6XlX8OqVudn1Ab0QFXTHxuQ==} + peerDependencies: + react: '*' dependencies: '@react-navigation/routers': 6.1.9 escape-string-regexp: 4.0.0 @@ -9274,38 +3498,63 @@ snapshots: react: 18.2.0 react-is: 16.13.1 use-latest-callback: 0.1.9(react@18.2.0) + dev: false - '@react-navigation/elements@1.3.21(@react-navigation/native@6.1.9(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@react-navigation/elements@1.3.30(@react-navigation/native@6.1.17)(react-native-safe-area-context@4.8.2)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-plhc8UvCZs0UkV+sI+3bisIyn78wz9O/BiWZXpounu72k/R/Sj5PuZYFJ1fi6psvriUveMCGh4LeZckAZu2qiQ==} + peerDependencies: + '@react-navigation/native': ^6.0.0 + react: '*' + react-native: '*' + react-native-safe-area-context: '>= 3.0.0' dependencies: - '@react-navigation/native': 6.1.9(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + '@react-navigation/native': 6.1.17(react-native@0.73.6)(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) - react-native-safe-area-context: 4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + react-native-safe-area-context: 4.8.2(react-native@0.73.6)(react@18.2.0) + dev: false - '@react-navigation/native-stack@6.9.17(@react-navigation/native@6.1.9(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-screens@3.29.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@react-navigation/native-stack@6.9.26(@react-navigation/native@6.1.17)(react-native-safe-area-context@4.8.2)(react-native-screens@3.29.0)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-++dueQ+FDj2XkZ902DVrK79ub1vp19nSdAZWxKRgd6+Bc0Niiesua6rMCqymYOVaYh+dagwkA9r00bpt/U5WLw==} + peerDependencies: + '@react-navigation/native': ^6.0.0 + react: '*' + react-native: '*' + react-native-safe-area-context: '>= 3.0.0' + react-native-screens: '>= 3.0.0' dependencies: - '@react-navigation/elements': 1.3.21(@react-navigation/native@6.1.9(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@react-navigation/native': 6.1.9(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + '@react-navigation/elements': 1.3.30(@react-navigation/native@6.1.17)(react-native-safe-area-context@4.8.2)(react-native@0.73.6)(react@18.2.0) + '@react-navigation/native': 6.1.17(react-native@0.73.6)(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) - react-native-safe-area-context: 4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - react-native-screens: 3.29.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + react-native-safe-area-context: 4.8.2(react-native@0.73.6)(react@18.2.0) + react-native-screens: 3.29.0(react-native@0.73.6)(react@18.2.0) warn-once: 0.1.1 + dev: false - '@react-navigation/native@6.1.9(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@react-navigation/native@6.1.17(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-mer3OvfwWOHoUSMJyLa4vnBH3zpFmCwuzrBPlw7feXklurr/ZDiLjLxUScOot6jLRMz/67GyilEYMmP99LL0RQ==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@react-navigation/core': 6.4.10(react@18.2.0) + '@react-navigation/core': 6.4.16(react@18.2.0) escape-string-regexp: 4.0.0 fast-deep-equal: 3.1.3 nanoid: 3.3.7 react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@react-navigation/routers@6.1.9': + /@react-navigation/routers@6.1.9: + resolution: {integrity: sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA==} dependencies: nanoid: 3.3.7 + dev: false - '@remix-run/node@1.19.3': + /@remix-run/node@1.19.3: + resolution: {integrity: sha512-z5qrVL65xLXIUpU4mkR4MKlMeKARLepgHAk4W5YY3IBXOreRqOGUC70POViYmY7x38c2Ia1NwqL80H+0h7jbMw==} + engines: {node: '>=14.0.0'} dependencies: '@remix-run/server-runtime': 1.19.3 '@remix-run/web-fetch': 4.4.2 @@ -9316,10 +3565,16 @@ snapshots: cookie-signature: 1.2.1 source-map-support: 0.5.21 stream-slice: 0.1.2 + dev: false - '@remix-run/router@1.7.2': {} + /@remix-run/router@1.7.2: + resolution: {integrity: sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==} + engines: {node: '>=14'} + dev: false - '@remix-run/server-runtime@1.19.3': + /@remix-run/server-runtime@1.19.3: + resolution: {integrity: sha512-KzQ+htUsKqpBgKE2tWo7kIIGy3MyHP58Io/itUPvV+weDjApwr9tQr9PZDPA3yAY6rAzLax7BU0NMSYCXWFY5A==} + engines: {node: '>=14.0.0'} dependencies: '@remix-run/router': 1.7.2 '@types/cookie': 0.4.1 @@ -9327,13 +3582,18 @@ snapshots: cookie: 0.4.2 set-cookie-parser: 2.6.0 source-map: 0.7.4 + dev: false - '@remix-run/web-blob@3.1.0': + /@remix-run/web-blob@3.1.0: + resolution: {integrity: sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==} dependencies: '@remix-run/web-stream': 1.1.0 web-encoding: 1.1.5 + dev: false - '@remix-run/web-fetch@4.4.2': + /@remix-run/web-fetch@4.4.2: + resolution: {integrity: sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==} + engines: {node: ^10.17 || >=12.3} dependencies: '@remix-run/web-blob': 3.1.0 '@remix-run/web-file': 3.1.0 @@ -9343,157 +3603,278 @@ snapshots: abort-controller: 3.0.0 data-uri-to-buffer: 3.0.1 mrmime: 1.0.1 + dev: false - '@remix-run/web-file@3.1.0': + /@remix-run/web-file@3.1.0: + resolution: {integrity: sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==} dependencies: '@remix-run/web-blob': 3.1.0 + dev: false - '@remix-run/web-form-data@3.1.0': + /@remix-run/web-form-data@3.1.0: + resolution: {integrity: sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==} dependencies: web-encoding: 1.1.5 + dev: false - '@remix-run/web-stream@1.1.0': + /@remix-run/web-stream@1.1.0: + resolution: {integrity: sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==} dependencies: web-streams-polyfill: 3.3.3 + dev: false - '@salihgun/react-native-video-processor@0.3.1(ffmpeg-kit-react-native@6.0.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-video@5.2.1)(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@salihgun/react-native-video-processor@0.3.1(ffmpeg-kit-react-native@6.0.2)(react-native-video@5.2.1)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-LBHmH7dp+gxaXZFaVc+OXwLxhHI/zrqyPO7Y7e0NL0k7/hG3ern/y7T4jlSl8lLjz20nqi1BU3sIE+QBEqNJxg==} + peerDependencies: + ffmpeg-kit-react-native: ^5.1.0 + react: '*' + react-native: '*' + react-native-video: ^5.2.1 dependencies: - ffmpeg-kit-react-native: 6.0.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + ffmpeg-kit-react-native: 6.0.2(react-native@0.73.6)(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) react-native-video: 5.2.1 + dev: false - '@scure/base@1.1.6': {} + /@scure/base@1.1.6: + resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} + dev: false - '@scure/bip39@1.3.0': + /@scure/bip39@1.3.0: + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} dependencies: '@noble/hashes': 1.4.0 '@scure/base': 1.1.6 + dev: false - '@segment/loosely-validate-event@2.0.0': + /@segment/loosely-validate-event@2.0.0: + resolution: {integrity: sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==} dependencies: component-type: 1.2.2 join-component: 1.1.0 + dev: false - '@sideway/address@4.1.5': + /@sideway/address@4.1.5: + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} dependencies: '@hapi/hoek': 9.3.0 + dev: false - '@sideway/formula@3.0.1': {} + /@sideway/formula@3.0.1: + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + dev: false - '@sideway/pinpoint@2.0.0': {} + /@sideway/pinpoint@2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + dev: false - '@sinclair/typebox@0.27.8': {} + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: false - '@sinonjs/commons@3.0.1': + /@sinonjs/commons@3.0.1: + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} dependencies: type-detect: 4.0.8 + dev: false - '@sinonjs/fake-timers@10.3.0': + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} dependencies: '@sinonjs/commons': 3.0.1 + dev: false - '@swc/core-darwin-arm64@1.4.8': + /@swc/core-darwin-arm64@1.4.17: + resolution: {integrity: sha512-HVl+W4LezoqHBAYg2JCqR+s9ife9yPfgWSj37iIawLWzOmuuJ7jVdIB7Ee2B75bEisSEKyxRlTl6Y1Oq3owBgw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false optional: true - '@swc/core-darwin-x64@1.4.8': + /@swc/core-darwin-x64@1.4.17: + resolution: {integrity: sha512-WYRO9Fdzq4S/he8zjW5I95G1zcvyd9yyD3Tgi4/ic84P5XDlSMpBDpBLbr/dCPjmSg7aUXxNQqKqGkl6dQxYlA==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false optional: true - '@swc/core-linux-arm-gnueabihf@1.4.8': + /@swc/core-linux-arm-gnueabihf@1.4.17: + resolution: {integrity: sha512-cgbvpWOvtMH0XFjvwppUCR+Y+nf6QPaGu6AQ5hqCP+5Lv2zO5PG0RfasC4zBIjF53xgwEaaWmGP5/361P30X8Q==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false optional: true - '@swc/core-linux-arm64-gnu@1.4.8': + /@swc/core-linux-arm64-gnu@1.4.17: + resolution: {integrity: sha512-l7zHgaIY24cF9dyQ/FOWbmZDsEj2a9gRFbmgx2u19e3FzOPuOnaopFj0fRYXXKCmtdx+anD750iBIYnTR+pq/Q==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@swc/core-linux-arm64-musl@1.4.8': + /@swc/core-linux-arm64-musl@1.4.17: + resolution: {integrity: sha512-qhH4gr9gAlVk8MBtzXbzTP3BJyqbAfUOATGkyUtohh85fPXQYuzVlbExix3FZXTwFHNidGHY8C+ocscI7uDaYw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@swc/core-linux-x64-gnu@1.4.8': + /@swc/core-linux-x64-gnu@1.4.17: + resolution: {integrity: sha512-vRDFATL1oN5oZMImkwbgSHEkp8xG1ofEASBypze01W1Tqto8t+yo6gsp69wzCZBlxldsvPpvFZW55Jq0Rn+UnA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@swc/core-linux-x64-musl@1.4.8': + /@swc/core-linux-x64-musl@1.4.17: + resolution: {integrity: sha512-zQNPXAXn3nmPqv54JVEN8k2JMEcMTQ6veVuU0p5O+A7KscJq+AGle/7ZQXzpXSfUCXlLMX4wvd+rwfGhh3J4cw==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - '@swc/core-win32-arm64-msvc@1.4.8': + /@swc/core-win32-arm64-msvc@1.4.17: + resolution: {integrity: sha512-z86n7EhOwyzxwm+DLE5NoLkxCTme2lq7QZlDjbQyfCxOt6isWz8rkW5QowTX8w9Rdmk34ncrjSLvnHOeLY17+w==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false optional: true - '@swc/core-win32-ia32-msvc@1.4.8': + /@swc/core-win32-ia32-msvc@1.4.17: + resolution: {integrity: sha512-JBwuSTJIgiJJX6wtr4wmXbfvOswHFj223AumUrK544QV69k60FJ9q2adPW9Csk+a8wm1hLxq4HKa2K334UHJ/g==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false optional: true - '@swc/core-win32-x64-msvc@1.4.8': + /@swc/core-win32-x64-msvc@1.4.17: + resolution: {integrity: sha512-jFkOnGQamtVDBm3MF5Kq1lgW8vx4Rm1UvJWRUfg+0gx7Uc3Jp3QMFeMNw/rDNQYRDYPG3yunCC+2463ycd5+dg==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false optional: true - '@swc/core@1.4.8(@swc/helpers@0.5.6)': + /@swc/core@1.4.17(@swc/helpers@0.5.11): + resolution: {integrity: sha512-tq+mdWvodMBNBBZbwFIMTVGYHe9N7zvEaycVVjfvAx20k1XozHbHhRv+9pEVFJjwRxLdXmtvFZd3QZHRAOpoNQ==} + engines: {node: '>=10'} + requiresBuild: true + peerDependencies: + '@swc/helpers': ^0.5.0 + peerDependenciesMeta: + '@swc/helpers': + optional: true dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.5 + '@swc/helpers': 0.5.11 + '@swc/types': 0.1.6 optionalDependencies: - '@swc/core-darwin-arm64': 1.4.8 - '@swc/core-darwin-x64': 1.4.8 - '@swc/core-linux-arm-gnueabihf': 1.4.8 - '@swc/core-linux-arm64-gnu': 1.4.8 - '@swc/core-linux-arm64-musl': 1.4.8 - '@swc/core-linux-x64-gnu': 1.4.8 - '@swc/core-linux-x64-musl': 1.4.8 - '@swc/core-win32-arm64-msvc': 1.4.8 - '@swc/core-win32-ia32-msvc': 1.4.8 - '@swc/core-win32-x64-msvc': 1.4.8 - '@swc/helpers': 0.5.6 - - '@swc/counter@0.1.3': {} - - '@swc/helpers@0.5.6': + '@swc/core-darwin-arm64': 1.4.17 + '@swc/core-darwin-x64': 1.4.17 + '@swc/core-linux-arm-gnueabihf': 1.4.17 + '@swc/core-linux-arm64-gnu': 1.4.17 + '@swc/core-linux-arm64-musl': 1.4.17 + '@swc/core-linux-x64-gnu': 1.4.17 + '@swc/core-linux-x64-musl': 1.4.17 + '@swc/core-win32-arm64-msvc': 1.4.17 + '@swc/core-win32-ia32-msvc': 1.4.17 + '@swc/core-win32-x64-msvc': 1.4.17 + dev: false + + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: false + + /@swc/helpers@0.5.11: + resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==} dependencies: tslib: 2.6.2 + dev: false - '@swc/types@0.1.5': {} + /@swc/types@0.1.6: + resolution: {integrity: sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==} + dependencies: + '@swc/counter': 0.1.3 + dev: false - '@tamagui/accordion@1.94.0(react@18.2.0)': + /@tamagui/accordion@1.96.0(react@18.2.0): + resolution: {integrity: sha512-YgQF0WBaXs7PJd4Ws8er+aQAXL0CdYE0772IiCGf3NofUWle7rLFgRTO/Ctq563c/JHqmXxVW1GVHFmfBzNEoA==} + peerDependencies: + react: '*' dependencies: - '@tamagui/collapsible': 1.94.0(react@18.2.0) - '@tamagui/collection': 1.94.0(react@18.2.0) - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/polyfill-dev': 1.94.0 - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) + '@tamagui/collapsible': 1.96.0(react@18.2.0) + '@tamagui/collection': 1.96.0(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/polyfill-dev': 1.96.0 + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/adapt@1.94.0(react@18.2.0)': + /@tamagui/adapt@1.96.0(react@18.2.0): + resolution: {integrity: sha512-R5/va+8L/IRM2UMSOj+QF9UlCA5fxB5FaEKOm4H+oHkFv1Mys2zBuW6lzAPL+z8mExuPfvJg6Qox5zYujSipjg==} dependencies: - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) transitivePeerDependencies: - react + dev: false - '@tamagui/alert-dialog@1.94.0(@types/react@18.2.52)(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/alert-dialog@1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-eKmHQIAZuu/ULQh/wsp2+PoJ7biu74+ptaIwaW1/cKh6vqvnC1tCwET8d0qLjW7CShvvgk1SD7A/muuL8Bnurg==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@tamagui/animate-presence': 1.94.0(react@18.2.0) - '@tamagui/aria-hidden': 1.94.0(react@18.2.0) - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/dialog': 1.94.0(@types/react@18.2.52)(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/dismissable': 1.94.0(react@18.2.0) - '@tamagui/focus-scope': 1.94.0(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/polyfill-dev': 1.94.0 - '@tamagui/popper': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/portal': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/remove-scroll': 1.94.0(@types/react@18.2.52)(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/text': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) + '@tamagui/animate-presence': 1.96.0(react@18.2.0) + '@tamagui/aria-hidden': 1.96.0(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/dialog': 1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0) + '@tamagui/dismissable': 1.96.0(react@18.2.0) + '@tamagui/focus-scope': 1.96.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/polyfill-dev': 1.96.0 + '@tamagui/popper': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/portal': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/remove-scroll': 1.96.0(@types/react@18.3.1)(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) transitivePeerDependencies: - '@types/react' + dev: false - '@tamagui/animate-presence@1.94.0(react@18.2.0)': + /@tamagui/animate-presence@1.94.0(react@18.2.0): + resolution: {integrity: sha512-vdjwMjXBYaTvlzBKdcxPzuf7opSg/ipXH3debtpVpbBgCllC4r5X8P00btYxLKrkI0I7NVTDUMOQRln1OH4IdQ==} dependencies: '@tamagui/helpers': 1.94.0(react@18.2.0) '@tamagui/use-constant': 1.94.0(react@18.2.0) @@ -9502,73 +3883,116 @@ snapshots: '@tamagui/web': 1.94.0 transitivePeerDependencies: - react + dev: false - '@tamagui/animate@1.94.0(react@18.2.0)': + /@tamagui/animate-presence@1.96.0(react@18.2.0): + resolution: {integrity: sha512-JRBuYSG8PcKPQXr29rb3/1vLSl0vb2XXYTTzzy6EsyO40q4Yq5fCatO7FTg0kZ2xXR8rE1FpxvWhkmDxYjpNrg==} dependencies: - '@tamagui/animate-presence': 1.94.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/use-constant': 1.96.0(react@18.2.0) + '@tamagui/use-force-update': 1.96.0(react@18.2.0) + '@tamagui/use-presence': 1.96.0(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) transitivePeerDependencies: - react + dev: false - '@tamagui/animations-css@1.94.0': + /@tamagui/animate@1.96.0(react@18.2.0): + resolution: {integrity: sha512-DLKDkclcn2HRDz/tY91L0GVMz2fbFIN1NYECijPBZdZsxnwXRp3gHn8n82MIm2U9m/Uc0lwtq3hmj2jiAMIjqQ==} dependencies: - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/cubic-bezier-animator': 1.94.0 - '@tamagui/use-presence': 1.94.0(react@18.2.0) - '@tamagui/web': 1.94.0 + '@tamagui/animate-presence': 1.96.0(react@18.2.0) + transitivePeerDependencies: + - react + dev: false + + /@tamagui/animations-css@1.96.0(react@18.2.0): + resolution: {integrity: sha512-TdKdCXpoVwmU+NmDmAbSlDMg71msBAX8h4NG2Dx14KGYUO7UZ60eab4RruQgRdlsKuQMTfDzUZ8nPFooM9LFbg==} + peerDependencies: + react: '*' + dependencies: + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/cubic-bezier-animator': 1.96.0 + '@tamagui/use-presence': 1.96.0(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/animations-moti@1.94.0(react-dom@18.2.0(react@18.2.0))(react-native-reanimated@3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))': + /@tamagui/animations-moti@1.96.0(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react@18.2.0): + resolution: {integrity: sha512-I0+fGstqNBXOjGPi4EwWjk216TTTXh5HIYPkm+FkG8WOuBkPYbV69ZxtS+CDlgwSHK9rrCfkxjeuJTPm8Rh4HQ==} + peerDependencies: + react: '*' dependencies: - '@tamagui/use-presence': 1.94.0(react@18.2.0) - '@tamagui/web': 1.94.0 - moti: 0.27.5(react-dom@18.2.0(react@18.2.0))(react-native-reanimated@3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react@18.2.0) + '@tamagui/use-presence': 1.96.0(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) + moti: 0.27.5(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react@18.2.0) react: 18.2.0 transitivePeerDependencies: - react-dom - react-native-reanimated + dev: false - '@tamagui/animations-react-native@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/animations-react-native@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-dRYNn4txhRW1WrZkKFXIl7K5ajQ/rIApFC9j3UeoU3iHbpgJ19V9T8rJr6p+ZueY7QsbELXSNIhGKFoFUGWvRQ==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/use-presence': 1.94.0(react@18.2.0) - '@tamagui/web': 1.94.0 + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/use-presence': 1.96.0(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@tamagui/aria-hidden@1.94.0(react@18.2.0)': + /@tamagui/aria-hidden@1.96.0(react@18.2.0): + resolution: {integrity: sha512-3qqlVyIvkIrgJW0sS8XTXS0Rlw/hdjBfI2VRice+QhyImUeaNcXS7LpIyZEzez1rMN/RqAY7pBVHxAY1Zk0vQA==} + peerDependencies: + react: '*' dependencies: - aria-hidden: 1.2.3 + aria-hidden: 1.2.4 react: 18.2.0 + dev: false - '@tamagui/avatar@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/avatar@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-VENo1B2TEhuIoLkGOPL1oLWtCONjjyNkGLUNV0e8cMWksW76m8ku9n5gTraTwDvfADfOOuxqC3ObWd4pUC4wMA==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/image': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/shapes': 1.94.0(react@18.2.0) - '@tamagui/text': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/image': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/shapes': 1.96.0(react@18.2.0) + '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@tamagui/babel-plugin@1.94.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.4.3)': + /@tamagui/babel-plugin@1.96.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5): + resolution: {integrity: sha512-Nt73CRemqRy19DgdYegqHm2bALvsjJVNK/klshSh1MVORMHkansmQi6drVCPjF5et9VTlxcvu4UPavD7ObVVTw==} dependencies: - '@babel/generator': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/generator': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 '@babel/template': 7.24.0 - '@babel/traverse': 7.23.9 - '@tamagui/static': 1.94.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.4.3) + '@babel/traverse': 7.24.5 + '@tamagui/static': 1.96.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5) transitivePeerDependencies: - encoding - react - react-dom - supports-color - typescript + dev: false - '@tamagui/build@1.94.0(typescript@5.4.3)': + /@tamagui/build@1.96.0(typescript@5.4.5): + resolution: {integrity: sha512-DWVw6S6QTS0A9J9o04JttyGDVspZXZtbdrl2qQGNC+4eFqJmQBziz1r1IC8qmUg1gwW8sO6unZnhVVKeYMdQqQ==} + hasBin: true + peerDependencies: + typescript: '*' dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 '@types/fs-extra': 9.0.13 - babel-plugin-fully-specified: 1.3.0(@babel/core@7.23.9) + babel-plugin-fully-specified: 1.3.0(@babel/core@7.24.5) chokidar: 3.6.0 esbuild: 0.20.2 esbuild-plugin-es5: 2.1.0(esbuild@0.20.2) @@ -9578,170 +4002,270 @@ snapshots: fs-extra: 11.2.0 get-tsconfig: 4.7.3 lodash.debounce: 4.0.8 - typescript: 5.4.3 + typescript: 5.4.5 transitivePeerDependencies: - supports-color + dev: false - '@tamagui/button@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/button@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-YVNFptdwSqbtJ7W/IFQq0Z/SRMGxT2WZimWKVCIne95gHX60XfflJr2hnnLSFBEUJUOyltPythOZ5rBvKdbAYA==} + peerDependencies: + react: '*' dependencies: - '@tamagui/font-size': 1.94.0(react@18.2.0) - '@tamagui/get-button-sized': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/helpers-tamagui': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/text': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/web': 1.94.0 + '@tamagui/font-size': 1.96.0(react@18.2.0) + '@tamagui/get-button-sized': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/helpers-tamagui': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) react: 18.2.0 transitivePeerDependencies: - react-native + dev: false - '@tamagui/card@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/card@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-9dOP7AEsMpNCOUW7PtDhDb/LKi5iKCek2ckI9a85EVaFsWN1re2t+W8JMwlUhlH6KjylHAVNGLq80PTNjAibCQ==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/web': 1.94.0 + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) - - '@tamagui/checkbox-headless@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': - dependencies: - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/focusable': 1.94.0(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/label': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) - '@tamagui/use-previous': 1.94.0 + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false + + /@tamagui/checkbox-headless@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-yM9kEvkoXPu8D/y0RtsApnhWTieOdJMlG+mRz1MAn5RSQfdF1uGH2RephTz6S4NP67E1HgW5cz9IeHQJtAn6qw==} + peerDependencies: + react: '*' + dependencies: + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/focusable': 1.96.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/label': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) + '@tamagui/use-previous': 1.96.0 react: 18.2.0 transitivePeerDependencies: - react-native + dev: false - '@tamagui/checkbox@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/checkbox@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-g0HrVhZVh3MJ3uZMEbycQPJnZwzL8qi5SODFJcNmTzJOmHa8TNceuubsCengrPMjODfnx7FrkZAcC+ZMvixq2Q==} + peerDependencies: + react: '*' dependencies: - '@tamagui/checkbox-headless': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/focusable': 1.94.0(react@18.2.0) - '@tamagui/font-size': 1.94.0(react@18.2.0) - '@tamagui/get-token': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/helpers-tamagui': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/label': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) - '@tamagui/use-previous': 1.94.0 + '@tamagui/checkbox-headless': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/focusable': 1.96.0(react@18.2.0) + '@tamagui/font-size': 1.96.0(react@18.2.0) + '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/helpers-tamagui': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/label': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) + '@tamagui/use-previous': 1.96.0 react: 18.2.0 transitivePeerDependencies: - react-native + dev: false - '@tamagui/cli-color@1.94.0': {} + /@tamagui/cli-color@1.96.0: + resolution: {integrity: sha512-GROPPDpZzd85DQ3KYuGi+z3mqYR8ooM1y5izDjoZhXtw+rBto9nRE9l8/seTsp0L8KFAOa6LfVzDeIdAKB4M1w==} + dev: false - '@tamagui/collapsible@1.94.0(react@18.2.0)': + /@tamagui/collapsible@1.96.0(react@18.2.0): + resolution: {integrity: sha512-VVBIBcdctBALkPyaYVOBv4F/+z1yWVeUlBrurpiPB/D42FM5w1RMBKXe2xihGGsp1XDylQsA2hrE6yRfViSQ/g==} + peerDependencies: + react: '*' dependencies: - '@tamagui/animate-presence': 1.94.0(react@18.2.0) - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/polyfill-dev': 1.94.0 - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) + '@tamagui/animate-presence': 1.96.0(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/polyfill-dev': 1.96.0 + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/collection@1.94.0(react@18.2.0)': + /@tamagui/collection@1.96.0(react@18.2.0): + resolution: {integrity: sha512-/wz+QFiSl8VTxW17JDzXfrW4UeilIAH/DnSOBJxsgUR80eL8bbfpBLV6sqWbLqRKZgCy4I6oHbIuwiKQCjRorA==} + peerDependencies: + react: '*' dependencies: - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/polyfill-dev': 1.94.0 - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/polyfill-dev': 1.96.0 + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/colors@1.94.0': {} + /@tamagui/colors@1.96.0: + resolution: {integrity: sha512-4fLIiwnD6VWJtHbOKJJTMDFYqEudylqqL1kOyHK+QloF+w186CWIETMwXo3ycxjDq3kYnnx/rr0sWAEnq67w1Q==} + dev: false - '@tamagui/compose-refs@1.94.0(react@18.2.0)': + /@tamagui/compose-refs@1.94.0(react@18.2.0): + resolution: {integrity: sha512-acbqt+5PR3AQtfJ1eyxAaRArg+40DXLjyJZou57+vZ2fB4bAY1NHBhsiDp0ytKBWDefZWB5ltie7lL3BImBRBg==} + peerDependencies: + react: '*' dependencies: react: 18.2.0 + dev: false - '@tamagui/config-default@1.94.0(react@18.2.0)': + /@tamagui/compose-refs@1.96.0(react@18.2.0): + resolution: {integrity: sha512-t4gY6+0VP/vq0J6r7bkVh8RUhE9ZXyjsxOA0kQa1wjTGbez1yE+OuRtoTU3XnDK8BymZl2YWzAA8sKxnUzSdCw==} + peerDependencies: + react: '*' dependencies: - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/shorthands': 1.94.0 + react: 18.2.0 + dev: false + + /@tamagui/config-default@1.96.0(react@18.2.0): + resolution: {integrity: sha512-+RZ86CQ9ICIuu9zvPGM6Lg9rFxvZuJKLAFrveqDs3sn4F7hBxkcEAUUDYk79QlCaRR67b0xGfrRhsaIyMgCYzw==} + dependencies: + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/shorthands': 1.96.0 transitivePeerDependencies: - react - - '@tamagui/config@1.94.0(react-dom@18.2.0(react@18.2.0))(react-native-reanimated@3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': - dependencies: - '@tamagui/animations-css': 1.94.0 - '@tamagui/animations-moti': 1.94.0(react-dom@18.2.0(react@18.2.0))(react-native-reanimated@3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)) - '@tamagui/animations-react-native': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/colors': 1.94.0 - '@tamagui/font-inter': 1.94.0(react@18.2.0) - '@tamagui/font-silkscreen': 1.94.0(react@18.2.0) - '@tamagui/react-native-media-driver': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0)) - '@tamagui/shorthands': 1.94.0 - '@tamagui/themes': 1.94.0 - '@tamagui/web': 1.94.0 + dev: false + + /@tamagui/config@1.96.0(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-hVtbTfh/9yMB5CXQHcWn8vQZqGfxELkO75RVxvddbm1hX1dJt32WTnls2DkuqDBBhKJOGBW5aPz0496/vHDiug==} + dependencies: + '@tamagui/animations-css': 1.96.0(react@18.2.0) + '@tamagui/animations-moti': 1.96.0(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react@18.2.0) + '@tamagui/animations-react-native': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/colors': 1.96.0 + '@tamagui/font-inter': 1.96.0(react@18.2.0) + '@tamagui/font-silkscreen': 1.96.0(react@18.2.0) + '@tamagui/react-native-media-driver': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/shorthands': 1.96.0 + '@tamagui/themes': 1.96.0(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) transitivePeerDependencies: - react - react-dom - react-native - react-native-reanimated + dev: false + + /@tamagui/constants@1.94.0(react@18.2.0): + resolution: {integrity: sha512-2G44sIpoSw7YuK1yIM5dzBg9z5IwYcvnVJ4Tcv2sSPYVvcErZLODTbe3fc4ssXEIVTNPWbhD69LRvq+LW2vV9g==} + peerDependencies: + react: '*' + dependencies: + react: 18.2.0 + dev: false - '@tamagui/constants@1.94.0(react@18.2.0)': + /@tamagui/constants@1.96.0(react@18.2.0): + resolution: {integrity: sha512-wlDqX3GV7vTtY1mlrmwd/H/UThkFZ6J3frosw2q7MgKsvqOxQbFGUhEMgS1Jmt8S+Fzktuy1+N8v1sRrajEsKA==} + peerDependencies: + react: '*' dependencies: react: 18.2.0 + dev: false - '@tamagui/core@1.94.0(react@18.2.0)': + /@tamagui/core@1.94.0(react@18.2.0): + resolution: {integrity: sha512-L6QJ5avPXVzozoMwJEvMnYt4xAO59Ht/nv2kf51c0QCP84BbwsNDrTJztjdWQ2J3f3QOczKCzBPsIOU4iEevVw==} + peerDependencies: + react: '*' dependencies: '@tamagui/react-native-use-pressable': 1.94.0(react@18.2.0) '@tamagui/react-native-use-responder-events': 1.94.0(react@18.2.0) '@tamagui/use-event': 1.94.0(react@18.2.0) '@tamagui/web': 1.94.0 react: 18.2.0 + dev: false - '@tamagui/create-context@1.94.0(react@18.2.0)': + /@tamagui/core@1.96.0(react@18.2.0): + resolution: {integrity: sha512-QBtJpWibCFu6Y+9rTsXA31V5D3V5ctvyZCydRF8GYkQvScGDpQmFNWLezPHJ9Q/8lqlczxzpOyXGanIY14sEKQ==} + peerDependencies: + react: '*' dependencies: + '@tamagui/react-native-use-pressable': 1.96.0(react@18.2.0) + '@tamagui/react-native-use-responder-events': 1.96.0(react@18.2.0) + '@tamagui/use-event': 1.96.0(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/create-theme@1.94.0': + /@tamagui/create-context@1.94.0(react@18.2.0): + resolution: {integrity: sha512-WJLbRU2HKppZJBNPvUHBpF6B0sKxG1EQ/0YaQw+H8jIsn3ogSt6NzAR86DkpWg/yahWhz5humcNKwNeNkrIbFA==} + peerDependencies: + react: '*' dependencies: - '@tamagui/web': 1.94.0 + react: 18.2.0 + dev: false + + /@tamagui/create-context@1.96.0(react@18.2.0): + resolution: {integrity: sha512-7h+JaKVoOWY9tmtVTmxZR87RUu3xyrfAfF6qs8OrMxNuIQDmSRWwyqEaF+/3ikU7YVBYUjs8qvF48/FJfGFUrg==} + peerDependencies: + react: '*' + dependencies: + react: 18.2.0 + dev: false + + /@tamagui/create-theme@1.96.0(react@18.2.0): + resolution: {integrity: sha512-cJSXV9RTNVpkEM6z47fxJRPOsEg3J2ZXrCM+tabWdcuPCSn5b2Jq06QRo8H9P+UYqje+di7B/VBO4IhHy0OQBQ==} + dependencies: + '@tamagui/web': 1.96.0(react@18.2.0) + transitivePeerDependencies: + - react + dev: false - '@tamagui/cubic-bezier-animator@1.94.0': {} + /@tamagui/cubic-bezier-animator@1.96.0: + resolution: {integrity: sha512-Byi3m2GaRtgXgMOhSUKLoTjwg70q9kZpvvl3sXpARDmUlNtC6fGqiqtzEpoEycj0mZeWb6ZiS9Wf+KHe7te8Sw==} + dev: false - '@tamagui/dialog@1.94.0(@types/react@18.2.52)(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/dialog@1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-x4/9iHHazQpmlQ9XUWPaR2QOQbUFzDb+pz+oBK5xeTSsVs17rRhlsqy76xkbfUipnOTmNe5UgYpZ9zJYqvY3bg==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@tamagui/adapt': 1.94.0(react@18.2.0) - '@tamagui/animate-presence': 1.94.0(react@18.2.0) - '@tamagui/aria-hidden': 1.94.0(react@18.2.0) - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/dismissable': 1.94.0(react@18.2.0) - '@tamagui/focus-scope': 1.94.0(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/polyfill-dev': 1.94.0 - '@tamagui/popper': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/portal': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/remove-scroll': 1.94.0(@types/react@18.2.52)(react@18.2.0) - '@tamagui/sheet': 1.94.0(@types/react@18.2.52)(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/text': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) + '@tamagui/adapt': 1.96.0(react@18.2.0) + '@tamagui/animate-presence': 1.96.0(react@18.2.0) + '@tamagui/aria-hidden': 1.96.0(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/dismissable': 1.96.0(react@18.2.0) + '@tamagui/focus-scope': 1.96.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/polyfill-dev': 1.96.0 + '@tamagui/popper': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/portal': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/remove-scroll': 1.96.0(@types/react@18.3.1)(react@18.2.0) + '@tamagui/sheet': 1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) transitivePeerDependencies: - '@types/react' + dev: false - '@tamagui/dismissable@1.94.0(react@18.2.0)': + /@tamagui/dismissable@1.94.0(react@18.2.0): + resolution: {integrity: sha512-jWgB2hQin9evkCqv5/WGvuzAQuRuaIfF+NzL+N/V3rVrV9HaoFwtpoRjKrGZSZNUT98msr1vBjfxS9+3m00/Tw==} + peerDependencies: + react: '*' dependencies: '@tamagui/compose-refs': 1.94.0(react@18.2.0) '@tamagui/core': 1.94.0(react@18.2.0) @@ -9749,174 +4273,297 @@ snapshots: '@tamagui/use-escape-keydown': 1.94.0 '@tamagui/use-event': 1.94.0(react@18.2.0) react: 18.2.0 + dev: false + + /@tamagui/dismissable@1.96.0(react@18.2.0): + resolution: {integrity: sha512-Xz82OA2Vzw9wq5jCjfYBytoHpnK95bCDwxvDMlWZdo2ztfT0qGh/VOF6llx0qUc2FysbPd9s1LvZrXfVphCXgg==} + peerDependencies: + react: '*' + dependencies: + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/use-escape-keydown': 1.96.0 + '@tamagui/use-event': 1.96.0(react@18.2.0) + react: 18.2.0 + dev: false - '@tamagui/elements@1.94.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + /@tamagui/elements@1.96.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Oc1hZ3TXQtng1QB/YLjsj0j7jFI7/7iL9aiQLguB/VaJB5y3QhnVJ9lxBkc69/b3DLI67XLqRHJagV0KhFGILA==} + peerDependencies: + react: '*' + react-dom: '*' dependencies: - '@tamagui/core': 1.94.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false - '@tamagui/fake-react-native@1.94.0': {} + /@tamagui/fake-react-native@1.96.0: + resolution: {integrity: sha512-cExa9yp12cStVF+LBvJGpkFsppfIFAShaC/8+dqXHq1mU02fw6l9tC2xD6BJj/SxefHiS4PH2TumdoToA/En9g==} + dev: false - '@tamagui/floating@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/floating@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-Sz9LACE6YCQyZzYYzw7qCPXvuWHSlCVx7bHwVO4pHkQnWUOKafrdelXvTd/UNqTRxNLXEsD1NJE3Ew8KcG8HNg==} + peerDependencies: + react: '*' dependencies: - '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@floating-ui/react-native': 0.10.4(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + '@floating-ui/react-dom': 2.0.9(react-dom@18.2.0)(react@18.2.0) + '@floating-ui/react-native': 0.10.5(react-native@0.73.6)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - react-native + dev: false - '@tamagui/focus-scope@1.94.0(react@18.2.0)': + /@tamagui/focus-scope@1.96.0(react@18.2.0): + resolution: {integrity: sha512-AiPebPwigya2WxvUNFUE1Y16LtEX0ASTVVBJw9NIRFTNqyfZBVRUTGr/g4VxApK4+fE/TFDbzNc0SKLkhzcEmQ==} + peerDependencies: + react: '*' dependencies: - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/use-event': 1.94.0(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/use-event': 1.96.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/focusable@1.94.0(react@18.2.0)': + /@tamagui/focusable@1.96.0(react@18.2.0): + resolution: {integrity: sha512-T5bfXou3v4DmMehSKXEA47F3648RdhkMoMBkmR1HTezWillBAgccl+YbLZQDPlxomTEk6xCkeCnfZQNZrcYvLw==} + peerDependencies: + react: '*' dependencies: - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/web': 1.94.0 + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/font-inter@1.94.0(react@18.2.0)': + /@tamagui/font-inter@1.96.0(react@18.2.0): + resolution: {integrity: sha512-DGiWanp2uVN7RwBuCQ3LF30RBKJkE6H+ftdkvZj7fJGlf/+R1DQVA7Ve5GkeoXVrL/kWtbIvPXqlur2n1CPq+Q==} dependencies: - '@tamagui/core': 1.94.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) transitivePeerDependencies: - react + dev: false - '@tamagui/font-silkscreen@1.94.0(react@18.2.0)': + /@tamagui/font-silkscreen@1.96.0(react@18.2.0): + resolution: {integrity: sha512-5GoOIz4T1qpuJ6hbuvwpKR2JDIHBqDgGjqekV3km35FSbjOMK4f6lYw4HyFYkZgBEZtm1eHWK5n9j9DM4KIcjg==} dependencies: - '@tamagui/core': 1.94.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) transitivePeerDependencies: - react + dev: false - '@tamagui/font-size@1.94.0(react@18.2.0)': + /@tamagui/font-size@1.96.0(react@18.2.0): + resolution: {integrity: sha512-Qvidm9j68z8xC1frh4HMOfYTgCjjyOT8KB+iueVJ4d2CLd97X3XkgAWFAZYAtCek5gTrw78kJihHm5uVch0kDA==} + peerDependencies: + react: '*' dependencies: - '@tamagui/core': 1.94.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/form@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/form@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-x9GG9jeB/ZKUsmbGieL4OEhY1XwWBSIYRud3MW9SQqBG388AyJGLEOny4xssmGesNLOjujFO56fNuC3QnakX2Q==} + peerDependencies: + react: '*' dependencies: - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/focusable': 1.94.0(react@18.2.0) - '@tamagui/get-button-sized': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/get-font-sized': 1.94.0(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/text': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/focusable': 1.96.0(react@18.2.0) + '@tamagui/get-button-sized': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/get-font-sized': 1.96.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) react: 18.2.0 transitivePeerDependencies: - react-native + dev: false - '@tamagui/generate-themes@1.94.0(esbuild@0.20.2)': + /@tamagui/generate-themes@1.96.0(esbuild@0.20.2)(react@18.2.0): + resolution: {integrity: sha512-xuBH5faN+YoC74EX8qOr+9P4ffuySFW5R8MtmV+swxTWIS4sqzWgy8L8Qv5IUld7W5NEi2fBo4+X9cmsyXprvQ==} dependencies: - '@tamagui/create-theme': 1.94.0 - '@tamagui/types': 1.94.0 + '@tamagui/create-theme': 1.96.0(react@18.2.0) + '@tamagui/types': 1.96.0 esbuild-register: 3.5.0(esbuild@0.20.2) fs-extra: 11.2.0 transitivePeerDependencies: - esbuild + - react - supports-color + dev: false - '@tamagui/get-button-sized@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/get-button-sized@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-aI20DkQdKx58IRQ9vFeTtdWdRpByuCPfv+9wGPIHlfwF076U6aQ3uMGnhc9Xojx94i6LpwugMVWFVIBkze45GA==} + peerDependencies: + react: '*' dependencies: - '@tamagui/get-token': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/web': 1.94.0 + '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) react: 18.2.0 transitivePeerDependencies: - react-native + dev: false - '@tamagui/get-font-sized@1.94.0(react@18.2.0)': + /@tamagui/get-font-sized@1.94.0(react@18.2.0): + resolution: {integrity: sha512-c+Ddga34d4jZ6qnX48XUJ1mDXYkuMysaLoPGg6YFOE5eKdWYpDDbGcwrB8Wwh+0SV2ae/1hYQc0JbxHVSvwbNw==} + peerDependencies: + react: '*' dependencies: '@tamagui/core': 1.94.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/get-token@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/get-font-sized@1.96.0(react@18.2.0): + resolution: {integrity: sha512-PXGkJdauNaZam5tnCmebMrewxzH5VZ4EfUcfZEMKJ6DQ6dgM/HfROF/3261Cz9nkOSvaLYuSMPSdH9ZDxJ58Nw==} + peerDependencies: + react: '*' dependencies: - '@tamagui/web': 1.94.0 + '@tamagui/core': 1.96.0(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + dev: false - '@tamagui/group@1.94.0(@types/react@18.2.52)(immer@10.0.3)(react@18.2.0)': + /@tamagui/get-token@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-A/5W327/HI8NbJcwAB0JKIEr5P2lfzOztyjCq+KOsMf6m1DRKjHcEsGoK+Fh5Wy9spD61K2lK1WvFquceP1jGQ==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) react: 18.2.0 - reforest: 0.13.0(@types/react@18.2.52)(immer@10.0.3)(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false + + /@tamagui/group@1.96.0(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0): + resolution: {integrity: sha512-kwSVR7QjFz1z7wVnZ5WXLKqUmVMkdDYXYmztileaktDkoS/MhurvT1qnAYsQRluMq16DlPnYXByqYdPONL1yoA==} + peerDependencies: + react: '*' + dependencies: + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) + react: 18.2.0 + reforest: 0.13.0(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer + dev: false - '@tamagui/helpers-node@1.94.0': + /@tamagui/helpers-node@1.96.0: + resolution: {integrity: sha512-eXROKgv5IOVDBgT+tDA77ZZMi+Q9Q1zFi7VCUkx0Mqi9ogFB5JqdhPvseRMb9ef2ntQPBRbF7jqPE8SC2PLrQA==} dependencies: - '@tamagui/types': 1.94.0 + '@tamagui/types': 1.96.0 + dev: false - '@tamagui/helpers-tamagui@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/helpers-tamagui@1.94.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-gVfoRUIs1zZb5zzP87+8slKP/PTHHkIiaLMsVsV3/e4MjegOfDNU9LJDiAAZddQEItu+5kFVCFHgx3Q1ek1r9g==} + peerDependencies: + react: '*' + react-native: '*' dependencies: '@tamagui/helpers': 1.94.0(react@18.2.0) '@tamagui/web': 1.94.0 react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false + + /@tamagui/helpers-tamagui@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-KgLHHvgMWDmxq+2APw5g64xeXBVL0HSFNaOH5HVt5YXW1SJzAJveWDG4zUpBg5cNlYQA2gqUx+jTggs7AG0jxg==} + peerDependencies: + react: '*' + react-native: '*' + dependencies: + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) + react: 18.2.0 + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@tamagui/helpers@1.94.0(react@18.2.0)': + /@tamagui/helpers@1.94.0(react@18.2.0): + resolution: {integrity: sha512-7GJN2UztmI5hdmcBwhlGqGg2uxr3+S9LhnjjIitmveXchgqv0Zik4pCLagh9SQeTDoEkoZ5X3/PmM25jbTvGcw==} dependencies: '@tamagui/constants': 1.94.0(react@18.2.0) '@tamagui/simple-hash': 1.94.0 transitivePeerDependencies: - react + dev: false - '@tamagui/image@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/helpers@1.96.0(react@18.2.0): + resolution: {integrity: sha512-8MCEG4v8y/yyqxuXHLUEKe9cT+rMlg+XDvbjhjwR4uYDvc420z26EJhHz9vZGrElBYzYp7uNuWptMib1ihdgcA==} dependencies: - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/simple-hash': 1.96.0 + transitivePeerDependencies: + - react + dev: false + + /@tamagui/image@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-BWCKz3HUr01gOVwT0B0vYNYKbWdDSGUm00EeddW9jC3NdS8qvROf+hV8Gp6FYYCjkB7oArqXLm0QPBOxl91m0Q==} + peerDependencies: + react: '*' + react-native: '*' + dependencies: + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@tamagui/label@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/label@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-zWJ1+NbigMMA1A3bMJ8mtrBNcRtqcPIQs6s0Avfwpze6jfu84lWSW8dBuTr82r7v8EvYJOQeHrxLmpyr9J/7Yg==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/focusable': 1.94.0(react@18.2.0) - '@tamagui/get-button-sized': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/get-font-sized': 1.94.0(react@18.2.0) - '@tamagui/text': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/web': 1.94.0 + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/focusable': 1.96.0(react@18.2.0) + '@tamagui/get-button-sized': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/get-font-sized': 1.96.0(react@18.2.0) + '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@tamagui/linear-gradient@1.94.0(react@18.2.0)': + /@tamagui/linear-gradient@1.96.0(react@18.2.0): + resolution: {integrity: sha512-IMoQHYVqx0pNhbYo/JbuFUdKulxq+hkpcoQB9WfzSUa2z6x6gdRjBaCOvjQg0+6jhmH/P9+wvJdF0zfHNqQ+FA==} + peerDependencies: + react: '*' dependencies: - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/list-item@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/list-item@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-n6u2We7w+SbbDdCj623oh5OtbEFIbeI02Ygy+VAMGjslG6grV6wjsuBZsL7fTx6ET/DfSXOKJtM35RAgpW667Q==} + peerDependencies: + react: '*' dependencies: - '@tamagui/font-size': 1.94.0(react@18.2.0) - '@tamagui/get-font-sized': 1.94.0(react@18.2.0) - '@tamagui/get-token': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/helpers-tamagui': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/text': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/web': 1.94.0 + '@tamagui/font-size': 1.96.0(react@18.2.0) + '@tamagui/get-font-sized': 1.96.0(react@18.2.0) + '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/helpers-tamagui': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) react: 18.2.0 transitivePeerDependencies: - react-native + dev: false - ? '@tamagui/metro-plugin@1.94.0(@babel/core@7.23.9)(react-dom@18.2.0(react@18.2.0))(react-native-reanimated@3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-svg@14.1.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)(tailwindcss@3.4.3(ts-node@10.9.2(@swc/core@1.4.8(@swc/helpers@0.5.6))(@types/node@20.12.7)(typescript@5.4.3)))(typescript@5.4.3)' - : dependencies: - '@tamagui/static': 1.94.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.4.3) + /@tamagui/metro-plugin@1.96.0(@babel/core@7.24.5)(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react-native-safe-area-context@4.8.2)(react-native-svg@14.1.0)(react-native@0.73.6)(react@18.2.0)(tailwindcss@3.4.3)(typescript@5.4.5): + resolution: {integrity: sha512-S/wWRGQAmDzVJn3nUvNftcDSCsTlr2Dj2Pke5N3OuADy644eh3r63aCUI+N9zb/sl5d8mdt/hlVQhZaEbz1n2A==} + dependencies: + '@tamagui/static': 1.96.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5) fs-extra: 11.2.0 - metro-config: 0.80.5 - metro-transform-worker: 0.80.5 - react-native-css-interop: 0.0.35(@babel/core@7.23.9)(react-native-reanimated@3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-svg@14.1.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)(tailwindcss@3.4.3(ts-node@10.9.2(@swc/core@1.4.8(@swc/helpers@0.5.6))(@types/node@20.12.7)(typescript@5.4.3))) + metro-config: 0.80.8 + metro-transform-worker: 0.80.8 + react-native-css-interop: 0.0.34(@babel/core@7.24.5)(react-native-reanimated@3.6.3)(react-native-safe-area-context@4.8.2)(react-native-svg@14.1.0)(react-native@0.73.6)(react@18.2.0)(tailwindcss@3.4.3) transitivePeerDependencies: - '@babel/core' - bufferutil @@ -9931,243 +4578,386 @@ snapshots: - tailwindcss - typescript - utf-8-validate + dev: false + + /@tamagui/normalize-css-color@1.94.0: + resolution: {integrity: sha512-Uf65nZneTx6Jvqpq28lGvfMEoXSS4bE3cTlbNbeABwogGd3e5x15NiPkMraq08oPHw/P+rl+844FTEkeMFxv/g==} + dependencies: + '@react-native/normalize-color': 2.1.0 + dev: false - '@tamagui/normalize-css-color@1.94.0': + /@tamagui/normalize-css-color@1.96.0: + resolution: {integrity: sha512-FWOLPBh8joDDxp2m1l8/tDmETF/9FySKEjTubFitvhgKCfWzM0x8GumA/8FpIp8YyEENIOy1kdKRtx8BUO5qlQ==} dependencies: '@react-native/normalize-color': 2.1.0 + dev: false + + /@tamagui/polyfill-dev@1.94.0: + resolution: {integrity: sha512-aK2XRxzDIlixyn1n+Os+2gL370nbD/SBXi6vb9hfxZmuJH5DpNCMUuFjTzamhd/CjixLhnLLoOZtp1FIA+reLg==} + dev: false - '@tamagui/polyfill-dev@1.94.0': {} + /@tamagui/polyfill-dev@1.96.0: + resolution: {integrity: sha512-TXowsPngnSxvhDHrtwUnQx3EADQivBpxqzvY5RJxKNU+UL8+o+FtQ1lRSaaWOPdU1wTr81rA0FBmx7QvWCwS/g==} + dev: false - '@tamagui/popover@1.94.0(@types/react@18.2.52)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/popover@1.96.0(@types/react@18.3.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-NsYWiAQOsba6z3BAQY2cSh8xXkIHpmKOG6e+6Hu2kKNP2kJM3hK7f+//BwYjiAIK+pLp4+MkaOHDJpSW8bbmKQ==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@floating-ui/react': 0.26.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@tamagui/adapt': 1.94.0(react@18.2.0) - '@tamagui/animate': 1.94.0(react@18.2.0) - '@tamagui/aria-hidden': 1.94.0(react@18.2.0) - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/dismissable': 1.94.0(react@18.2.0) - '@tamagui/floating': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/focus-scope': 1.94.0(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/polyfill-dev': 1.94.0 - '@tamagui/popper': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/portal': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/remove-scroll': 1.94.0(@types/react@18.2.52)(react@18.2.0) - '@tamagui/scroll-view': 1.94.0(react@18.2.0) - '@tamagui/sheet': 1.94.0(@types/react@18.2.52)(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) + '@floating-ui/react': 0.26.13(react-dom@18.2.0)(react@18.2.0) + '@tamagui/adapt': 1.96.0(react@18.2.0) + '@tamagui/animate': 1.96.0(react@18.2.0) + '@tamagui/aria-hidden': 1.96.0(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/dismissable': 1.96.0(react@18.2.0) + '@tamagui/floating': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/focus-scope': 1.96.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/polyfill-dev': 1.96.0 + '@tamagui/popper': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/portal': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/remove-scroll': 1.96.0(@types/react@18.3.1)(react@18.2.0) + '@tamagui/scroll-view': 1.96.0(react@18.2.0) + '@tamagui/sheet': 1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) react: 18.2.0 - react-freeze: 1.0.3(react@18.2.0) - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-freeze: 1.0.4(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) transitivePeerDependencies: - '@types/react' - react-dom + dev: false - '@tamagui/popper@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/popper@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-StzoClnGf8cFyI88jfnQlJ6U9z/IQLZnjtKGFmuZ7sEQmAUkK+T2w0GYQIBekRHmP+evIG41BDlOY60mYDnAFw==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/floating': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/get-token': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/floating': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@tamagui/portal@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/portal@1.94.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-ns/fRTL62psU0WnyTR+MEIIGwwp+s90or6zlFe4PsilTKLbW+ZZLA8ovP2F0NOrC7sagBIIYhuD2WxvXprZMXw==} + peerDependencies: + react: '*' + react-native: '*' dependencies: '@tamagui/constants': 1.94.0(react@18.2.0) '@tamagui/core': 1.94.0(react@18.2.0) '@tamagui/stacks': 1.94.0(react@18.2.0) '@tamagui/use-event': 1.94.0(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@tamagui/progress@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/portal@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-0qjSed2tz1dEyzI/a/hTEp3bcamvzNwPzLapD0hVdmUN7t7W23lrBdwhsa4+RanNnss94PyA2y51gFGQh5uuOw==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/get-token': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/use-did-finish-ssr': 1.96.0(react@18.2.0) + '@tamagui/use-event': 1.96.0(react@18.2.0) + react: 18.2.0 + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false + + /@tamagui/progress@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-ov1/uB8qkMy1JJU5osdfIyQs4kj5uekl2m8ZKHdCYzO3mMBgiaKTvOKOJ8T48/i11OqZabkoCUnb9atpATzqiA==} + peerDependencies: + react: '*' + react-native: '*' + dependencies: + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@tamagui/proxy-worm@1.94.0': {} + /@tamagui/proxy-worm@1.96.0: + resolution: {integrity: sha512-0fKm5xMiZjigSyGxVVAIS9I+5l8dKvHOSkC+KkZy2oLnhB/vM2LaZZ6HbWgHCJrWpNdUnS7QM1efyOeHQj074g==} + dev: false - '@tamagui/radio-group@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/radio-group@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-mzBSdWnAqYVeCRPFMmeQMbDNrBlQFv+Uqjocb19wasMWJ611q/8mwulrMgSS9Ol2AaQ5vp4ar+R/ZlkmAYrGgg==} + peerDependencies: + react: '*' dependencies: - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/focusable': 1.94.0(react@18.2.0) - '@tamagui/get-token': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/label': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/roving-focus': 1.94.0(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) - '@tamagui/use-previous': 1.94.0 + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/focusable': 1.96.0(react@18.2.0) + '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/label': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/roving-focus': 1.96.0(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) + '@tamagui/use-previous': 1.96.0 react: 18.2.0 transitivePeerDependencies: - react-native + dev: false - '@tamagui/react-native-media-driver@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))': + /@tamagui/react-native-media-driver@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-JMquShKznupr69W3fCC0/xEZvYurQtA6V7DqJ5bfZ5o/bP2CFIWjCeYldQcESqLj+vxs0bXADzO+WeaOVYaisw==} + peerDependencies: + react-native: '*' dependencies: - '@tamagui/web': 1.94.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + transitivePeerDependencies: + - react + dev: false + + /@tamagui/react-native-use-pressable@1.94.0(react@18.2.0): + resolution: {integrity: sha512-t4jIdBjvoYo8yCF6ja2ggO2jkKznUE6PfZ8sWWhi92Kph9s4zdFEhnYSx1/VCY3GQ5mnWBa8cftrCKFFWkdM5g==} + peerDependencies: + react: '*' + dependencies: + react: 18.2.0 + dev: false + + /@tamagui/react-native-use-pressable@1.96.0(react@18.2.0): + resolution: {integrity: sha512-qM3/GjH1+QdaXPMFnO1bRR0PqSLlpoolg13vR9VkLJQ4FIzxP0HJJOAU0T94u/oVgpgwOWbRR27QR72ee3zTrg==} + peerDependencies: + react: '*' + dependencies: + react: 18.2.0 + dev: false - '@tamagui/react-native-use-pressable@1.94.0(react@18.2.0)': + /@tamagui/react-native-use-responder-events@1.94.0(react@18.2.0): + resolution: {integrity: sha512-G6jsichSB3X5ycqxl++jcPbok7bofXmmFYgLH5Rgleo9k7U2NTlWRzkfNAowJ9hLy6doL9Hky5IN/3Kwtpj3vg==} + peerDependencies: + react: '*' dependencies: react: 18.2.0 + dev: false - '@tamagui/react-native-use-responder-events@1.94.0(react@18.2.0)': + /@tamagui/react-native-use-responder-events@1.96.0(react@18.2.0): + resolution: {integrity: sha512-qwVseY70+MJ8WmM/Wy6sZjjBsDRCFsrrlguTF9feCKnKmLy2Ja21CokHDJUdK6LZmNxvEpNRPQJLE/mGC4FQ4g==} + peerDependencies: + react: '*' dependencies: react: 18.2.0 + dev: false - '@tamagui/remove-scroll@1.94.0(@types/react@18.2.52)(react@18.2.0)': + /@tamagui/remove-scroll@1.96.0(@types/react@18.3.1)(react@18.2.0): + resolution: {integrity: sha512-F/bvOsjxAf6mx06xqapxBfXLnx1+Mh82wEuYz+KOJcVCGatCrveK5h+2LE7pBD3u4Ed9SL+YfDOoDq64EgFFeg==} + peerDependencies: + react: '*' dependencies: react: 18.2.0 - react-remove-scroll: 2.5.5(@types/react@18.2.52)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.3.1)(react@18.2.0) transitivePeerDependencies: - '@types/react' + dev: false - '@tamagui/roving-focus@1.94.0(react@18.2.0)': + /@tamagui/roving-focus@1.96.0(react@18.2.0): + resolution: {integrity: sha512-8XGjfY8j5bvkaoeXIWA/4VcrPZO/IiPFBb0YwSB7b82jRIORvD/ZpDNyxrSZoD1iQUiNh07KkmC4sGWKEPdkwQ==} + peerDependencies: + react: '*' dependencies: - '@tamagui/collection': 1.94.0(react@18.2.0) - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) - '@tamagui/use-direction': 1.94.0(react@18.2.0) - '@tamagui/use-event': 1.94.0(react@18.2.0) + '@tamagui/collection': 1.96.0(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) + '@tamagui/use-direction': 1.96.0(react@18.2.0) + '@tamagui/use-event': 1.96.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/scroll-view@1.94.0(react@18.2.0)': + /@tamagui/scroll-view@1.96.0(react@18.2.0): + resolution: {integrity: sha512-sJep14aabpAm0na59iuZxf8T0/bbrZkv5FgSWNubnCyqKQ7UoJniqk+lfJSgSjzzFMe/jXS8wBWTaGZzAEoqLA==} + peerDependencies: + react: '*' dependencies: - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/web': 1.94.0 + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/select@1.94.0(@types/react@18.2.52)(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/select@1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-VAUaKfoH/zufiGpL0b1673NKY4P9VWOsRWcRmILOpSd4dpfcf8VL4qt3xuaIoRFn65Yw7OgudXIeqjaI9BeNDg==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@floating-ui/react': 0.26.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@floating-ui/react-native': 0.10.4(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/adapt': 1.94.0(react@18.2.0) - '@tamagui/animate-presence': 1.94.0(react@18.2.0) - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/dismissable': 1.94.0(react@18.2.0) - '@tamagui/focus-scope': 1.94.0(react@18.2.0) - '@tamagui/get-token': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/list-item': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/portal': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/remove-scroll': 1.94.0(@types/react@18.2.52)(react@18.2.0) - '@tamagui/separator': 1.94.0(react@18.2.0) - '@tamagui/sheet': 1.94.0(@types/react@18.2.52)(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/text': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) - '@tamagui/use-debounce': 1.94.0(react@18.2.0) - '@tamagui/use-event': 1.94.0(react@18.2.0) - '@tamagui/use-previous': 1.94.0 + '@floating-ui/react': 0.26.13(react-dom@18.2.0)(react@18.2.0) + '@floating-ui/react-dom': 2.0.9(react-dom@18.2.0)(react@18.2.0) + '@floating-ui/react-native': 0.10.5(react-native@0.73.6)(react@18.2.0) + '@tamagui/adapt': 1.96.0(react@18.2.0) + '@tamagui/animate-presence': 1.96.0(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/dismissable': 1.96.0(react@18.2.0) + '@tamagui/focus-scope': 1.96.0(react@18.2.0) + '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/list-item': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/portal': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/remove-scroll': 1.96.0(@types/react@18.3.1)(react@18.2.0) + '@tamagui/separator': 1.96.0(react@18.2.0) + '@tamagui/sheet': 1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) + '@tamagui/use-debounce': 1.96.0(react@18.2.0) + '@tamagui/use-event': 1.96.0(react@18.2.0) + '@tamagui/use-previous': 1.96.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) transitivePeerDependencies: - '@types/react' + dev: false - '@tamagui/separator@1.94.0(react@18.2.0)': + /@tamagui/separator@1.96.0(react@18.2.0): + resolution: {integrity: sha512-FOzZ4ljvCnMps9rZM2fjm+rW9tOvmCn0NTdVU+i0OZFur8PPP+LEp9gSygSUpkYSgYCw+Pb0Yl2pf7e0XBxNOw==} + peerDependencies: + react: '*' dependencies: - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/shapes@1.94.0(react@18.2.0)': + /@tamagui/shapes@1.96.0(react@18.2.0): + resolution: {integrity: sha512-1k5veFASBqFWSuBZETTNdBcmLfbMkKIRQ8SfrxiLbE1a69vsg/qAZ57rbe+i2qzrT+y9/nXI0OqxvbuAHb3lAQ==} + peerDependencies: + react: '*' dependencies: - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/web': 1.94.0 + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/sheet@1.94.0(@types/react@18.2.52)(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/sheet@1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-B64SbRaQ8Mn/yvQ9YoRbm2keHVQuMzHR+4/FMhueQg3PP0t69LWdp9mvOBO8So08sbAg0Rh0xNuibrrLqmVQOQ==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@tamagui/animate-presence': 1.94.0(react@18.2.0) - '@tamagui/animations-react-native': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/portal': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/remove-scroll': 1.94.0(@types/react@18.2.52)(react@18.2.0) - '@tamagui/scroll-view': 1.94.0(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/use-constant': 1.94.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) - '@tamagui/use-keyboard-visible': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + '@tamagui/animate-presence': 1.96.0(react@18.2.0) + '@tamagui/animations-react-native': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/portal': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/remove-scroll': 1.96.0(@types/react@18.3.1)(react@18.2.0) + '@tamagui/scroll-view': 1.96.0(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/use-constant': 1.96.0(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) + '@tamagui/use-keyboard-visible': 1.96.0(react-native@0.73.6)(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) transitivePeerDependencies: - '@types/react' + dev: false - '@tamagui/shorthands@1.94.0': {} + /@tamagui/shorthands@1.96.0: + resolution: {integrity: sha512-ZkblCN7CONic1/M5nbntqMDe0t/KnVWIx94+x7RpBzX5WJmfRKn4GrD2mozWo7D11nPHg98X/zPrb2EaW7OYCA==} + dev: false + + /@tamagui/simple-hash@1.94.0: + resolution: {integrity: sha512-r3YeMhrDHo9vcKxgh0KXtWsRaZ2w57MngsL030tH1//pBtu8TcEZRZVbWBrgSsSUFiVBqob7ZEwSBvjnkKxdBQ==} + dev: false - '@tamagui/simple-hash@1.94.0': {} + /@tamagui/simple-hash@1.96.0: + resolution: {integrity: sha512-NsVkfw+W05SWGQOJO/L7NuqERewzUeMjX+GKadH+gZqE5WG/SjY7x7fVH1i9JCbpkT+816xXh3YYcx3kfjFaDQ==} + dev: false - '@tamagui/slider@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/slider@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-QwBQwrOWDBPj3D621odjS2mXwOr1KvnRWVWeGCdwGr9x7fP/yut7s8kckGxGzNtsRB5syh3klPneDoptykSOlw==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/get-token': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) - '@tamagui/use-direction': 1.94.0(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) + '@tamagui/use-direction': 1.96.0(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@tamagui/stacks@1.94.0(react@18.2.0)': + /@tamagui/stacks@1.94.0(react@18.2.0): + resolution: {integrity: sha512-oH1P+IUtreKQloVM9aCE9tY9OXjXMdABg0dxFYnkJSZSia025DaOfUzqH0fQJXmDrqOO6+rYWgo3vEnngeLTlg==} + peerDependencies: + react: '*' dependencies: '@tamagui/core': 1.94.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/static@1.94.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.4.3)': + /@tamagui/stacks@1.96.0(react@18.2.0): + resolution: {integrity: sha512-IjYg9mTDXJeVax9e/RYu1KpC4sjhmpcHpDzlVvfMo9IW8+8ro4o24pLTadlSKYcHPXAemqBKzK558VlJLRy/tw==} + peerDependencies: + react: '*' dependencies: - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/parser': 7.24.0 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) - '@babel/runtime': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.24.0 - '@tamagui/build': 1.94.0(typescript@5.4.3) - '@tamagui/cli-color': 1.94.0 - '@tamagui/config-default': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/fake-react-native': 1.94.0 - '@tamagui/generate-themes': 1.94.0(esbuild@0.20.2) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/helpers-node': 1.94.0 - '@tamagui/proxy-worm': 1.94.0 - '@tamagui/shorthands': 1.94.0 - '@tamagui/types': 1.94.0 - babel-literal-to-ast: 2.1.0(@babel/core@7.23.9) - browserslist: 4.22.3 + '@tamagui/core': 1.96.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@tamagui/static@1.96.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5): + resolution: {integrity: sha512-AINf+ydj7Krbj+EvyTgadzpGK1DMmWvE+vdmXeKvPKwWlH56MqVWSWjcr4uajU0zY1HvbjHNJmj3/p+kyfAtag==} + dependencies: + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/helper-plugin-utils': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) + '@babel/runtime': 7.24.5 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + '@tamagui/build': 1.96.0(typescript@5.4.5) + '@tamagui/cli-color': 1.96.0 + '@tamagui/config-default': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/fake-react-native': 1.96.0 + '@tamagui/generate-themes': 1.96.0(esbuild@0.20.2)(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/helpers-node': 1.96.0 + '@tamagui/proxy-worm': 1.96.0 + '@tamagui/shorthands': 1.96.0 + '@tamagui/types': 1.96.0 + babel-literal-to-ast: 2.1.0(@babel/core@7.24.5) + browserslist: 4.23.0 check-dependency-version-consistency: 4.1.0 esbuild: 0.20.2 esbuild-register: 3.5.0(esbuild@0.20.2) @@ -10176,92 +4966,147 @@ snapshots: fs-extra: 11.2.0 invariant: 2.2.4 lodash: 4.17.21 - react-native-web: 0.19.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-native-web-internals: 1.94.0 - react-native-web-lite: 1.94.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-native-web: 0.19.11(react-dom@18.2.0)(react@18.2.0) + react-native-web-internals: 1.96.0 + react-native-web-lite: 1.96.0(react-dom@18.2.0)(react@18.2.0) transitivePeerDependencies: - encoding - react - react-dom - supports-color - typescript + dev: false - '@tamagui/switch-headless@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/switch-headless@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-Lii2+DBjw6Deq2QDwoL/DtoeG2fIyU3BTWTbtO/GU9k0FM8PtB1dhxnLcCGXWnpSvoshzKkWYqVFvrrvPrKFxQ==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/label': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/use-previous': 1.94.0 + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/label': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/use-previous': 1.96.0 react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@tamagui/switch@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/switch@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-S7fobE4u9L5tDqfKDIX0AwXDJa/tqf8lX8140efP13wY3jxTqW5McVpwBpRCuYlepTckUUiJB/dcb+Eo18mBIA==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/focusable': 1.94.0(react@18.2.0) - '@tamagui/get-token': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/label': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/switch-headless': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) - '@tamagui/use-previous': 1.94.0 + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/focusable': 1.96.0(react@18.2.0) + '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/label': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/switch-headless': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) + '@tamagui/use-previous': 1.96.0 react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@tamagui/tabs@1.94.0(@types/react@18.2.52)(immer@10.0.3)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/tabs@1.96.0(@types/react@18.3.1)(immer@10.1.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-ck2ChWddjcB+onUGMn34r8vJ5vVxO5OEcg1TQIjW3zTi5dnjzPsRg/8ZVJIU04pYm9IT3S330s67EJGmOwxVsA==} + peerDependencies: + react: '*' + react-dom: '*' dependencies: - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/get-button-sized': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/group': 1.94.0(@types/react@18.2.52)(immer@10.0.3)(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/roving-focus': 1.94.0(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) - '@tamagui/use-direction': 1.94.0(react@18.2.0) - '@tamagui/web': 1.94.0 + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/get-button-sized': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/group': 1.96.0(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/roving-focus': 1.96.0(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) + '@tamagui/use-direction': 1.96.0(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer - react-native + dev: false - '@tamagui/text@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/text@1.94.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-CGkjuwSHl+PF3HoZ/LDQfQH+NuzX2FN4AQzUFxoCZuf34Jafmbi31P1pbE2lY1+LdGE/joRBeZ3GwkJJU16M9A==} + peerDependencies: + react: '*' dependencies: '@tamagui/get-font-sized': 1.94.0(react@18.2.0) - '@tamagui/helpers-tamagui': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + '@tamagui/helpers-tamagui': 1.94.0(react-native@0.73.6)(react@18.2.0) '@tamagui/web': 1.94.0 react: 18.2.0 transitivePeerDependencies: - react-native + dev: false + + /@tamagui/text@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-ozeXGcFmC1fFPiyd+bYYMGX4GwouwjlUp82nnsTn7rVMcvsRCWjKr3MsISBYqzmCvBwhee40nL4IwHqmzQM+yA==} + peerDependencies: + react: '*' + dependencies: + '@tamagui/get-font-sized': 1.96.0(react@18.2.0) + '@tamagui/helpers-tamagui': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) + react: 18.2.0 + transitivePeerDependencies: + - react-native + dev: false - '@tamagui/theme-builder@1.94.0': + /@tamagui/theme-builder@1.96.0(react@18.2.0): + resolution: {integrity: sha512-HEDotYmVvYlfQwJJ919HOO0xHEzZci6qFLvZlM8vp4rIVTdOz7S1DLgu6mAubBbBK76hKzkUAjDL7kAOKVYFXQ==} dependencies: - '@tamagui/create-theme': 1.94.0 + '@tamagui/create-theme': 1.96.0(react@18.2.0) color2k: 2.0.3 + transitivePeerDependencies: + - react + dev: false - '@tamagui/theme@1.94.0(react@18.2.0)': + /@tamagui/theme@1.96.0(react@18.2.0): + resolution: {integrity: sha512-e0sAKBNcLdJy/CBJeCpyd5QpJ3xNI/X9sWqVOTof0NvoKuLaLyGHChxcXi/QKQ8Yl4nFExYl/7ksgzCZFfHJcQ==} + peerDependencies: + react: '*' dependencies: - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/web': 1.94.0 + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/themes@1.94.0': + /@tamagui/themes@1.96.0(react@18.2.0): + resolution: {integrity: sha512-P0QCZQW4+E51noC7jf3BBrIewrIxlYZa69Xx5aiSoRZC4XhATOTStCXn/LoAO0VazA9IcQLgVxQdz4by9+G3Pg==} dependencies: - '@tamagui/colors': 1.94.0 - '@tamagui/create-theme': 1.94.0 - '@tamagui/theme-builder': 1.94.0 - '@tamagui/web': 1.94.0 + '@tamagui/colors': 1.96.0 + '@tamagui/create-theme': 1.96.0(react@18.2.0) + '@tamagui/theme-builder': 1.96.0(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) + transitivePeerDependencies: + - react + dev: false + + /@tamagui/timer@1.94.0: + resolution: {integrity: sha512-YNmripupVw06ZPccuuEBBEvWhZFHasZ0G2fYM4Pu4jWlUFt+ZhlRRs3BOZsANHH8xVSqE+KKTL0XSfcBbJMPnw==} + dev: false - '@tamagui/timer@1.94.0': {} + /@tamagui/timer@1.96.0: + resolution: {integrity: sha512-5Xrz+XNxEWYZu7obRryQHWPvrPpi3H3W513wUztmOhLO/KZ+G3X+POnGvwFPDPvpoJcDsRM+nvHZ6mMGgy5GbA==} + dev: false - '@tamagui/toast@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/toast@1.94.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-4+0bw+NzvlXRAK19BUy6AIxsVXW7pXmNxDszZPu5Jax1gEunNgTzhLaSeBkFq9oIJNuer9i8E4m3I9P5XBV7tw==} + peerDependencies: + react: '*' + react-native: '*' dependencies: '@tamagui/animate-presence': 1.94.0(react@18.2.0) '@tamagui/compose-refs': 1.94.0(react@18.2.0) @@ -10271,119 +5116,259 @@ snapshots: '@tamagui/dismissable': 1.94.0(react@18.2.0) '@tamagui/helpers': 1.94.0(react@18.2.0) '@tamagui/polyfill-dev': 1.94.0 - '@tamagui/portal': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + '@tamagui/portal': 1.94.0(react-native@0.73.6)(react@18.2.0) '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/text': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + '@tamagui/text': 1.94.0(react-native@0.73.6)(react@18.2.0) '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) '@tamagui/visually-hidden': 1.94.0(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@tamagui/toggle-group@1.94.0(@types/react@18.2.52)(immer@10.0.3)(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/toggle-group@1.96.0(@types/react@18.3.1)(immer@10.1.1)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-Rl5sXj/Nq1bsf82B7id1MHm1IkynkCgsllAjg0ACLLkYwaJkusXmPFfmlK8hVGaFMDl1Wy5H4lJMgW0DoX1lYA==} + peerDependencies: + react: '*' dependencies: - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/focusable': 1.94.0(react@18.2.0) - '@tamagui/font-size': 1.94.0(react@18.2.0) - '@tamagui/get-token': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/group': 1.94.0(@types/react@18.2.52)(immer@10.0.3)(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/helpers-tamagui': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/roving-focus': 1.94.0(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) - '@tamagui/use-direction': 1.94.0(react@18.2.0) - '@tamagui/web': 1.94.0 + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/focusable': 1.96.0(react@18.2.0) + '@tamagui/font-size': 1.96.0(react@18.2.0) + '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/group': 1.96.0(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/helpers-tamagui': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/roving-focus': 1.96.0(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) + '@tamagui/use-direction': 1.96.0(react@18.2.0) + '@tamagui/web': 1.96.0(react@18.2.0) react: 18.2.0 transitivePeerDependencies: - '@types/react' - immer - react-native + dev: false - '@tamagui/tooltip@1.94.0(@types/react@18.2.52)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/tooltip@1.96.0(@types/react@18.3.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-R41EUZ5rp6gXDKEtM8i2UG7tywBdhorhBmqvC9053G1cXtfszflLX9mK2bxG5nnlL7JFFQpjjvUCWDOgCvq+xg==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@floating-ui/react': 0.26.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/floating': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/get-token': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/polyfill-dev': 1.94.0 - '@tamagui/popover': 1.94.0(@types/react@18.2.52)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/popper': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/text': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) + '@floating-ui/react': 0.26.13(react-dom@18.2.0)(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/floating': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/polyfill-dev': 1.96.0 + '@tamagui/popover': 1.96.0(@types/react@18.3.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) + '@tamagui/popper': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) transitivePeerDependencies: - '@types/react' - react-dom + dev: false + + /@tamagui/types@1.94.0: + resolution: {integrity: sha512-xPkJqf9EVtcUkiw9+08PKkanl/fNY+PFgskcqn7LkmgrG28ekueEnVBV8t5EXvByaK7oo5r+zyAPXjgb18gJHQ==} + dev: false + + /@tamagui/types@1.96.0: + resolution: {integrity: sha512-8w6vu7SAVSOK2cXpn0KVi/iVfRQzcA5sO7I5x+E9RTCF/YFkxbciT9XRsgWO8ERPMbu1zUIfetJkNsvCPO+qFQ==} + dev: false + + /@tamagui/use-callback-ref@1.94.0: + resolution: {integrity: sha512-R++Xk2K9zWGPHdJV0T4mbrKVG3bNmCZleIlWyEIwAkzhXiDVD0vMFRyToAv6mJWbCcqe+2YVOUmoVFmGfS/QEA==} + dev: false - '@tamagui/types@1.94.0': {} + /@tamagui/use-callback-ref@1.96.0: + resolution: {integrity: sha512-+kgcom6W6ejtZYXG8ENlSsBoHJECbLLx928eX3je8JpNRUzwKD+zifddnqcTa8+/ICWNvJG7mOBIrM8pT1Psng==} + dev: false - '@tamagui/use-callback-ref@1.94.0': {} + /@tamagui/use-constant@1.94.0(react@18.2.0): + resolution: {integrity: sha512-Ufd4GbyKljLtwG6y1j8oufAuM+wjeGHmCSC690IGrZY/yREYG/6DoSZaTt3ToDfo7P5HG/6SSLd0IwcMg1h8ig==} + peerDependencies: + react: '*' + dependencies: + react: 18.2.0 + dev: false - '@tamagui/use-constant@1.94.0(react@18.2.0)': + /@tamagui/use-constant@1.96.0(react@18.2.0): + resolution: {integrity: sha512-RMSPratnwiRCGekDqGvkEa3UhAhBNWFrjhzjO7yQCv3dijgWVoyD7FNVOTG46DP3haGiZokVFWcT8G3u/PJ7CQ==} + peerDependencies: + react: '*' dependencies: react: 18.2.0 + dev: false - '@tamagui/use-controllable-state@1.94.0(react@18.2.0)': + /@tamagui/use-controllable-state@1.94.0(react@18.2.0): + resolution: {integrity: sha512-DnTbjx1zfJMyzWzZ8mnWdbe3bRTyIBkFFEZXYiFEDDEbaOREKO2wDZRrA8jsvR+AYixAHWpIREPfk75X0lXy9A==} + peerDependencies: + react: '*' dependencies: '@tamagui/use-event': 1.94.0(react@18.2.0) react: 18.2.0 + dev: false + + /@tamagui/use-controllable-state@1.96.0(react@18.2.0): + resolution: {integrity: sha512-NpGKc4wz2oG0ez9G0W/IrG1OtKBfR4Pcg000WJADSw/Hc2L7mDLIBA3F8RNm3mZM0YEkUzAdXINQvQfx7A9uxA==} + peerDependencies: + react: '*' + dependencies: + '@tamagui/use-event': 1.96.0(react@18.2.0) + react: 18.2.0 + dev: false - '@tamagui/use-debounce@1.94.0(react@18.2.0)': + /@tamagui/use-debounce@1.96.0(react@18.2.0): + resolution: {integrity: sha512-+4zlOG++Hkq/eGD/Dqb+roSxUGEghieDBijdEdclWHQ8wpXQagzI7N9EsBIELmyaC55gCLCv8d9/85etXD8flA==} + peerDependencies: + react: '*' dependencies: react: 18.2.0 + dev: false - '@tamagui/use-did-finish-ssr@1.94.0(react@18.2.0)': + /@tamagui/use-did-finish-ssr@1.94.0(react@18.2.0): + resolution: {integrity: sha512-QX3i5nN4FulFXlrN3S792B2r67fz0GkOu7rkqDJj3hDmJTFFK2BMMDR0TS2zeZI1Lhf3NRW4V5QvadTZ05uRaQ==} + peerDependencies: + react: '*' dependencies: '@tamagui/constants': 1.94.0(react@18.2.0) react: 18.2.0 + dev: false - '@tamagui/use-direction@1.94.0(react@18.2.0)': + /@tamagui/use-did-finish-ssr@1.96.0(react@18.2.0): + resolution: {integrity: sha512-ba/ujEXJYtdaWoNIJGzdBDZQpwuy4GH1hvxbTIAhYtlAXJUa0YCGE33+YRj3eSGsHDab0IS5NBCoL+cP0DmWjA==} + peerDependencies: + react: '*' + dependencies: + '@tamagui/constants': 1.96.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@tamagui/use-direction@1.96.0(react@18.2.0): + resolution: {integrity: sha512-euvD9DrZu6EIQ7Vo1WQV6DjIpYCKAX/p5hT9c46Pf8wk81brRdiVe/ns+iuzMHk7Zi3Vtj3dmVuaqD+dUqYxUg==} + peerDependencies: + react: '*' dependencies: react: 18.2.0 + dev: false - '@tamagui/use-escape-keydown@1.94.0': + /@tamagui/use-escape-keydown@1.94.0: + resolution: {integrity: sha512-Oqmhh8kb3UcUlSZvMB7B1MGiHah5zfeCQYO6KyxfStQcIvScChCYOsjNsBRdnElB4l679pelS5TKrjsnG8s8/Q==} dependencies: '@tamagui/use-callback-ref': 1.94.0 + dev: false - '@tamagui/use-event@1.94.0(react@18.2.0)': + /@tamagui/use-escape-keydown@1.96.0: + resolution: {integrity: sha512-feTsUAlQRSkPAh5LfJyYjMS5t898w2HB1TZt1aHq7BSdNFex+RZg9e1YOfwmOwXj6C6rawnrEsUcimeZaJi6ow==} + dependencies: + '@tamagui/use-callback-ref': 1.96.0 + dev: false + + /@tamagui/use-event@1.94.0(react@18.2.0): + resolution: {integrity: sha512-1oXVBHksOtGnk1znzunVTUywGYCjTnOoMbwgxB2qyXJOiKeMKULb1h3oNIJ3sliA0Vf4W6CdG3nX16RqrikvSw==} + peerDependencies: + react: '*' dependencies: '@tamagui/constants': 1.94.0(react@18.2.0) react: 18.2.0 + dev: false + + /@tamagui/use-event@1.96.0(react@18.2.0): + resolution: {integrity: sha512-kSx46K02x6WF+BYvsteJMuP5HNsraCXm+mf31Qb8efXvQYOxdL/UdebNDIPbRL9RKRcH/MUTqQH8kLIrRLwaLA==} + peerDependencies: + react: '*' + dependencies: + '@tamagui/constants': 1.96.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@tamagui/use-force-update@1.94.0(react@18.2.0): + resolution: {integrity: sha512-8sYdNDssnKJhZ/2UTVpO9364Ml4HAMXz8rajKo88r3Y6IU8qGJ9VK9fFYre6X5mWcBewHK9FS7lk/ivpk65QhA==} + peerDependencies: + react: '*' + dependencies: + react: 18.2.0 + dev: false - '@tamagui/use-force-update@1.94.0(react@18.2.0)': + /@tamagui/use-force-update@1.96.0(react@18.2.0): + resolution: {integrity: sha512-0CbD2DytTxF6QRP05HKMS5/ns/E9AYfHo7qxxpy9/kiMluR3I+fRx3L/c0XjhwXAiDcM36XJ0lLqw+zAROQc4Q==} + peerDependencies: + react: '*' dependencies: react: 18.2.0 + dev: false - '@tamagui/use-keyboard-visible@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/use-keyboard-visible@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-HTRElPlBu/oacj7YUQfKePPhRWpn9ha4EVuPu0OCvYg2l5UL/Pl0Nilu19xSYwYLEi9eoEE0PuHvJ8iPh5HfWA==} + peerDependencies: + react: '*' + react-native: '*' dependencies: react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@tamagui/use-presence@1.94.0(react@18.2.0)': + /@tamagui/use-presence@1.94.0(react@18.2.0): + resolution: {integrity: sha512-kGrysrGYYm4teL+P3tFHopvb2Q8cYqSpsbBZ0WZgadS3Ne6UaMzhjyPXz3ASOVGWiSTLJtrkmW9rPfywELzUPg==} + peerDependencies: + react: '*' dependencies: '@tamagui/web': 1.94.0 react: 18.2.0 + dev: false - '@tamagui/use-previous@1.94.0': {} + /@tamagui/use-presence@1.96.0(react@18.2.0): + resolution: {integrity: sha512-pIOLsBMtD7a5Z06LJ9eDY79yJ++b05qQxErl96W87kydKKGdixsVW71f1kSm9YzRJlVMEZi8kc13607enk4eBg==} + peerDependencies: + react: '*' + dependencies: + '@tamagui/web': 1.96.0(react@18.2.0) + react: 18.2.0 + dev: false - '@tamagui/use-window-dimensions@1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)': + /@tamagui/use-previous@1.96.0: + resolution: {integrity: sha512-Lhg/CpotHvQvpf4D5jkwse+kRmR115gHtYI+V9EBmb1OKiIkK5HRfIWueykL2ptX3Y0TBvzr20Q+xo28IiHSdg==} + dev: false + + /@tamagui/use-window-dimensions@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-s53fmTw7YNQ1eXbzcll6PkN+20Y3SSZN8ggoQNdz06iU4zb5g3tLSZyuDj4J+v7B3DDe2Pr8fqdQ27xSBmb4Nw==} + peerDependencies: + react: '*' + react-native: '*' dependencies: - '@tamagui/constants': 1.94.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - '@tamagui/visually-hidden@1.94.0(react@18.2.0)': + /@tamagui/visually-hidden@1.94.0(react@18.2.0): + resolution: {integrity: sha512-YmmNOfiJTkCx4EE25RyHBxDuDSiVyShBBNNtPSgZRs3zqjY7NT/UZyseGk/g+aYbW5L27stYa5aNNRFLKqSwlQ==} + peerDependencies: + react: '*' dependencies: '@tamagui/web': 1.94.0 react: 18.2.0 + dev: false + + /@tamagui/visually-hidden@1.96.0(react@18.2.0): + resolution: {integrity: sha512-m2z/3WwXYslfHiU/szqieo0d6pmiD4G4xgOlNAYfHkN7lDlRQIIe4e1qopvgoEAdAHr1FDVUx0G7WhT4qCrzIg==} + peerDependencies: + react: '*' + dependencies: + '@tamagui/web': 1.96.0(react@18.2.0) + react: 18.2.0 + dev: false - '@tamagui/web@1.94.0': + /@tamagui/web@1.94.0: + resolution: {integrity: sha512-Mwv/JLks46FoXncv2h6RI4AUYdEXJlnOZog450ZwDEgn13JQJLS8VEZsAgVOK5sc4zt/WzeS7pEvquS9DEridg==} dependencies: '@tamagui/compose-refs': 1.94.0(react@18.2.0) '@tamagui/constants': 1.94.0(react@18.2.0) @@ -10396,43 +5381,83 @@ snapshots: '@tamagui/use-force-update': 1.94.0(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false + + /@tamagui/web@1.96.0(react@18.2.0): + resolution: {integrity: sha512-qFdfrXs2LbPU9lnBHjOfxziVDqvwX3YtVPPidEYOrmBB112GaiaGjLA5MpgM+CJpYMoFpu+MOxzW73/7ouqMCw==} + peerDependencies: + react: '*' + dependencies: + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/normalize-css-color': 1.96.0 + '@tamagui/timer': 1.96.0 + '@tamagui/types': 1.96.0 + '@tamagui/use-did-finish-ssr': 1.96.0(react@18.2.0) + '@tamagui/use-event': 1.96.0(react@18.2.0) + '@tamagui/use-force-update': 1.96.0(react@18.2.0) + react: 18.2.0 + dev: false - '@tanstack/eslint-plugin-query@5.20.1(eslint@8.56.0)(typescript@5.4.3)': + /@tanstack/eslint-plugin-query@5.32.1(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-hlvKBV0JncpoA2HThfiD6OH8pdtn2N7WR74nWmDEuBEV1HMwXDo1QF/h/oKRPheEjzokVI13D3p11Lfw2kQr+g==} + peerDependencies: + eslint: ^8.0.0 dependencies: - '@typescript-eslint/utils': 6.20.0(eslint@8.56.0)(typescript@5.4.3) - eslint: 8.56.0 + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + eslint: 8.57.0 transitivePeerDependencies: - supports-color - typescript + dev: true - '@tanstack/query-core@5.22.2': {} + /@tanstack/query-core@5.32.1: + resolution: {integrity: sha512-mCWa1wdGb1jiny4+qYegbSeadcFj+Nq65KFSs4A1DRveoIq7SrTwUhqu7hrB6d54cQH5x59DfJvxusn3w1Cj/g==} + dev: false - '@tanstack/react-query@5.22.2(react@18.2.0)': + /@tanstack/react-query@5.32.1(react@18.2.0): + resolution: {integrity: sha512-+nXLMB0JK0XwTJ+lQt49DPNLrbSppni9N5W5yMR085yW3YaRKRUFhfVTER3TvQd1UycHpoGPFnt1gHiijXERAg==} + peerDependencies: + react: ^18.0.0 dependencies: - '@tanstack/query-core': 5.22.2 + '@tanstack/query-core': 5.32.1 react: 18.2.0 + dev: false - '@tootallnate/quickjs-emscripten@0.23.0': {} + /@tootallnate/quickjs-emscripten@0.23.0: + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + dev: true - '@tsconfig/node10@1.0.9': {} + /@tsconfig/node10@1.0.11: + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + dev: true - '@tsconfig/node12@1.0.11': {} + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true - '@tsconfig/node14@1.0.3': {} + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true - '@tsconfig/node16@1.0.4': {} + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true - '@turbo/gen@1.12.2(@swc/core@1.4.8(@swc/helpers@0.5.6))(@types/node@20.12.7)(typescript@5.4.3)': + /@turbo/gen@1.13.3(@types/node@20.12.8)(typescript@5.4.5): + resolution: {integrity: sha512-l+EM1gGzckFMaaVQyj3BVRa0QJ+tpp8HfiHOhGpBWW3Vc0Hfj92AY87Di/7HGABa+HVY7ueatMi7DJG+zkJBYg==} + hasBin: true dependencies: - '@turbo/workspaces': 1.12.2 + '@turbo/workspaces': 1.13.3 chalk: 2.4.2 commander: 10.0.1 fs-extra: 10.1.0 inquirer: 8.2.6 - minimatch: 9.0.3 + minimatch: 9.0.4 node-plop: 0.26.3 - proxy-agent: 6.3.1 - ts-node: 10.9.2(@swc/core@1.4.8(@swc/helpers@0.5.6))(@types/node@20.12.7)(typescript@5.4.3) + proxy-agent: 6.4.0 + ts-node: 10.9.2(@types/node@20.12.8)(typescript@5.4.5) update-check: 1.5.4 validate-npm-package-name: 5.0.0 transitivePeerDependencies: @@ -10441,8 +5466,11 @@ snapshots: - '@types/node' - supports-color - typescript + dev: true - '@turbo/workspaces@1.12.2': + /@turbo/workspaces@1.13.3: + resolution: {integrity: sha512-QYZ8g3IVQebqNM8IsBlWYOWmOKjBZY55e6lx4EDOLuch1iWmyk+U8CLAI9UomMrSaKTs1Sx+PDkt63EgakvhUw==} + hasBin: true dependencies: chalk: 2.4.2 commander: 10.0.1 @@ -10454,622 +5482,964 @@ snapshots: js-yaml: 4.1.0 ora: 4.1.1 rimraf: 3.0.2 - semver: 7.5.4 + semver: 7.6.0 update-check: 1.5.4 + dev: true - '@types/babel__core@7.20.5': + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.5 + dev: true - '@types/babel__generator@7.6.8': + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 + dev: true - '@types/babel__template@7.4.4': + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + dev: true - '@types/babel__traverse@7.20.5': + /@types/babel__traverse@7.20.5: + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.5 + dev: true - '@types/cookie@0.4.1': {} + /@types/cookie@0.4.1: + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + dev: false - '@types/eslint@8.56.2': + /@types/eslint@8.56.10: + resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 + dev: true - '@types/estree@1.0.5': {} + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true - '@types/fs-extra@9.0.13': + /@types/fs-extra@9.0.13: + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} dependencies: - '@types/node': 20.11.30 + '@types/node': 20.12.8 + dev: false - '@types/glob@7.2.0': + /@types/glob@7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.11.16 + '@types/node': 20.12.8 + dev: true - '@types/hammerjs@2.0.45': {} + /@types/hammerjs@2.0.45: + resolution: {integrity: sha512-qkcUlZmX6c4J8q45taBKTL3p+LbITgyx7qhlPYOdOHZB7B31K0mXbP5YA7i7SgDeEGuI9MnumiKPEMrxg8j3KQ==} + dev: false - '@types/inquirer@6.5.0': + /@types/inquirer@6.5.0: + resolution: {integrity: sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==} dependencies: '@types/through': 0.0.33 rxjs: 6.6.7 + dev: true - '@types/istanbul-lib-coverage@2.0.6': {} + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: false - '@types/istanbul-lib-report@3.0.3': + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} dependencies: '@types/istanbul-lib-coverage': 2.0.6 + dev: false - '@types/istanbul-reports@3.0.4': + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} dependencies: '@types/istanbul-lib-report': 3.0.3 + dev: false - '@types/js-yaml@4.0.9': {} - - '@types/json-schema@7.0.15': {} - - '@types/json5@0.0.29': {} - - '@types/minimatch@5.1.2': {} + /@types/js-yaml@4.0.9: + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + dev: false - '@types/node-forge@1.3.11': - dependencies: - '@types/node': 20.12.7 + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/node@17.0.45': {} + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: false - '@types/node@20.11.16': - dependencies: - undici-types: 5.26.5 + /@types/minimatch@5.1.2: + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + dev: true - '@types/node@20.11.24': + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - undici-types: 5.26.5 + '@types/node': 20.12.8 + dev: true - '@types/node@20.11.30': - dependencies: - undici-types: 5.26.5 + /@types/node@17.0.45: + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + dev: false - '@types/node@20.12.7': + /@types/node@20.12.8: + resolution: {integrity: sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==} dependencies: undici-types: 5.26.5 - '@types/prop-types@15.7.11': {} + /@types/prop-types@15.7.12: + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - '@types/react@18.2.52': + /@types/react@18.3.1: + resolution: {integrity: sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==} dependencies: - '@types/prop-types': 15.7.11 - '@types/scheduler': 0.16.8 + '@types/prop-types': 15.7.12 csstype: 3.1.3 - '@types/scheduler@0.16.8': {} - - '@types/semver@7.5.6': {} + /@types/semver@7.5.8: + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - '@types/stack-utils@2.0.3': {} + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + dev: false - '@types/through@0.0.33': + /@types/through@0.0.33: + resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.12.8 + dev: true - '@types/tinycolor2@1.4.6': {} + /@types/tinycolor2@1.4.6: + resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} + dev: true - '@types/yargs-parser@21.0.3': {} + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: false - '@types/yargs@15.0.19': + /@types/yargs@15.0.19: + resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} dependencies: '@types/yargs-parser': 21.0.3 + dev: false - '@types/yargs@17.0.32': + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} dependencies: '@types/yargs-parser': 21.0.3 + dev: false - '@typescript-eslint/eslint-plugin@6.20.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0)(typescript@5.4.3)': + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.4.3) - '@typescript-eslint/scope-manager': 6.20.0 - '@typescript-eslint/type-utils': 6.20.0(eslint@8.56.0)(typescript@5.4.3) - '@typescript-eslint/utils': 6.20.0(eslint@8.56.0)(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 6.20.0 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 - eslint: 8.56.0 + eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.4.3) - optionalDependencies: - typescript: 5.4.3 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color + dev: false - '@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.4.3)': + /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@typescript-eslint/scope-manager': 6.20.0 - '@typescript-eslint/types': 6.20.0 - '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.4.3) - '@typescript-eslint/visitor-keys': 6.20.0 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 - eslint: 8.56.0 - optionalDependencies: - typescript: 5.4.3 + eslint: 8.57.0 + typescript: 5.4.5 transitivePeerDependencies: - supports-color + dev: false - '@typescript-eslint/scope-manager@6.20.0': + /@typescript-eslint/scope-manager@6.21.0: + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.20.0 - '@typescript-eslint/visitor-keys': 6.20.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 - '@typescript-eslint/type-utils@6.20.0(eslint@8.56.0)(typescript@5.4.3)': + /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.4.3) - '@typescript-eslint/utils': 6.20.0(eslint@8.56.0)(typescript@5.4.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) debug: 4.3.4 - eslint: 8.56.0 - ts-api-utils: 1.0.3(typescript@5.4.3) - optionalDependencies: - typescript: 5.4.3 + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color + dev: false - '@typescript-eslint/types@6.20.0': {} + /@typescript-eslint/types@6.21.0: + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/typescript-estree@6.20.0(typescript@5.4.3)': + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@typescript-eslint/types': 6.20.0 - '@typescript-eslint/visitor-keys': 6.20.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.4.3) - optionalDependencies: - typescript: 5.4.3 + semver: 7.6.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@6.20.0(eslint@8.56.0)(typescript@5.4.3)': + /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.20.0 - '@typescript-eslint/types': 6.20.0 - '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.4.3) - eslint: 8.56.0 - semver: 7.5.4 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) + eslint: 8.57.0 + semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@6.20.0': + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.20.0 + '@typescript-eslint/types': 6.21.0 eslint-visitor-keys: 3.4.3 - '@ungap/structured-clone@1.2.0': {} + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@urql/core@2.3.6(graphql@15.8.0)': + /@urql/core@2.3.6(graphql@15.8.0): + resolution: {integrity: sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==} + peerDependencies: + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@15.8.0) graphql: 15.8.0 wonka: 4.0.15 + dev: false - '@urql/exchange-retry@0.3.0(graphql@15.8.0)': + /@urql/exchange-retry@0.3.0(graphql@15.8.0): + resolution: {integrity: sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==} + peerDependencies: + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 dependencies: '@urql/core': 2.3.6(graphql@15.8.0) graphql: 15.8.0 wonka: 4.0.15 + dev: false - '@web3-storage/multipart-parser@1.0.0': {} + /@web3-storage/multipart-parser@1.0.0: + resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==} + dev: false - '@xmldom/xmldom@0.7.13': {} + /@xmldom/xmldom@0.7.13: + resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==} + engines: {node: '>=10.0.0'} + dev: false - '@xmldom/xmldom@0.8.10': {} + /@xmldom/xmldom@0.8.10: + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} + dev: false - '@zxing/text-encoding@0.9.0': + /@zxing/text-encoding@0.9.0: + resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} + requiresBuild: true + dev: false optional: true - abort-controller@3.0.0: + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 + dev: false - accepts@1.3.8: + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} dependencies: mime-types: 2.1.35 negotiator: 0.6.3 + dev: false - acorn-jsx@5.3.2(acorn@8.11.3): + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.11.3 - acorn-walk@8.3.2: {} + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: true - acorn@8.11.3: {} + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true - agent-base@6.0.2: + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: false - agent-base@7.1.0: + /agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + engines: {node: '>= 14'} dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: true - aggregate-error@3.1.0: + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 - ajv-formats@2.1.1(ajv@8.12.0): - optionalDependencies: - ajv: 8.12.0 + /ajv-formats@2.1.1(ajv@8.13.0): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.13.0 + dev: false - ajv-keywords@5.1.0(ajv@8.12.0): + /ajv-keywords@5.1.0(ajv@8.13.0): + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 dependencies: - ajv: 8.12.0 + ajv: 8.13.0 fast-deep-equal: 3.1.3 + dev: false - ajv@6.12.6: + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.12.0: + /ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 + dev: false - anser@1.4.10: {} + /anser@1.4.10: + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + dev: false - ansi-escapes@4.3.2: + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.21.3 - ansi-fragments@0.2.1: + /ansi-fragments@0.2.1: + resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} dependencies: colorette: 1.4.0 slice-ansi: 2.1.0 strip-ansi: 5.2.0 + dev: false - ansi-regex@4.1.1: {} + /ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + dev: false - ansi-regex@5.0.1: {} + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} - ansi-regex@6.0.1: {} + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: false - ansi-styles@3.2.1: + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - ansi-styles@4.3.0: + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - ansi-styles@5.2.0: {} + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: false - ansi-styles@6.2.1: {} + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: false - any-promise@1.3.0: {} + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: false - anymatch@3.1.3: + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 + dev: false - appdirsjs@1.2.7: {} + /appdirsjs@1.2.7: + resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} + dev: false - application-config-path@0.1.1: {} + /application-config-path@0.1.1: + resolution: {integrity: sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==} + dev: false - arg@4.1.3: {} + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true - arg@5.0.2: {} + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: false - argparse@1.0.10: + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 + dev: false - argparse@2.0.1: {} + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-hidden@1.2.3: + /aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} dependencies: tslib: 2.6.2 + dev: false - aria-query@5.3.0: + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: dequal: 2.0.3 + dev: false - array-buffer-byte-length@1.0.0: + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-array-buffer: 3.0.4 + dev: false - array-includes@3.1.7: + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 is-string: 1.0.7 + dev: false + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} - array-union@2.1.0: {} + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + dev: false + + /array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + dev: false - array.prototype.findlastindex@1.2.3: + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.3 + dev: false - array.prototype.flat@1.3.2: + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 + dev: false - array.prototype.flatmap@1.3.2: + /array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 + dev: false - array.prototype.tosorted@1.1.2: + /array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.3 + dev: false - arraybuffer.prototype.slice@1.0.2: + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.3 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 + dev: false - asap@2.0.6: {} + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: false - asn1.js@5.4.1: + /asn1.js@4.10.1: + resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} dependencies: bn.js: 4.12.0 inherits: 2.0.4 minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 + dev: false - ast-types-flow@0.0.8: {} + /ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + dev: false - ast-types@0.13.4: + /ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} dependencies: tslib: 2.6.2 + dev: true - ast-types@0.15.2: + /ast-types@0.15.2: + resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} + engines: {node: '>=4'} dependencies: tslib: 2.6.2 + dev: false - astral-regex@1.0.0: {} - - astral-regex@2.0.0: {} + /astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + dev: false - async-limiter@1.0.1: {} + /astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: false - asynciterator.prototype@1.0.0: - dependencies: - has-symbols: 1.0.3 + /async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + dev: false - asynckit@0.4.0: {} + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false - at-least-node@1.0.0: {} + /at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: false - available-typed-arrays@1.0.6: {} + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 + dev: false - axe-core@4.7.0: {} + /axe-core@4.7.0: + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} + engines: {node: '>=4'} + dev: false - axobject-query@3.2.1: + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: dequal: 2.0.3 + dev: false - babel-core@7.0.0-bridge.0(@babel/core@7.23.9): + /babel-core@7.0.0-bridge.0(@babel/core@7.24.5): + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 + dev: false - babel-literal-to-ast@2.1.0(@babel/core@7.23.9): + /babel-literal-to-ast@2.1.0(@babel/core@7.24.5): + resolution: {integrity: sha512-CxfpQ0ysQ0bZOhlaPgcWjl79Em16Rhqc6++UAFn0A3duiXmuyhhj8yyl9PYbj0I0CyjrHovdDbp2QEKT7uIMxw==} + peerDependencies: + '@babel/core': ^7.1.2 dependencies: - '@babel/core': 7.23.9 - '@babel/parser': 7.24.0 - '@babel/traverse': 7.23.9 - '@babel/types': 7.24.0 + '@babel/core': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 transitivePeerDependencies: - supports-color + dev: false - babel-plugin-fully-specified@1.3.0(@babel/core@7.23.9): + /babel-plugin-fully-specified@1.3.0(@babel/core@7.24.5): + resolution: {integrity: sha512-STW+rXLxwCB839gmwBizuipaDBb/iGZ5Vg0bmfynYLyXRTWgofXDrePuW5VvBJq2x8yB6xvT+3J7Z0U79uQYNw==} + peerDependencies: + '@babel/core': '*' dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.5 + dev: false - babel-plugin-module-resolver@5.0.0: + /babel-plugin-module-resolver@5.0.2: + resolution: {integrity: sha512-9KtaCazHee2xc0ibfqsDeamwDps6FZNo5S0Q81dUqEuFzVwPhcT4J5jOqIVvgCA3Q/wO9hKYxN/Ds3tIsp5ygg==} dependencies: - find-babel-config: 2.0.0 - glob: 8.1.0 + find-babel-config: 2.1.1 + glob: 9.3.5 pkg-up: 3.1.0 reselect: 4.1.8 resolve: 1.22.8 + dev: true - babel-plugin-polyfill-corejs2@0.4.8(@babel/core@7.23.9): + /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.5): + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) + '@babel/compat-data': 7.24.4 + '@babel/core': 7.24.5 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.23.9): + /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.5): + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) - core-js-compat: 3.35.1 + '@babel/core': 7.24.5 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) + core-js-compat: 3.37.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.23.9): + /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.5): + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) transitivePeerDependencies: - supports-color - babel-plugin-react-native-web@0.18.12: {} + /babel-plugin-react-native-web@0.18.12: + resolution: {integrity: sha512-4djr9G6fMdwQoD6LQ7hOKAm39+y12flWgovAqS1k5O8f42YQ3A1FFMyV5kKfetZuGhZO5BmNmOdRRZQ1TixtDw==} + dev: false - babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: {} + /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: + resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} + dev: false - babel-plugin-tester@11.0.4(@babel/core@7.23.9): + /babel-plugin-tester@11.0.4(@babel/core@7.24.5): + resolution: {integrity: sha512-cqswtpSPo0e++rZB0l/54EG17LL25l9gLgh59yXfnmNxX+2lZTIOpx2zt4YI9QIClVXc8xf63J6yWwKkzy0jNg==} + engines: {node: ^14.20.0 || ^16.16.0 || >=18.5.0} + peerDependencies: + '@babel/core': '>=7.11.6' dependencies: - '@babel/core': 7.23.9 - core-js: 3.36.0 + '@babel/core': 7.24.5 + core-js: 3.37.0 debug: 4.3.4 lodash.mergewith: 4.6.2 prettier: 2.8.8 strip-indent: 3.0.0 transitivePeerDependencies: - supports-color + dev: false - babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.23.9): + /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.24.5): + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} dependencies: - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) transitivePeerDependencies: - '@babel/core' - - babel-preset-expo@10.0.1(@babel/core@7.23.9): - dependencies: - '@babel/plugin-proposal-decorators': 7.23.9(@babel/core@7.23.9) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - '@babel/preset-env': 7.23.9(@babel/core@7.23.9) - '@babel/preset-react': 7.23.3(@babel/core@7.23.9) - '@react-native/babel-preset': 0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)) + dev: false + + /babel-preset-expo@10.0.2(@babel/core@7.24.5): + resolution: {integrity: sha512-hg06qdSTK7MjKmFXSiq6cFoIbI3n3uT8a3NI2EZoISWhu+tedCj4DQduwi+3adFuRuYvAwECI0IYn/5iGh5zWQ==} + dependencies: + '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) + '@babel/preset-env': 7.24.5(@babel/core@7.24.5) + '@babel/preset-react': 7.24.1(@babel/core@7.24.5) + '@react-native/babel-preset': 0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5) babel-plugin-react-native-web: 0.18.12 react-refresh: 0.14.0 transitivePeerDependencies: - '@babel/core' - supports-color + dev: false - babel-preset-fbjs@3.4.0(@babel/core@7.23.9): - dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.9) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.9) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.9) + /babel-preset-fbjs@3.4.0(@babel/core@7.24.5): + resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.5 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.5) babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 + dev: false - balanced-match@1.0.2: {} + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - base-64@0.1.0: {} + /base-64@0.1.0: + resolution: {integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==} + dev: false - base64-js@1.5.1: {} + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - basic-ftp@5.0.4: {} + /basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + engines: {node: '>=10.0.0'} + dev: true - before-after-hook@2.2.3: {} + /before-after-hook@2.2.3: + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} + dev: false - better-opn@3.0.2: + /better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} dependencies: open: 8.4.2 + dev: false - big-integer@1.6.52: {} + /big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + dev: false - binary-extensions@2.2.0: {} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + dev: false - bl@4.1.0: + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - blueimp-md5@2.19.0: {} + /blueimp-md5@2.19.0: + resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} + dev: false - bn.js@4.12.0: {} + /bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: false - bn.js@5.2.1: {} + /bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + dev: false - boolbase@1.0.0: {} + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: false - bplist-creator@0.1.0: + /bplist-creator@0.1.0: + resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==} dependencies: stream-buffers: 2.2.0 + dev: false - bplist-parser@0.3.1: + /bplist-parser@0.3.1: + resolution: {integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==} + engines: {node: '>= 5.10.0'} dependencies: big-integer: 1.6.52 + dev: false - bplist-parser@0.3.2: + /bplist-parser@0.3.2: + resolution: {integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==} + engines: {node: '>= 5.10.0'} dependencies: big-integer: 1.6.52 + dev: false - brace-expansion@1.1.11: + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 - braces@3.0.2: + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - brorand@1.1.0: {} + /brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: false - browserify-aes@1.2.0: + /browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} dependencies: buffer-xor: 1.0.3 cipher-base: 1.0.4 @@ -11077,85 +6447,127 @@ snapshots: evp_bytestokey: 1.0.3 inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false - browserify-cipher@1.0.1: + /browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} dependencies: browserify-aes: 1.2.0 browserify-des: 1.0.2 evp_bytestokey: 1.0.3 + dev: false - browserify-des@1.0.2: + /browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} dependencies: cipher-base: 1.0.4 des.js: 1.1.0 inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false - browserify-rsa@4.1.0: + /browserify-rsa@4.1.0: + resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} dependencies: bn.js: 5.2.1 randombytes: 2.1.0 + dev: false - browserify-sign@4.2.2: + /browserify-sign@4.2.3: + resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==} + engines: {node: '>= 0.12'} dependencies: bn.js: 5.2.1 browserify-rsa: 4.1.0 create-hash: 1.2.0 create-hmac: 1.1.7 - elliptic: 6.5.4 + elliptic: 6.5.5 + hash-base: 3.0.4 inherits: 2.0.4 - parse-asn1: 5.1.6 - readable-stream: 3.6.2 + parse-asn1: 5.1.7 + readable-stream: 2.3.8 safe-buffer: 5.2.1 + dev: false - browserslist@4.22.3: + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true dependencies: - caniuse-lite: 1.0.30001583 - electron-to-chromium: 1.4.656 + caniuse-lite: 1.0.30001614 + electron-to-chromium: 1.4.752 node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.3) + update-browserslist-db: 1.0.14(browserslist@4.23.0) - bser@2.1.1: + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 + dev: false - buffer-alloc-unsafe@1.1.0: {} + /buffer-alloc-unsafe@1.1.0: + resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} + dev: false - buffer-alloc@1.2.0: + /buffer-alloc@1.2.0: + resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} dependencies: buffer-alloc-unsafe: 1.1.0 buffer-fill: 1.0.0 + dev: false - buffer-fill@1.0.0: {} + /buffer-fill@1.0.0: + resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} + dev: false - buffer-from@1.1.2: {} + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: false - buffer-xor@1.0.3: {} + /buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: false - buffer@5.7.1: + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - builtins@1.0.3: {} + /builtins@1.0.3: + resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} + dev: false - builtins@5.0.1: + /builtins@5.1.0: + resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} dependencies: - semver: 7.5.4 + semver: 7.6.0 + dev: true - burnt@0.12.2(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))))(react-dom@18.2.0(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0): + /burnt@0.12.2(expo@50.0.17)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-bbZjGN4Om7dykr8ZcLb0tTO5L2becMR+HIez1ySUGgG/rvK+ePgBEuBA6lMOZqOTsUXhIKFUBH0sCXQ25fq5SA==} + peerDependencies: + expo: '*' + react: '*' + react-native: '*' dependencies: - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) sf-symbols-typescript: 1.0.0 - sonner: 0.3.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + sonner: 0.3.5(react-dom@18.2.0)(react@18.2.0) transitivePeerDependencies: - react-dom + dev: false - bytes@3.0.0: {} + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: false - cacache@15.3.0: + /cacache@15.3.0: + resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} + engines: {node: '>= 10'} dependencies: '@npmcli/fs': 1.1.1 '@npmcli/move-file': 1.1.2 @@ -11173,63 +6585,105 @@ snapshots: promise-inflight: 1.0.1 rimraf: 3.0.2 ssri: 8.0.1 - tar: 6.2.0 + tar: 6.2.1 unique-filename: 1.1.1 transitivePeerDependencies: - bluebird + dev: false - call-bind@1.0.5: + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.3 - set-function-length: 1.2.0 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + dev: false - caller-callsite@2.0.0: + /caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} dependencies: callsites: 2.0.0 + dev: false - caller-path@2.0.0: + /caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} dependencies: caller-callsite: 2.0.0 + dev: false - callsites@2.0.0: {} + /callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + dev: false - callsites@3.1.0: {} + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} - camel-case@3.0.0: + /camel-case@3.0.0: + resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} dependencies: no-case: 2.3.2 upper-case: 1.1.3 + dev: true - camelcase-css@2.0.1: {} + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: false - camelcase@5.3.1: {} + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: false - camelcase@6.3.0: {} + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: false - camelize@1.0.1: {} + /camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + dev: false - caniuse-lite@1.0.30001583: {} + /caniuse-lite@1.0.30001614: + resolution: {integrity: sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==} - chalk@2.4.2: + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - chalk@3.0.0: + /chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: true - chalk@4.1.2: + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.3.0: {} + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: false - change-case@3.1.0: + /change-case@3.1.0: + resolution: {integrity: sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==} dependencies: camel-case: 3.0.0 constant-case: 2.0.0 @@ -11249,12 +6703,20 @@ snapshots: title-case: 2.1.1 upper-case: 1.1.3 upper-case-first: 1.1.2 + dev: true - chardet@0.7.0: {} + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true - charenc@0.0.2: {} + /charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + dev: false - check-dependency-version-consistency@4.1.0: + /check-dependency-version-consistency@4.1.0: + resolution: {integrity: sha512-xghkzKgMxpAfeP9OJfVrErtv8BU4h5kHYQyheHC0j0RYRVNWti0qI3+HkFgWBKejq2UE2wOnoWZlvDKFj6jFoA==} + engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} + hasBin: true dependencies: '@types/js-yaml': 4.0.9 chalk: 5.3.0 @@ -11262,11 +6724,13 @@ snapshots: edit-json-file: 1.8.0 globby: 13.2.2 js-yaml: 4.1.0 - semver: 7.5.4 - table: 6.8.1 + semver: 7.6.0 + table: 6.8.2 type-fest: 3.13.1 + dev: false - cheerio-select@2.1.0: + /cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} dependencies: boolbase: 1.0.0 css-select: 5.1.0 @@ -11274,8 +6738,11 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.1.0 + dev: false - cheerio@1.0.0-rc.12: + /cheerio@1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} + engines: {node: '>= 6'} dependencies: cheerio-select: 2.1.0 dom-serializer: 2.0.0 @@ -11284,8 +6751,11 @@ snapshots: htmlparser2: 8.0.2 parse5: 7.1.2 parse5-htmlparser2-tree-adapter: 7.0.0 + dev: false - chokidar@3.6.0: + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -11296,21 +6766,30 @@ snapshots: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 + dev: false - chownr@2.0.0: {} + /chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: false - chrome-launcher@0.15.2: + /chrome-launcher@0.15.2: + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} + hasBin: true dependencies: - '@types/node': 20.11.24 + '@types/node': 20.12.8 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 transitivePeerDependencies: - supports-color + dev: false - chromium-edge-launcher@1.0.0: + /chromium-edge-launcher@1.0.0: + resolution: {integrity: sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==} dependencies: - '@types/node': 20.11.24 + '@types/node': 20.12.8 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -11318,113 +6797,195 @@ snapshots: rimraf: 3.0.2 transitivePeerDependencies: - supports-color + dev: false - ci-info@2.0.0: {} + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + dev: false - ci-info@3.9.0: {} + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: false - cipher-base@1.0.4: + /cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false - class-variance-authority@0.7.0: + /class-variance-authority@0.7.0: + resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} dependencies: clsx: 2.0.0 + dev: false - clean-stack@2.2.0: {} + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} - cli-cursor@2.1.0: + /cli-cursor@2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} dependencies: restore-cursor: 2.0.0 + dev: false - cli-cursor@3.1.0: + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 - cli-spinners@2.9.2: {} + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} - cli-width@3.0.0: {} + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true - cliui@6.0.0: + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 + dev: false - cliui@8.0.1: + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + dev: false - clone-deep@4.0.1: + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} dependencies: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 + dev: false - clone@1.0.4: {} + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} - clone@2.1.2: {} + /clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + dev: false - clsx@2.0.0: {} + /clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + dev: false - color-convert@1.9.3: + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - color-convert@2.0.1: + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - color-name@1.1.3: {} + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - color-name@1.1.4: {} + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-string@1.9.1: + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 + dev: false - color2k@2.0.3: {} + /color2k@2.0.3: + resolution: {integrity: sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog==} + dev: false - color@4.2.3: + /color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} dependencies: color-convert: 2.0.1 color-string: 1.9.1 + dev: false - colorette@1.4.0: {} + /colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + dev: false - combined-stream@1.0.8: + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 + dev: false - command-exists@1.2.9: {} + /command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + dev: false - commander@10.0.1: {} + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} - commander@2.20.3: {} + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: false - commander@4.1.1: {} + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: false - commander@7.2.0: {} + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: false - commander@9.5.0: {} + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + dev: false - commondir@1.0.1: {} + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: false - compare-urls@2.0.0: + /compare-urls@2.0.0: + resolution: {integrity: sha512-eCJcWn2OYFEIqbm70ta7LQowJOOZZqq1a2YbbFCFI1uwSvj+TWMwXVn7vPR1ceFNcAIt5RSTDbwdlX82gYLTkA==} + engines: {node: '>=6'} dependencies: normalize-url: 2.0.1 + dev: false - component-type@1.2.2: {} + /component-type@1.2.2: + resolution: {integrity: sha512-99VUHREHiN5cLeHm3YLq312p6v+HUEcwtLCAtelvUDI6+SH5g5Cr85oNR2S1o6ywzL0ykMbuwLzM2ANocjEOIA==} + dev: false - compressible@2.0.18: + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 + dev: false - compression@1.7.4: + /compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} dependencies: accepts: 1.3.8 bytes: 3.0.0 @@ -11435,10 +6996,14 @@ snapshots: vary: 1.1.2 transitivePeerDependencies: - supports-color + dev: false - concat-map@0.0.1: {} + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - connect@3.7.0: + /connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} dependencies: debug: 2.6.9 finalhandler: 1.1.2 @@ -11446,51 +7011,81 @@ snapshots: utils-merge: 1.0.1 transitivePeerDependencies: - supports-color + dev: false - constant-case@2.0.0: + /constant-case@2.0.0: + resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==} dependencies: snake-case: 2.1.0 upper-case: 1.1.3 + dev: true - convert-source-map@2.0.0: {} + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-signature@1.2.1: {} + /cookie-signature@1.2.1: + resolution: {integrity: sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==} + engines: {node: '>=6.6.0'} + dev: false - cookie@0.4.2: {} + /cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + dev: false - cookie@0.6.0: {} + /cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + dev: false - core-js-compat@3.35.1: + /core-js-compat@3.37.0: + resolution: {integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==} dependencies: - browserslist: 4.22.3 + browserslist: 4.23.0 - core-js-pure@3.35.1: {} + /core-js-pure@3.37.0: + resolution: {integrity: sha512-d3BrpyFr5eD4KcbRvQ3FTUx/KWmaDesr7+a3+1+P46IUnNoEt+oiLijPINZMEon7w9oGkIINWxrBAU9DEciwFQ==} + requiresBuild: true + dev: true - core-js@3.36.0: {} + /core-js@3.37.0: + resolution: {integrity: sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==} + requiresBuild: true + dev: false - core-util-is@1.0.3: {} + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: false - cosmiconfig@5.2.1: + /cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} dependencies: import-fresh: 2.0.0 is-directory: 0.3.1 js-yaml: 3.14.1 parse-json: 4.0.0 + dev: false - create-ecdh@4.0.4: + /create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} dependencies: bn.js: 4.12.0 - elliptic: 6.5.4 + elliptic: 6.5.5 + dev: false - create-hash@1.2.0: + /create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} dependencies: cipher-base: 1.0.4 inherits: 2.0.4 md5.js: 1.3.5 ripemd160: 2.0.2 sha.js: 2.4.11 + dev: false - create-hmac@1.1.7: + /create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} dependencies: cipher-base: 1.0.4 create-hash: 1.2.0 @@ -11498,35 +7093,48 @@ snapshots: ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 + dev: false - create-require@1.1.1: {} + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true - cross-fetch@3.1.8: + /cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} dependencies: node-fetch: 2.7.0 transitivePeerDependencies: - encoding + dev: false - cross-spawn@6.0.5: + /cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} dependencies: nice-try: 1.0.5 path-key: 2.0.1 semver: 5.7.2 shebang-command: 1.2.0 which: 1.3.1 + dev: false - cross-spawn@7.0.3: + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - crypt@0.0.2: {} + /crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + dev: false - crypto-browserify@3.12.0: + /crypto-browserify@3.12.0: + resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} dependencies: browserify-cipher: 1.0.1 - browserify-sign: 4.2.2 + browserify-sign: 4.2.3 create-ecdh: 4.0.4 create-hash: 1.2.0 create-hmac: 1.1.7 @@ -11536,108 +7144,230 @@ snapshots: public-encrypt: 4.0.3 randombytes: 2.1.0 randomfill: 1.0.4 + dev: false - crypto-js@4.2.0: {} + /crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + dev: false - crypto-random-string@1.0.0: {} + /crypto-random-string@1.0.0: + resolution: {integrity: sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==} + engines: {node: '>=4'} + dev: false - crypto-random-string@2.0.0: {} + /crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + dev: false - css-color-keywords@1.0.0: {} + /css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + dev: false - css-in-js-utils@3.1.0: + /css-in-js-utils@3.1.0: + resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} dependencies: hyphenate-style-name: 1.0.4 + dev: false - css-select@5.1.0: + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} dependencies: boolbase: 1.0.0 css-what: 6.1.0 domhandler: 5.0.3 domutils: 3.1.0 nth-check: 2.1.1 + dev: false - css-to-react-native@3.2.0: + /css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} dependencies: camelize: 1.0.1 css-color-keywords: 1.0.0 postcss-value-parser: 4.2.0 + dev: false - css-tree@1.1.3: + /css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} dependencies: mdn-data: 2.0.14 source-map: 0.6.1 + dev: false + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: false + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - css-what@6.1.0: {} + /dag-map@1.0.2: + resolution: {integrity: sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==} + dev: false - cssesc@3.0.0: {} + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dev: false - csstype@3.1.3: {} + /data-uri-to-buffer@3.0.1: + resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} + engines: {node: '>= 6'} + dev: false - dag-map@1.0.2: {} + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: false - damerau-levenshtein@1.0.8: {} + /data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} + dev: true - data-uri-to-buffer@3.0.1: {} + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: false - data-uri-to-buffer@4.0.1: {} + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: false - data-uri-to-buffer@6.0.1: {} + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: false - dayjs@1.11.10: {} + /dayjs@1.11.11: + resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} + dev: false - debug@2.6.9: + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.0.0 + dev: false - debug@3.2.7: + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.3 + dev: false - debug@4.3.4: + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.2 - decamelize@1.2.0: {} + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: false - decode-uri-component@0.2.2: {} + /decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dev: false - deep-extend@0.6.0: {} + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} - deep-is@0.1.4: {} + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - deepmerge@4.3.1: {} + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: false - default-gateway@4.2.0: + /default-gateway@4.2.0: + resolution: {integrity: sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==} + engines: {node: '>=6'} dependencies: execa: 1.0.0 ip-regex: 2.1.0 + dev: false - defaults@1.0.4: + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 - define-data-property@1.1.1: + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.3 + es-define-property: 1.0.0 + es-errors: 1.3.0 gopd: 1.0.1 - has-property-descriptors: 1.0.1 + dev: false - define-lazy-prop@2.0.0: {} + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: false - define-properties@1.2.1: + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 object-keys: 1.1.1 + dev: false - degenerator@5.0.1: + /degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} dependencies: ast-types: 0.13.4 escodegen: 2.1.0 esprima: 4.0.1 + dev: true - del@5.1.0: + /del@5.1.0: + resolution: {integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==} + engines: {node: '>=8'} dependencies: globby: 10.0.2 graceful-fs: 4.2.11 @@ -11647,8 +7377,11 @@ snapshots: p-map: 3.0.0 rimraf: 3.0.2 slash: 3.0.0 + dev: true - del@6.1.1: + /del@6.1.1: + resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} + engines: {node: '>=10'} dependencies: globby: 11.1.0 graceful-fs: 4.2.11 @@ -11658,105 +7391,183 @@ snapshots: p-map: 4.0.0 rimraf: 3.0.2 slash: 3.0.0 + dev: false - delayed-stream@1.0.0: {} + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false - denodeify@1.2.1: {} + /denodeify@1.2.1: + resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} + dev: false - depd@2.0.0: {} + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: false - deprecated-react-native-prop-types@2.3.0: + /deprecated-react-native-prop-types@2.3.0: + resolution: {integrity: sha512-pWD0voFtNYxrVqvBMYf5gq3NA2GCpfodS1yNynTPc93AYA/KEMGeWDqqeUB6R2Z9ZofVhks2aeJXiuQqKNpesA==} dependencies: '@react-native/normalize-color': 2.1.0 invariant: 2.2.4 prop-types: 15.8.1 + dev: false - deprecated-react-native-prop-types@5.0.0: + /deprecated-react-native-prop-types@5.0.0: + resolution: {integrity: sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ==} + engines: {node: '>=18'} dependencies: '@react-native/normalize-colors': 0.73.2 invariant: 2.2.4 prop-types: 15.8.1 + dev: false - deprecation@2.3.1: {} + /deprecation@2.3.1: + resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + dev: false - dequal@2.0.3: {} + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: false - des.js@1.1.0: + /des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 + dev: false - destroy@1.2.0: {} + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: false - detect-libc@1.0.3: {} + /detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + dev: false - detect-node-es@1.1.0: {} + /detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev: false - didyoumean@1.2.2: {} + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: false - diff@4.0.2: {} + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true - diffie-hellman@5.0.3: + /diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} dependencies: bn.js: 4.12.0 miller-rabin: 4.0.1 randombytes: 2.1.0 + dev: false - dir-glob@3.0.1: + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dependencies: path-type: 4.0.0 - dlv@1.1.3: {} + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: false - doctrine@2.1.0: + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 + dev: false - doctrine@3.0.0: + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 - dom-serializer@2.0.0: + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 entities: 4.5.0 + dev: false - domelementtype@2.3.0: {} + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: false - domhandler@5.0.3: + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} dependencies: domelementtype: 2.3.0 + dev: false - domutils@3.1.0: + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 + dev: false - dot-case@2.1.1: + /dot-case@2.1.1: + resolution: {integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==} dependencies: no-case: 2.3.2 + dev: true + + /dotenv-expand@11.0.6: + resolution: {integrity: sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==} + engines: {node: '>=12'} + dependencies: + dotenv: 16.4.5 + dev: false - dotenv-expand@10.0.0: {} + /dotenv@16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} + dev: false - dotenv@16.0.3: {} + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + dev: false - eastasianwidth@0.2.0: {} + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: false - edit-json-file@1.8.0: + /edit-json-file@1.8.0: + resolution: {integrity: sha512-IBOpbe2aQufNl5oZ4jsr2AmNVUy5bO7jS5hk0cCyWhOLdH59Xv41B3XQObE/JB89Ae5qDY9hVsq13/hgGhFBZg==} dependencies: find-value: 1.0.12 iterate-object: 1.3.4 r-json: 1.3.0 set-value: 4.1.0 w-json: 1.3.10 + dev: false - ee-first@1.1.1: {} + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: false - electron-to-chromium@1.4.656: {} + /electron-to-chromium@1.4.752: + resolution: {integrity: sha512-P3QJreYI/AUTcfBVrC4zy9KvnZWekViThgQMX/VpJ+IsOBbcX5JFpORM4qWapwWQ+agb2nYAOyn/4PMXOk0m2Q==} - elliptic@6.5.4: + /elliptic@6.5.5: + resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} dependencies: bn.js: 4.12.0 brorand: 1.1.0 @@ -11765,134 +7576,217 @@ snapshots: inherits: 2.0.4 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 + dev: false - eme-encryption-scheme-polyfill@2.1.1: {} + /eme-encryption-scheme-polyfill@2.1.1: + resolution: {integrity: sha512-njD17wcUrbqCj0ArpLu5zWXtaiupHb/2fIUQGdInf83GlI+Q6mmqaPGLdrke4savKAu15J/z1Tg/ivDgl14g0g==} + dev: false - emoji-regex@8.0.0: {} + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: {} + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: false - encodeurl@1.0.2: {} + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: false - end-of-stream@1.4.4: + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 + dev: false - entities@2.0.3: {} + /entities@2.0.3: + resolution: {integrity: sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==} + dev: false - entities@4.5.0: {} + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: false - env-editor@0.4.2: {} + /env-editor@0.4.2: + resolution: {integrity: sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==} + engines: {node: '>=8'} + dev: false - envinfo@7.11.1: {} + /envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} + engines: {node: '>=4'} + hasBin: true + dev: false - eol@0.9.1: {} + /eol@0.9.1: + resolution: {integrity: sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==} + dev: false - error-ex@1.3.2: + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 + dev: false - error-stack-parser@2.1.4: + /error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} dependencies: stackframe: 1.3.4 + dev: false - errorhandler@1.5.1: + /errorhandler@1.5.1: + resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} + engines: {node: '>= 0.8'} dependencies: accepts: 1.3.8 escape-html: 1.0.3 + dev: false - es-abstract@1.22.3: + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.6 - call-bind: 1.0.5 - es-set-tostringtag: 2.0.2 + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 - get-intrinsic: 1.2.3 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 gopd: 1.0.1 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 - internal-slot: 1.0.6 + hasown: 2.0.2 + internal-slot: 1.0.7 is-array-buffer: 3.0.4 is-callable: 1.2.7 - is-negative-zero: 2.0.2 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 is-string: 1.0.7 is-typed-array: 1.1.13 is-weakref: 1.0.2 object-inspect: 1.13.1 object-keys: 1.1.1 object.assign: 4.1.5 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.1.0 - safe-regex-test: 1.0.2 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 unbox-primitive: 1.0.2 - which-typed-array: 1.1.14 + which-typed-array: 1.1.15 + dev: false + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: false - es-errors@1.0.0: {} + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: false - es-iterator-helpers@1.0.15: + /es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} dependencies: - asynciterator.prototype: 1.0.0 - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - es-set-tostringtag: 2.0.2 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 function-bind: 1.1.2 - get-intrinsic: 1.2.3 - globalthis: 1.0.3 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 has-symbols: 1.0.3 - internal-slot: 1.0.6 + internal-slot: 1.0.7 iterator.prototype: 1.1.2 - safe-array-concat: 1.1.0 + safe-array-concat: 1.1.2 + dev: false + + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + dev: false - es-set-tostringtag@2.0.2: + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.3 + get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 - hasown: 2.0.0 + hasown: 2.0.2 + dev: false - es-shim-unscopables@1.0.2: + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 + dev: false - es-to-primitive@1.2.1: + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 + dev: false - esbuild-plugin-es5@2.1.0(esbuild@0.20.2): + /esbuild-plugin-es5@2.1.0(esbuild@0.20.2): + resolution: {integrity: sha512-V0rsjIHa/pswTvqM/N+jrhhBAiOdp+Ppwmhk9HQKfpvhYRUKsdeImiHeFP0oWkc+GX7pFxJzmceaPJT1RA7jyQ==} + engines: {node: '>=12.0'} + peerDependencies: + esbuild: ^0.19.0 dependencies: - '@swc/core': 1.4.8(@swc/helpers@0.5.6) - '@swc/helpers': 0.5.6 + '@swc/core': 1.4.17(@swc/helpers@0.5.11) + '@swc/helpers': 0.5.11 deepmerge: 4.3.1 esbuild: 0.20.2 + dev: false - esbuild-register@3.5.0(esbuild@0.20.2): + /esbuild-register@3.5.0(esbuild@0.20.2): + resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} + peerDependencies: + esbuild: '>=0.12 <1' dependencies: debug: 4.3.4 esbuild: 0.20.2 transitivePeerDependencies: - supports-color + dev: false - esbuild@0.20.2: + /esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true optionalDependencies: '@esbuild/aix-ppc64': 0.20.2 '@esbuild/android-arm': 0.20.2 @@ -11917,143 +7811,223 @@ snapshots: '@esbuild/win32-arm64': 0.20.2 '@esbuild/win32-ia32': 0.20.2 '@esbuild/win32-x64': 0.20.2 + dev: false - escalade@3.1.1: {} - - escalade@3.1.2: {} + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} - escape-html@1.0.3: {} + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: false - escape-string-regexp@1.0.5: {} + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} - escape-string-regexp@2.0.0: {} + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: false - escape-string-regexp@4.0.0: {} + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} - escodegen@2.1.0: + /escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true dependencies: esprima: 4.0.1 estraverse: 5.3.0 esutils: 2.0.3 optionalDependencies: source-map: 0.6.1 + dev: true - eslint-config-prettier@9.1.0(eslint@8.56.0): + /eslint-config-prettier@9.1.0(eslint@8.57.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' dependencies: - eslint: 8.56.0 + eslint: 8.57.0 + dev: false - eslint-config-turbo@1.12.2(eslint@8.56.0): + /eslint-config-turbo@1.13.3(eslint@8.57.0): + resolution: {integrity: sha512-if/QtwEiWZ5b7Bg8yZBPSvS0TeCG2Zvfa/+XBYANS7uSYucjmW+BBC8enJB0PqpB/YLGGOumeo3x7h1Nuba9iw==} + peerDependencies: + eslint: '>6.6.0' dependencies: - eslint: 8.56.0 - eslint-plugin-turbo: 1.12.2(eslint@8.56.0) + eslint: 8.57.0 + eslint-plugin-turbo: 1.13.3(eslint@8.57.0) + dev: false - eslint-import-resolver-node@0.3.9: + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 is-core-module: 2.13.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color + dev: false - eslint-module-utils@2.8.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.4.3))(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): + /eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.4.3) - eslint: 8.56.0 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color + dev: false - eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.4.3))(eslint@8.56.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true dependencies: - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.56.0 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.20.0(eslint@8.56.0)(typescript@5.4.3))(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) - hasown: 2.0.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.1 - object.values: 1.1.7 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 semver: 6.3.1 tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 6.20.0(eslint@8.56.0)(typescript@5.4.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color + dev: false - eslint-plugin-jsx-a11y@6.8.0(eslint@8.56.0): + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): + resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 aria-query: 5.3.0 - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 axe-core: 4.7.0 axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.15 - eslint: 8.56.0 - hasown: 2.0.0 + es-iterator-helpers: 1.0.19 + eslint: 8.57.0 + hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + dev: false - eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): + /eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.56.0 + eslint: 8.57.0 + dev: false - eslint-plugin-react@7.33.2(eslint@8.56.0): + /eslint-plugin-react@7.34.1(eslint@8.57.0): + resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 - array.prototype.tosorted: 1.1.2 + array.prototype.toreversed: 1.1.2 + array.prototype.tosorted: 1.1.3 doctrine: 2.1.0 - es-iterator-helpers: 1.0.15 - eslint: 8.56.0 + es-iterator-helpers: 1.0.19 + eslint: 8.57.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - object.hasown: 1.1.3 - object.values: 1.1.7 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.hasown: 1.1.4 + object.values: 1.2.0 prop-types: 15.8.1 resolve: 2.0.0-next.5 semver: 6.3.1 - string.prototype.matchall: 4.0.10 + string.prototype.matchall: 4.0.11 + dev: false - eslint-plugin-turbo@1.12.2(eslint@8.56.0): + /eslint-plugin-turbo@1.13.3(eslint@8.57.0): + resolution: {integrity: sha512-RjmlnqYsEqnJ+U3M3IS5jLJDjWv5NsvReCpsC61n5pJ4JMHTZ/lU0EIoL1ccuL1L5wP0APzdXdByBxERcPQ+Nw==} + peerDependencies: + eslint: '>6.6.0' dependencies: dotenv: 16.0.3 - eslint: 8.56.0 + eslint: 8.57.0 + dev: false - eslint-scope@7.2.2: + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-visitor-keys@3.4.3: {} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint@8.56.0: + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.56.0 + '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -12085,46 +8059,74 @@ snapshots: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color - espree@9.6.1: + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.11.3 acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 - esprima@4.0.1: {} + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true - esquery@1.5.0: + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 - esrecurse@4.3.0: + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 - estraverse@5.3.0: {} + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} - esutils@2.0.3: {} + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} - etag@1.8.1: {} + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: false - event-target-shim@5.0.1: {} + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: false - events@3.3.0: {} + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false - evp_bytestokey@1.0.3: + /evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} dependencies: md5.js: 1.3.5 safe-buffer: 5.2.1 + dev: false - exec-async@2.2.0: {} + /exec-async@2.2.0: + resolution: {integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==} + dev: false - execa@1.0.0: + /execa@1.0.0: + resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} + engines: {node: '>=6'} dependencies: cross-spawn: 6.0.5 get-stream: 4.1.0 @@ -12133,8 +8135,11 @@ snapshots: p-finally: 1.0.0 signal-exit: 3.0.7 strip-eof: 1.0.0 + dev: false - execa@5.1.1: + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -12146,89 +8151,149 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - expo-alternate-app-icons@0.1.7(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0): + /expo-alternate-app-icons@0.1.7(expo@50.0.17)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-4hIIGVRaNSedreT2GbujpR+vyz7x+/j8GPfGn/WHFYy8V0lmAOa8KgT2JeXuK1nB6s4Ler4yahrxUhcSI/lmqQ==} + peerDependencies: + expo: '*' + react: '*' + react-native: '*' dependencies: - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - expo-application@5.8.3(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-application@5.8.4(expo@50.0.17): + resolution: {integrity: sha512-mH0gSlFzMuiT20TkZnBppzUtdF6TFHwcaTRnvkSZanN9iTOeEEfQQ60hHT4lBizHjFWRs/QYZVtXGvkQ/cyMpg==} + peerDependencies: + expo: '*' dependencies: - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) + dev: false - expo-asset@9.0.2(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-asset@9.0.2(expo@50.0.17): + resolution: {integrity: sha512-PzYKME1MgUOoUvwtdzhAyXkjXOXGiSYqGKG/MsXwWr0Ef5wlBaBm2DCO9V6KYbng5tBPFu6hTjoRNil1tBOSow==} dependencies: '@react-native/assets-registry': 0.73.1 blueimp-md5: 2.19.0 - expo-constants: 15.4.5(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) - expo-file-system: 16.0.8(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + expo-constants: 15.4.6(expo@50.0.17) + expo-file-system: 16.0.9(expo@50.0.17) invariant: 2.2.4 md5-file: 3.2.3 transitivePeerDependencies: - expo - supports-color + dev: false - expo-av@13.10.5(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-av@13.10.6(expo@50.0.17): + resolution: {integrity: sha512-h3c1fg5yhWnP0RIGO+fhgPx6cmh4B4lnKdXR2i69aC3vs5D5Cu+JlzBon1gLIu6eUo2IVfC0RjSLpfQbcJ4doQ==} + peerDependencies: + expo: '*' dependencies: - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) + dev: false - expo-brightness@11.8.0(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-brightness@11.8.0(expo@50.0.17): + resolution: {integrity: sha512-ipQA7s8PvJVhy+Ls6Dsql0veXXV5CdMcbXNPwQuXTbUofRE+8FHO0vasShMZlKYcD9KNgFygjx0U+THi80dtAw==} + peerDependencies: + expo: '*' dependencies: - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) + dev: false - expo-build-properties@0.11.1(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-build-properties@0.11.1(expo@50.0.17): + resolution: {integrity: sha512-m4j4aEjFaDuBE6KWYMxDhWgLzzSmpE7uHKAwtvXyNmRK+6JKF0gjiXi0sXgI5ngNppDQpsyPFMvqG7uQpRuCuw==} + peerDependencies: + expo: '*' dependencies: - ajv: 8.12.0 - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) - semver: 7.5.4 + ajv: 8.13.0 + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) + semver: 7.6.0 + dev: false - expo-clipboard@5.0.1(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-clipboard@5.0.1(expo@50.0.17): + resolution: {integrity: sha512-JH853QJPr5W3h87If3aDTnMK+ESSIrwzU2TdfZrqZttVDY2pMIf/w37mVHHNYodXM4ATHXadtOkjKbAa0DWwUg==} + peerDependencies: + expo: '*' dependencies: - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) + dev: false - expo-constants@15.4.5(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-constants@15.4.6(expo@50.0.17): + resolution: {integrity: sha512-vizE69dww2Vl0PTWWvDmK0Jo2/J+WzdcMZlA05YEnEYofQuhKxTVsiuipf79mSOmFavt4UQYC1UnzptzKyfmiQ==} + peerDependencies: + expo: '*' dependencies: - '@expo/config': 8.5.4 - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + '@expo/config': 8.5.6 + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) transitivePeerDependencies: - supports-color + dev: false - expo-file-system@16.0.8(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-file-system@16.0.9(expo@50.0.17): + resolution: {integrity: sha512-3gRPvKVv7/Y7AdD9eHMIdfg5YbUn2zbwKofjsloTI5sEC57SLUFJtbLvUCz9Pk63DaSQ7WIE1JM0EASyvuPbuw==} + peerDependencies: + expo: '*' dependencies: - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) + dev: false - expo-font@11.10.3(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-font@11.10.3(expo@50.0.17): + resolution: {integrity: sha512-q1Td2zUvmLbCA9GV4OG4nLPw5gJuNY1VrPycsnemN1m8XWTzzs8nyECQQqrcBhgulCgcKZZJJ6U0kC2iuSoQHQ==} + peerDependencies: + expo: '*' dependencies: - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) fontfaceobserver: 2.3.0 + dev: false - expo-haptics@12.8.1(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-haptics@12.8.1(expo@50.0.17): + resolution: {integrity: sha512-ntLsHkfle8K8w9MW8pZEw92ZN3sguaGUSSIxv30fPKNeQFu7Cq/h47Qv3tONv2MO3wU48N9FbKnant6XlfptpA==} + peerDependencies: + expo: '*' dependencies: - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) + dev: false - expo-keep-awake@12.8.2(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-keep-awake@12.8.2(expo@50.0.17): + resolution: {integrity: sha512-uiQdGbSX24Pt8nGbnmBtrKq6xL/Tm3+DuDRGBk/3ZE/HlizzNosGRIufIMJ/4B4FRw4dw8KU81h2RLuTjbay6g==} + peerDependencies: + expo: '*' dependencies: - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) + dev: false - expo-linear-gradient@12.7.2(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-linear-gradient@12.7.2(expo@50.0.17): + resolution: {integrity: sha512-Wwb2EF18ywgrlTodcXJ6Yt/UEcKitRMdXPNyP/IokmeKh4emoq9DxZJpZdkXm3HUTLlbRpi6/t32jrFVqXB9AQ==} + peerDependencies: + expo: '*' dependencies: - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) + dev: false - expo-linking@6.2.2(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-linking@6.2.2(expo@50.0.17): + resolution: {integrity: sha512-FEe6lP4f7xFT/vjoHRG+tt6EPVtkEGaWNK1smpaUevmNdyCJKqW0PDB8o8sfG6y7fly8ULe8qg3HhKh5J7aqUQ==} dependencies: - expo-constants: 15.4.5(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + expo-constants: 15.4.6(expo@50.0.17) invariant: 2.2.4 transitivePeerDependencies: - expo - supports-color + dev: false - expo-media-library@15.9.1(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-media-library@15.9.2(expo@50.0.17): + resolution: {integrity: sha512-ExRcCxNO768aWPQr9axuBDQLcFnRTSiqvWZ1XvnopCfZEic04wJ/CPAE1hLqTp7AyYrd6jHpqxa/aNKBAAFVeA==} + peerDependencies: + expo: '*' dependencies: - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) + dev: false - expo-modules-autolinking@1.10.3: + /expo-modules-autolinking@1.10.3: + resolution: {integrity: sha512-pn4n2Dl4iRh/zUeiChjRIe1C7EqOw1qhccr85viQV7W6l5vgRpY0osE51ij5LKg/kJmGRcJfs12+PwbdTplbKw==} + hasBin: true dependencies: - '@expo/config': 8.5.4 + '@expo/config': 8.5.6 chalk: 4.1.2 commander: 7.2.0 fast-glob: 3.3.2 @@ -12236,44 +8301,74 @@ snapshots: fs-extra: 9.1.0 transitivePeerDependencies: - supports-color + dev: false - expo-modules-core@1.11.12: + /expo-modules-core@1.11.13: + resolution: {integrity: sha512-2H5qrGUvmLzmJNPDOnovH1Pfk5H/S/V0BifBmOQyDc9aUh9LaDwkqnChZGIXv8ZHDW8JRlUW0QqyWxTggkbw1A==} dependencies: invariant: 2.2.4 + dev: false - expo-navigation-bar@2.8.1(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-navigation-bar@2.8.1(expo@50.0.17): + resolution: {integrity: sha512-aT5G+7SUsXDVPsRwp8fF940ycka1ABb4g3QKvTZN3YP6kMWvsiYEmRqMIJVy0zUr/i6bxBG1ZergkXimWrFt3w==} + peerDependencies: + expo: '*' dependencies: '@react-native/normalize-color': 2.1.0 debug: 4.3.4 - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) transitivePeerDependencies: - supports-color + dev: false - expo-network@5.8.0(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-network@5.8.0(expo@50.0.17): + resolution: {integrity: sha512-mTtyqRgLKvXWB+xCoY5WMtRrpVqYmcXWz3YbyN+X0HRGqXg7a+UYOXeKlxrkwBiadsElhmfMeaj1UpmW79Zw/w==} + peerDependencies: + expo: '*' dependencies: - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) + dev: false - expo-pod-pinner@1.0.1: {} + /expo-pod-pinner@1.0.1: + resolution: {integrity: sha512-UeyCRXrI13tjb+rtQkjBjgs+eS1KntAgTRnLoawFdMp8s1T2bOcm9P4cIrFlLHt9aZBLLMdHra1TY6LiMI3+kw==} + dev: false - ? expo-router@3.4.8(expo-constants@15.4.5(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))))(expo-linking@6.2.2(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))))(expo-modules-autolinking@1.10.3)(expo-status-bar@1.11.1)(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))))(react-dom@18.2.0(react@18.2.0))(react-native-reanimated@3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-screens@3.29.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - : dependencies: - '@expo/metro-runtime': 3.1.3(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0)) - '@expo/server': 0.3.0 + /expo-router@3.4.8(expo-constants@15.4.6)(expo-linking@6.2.2)(expo-modules-autolinking@1.10.3)(expo-status-bar@1.11.1)(expo@50.0.17)(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react-native-safe-area-context@4.8.2)(react-native-screens@3.29.0)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-fOOAWHH4LSPjPFtIZbApxdTNU8xSS8qKvhZ7PfWNMfx9510J1R1Ce/nwENPzcRLHRuVofDsSAEBfi4kV03fJwg==} + peerDependencies: + '@react-navigation/drawer': ^6.5.8 + '@testing-library/jest-native': '*' + expo: '*' + expo-constants: '*' + expo-linking: '*' + expo-status-bar: '*' + react-native-reanimated: '*' + react-native-safe-area-context: '*' + react-native-screens: '*' + peerDependenciesMeta: + '@react-navigation/drawer': + optional: true + '@testing-library/jest-native': + optional: true + react-native-reanimated: + optional: true + dependencies: + '@expo/metro-runtime': 3.1.3(react-native@0.73.6) + '@expo/server': 0.3.1 '@radix-ui/react-slot': 1.0.1(react@18.2.0) - '@react-navigation/bottom-tabs': 6.5.11(@react-navigation/native@6.1.9(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-screens@3.29.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@react-navigation/native': 6.1.9(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@react-navigation/native-stack': 6.9.17(@react-navigation/native@6.1.9(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-screens@3.29.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) - expo-constants: 15.4.5(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) - expo-linking: 6.2.2(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) - expo-splash-screen: 0.26.4(expo-modules-autolinking@1.10.3)(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + '@react-navigation/bottom-tabs': 6.5.20(@react-navigation/native@6.1.17)(react-native-safe-area-context@4.8.2)(react-native-screens@3.29.0)(react-native@0.73.6)(react@18.2.0) + '@react-navigation/native': 6.1.17(react-native@0.73.6)(react@18.2.0) + '@react-navigation/native-stack': 6.9.26(@react-navigation/native@6.1.17)(react-native-safe-area-context@4.8.2)(react-native-screens@3.29.0)(react-native@0.73.6)(react@18.2.0) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) + expo-constants: 15.4.6(expo@50.0.17) + expo-linking: 6.2.2(expo@50.0.17) + expo-splash-screen: 0.26.4(expo-modules-autolinking@1.10.3)(expo@50.0.17) expo-status-bar: 1.11.1 - react-helmet-async: 1.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-native-safe-area-context: 4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - react-native-screens: 3.29.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) + react-native-reanimated: 3.6.3(@babel/core@7.24.5)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6)(@babel/plugin-proposal-optional-chaining@7.21.0)(@babel/plugin-transform-arrow-functions@7.24.1)(@babel/plugin-transform-shorthand-properties@7.24.1)(@babel/plugin-transform-template-literals@7.24.1)(react-native@0.73.6)(react@18.2.0) + react-native-safe-area-context: 4.8.2(react-native@0.73.6)(react@18.2.0) + react-native-screens: 3.29.0(react-native@0.73.6)(react@18.2.0) schema-utils: 4.2.0 - optionalDependencies: - react-native-reanimated: 3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) transitivePeerDependencies: - encoding - expo-modules-autolinking @@ -12281,51 +8376,72 @@ snapshots: - react-dom - react-native - supports-color + dev: false - expo-screen-orientation@6.4.1(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-screen-orientation@6.4.1(expo@50.0.17): + resolution: {integrity: sha512-VM0C9ORNL1aT6Dr2OUeryzV519n0FjtXI2m+HlijOMi1QT2bPg4tBkCd7HLgywU4dZ1Esa46ewUudmk+fOqmMQ==} + peerDependencies: + expo: '*' dependencies: - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) + dev: false - expo-splash-screen@0.26.4(expo-modules-autolinking@1.10.3)(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-splash-screen@0.26.4(expo-modules-autolinking@1.10.3)(expo@50.0.17): + resolution: {integrity: sha512-2DwofTQ0FFQCsvDysm/msENsbyNsJiAJwK3qK/oXeizECAPqD7bK19J4z9kuEbr7ORPX9MLnTQYKl6kmX3keUg==} + peerDependencies: + expo: '*' dependencies: '@expo/prebuild-config': 6.7.4(expo-modules-autolinking@1.10.3) - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) transitivePeerDependencies: - encoding - expo-modules-autolinking - supports-color + dev: false - expo-status-bar@1.11.1: {} + /expo-status-bar@1.11.1: + resolution: {integrity: sha512-ddQEtCOgYHTLlFUe/yH67dDBIoct5VIULthyT3LRJbEwdpzAgueKsX2FYK02ldh440V87PWKCamh7R9evk1rrg==} + dev: false - expo-system-ui@2.9.3(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-system-ui@2.9.4(expo@50.0.17): + resolution: {integrity: sha512-ExJ8AzEZjb/zbg6nRLrN/mqxWr6e4fAcT0LBN/YvPZljbMo23HU+/lPy0/YctF1tRRvQ3Z95ABSNjnx9ajQBjg==} + peerDependencies: + expo: '*' dependencies: '@react-native/normalize-color': 2.1.0 debug: 4.3.4 - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) transitivePeerDependencies: - supports-color + dev: false - expo-web-browser@12.8.2(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))): + /expo-web-browser@12.8.2(expo@50.0.17): + resolution: {integrity: sha512-Mw8WoFMSADecNjtC4PZVsVj1/lYdxIAH1jOVV+F8v8SEWYxORWofoShfXg7oUxRLu0iUG8JETfO5y4m8+fOgdg==} + peerDependencies: + expo: '*' dependencies: compare-urls: 2.0.0 - expo: 50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) + expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) url: 0.11.3 + dev: false - expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))): + /expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81): + resolution: {integrity: sha512-eD8Nh10BgVwecU7EVyogx7X314ajxVpJdFwkXhi341AD61S2WPX31NMHW82XGXas6dbDjdbgtaOMo5H/vylB7Q==} + hasBin: true dependencies: - '@babel/runtime': 7.23.9 - '@expo/cli': 0.17.8(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))(expo-modules-autolinking@1.10.3) - '@expo/config': 8.5.4 - '@expo/config-plugins': 7.8.4 - '@expo/metro-config': 0.17.6(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))) - '@expo/vector-icons': 14.0.0 - babel-preset-expo: 10.0.1(@babel/core@7.23.9) - expo-asset: 9.0.2(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) - expo-file-system: 16.0.8(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) - expo-font: 11.10.3(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) - expo-keep-awake: 12.8.2(expo@50.0.14(@babel/core@7.23.9)(@react-native/babel-preset@0.73.21(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)))) + '@babel/runtime': 7.24.5 + '@expo/cli': 0.17.10(@react-native/babel-preset@0.74.81)(expo-modules-autolinking@1.10.3) + '@expo/config': 8.5.6 + '@expo/config-plugins': 7.9.1 + '@expo/metro-config': 0.17.7(@react-native/babel-preset@0.74.81) + '@expo/vector-icons': 14.0.1 + babel-preset-expo: 10.0.2(@babel/core@7.24.5) + expo-asset: 9.0.2(expo@50.0.17) + expo-file-system: 16.0.9(expo@50.0.17) + expo-font: 11.10.3(expo@50.0.17) + expo-keep-awake: 12.8.2(expo@50.0.17) expo-modules-autolinking: 1.10.3 - expo-modules-core: 1.11.12 + expo-modules-core: 1.11.13 fbemitter: 3.0.0 whatwg-url-without-unicode: 8.0.0-3 transitivePeerDependencies: @@ -12336,16 +8452,23 @@ snapshots: - encoding - supports-color - utf-8-validate + dev: false - external-editor@3.1.0: + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 + dev: true - fast-deep-equal@3.1.3: {} + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-glob@3.3.2: + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -12353,33 +8476,48 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.5 - fast-json-stable-stringify@2.1.0: {} + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - fast-levenshtein@2.0.6: {} + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-loops@1.1.3: {} + /fast-loops@1.1.3: + resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==} + dev: false - fast-xml-parser@4.3.4: + /fast-xml-parser@4.3.6: + resolution: {integrity: sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==} + hasBin: true dependencies: strnum: 1.0.5 + dev: false - fastq@1.17.0: + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 - fb-watchman@2.0.2: + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 + dev: false - fbemitter@3.0.0: + /fbemitter@3.0.0: + resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} dependencies: fbjs: 3.0.5 transitivePeerDependencies: - encoding + dev: false - fbjs-css-vars@1.0.2: {} + /fbjs-css-vars@1.0.2: + resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} + dev: false - fbjs@3.0.5: + /fbjs@3.0.5: + resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} dependencies: cross-fetch: 3.1.8 fbjs-css-vars: 1.0.2 @@ -12390,34 +8528,57 @@ snapshots: ua-parser-js: 1.0.37 transitivePeerDependencies: - encoding + dev: false - fetch-blob@3.2.0: + /fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} dependencies: node-domexception: 1.0.0 web-streams-polyfill: 3.3.3 + dev: false - fetch-retry@4.1.1: {} + /fetch-retry@4.1.1: + resolution: {integrity: sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==} + dev: false - ffmpeg-kit-react-native@6.0.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0): + /ffmpeg-kit-react-native@6.0.2(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-r9uSmahq8TeyIb7fXf3ft+uUXyoeWRFa99+khjo0TAzWO9y0z9wU7eGnab9JLw1MmCB9v64o4yojNluJhVm9nQ==} + peerDependencies: + react: '*' + react-native: '*' dependencies: react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - figures@3.2.0: + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} dependencies: escape-string-regexp: 1.0.5 + dev: true - file-entry-cache@6.0.1: + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.2.0 - fill-range@7.0.1: + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - filter-obj@1.1.0: {} + /filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + dev: false - finalhandler@1.1.2: + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} dependencies: debug: 2.6.9 encodeurl: 1.0.2 @@ -12428,86 +8589,136 @@ snapshots: unpipe: 1.0.0 transitivePeerDependencies: - supports-color + dev: false - find-babel-config@2.0.0: + /find-babel-config@2.1.1: + resolution: {integrity: sha512-5Ji+EAysHGe1OipH7GN4qDjok5Z1uw5KAwDCbicU/4wyTZY7CqOCzcWbG7J5ad9mazq67k89fXlbc1MuIfl9uA==} dependencies: json5: 2.2.3 path-exists: 4.0.0 + dev: true - find-cache-dir@2.1.0: + /find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} dependencies: commondir: 1.0.1 make-dir: 2.1.0 pkg-dir: 3.0.0 + dev: false - find-cache-dir@3.3.2: + /find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} dependencies: commondir: 1.0.1 make-dir: 3.1.0 pkg-dir: 4.2.0 + dev: false - find-root@1.1.0: {} + /find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + dev: false - find-up@3.0.0: + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} dependencies: locate-path: 3.0.0 - find-up@4.1.0: + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 + dev: false - find-up@5.0.0: + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - find-value@1.0.12: {} + /find-value@1.0.12: + resolution: {integrity: sha512-OCpo8LTk8eZ2sdDCwbU2Lc3ivYsdM6yod6jP2jHcNEFcjPhkgH0+POzTIol7xx1LZgtbI5rkO5jqxsG5MWtPjQ==} + dev: false - find-yarn-workspace-root@2.0.0: + /find-yarn-workspace-root@2.0.0: + resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} dependencies: micromatch: 4.0.5 + dev: false - flat-cache@3.2.0: + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.2.9 + flatted: 3.3.1 keyv: 4.5.4 rimraf: 3.0.2 - flatted@3.2.9: {} + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - flow-enums-runtime@0.0.6: {} + /flow-enums-runtime@0.0.6: + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} + dev: false - flow-parser@0.206.0: {} + /flow-parser@0.206.0: + resolution: {integrity: sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==} + engines: {node: '>=0.4.0'} + dev: false - fontfaceobserver@2.3.0: {} + /fontfaceobserver@2.3.0: + resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} + dev: false - for-each@0.3.3: + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 + dev: false - foreground-child@3.1.1: + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 + dev: false - form-data@3.0.1: + /form-data@3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + dev: false - form-data@4.0.0: + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + dev: false - formdata-polyfill@4.0.10: + /formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} dependencies: fetch-blob: 3.2.0 + dev: false - framer-motion@6.5.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /framer-motion@6.5.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} + peerDependencies: + react: '>=16.8 || ^17.0.0 || ^18.0.0' + react-dom: '>=16.8 || ^17.0.0 || ^18.0.0' dependencies: '@motionone/dom': 10.12.0 framesync: 6.0.1 @@ -12519,135 +8730,216 @@ snapshots: tslib: 2.6.2 optionalDependencies: '@emotion/is-prop-valid': 0.8.8 + dev: false - framesync@6.0.1: + /framesync@6.0.1: + resolution: {integrity: sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==} dependencies: tslib: 2.6.2 + dev: false - freeport-async@2.0.0: {} + /freeport-async@2.0.0: + resolution: {integrity: sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==} + engines: {node: '>=8'} + dev: false - fresh@0.5.2: {} + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: false - fs-extra@10.1.0: + /fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 + dev: true - fs-extra@11.2.0: + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 - fs-extra@8.1.0: + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + dev: false - fs-extra@9.0.0: + /fs-extra@9.0.0: + resolution: {integrity: sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==} + engines: {node: '>=10'} dependencies: at-least-node: 1.0.0 graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 1.0.0 + dev: false - fs-extra@9.1.0: + /fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} dependencies: at-least-node: 1.0.0 graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 + dev: false - fs-minipass@2.1.0: + /fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} dependencies: minipass: 3.3.6 + dev: false - fs.realpath@1.0.0: {} + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.3: + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: false optional: true - function-bind@1.1.2: {} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.1.6: + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 functions-have-names: 1.2.3 + dev: false - functions-have-names@1.2.3: {} + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: false - gensync@1.0.0-beta.2: {} + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} - get-caller-file@2.0.5: {} + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: false - get-intrinsic@1.2.3: + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} dependencies: - es-errors: 1.0.0 + es-errors: 1.3.0 function-bind: 1.1.2 - has-proto: 1.0.1 + has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 + hasown: 2.0.2 + dev: false - get-nonce@1.0.1: {} + /get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + dev: false - get-port@3.2.0: {} + /get-port@3.2.0: + resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} + engines: {node: '>=4'} + dev: false - get-stream@4.1.0: + /get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} dependencies: pump: 3.0.0 + dev: false - get-stream@6.0.1: {} + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} - get-symbol-description@1.0.0: + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.3 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + dev: false - get-tsconfig@4.7.3: + /get-tsconfig@4.7.3: + resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} dependencies: resolve-pkg-maps: 1.0.0 + dev: false - get-uri@6.0.2: + /get-uri@6.0.3: + resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} + engines: {node: '>= 14'} dependencies: - basic-ftp: 5.0.4 - data-uri-to-buffer: 6.0.1 + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 debug: 4.3.4 - fs-extra: 8.1.0 + fs-extra: 11.2.0 transitivePeerDependencies: - supports-color + dev: true - getenv@1.0.0: {} + /getenv@1.0.0: + resolution: {integrity: sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==} + engines: {node: '>=6'} + dev: false - glob-parent@5.1.2: + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - glob-parent@6.0.2: + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 - glob@10.3.12: + /glob@10.3.12: + resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 minimatch: 9.0.4 minipass: 7.0.4 path-scurry: 1.10.2 + dev: false - glob@6.0.4: + /glob@6.0.4: + resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} + requiresBuild: true dependencies: inflight: 1.0.6 inherits: 2.0.4 minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: false optional: true - glob@7.1.6: + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -12655,8 +8947,10 @@ snapshots: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: false - glob@7.2.3: + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -12665,25 +8959,37 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@8.1.0: + /glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.10.2 + dev: true - globals@11.12.0: {} + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} - globals@13.24.0: + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.20.2 - globalthis@1.0.3: + /globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 + gopd: 1.0.1 + dev: false - globby@10.0.2: + /globby@10.0.2: + resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} + engines: {node: '>=8'} dependencies: '@types/glob': 7.2.0 array-union: 2.1.0 @@ -12693,8 +8999,11 @@ snapshots: ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 + dev: true - globby@11.1.0: + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -12703,35 +9012,56 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@13.2.2: + /globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 fast-glob: 3.3.2 ignore: 5.3.1 merge2: 1.4.1 slash: 4.0.0 + dev: false - gopd@1.0.1: + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.3 + get-intrinsic: 1.2.4 + dev: false - graceful-fs@4.2.11: {} + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - gradient-string@2.0.2: + /gradient-string@2.0.2: + resolution: {integrity: sha512-rEDCuqUQ4tbD78TpzsMtt5OIf0cBCSDWSJtUDaF6JsAh+k0v9r++NzxNEG87oDZx9ZwGhD8DaezR2L/yrw0Jdw==} + engines: {node: '>=10'} dependencies: chalk: 4.1.2 tinygradient: 1.1.5 + dev: true - graphemer@1.4.0: {} + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - graphql-tag@2.12.6(graphql@15.8.0): + /graphql-tag@2.12.6(graphql@15.8.0): + resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} + engines: {node: '>=10'} + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: graphql: 15.8.0 tslib: 2.6.2 + dev: false - graphql@15.8.0: {} + /graphql@15.8.0: + resolution: {integrity: sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==} + engines: {node: '>= 10.x'} + dev: false - handlebars@4.7.8: + /handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true dependencies: minimist: 1.2.8 neo-async: 2.6.2 @@ -12739,162 +9069,275 @@ snapshots: wordwrap: 1.0.0 optionalDependencies: uglify-js: 3.17.4 + dev: true - has-bigints@1.0.2: {} + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: false - has-flag@3.0.0: {} + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} - has-flag@4.0.0: {} + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} - has-property-descriptors@1.0.1: + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: - get-intrinsic: 1.2.3 + es-define-property: 1.0.0 + dev: false - has-proto@1.0.1: {} + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + dev: false - has-symbols@1.0.3: {} + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: false - has-tostringtag@1.0.2: + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: false + + /hash-base@3.0.4: + resolution: {integrity: sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: false - hash-base@3.1.0: + /hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} dependencies: inherits: 2.0.4 readable-stream: 3.6.2 safe-buffer: 5.2.1 + dev: false - hash.js@1.1.7: + /hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 + dev: false - hasown@2.0.0: + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 - header-case@1.0.1: + /header-case@1.0.1: + resolution: {integrity: sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==} dependencies: no-case: 2.3.2 upper-case: 1.1.3 + dev: true + + /hermes-estree@0.15.0: + resolution: {integrity: sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ==} + dev: false - hermes-estree@0.15.0: {} + /hermes-estree@0.19.1: + resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} + dev: false - hermes-estree@0.18.2: {} + /hermes-estree@0.20.1: + resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} + dev: false - hermes-parser@0.15.0: + /hermes-parser@0.15.0: + resolution: {integrity: sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==} dependencies: hermes-estree: 0.15.0 + dev: false + + /hermes-parser@0.19.1: + resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} + dependencies: + hermes-estree: 0.19.1 + dev: false - hermes-parser@0.18.2: + /hermes-parser@0.20.1: + resolution: {integrity: sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==} dependencies: - hermes-estree: 0.18.2 + hermes-estree: 0.20.1 + dev: false - hermes-profile-transformer@0.0.6: + /hermes-profile-transformer@0.0.6: + resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} + engines: {node: '>=8'} dependencies: source-map: 0.7.4 + dev: false - hey-listen@1.0.8: {} + /hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + dev: false - hmac-drbg@1.0.1: + /hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} dependencies: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 + dev: false - hoist-non-react-statics@3.3.2: + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: react-is: 16.13.1 + dev: false - hosted-git-info@3.0.8: + /hosted-git-info@3.0.8: + resolution: {integrity: sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==} + engines: {node: '>=10'} dependencies: lru-cache: 6.0.0 + dev: false - htmlparser2@8.0.2: + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.1.0 entities: 4.5.0 + dev: false - http-errors@2.0.0: + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} dependencies: depd: 2.0.0 inherits: 2.0.4 setprototypeof: 1.2.0 statuses: 2.0.1 toidentifier: 1.0.1 + dev: false - http-proxy-agent@7.0.0: + /http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} dependencies: - agent-base: 7.1.0 + agent-base: 7.1.1 debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: true - https-proxy-agent@5.0.1: + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: false - https-proxy-agent@7.0.2: + /https-proxy-agent@7.0.4: + resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + engines: {node: '>= 14'} dependencies: - agent-base: 7.1.0 + agent-base: 7.1.1 debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: true - human-signals@2.1.0: {} + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} - hyphenate-style-name@1.0.4: {} + /hyphenate-style-name@1.0.4: + resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} + dev: false - iconv-lite@0.4.24: + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 + dev: true - ieee754@1.2.1: {} + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.3.1: {} + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} - image-size@1.1.1: + /image-size@1.1.1: + resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} + engines: {node: '>=16.x'} + hasBin: true dependencies: queue: 6.0.2 + dev: false - immer@10.0.3: {} + /immer@10.1.1: + resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} + dev: false - import-fresh@2.0.0: + /import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} dependencies: caller-path: 2.0.0 resolve-from: 3.0.0 + dev: false - import-fresh@3.3.0: + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - imurmurhash@0.1.4: {} + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} - indent-string@4.0.0: {} + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} - infer-owner@1.0.4: {} + /infer-owner@1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + dev: false - inflight@1.0.6: + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - inherits@2.0.4: {} + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ini@1.3.8: {} + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - inline-style-prefixer@6.0.4: + /inline-style-prefixer@6.0.4: + resolution: {integrity: sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==} dependencies: css-in-js-utils: 3.1.0 fast-loops: 1.1.3 + dev: false - inquirer@7.3.3: + /inquirer@7.3.3: + resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} + engines: {node: '>=8.0.0'} dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -12909,8 +9352,11 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 + dev: true - inquirer@8.2.6: + /inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -12927,229 +9373,416 @@ snapshots: strip-ansi: 6.0.1 through: 2.3.8 wrap-ansi: 6.2.0 + dev: true - internal-ip@4.3.0: + /internal-ip@4.3.0: + resolution: {integrity: sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==} + engines: {node: '>=6'} dependencies: default-gateway: 4.2.0 ipaddr.js: 1.9.1 + dev: false - internal-slot@1.0.6: + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.3 - hasown: 2.0.0 - side-channel: 1.0.4 + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + dev: false - invariant@2.2.4: + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 + dev: false - ip-regex@2.1.0: {} - - ip@1.1.8: {} + /ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + dev: true - ip@2.0.0: {} + /ip-regex@2.1.0: + resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} + engines: {node: '>=4'} + dev: false - ipaddr.js@1.9.1: {} + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: false - is-arguments@1.1.1: + /is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-tostringtag: 1.0.2 + dev: false - is-array-buffer@3.0.4: + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.3 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: false - is-arrayish@0.2.1: {} + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: false - is-arrayish@0.3.2: {} + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false - is-async-function@2.0.0: + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: false - is-bigint@1.0.4: + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 + dev: false - is-binary-path@2.1.0: + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 + dev: false - is-boolean-object@1.1.2: + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-tostringtag: 1.0.2 + dev: false + + /is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: false - is-buffer@1.1.6: {} + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: false - is-callable@1.2.7: {} + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.2 - is-core-module@2.13.1: + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} dependencies: - hasown: 2.0.0 + is-typed-array: 1.1.13 + dev: false - is-date-object@1.0.5: + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: false - is-directory@0.3.1: {} + /is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + dev: false - is-docker@2.2.1: {} + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: false - is-extglob@1.0.0: {} + /is-extglob@1.0.0: + resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==} + engines: {node: '>=0.10.0'} + dev: false - is-extglob@2.1.1: {} + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} - is-finalizationregistry@1.0.2: + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 + dev: false - is-fullwidth-code-point@2.0.0: {} + /is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + dev: false - is-fullwidth-code-point@3.0.0: {} + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} - is-generator-function@1.0.10: + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: false - is-glob@2.0.1: + /is-glob@2.0.1: + resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==} + engines: {node: '>=0.10.0'} dependencies: is-extglob: 1.0.0 + dev: false - is-glob@4.0.3: + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - is-interactive@1.0.0: {} + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} - is-invalid-path@0.1.0: + /is-invalid-path@0.1.0: + resolution: {integrity: sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==} + engines: {node: '>=0.10.0'} dependencies: is-glob: 2.0.1 + dev: false - is-lower-case@1.1.3: + /is-lower-case@1.1.3: + resolution: {integrity: sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==} dependencies: lower-case: 1.1.4 + dev: true - is-map@2.0.2: {} + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + dev: false - is-negative-zero@2.0.2: {} + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + dev: false - is-number-object@1.0.7: + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: false - is-number@7.0.0: {} + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} - is-path-cwd@2.2.0: {} + /is-path-cwd@2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} - is-path-inside@3.0.3: {} + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} - is-plain-obj@1.1.0: {} + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: false - is-plain-object@2.0.4: + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 + dev: false - is-primitive@3.0.1: {} + /is-primitive@3.0.1: + resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} + engines: {node: '>=0.10.0'} + dev: false - is-regex@1.1.4: + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-tostringtag: 1.0.2 + dev: false - is-set@2.0.2: {} + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + dev: false - is-shared-array-buffer@1.0.2: + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 + dev: false - is-stream@1.1.0: {} + /is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: false - is-stream@2.0.1: {} + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} - is-string@1.0.7: + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 + dev: false - is-symbol@1.0.4: + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 + dev: false - is-typed-array@1.1.13: + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.14 + which-typed-array: 1.1.15 + dev: false - is-unicode-supported@0.1.0: {} + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} - is-upper-case@1.1.2: + /is-upper-case@1.1.2: + resolution: {integrity: sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==} dependencies: upper-case: 1.1.3 + dev: true - is-valid-path@0.1.1: + /is-valid-path@0.1.1: + resolution: {integrity: sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==} + engines: {node: '>=0.10.0'} dependencies: is-invalid-path: 0.1.0 + dev: false - is-weakmap@2.0.1: {} + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + dev: false - is-weakref@1.0.2: + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 + dev: false - is-weakset@2.0.2: + /is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.3 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: false - is-wsl@1.1.0: {} + /is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + dev: false - is-wsl@2.2.0: + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} dependencies: is-docker: 2.2.1 + dev: false - isarray@1.0.0: {} + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false - isarray@2.0.5: {} + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: false - isbinaryfile@4.0.10: {} + /isbinaryfile@4.0.10: + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} + engines: {node: '>= 8.0.0'} + dev: true - isexe@2.0.0: {} + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - iso-639-1@3.1.2: {} + /iso-639-1@3.1.2: + resolution: {integrity: sha512-Le7BRl3Jt9URvaiEHJCDEdvPZCfhiQoXnFgLAWNRhzFMwRFdWO7/5tLRQbiPzE394I9xd7KdRCM7S6qdOhwG5A==} + engines: {node: '>=6.0'} + dev: false - isobject@3.0.1: {} + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: false - iterate-object@1.3.4: {} + /iterate-object@1.3.4: + resolution: {integrity: sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==} + dev: false - iterator.prototype@1.1.2: + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} dependencies: define-properties: 1.2.1 - get-intrinsic: 1.2.3 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.4 - set-function-name: 2.0.1 + reflect.getprototypeof: 1.0.6 + set-function-name: 2.0.2 + dev: false - jackspeak@2.3.6: + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 + dev: false - jest-environment-node@29.7.0: + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.30 + '@types/node': 20.12.8 jest-mock: 29.7.0 jest-util: 29.7.0 + dev: false - jest-get-type@29.6.3: {} + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: false - jest-message-util@29.7.0: + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.2 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -13158,23 +9791,32 @@ snapshots: pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 + dev: false - jest-mock@29.7.0: + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.30 + '@types/node': 20.12.8 jest-util: 29.7.0 + dev: false - jest-util@29.7.0: + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.16 + '@types/node': 20.12.8 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 + dev: false - jest-validate@29.7.0: + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 camelcase: 6.3.0 @@ -13182,56 +9824,87 @@ snapshots: jest-get-type: 29.6.3 leven: 3.1.0 pretty-format: 29.7.0 + dev: false - jest-worker@29.7.0: + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.12.8 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 + dev: false - jimp-compact@0.16.1: {} + /jimp-compact@0.16.1: + resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} + dev: false - jiti@1.21.0: {} + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + dev: false - joi@17.12.1: + /joi@17.13.0: + resolution: {integrity: sha512-9qcrTyoBmFZRNHeVP4edKqIUEgFzq7MHvTNSDuHSqkpOPtiBkgNgcmTSqmiw1kw9tdKaiddvIDv/eCJDxmqWCA==} dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 '@sideway/address': 4.1.5 '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 + dev: false - join-component@1.1.0: {} + /join-component@1.1.0: + resolution: {integrity: sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==} + dev: false - js-tokens@4.0.0: {} + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true dependencies: argparse: 1.0.10 esprima: 4.0.1 + dev: false - js-yaml@4.1.0: + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true dependencies: argparse: 2.0.1 - jsc-android@250231.0.0: {} + /jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + dev: true + + /jsc-android@250231.0.0: + resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} + dev: false - jsc-safe-url@0.2.4: {} + /jsc-safe-url@0.2.4: + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + dev: false - jscodeshift@0.14.0(@babel/preset-env@7.23.9(@babel/core@7.23.9)): + /jscodeshift@0.14.0(@babel/preset-env@7.24.5): + resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 dependencies: - '@babel/core': 7.23.9 - '@babel/parser': 7.24.0 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.9) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) - '@babel/preset-env': 7.23.9(@babel/core@7.23.9) - '@babel/preset-flow': 7.23.3(@babel/core@7.23.9) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.9) - '@babel/register': 7.23.7(@babel/core@7.23.9) - babel-core: 7.0.0-bridge.0(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) + '@babel/preset-env': 7.24.5(@babel/core@7.24.5) + '@babel/preset-flow': 7.24.1(@babel/core@7.24.5) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.5) + '@babel/register': 7.23.7(@babel/core@7.24.5) + babel-core: 7.0.0-bridge.0(@babel/core@7.24.5) chalk: 4.1.2 flow-parser: 0.206.0 graceful-fs: 4.2.11 @@ -13243,16 +9916,27 @@ snapshots: write-file-atomic: 2.4.3 transitivePeerDependencies: - supports-color + dev: false - jsesc@0.5.0: {} + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true - jsesc@2.5.2: {} + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true - json-buffer@3.0.1: {} + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - json-parse-better-errors@1.0.2: {} + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: false - json-schema-deref-sync@0.13.0: + /json-schema-deref-sync@0.13.0: + resolution: {integrity: sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==} + engines: {node: '>=6.0.0'} dependencies: clone: 2.1.2 dag-map: 1.0.2 @@ -13260,120 +9944,262 @@ snapshots: lodash: 4.17.21 md5: 2.2.1 memory-cache: 0.2.0 - traverse: 0.6.8 + traverse: 0.6.9 valid-url: 1.0.9 + dev: false - json-schema-traverse@0.4.1: {} + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - json-schema-traverse@1.0.0: {} + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: false - json-stable-stringify-without-jsonify@1.0.1: {} + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json5@1.0.2: + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true dependencies: minimist: 1.2.8 + dev: false - json5@2.2.3: {} + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true - jsonfile@4.0.0: + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 + dev: false - jsonfile@6.1.0: + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 - jsx-ast-utils@3.3.5: + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flat: 1.3.2 object.assign: 4.1.5 - object.values: 1.1.7 + object.values: 1.2.0 + dev: false - keymirror@0.1.1: {} + /keymirror@0.1.1: + resolution: {integrity: sha512-vIkZAFWoDijgQT/Nvl2AHCMmnegN2ehgTPYuyy2hWQkQSntI0S7ESYqdLkoSe1HyEBFHHkCgSIvVdSEiWwKvCg==} + dev: false - keyv@4.5.4: + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 - kind-of@6.0.3: {} + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: false - kleur@3.0.3: {} + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: false - language-subtag-registry@0.3.22: {} + /language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + dev: false - language-tags@1.0.9: + /language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} dependencies: language-subtag-registry: 0.3.22 + dev: false - leven@3.1.0: {} + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: false - levn@0.4.1: + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - lighthouse-logger@1.4.2: + /lighthouse-logger@1.4.2: + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} dependencies: debug: 2.6.9 marky: 1.2.5 transitivePeerDependencies: - supports-color + dev: false - lightningcss-darwin-arm64@1.19.0: + /lightningcss-darwin-arm64@1.19.0: + resolution: {integrity: sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false optional: true - lightningcss-darwin-arm64@1.22.0: + /lightningcss-darwin-arm64@1.22.0: + resolution: {integrity: sha512-aH2be3nNny+It5YEVm8tBSSdRlBVWQV8m2oJ7dESiYRzyY/E/bQUe2xlw5caaMuhlM9aoTMtOH25yzMhir0qPg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false optional: true - lightningcss-darwin-x64@1.19.0: + /lightningcss-darwin-x64@1.19.0: + resolution: {integrity: sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false optional: true - lightningcss-darwin-x64@1.22.0: + /lightningcss-darwin-x64@1.22.0: + resolution: {integrity: sha512-9KHRFA0Y6mNxRHeoQMp0YaI0R0O2kOgUlYPRjuasU4d+pI8NRhVn9bt0yX9VPs5ibWX1RbDViSPtGJvYYrfVAQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false optional: true - lightningcss-freebsd-x64@1.22.0: + /lightningcss-freebsd-x64@1.22.0: + resolution: {integrity: sha512-xaYL3xperGwD85rQioDb52ozF3NAJb+9wrge3jD9lxGffplu0Mn35rXMptB8Uc2N9Mw1i3Bvl7+z1evlqVl7ww==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false optional: true - lightningcss-linux-arm-gnueabihf@1.19.0: + /lightningcss-linux-arm-gnueabihf@1.19.0: + resolution: {integrity: sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false optional: true - lightningcss-linux-arm-gnueabihf@1.22.0: + /lightningcss-linux-arm-gnueabihf@1.22.0: + resolution: {integrity: sha512-epQGvXIjOuxrZpMpMnRjK54ZqzhiHhCPLtHvw2fb6NeK2kK9YtF0wqmeTBiQ1AkbWfnnXGTstYaFNiadNK+StQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false optional: true - lightningcss-linux-arm64-gnu@1.19.0: + /lightningcss-linux-arm64-gnu@1.19.0: + resolution: {integrity: sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - lightningcss-linux-arm64-gnu@1.22.0: + /lightningcss-linux-arm64-gnu@1.22.0: + resolution: {integrity: sha512-AArGtKSY4DGTA8xP8SDyNyKtpsUl1Rzq6FW4JomeyUQ4nBrR71uPChksTpj3gmWuGhZeRKLeCUI1DBid/zhChg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - lightningcss-linux-arm64-musl@1.19.0: + /lightningcss-linux-arm64-musl@1.19.0: + resolution: {integrity: sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - lightningcss-linux-arm64-musl@1.22.0: + /lightningcss-linux-arm64-musl@1.22.0: + resolution: {integrity: sha512-RRraNgP8hnBPhInTTUdlFm+z16C/ghbxBG51Sw00hd7HUyKmEUKRozyc5od+/N6pOrX/bIh5vIbtMXIxsos0lg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - lightningcss-linux-x64-gnu@1.19.0: + /lightningcss-linux-x64-gnu@1.19.0: + resolution: {integrity: sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - lightningcss-linux-x64-gnu@1.22.0: + /lightningcss-linux-x64-gnu@1.22.0: + resolution: {integrity: sha512-grdrhYGRi2KrR+bsXJVI0myRADqyA7ekprGxiuK5QRNkv7kj3Yq1fERDNyzZvjisHwKUi29sYMClscbtl+/Zpw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - lightningcss-linux-x64-musl@1.19.0: + /lightningcss-linux-x64-musl@1.19.0: + resolution: {integrity: sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - lightningcss-linux-x64-musl@1.22.0: + /lightningcss-linux-x64-musl@1.22.0: + resolution: {integrity: sha512-t5f90X+iQUtIyR56oXIHMBUyQFX/zwmPt72E6Dane3P8KNGlkijTg2I75XVQS860gNoEFzV7Mm5ArRRA7u5CAQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false optional: true - lightningcss-win32-x64-msvc@1.19.0: + /lightningcss-win32-x64-msvc@1.19.0: + resolution: {integrity: sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false optional: true - lightningcss-win32-x64-msvc@1.22.0: + /lightningcss-win32-x64-msvc@1.22.0: + resolution: {integrity: sha512-64HTDtOOZE9PUCZJiZZQpyqXBbdby1lnztBccnqh+NtbKxjnGzP92R2ngcgeuqMPecMNqNWxgoWgTGpC+yN5Sw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false optional: true - lightningcss@1.19.0: + /lightningcss@1.19.0: + resolution: {integrity: sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==} + engines: {node: '>= 12.0.0'} dependencies: detect-libc: 1.0.3 optionalDependencies: @@ -13385,8 +10211,11 @@ snapshots: lightningcss-linux-x64-gnu: 1.19.0 lightningcss-linux-x64-musl: 1.19.0 lightningcss-win32-x64-msvc: 1.19.0 + dev: false - lightningcss@1.22.0: + /lightningcss@1.22.0: + resolution: {integrity: sha512-+z0qvwRVzs4XGRXelnWRNwqsXUx8k3bSkbP8vD42kYKSk3z9OM2P3e/gagT7ei/gwh8DTS80LZOFZV6lm8Z8Fg==} + engines: {node: '>= 12.0.0'} dependencies: detect-libc: 1.0.3 optionalDependencies: @@ -13399,184 +10228,296 @@ snapshots: lightningcss-linux-x64-gnu: 1.22.0 lightningcss-linux-x64-musl: 1.22.0 lightningcss-win32-x64-msvc: 1.22.0 + dev: false - lilconfig@2.1.0: {} + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: false - lilconfig@3.1.1: {} + /lilconfig@3.1.1: + resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} + engines: {node: '>=14'} + dev: false - lines-and-columns@1.2.4: {} + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: false - linkify-it@2.2.0: + /linkify-it@2.2.0: + resolution: {integrity: sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==} dependencies: uc.micro: 1.0.6 + dev: false - locate-path@3.0.0: + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} dependencies: p-locate: 3.0.0 path-exists: 3.0.0 - locate-path@5.0.0: + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} dependencies: p-locate: 4.1.0 + dev: false - locate-path@6.0.0: + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - lodash.debounce@4.0.8: {} + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - lodash.get@4.4.2: {} + /lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: true - lodash.merge@4.6.2: {} + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.mergewith@4.6.2: {} + /lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + dev: false - lodash.throttle@4.1.1: {} + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + dev: false - lodash.truncate@4.4.2: {} + /lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: false - lodash@4.17.21: {} + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - log-symbols@2.2.0: + /log-symbols@2.2.0: + resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} + engines: {node: '>=4'} dependencies: chalk: 2.4.2 + dev: false - log-symbols@3.0.0: + /log-symbols@3.0.0: + resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} + engines: {node: '>=8'} dependencies: chalk: 2.4.2 + dev: true - log-symbols@4.1.0: + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - logkitty@0.7.1: + /logkitty@0.7.1: + resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} + hasBin: true dependencies: ansi-fragments: 0.2.1 - dayjs: 1.11.10 + dayjs: 1.11.11 yargs: 15.4.1 + dev: false - loose-envify@1.4.0: + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true dependencies: js-tokens: 4.0.0 + dev: false - lower-case-first@1.0.2: + /lower-case-first@1.0.2: + resolution: {integrity: sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==} dependencies: lower-case: 1.1.4 + dev: true - lower-case@1.1.4: {} + /lower-case@1.1.4: + resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} + dev: true - lru-cache@10.2.0: {} + /lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} + engines: {node: 14 || >=16.14} - lru-cache@5.1.1: + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 - lru-cache@6.0.0: + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} dependencies: yallist: 4.0.0 - lru-cache@7.18.3: {} + /lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + dev: true - make-dir@2.1.0: + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} dependencies: pify: 4.0.1 semver: 5.7.2 + dev: false - make-dir@3.1.0: + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} dependencies: semver: 6.3.1 + dev: false - make-error@1.3.6: {} + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true - makeerror@1.0.12: + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 + dev: false - markdown-it@10.0.0: + /markdown-it@10.0.0: + resolution: {integrity: sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==} + hasBin: true dependencies: argparse: 1.0.10 entities: 2.0.3 linkify-it: 2.2.0 mdurl: 1.0.1 uc.micro: 1.0.6 + dev: false - marky@1.2.5: {} + /marky@1.2.5: + resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} + dev: false - md5-file@3.2.3: + /md5-file@3.2.3: + resolution: {integrity: sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==} + engines: {node: '>=0.10'} + hasBin: true dependencies: buffer-alloc: 1.2.0 + dev: false - md5.js@1.3.5: + /md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} dependencies: hash-base: 3.1.0 inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false - md5@2.2.1: + /md5@2.2.1: + resolution: {integrity: sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==} dependencies: charenc: 0.0.2 crypt: 0.0.2 is-buffer: 1.1.6 + dev: false - md5@2.3.0: + /md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} dependencies: charenc: 0.0.2 crypt: 0.0.2 is-buffer: 1.1.6 + dev: false - md5hex@1.0.0: {} + /md5hex@1.0.0: + resolution: {integrity: sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ==} + dev: false - mdn-data@2.0.14: {} + /mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: false - mdurl@1.0.1: {} + /mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + dev: false - memoize-one@5.2.1: {} + /memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + dev: false - memoize-one@6.0.0: {} + /memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + dev: false - memory-cache@0.2.0: {} + /memory-cache@0.2.0: + resolution: {integrity: sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==} + dev: false - merge-stream@2.0.0: {} + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: {} + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} - metro-babel-transformer@0.80.5: + /metro-babel-transformer@0.80.8: + resolution: {integrity: sha512-TTzNwRZb2xxyv4J/+yqgtDAP2qVqH3sahsnFu6Xv4SkLqzrivtlnyUbaeTdJ9JjtADJUEjCbgbFgUVafrXdR9Q==} + engines: {node: '>=18'} dependencies: - '@babel/core': 7.23.9 - hermes-parser: 0.18.2 + '@babel/core': 7.24.5 + hermes-parser: 0.20.1 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color + dev: false - metro-cache-key@0.80.5: {} + /metro-cache-key@0.80.8: + resolution: {integrity: sha512-qWKzxrLsRQK5m3oH8ePecqCc+7PEhR03cJE6Z6AxAj0idi99dHOSitTmY0dclXVB9vP2tQIAE8uTd8xkYGk8fA==} + engines: {node: '>=18'} + dev: false - metro-cache@0.80.5: + /metro-cache@0.80.8: + resolution: {integrity: sha512-5svz+89wSyLo7BxdiPDlwDTgcB9kwhNMfNhiBZPNQQs1vLFXxOkILwQiV5F2EwYT9DEr6OPZ0hnJkZfRQ8lDYQ==} + engines: {node: '>=18'} dependencies: - metro-core: 0.80.5 + metro-core: 0.80.8 rimraf: 3.0.2 + dev: false - metro-config@0.80.5: + /metro-config@0.80.8: + resolution: {integrity: sha512-VGQJpfJawtwRzGzGXVUoohpIkB0iPom4DmSbAppKfumdhtLA8uVeEPp2GM61kL9hRvdbMhdWA7T+hZFDlo4mJA==} + engines: {node: '>=18'} dependencies: connect: 3.7.0 cosmiconfig: 5.2.1 jest-validate: 29.7.0 - metro: 0.80.5 - metro-cache: 0.80.5 - metro-core: 0.80.5 - metro-runtime: 0.80.5 + metro: 0.80.8 + metro-cache: 0.80.8 + metro-core: 0.80.8 + metro-runtime: 0.80.8 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate + dev: false - metro-core@0.80.5: + /metro-core@0.80.8: + resolution: {integrity: sha512-g6lud55TXeISRTleW6SHuPFZHtYrpwNqbyFIVd9j9Ofrb5IReiHp9Zl8xkAfZQp8v6ZVgyXD7c130QTsCz+vBw==} + engines: {node: '>=18'} dependencies: lodash.throttle: 4.1.1 - metro-resolver: 0.80.5 + metro-resolver: 0.80.8 + dev: false - metro-file-map@0.80.5: + /metro-file-map@0.80.8: + resolution: {integrity: sha512-eQXMFM9ogTfDs2POq7DT2dnG7rayZcoEgRbHPXvhUWkVwiKkro2ngcBE++ck/7A36Cj5Ljo79SOkYwHaWUDYDw==} + engines: {node: '>=18'} dependencies: anymatch: 3.1.3 debug: 2.6.9 @@ -13592,80 +10533,106 @@ snapshots: fsevents: 2.3.3 transitivePeerDependencies: - supports-color + dev: false - metro-minify-terser@0.80.5: + /metro-minify-terser@0.80.8: + resolution: {integrity: sha512-y8sUFjVvdeUIINDuW1sejnIjkZfEF+7SmQo0EIpYbWmwh+kq/WMj74yVaBWuqNjirmUp1YNfi3alT67wlbBWBQ==} + engines: {node: '>=18'} dependencies: - terser: 5.27.0 + terser: 5.31.0 + dev: false - metro-resolver@0.80.5: {} + /metro-resolver@0.80.8: + resolution: {integrity: sha512-JdtoJkP27GGoZ2HJlEsxs+zO7jnDUCRrmwXJozTlIuzLHMRrxgIRRby9fTCbMhaxq+iA9c+wzm3iFb4NhPmLbQ==} + engines: {node: '>=18'} + dev: false - metro-runtime@0.80.5: + /metro-runtime@0.80.8: + resolution: {integrity: sha512-2oScjfv6Yb79PelU1+p8SVrCMW9ZjgEiipxq7jMRn8mbbtWzyv3g8Mkwr+KwOoDFI/61hYPUbY8cUnu278+x1g==} + engines: {node: '>=18'} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 + dev: false - metro-source-map@0.80.5: + /metro-source-map@0.80.8: + resolution: {integrity: sha512-+OVISBkPNxjD4eEKhblRpBf463nTMk3KMEeYS8Z4xM/z3qujGJGSsWUGRtH27+c6zElaSGtZFiDMshEb8mMKQg==} + engines: {node: '>=18'} dependencies: - '@babel/traverse': 7.23.9 - '@babel/types': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 invariant: 2.2.4 - metro-symbolicate: 0.80.5 + metro-symbolicate: 0.80.8 nullthrows: 1.1.1 - ob1: 0.80.5 + ob1: 0.80.8 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color + dev: false - metro-symbolicate@0.80.5: + /metro-symbolicate@0.80.8: + resolution: {integrity: sha512-nwhYySk79jQhwjL9QmOUo4wS+/0Au9joEryDWw7uj4kz2yvw1uBjwmlql3BprQCBzRdB3fcqOP8kO8Es+vE31g==} + engines: {node: '>=18'} + hasBin: true dependencies: invariant: 2.2.4 - metro-source-map: 0.80.5 + metro-source-map: 0.80.8 nullthrows: 1.1.1 source-map: 0.5.7 through2: 2.0.5 vlq: 1.0.1 transitivePeerDependencies: - supports-color + dev: false - metro-transform-plugins@0.80.5: + /metro-transform-plugins@0.80.8: + resolution: {integrity: sha512-sSu8VPL9Od7w98MftCOkQ1UDeySWbsIAS5I54rW22BVpPnI3fQ42srvqMLaJUQPjLehUanq8St6OMBCBgH/UWw==} + engines: {node: '>=18'} dependencies: - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 '@babel/template': 7.24.0 - '@babel/traverse': 7.23.9 + '@babel/traverse': 7.24.5 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color + dev: false - metro-transform-worker@0.80.5: - dependencies: - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - metro: 0.80.5 - metro-babel-transformer: 0.80.5 - metro-cache: 0.80.5 - metro-cache-key: 0.80.5 - metro-minify-terser: 0.80.5 - metro-source-map: 0.80.5 - metro-transform-plugins: 0.80.5 + /metro-transform-worker@0.80.8: + resolution: {integrity: sha512-+4FG3TQk3BTbNqGkFb2uCaxYTfsbuFOCKMMURbwu0ehCP8ZJuTUramkaNZoATS49NSAkRgUltgmBa4YaKZ5mqw==} + engines: {node: '>=18'} + dependencies: + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + metro: 0.80.8 + metro-babel-transformer: 0.80.8 + metro-cache: 0.80.8 + metro-cache-key: 0.80.8 + metro-minify-terser: 0.80.8 + metro-source-map: 0.80.8 + metro-transform-plugins: 0.80.8 nullthrows: 1.1.1 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate + dev: false - metro@0.80.5: + /metro@0.80.8: + resolution: {integrity: sha512-in7S0W11mg+RNmcXw+2d9S3zBGmCARDxIwoXJAmLUQOQoYsRP3cpGzyJtc7WOw8+FXfpgXvceD0u+PZIHXEL7g==} + engines: {node: '>=18'} + hasBin: true dependencies: - '@babel/code-frame': 7.23.5 - '@babel/core': 7.23.9 - '@babel/generator': 7.23.6 - '@babel/parser': 7.23.9 + '@babel/code-frame': 7.24.2 + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/parser': 7.24.5 '@babel/template': 7.24.0 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 accepts: 1.3.8 chalk: 4.1.2 ci-info: 2.0.0 @@ -13674,24 +10641,24 @@ snapshots: denodeify: 1.2.1 error-stack-parser: 2.1.4 graceful-fs: 4.2.11 - hermes-parser: 0.18.2 + hermes-parser: 0.20.1 image-size: 1.1.1 invariant: 2.2.4 jest-worker: 29.7.0 jsc-safe-url: 0.2.4 lodash.throttle: 4.1.1 - metro-babel-transformer: 0.80.5 - metro-cache: 0.80.5 - metro-cache-key: 0.80.5 - metro-config: 0.80.5 - metro-core: 0.80.5 - metro-file-map: 0.80.5 - metro-resolver: 0.80.5 - metro-runtime: 0.80.5 - metro-source-map: 0.80.5 - metro-symbolicate: 0.80.5 - metro-transform-plugins: 0.80.5 - metro-transform-worker: 0.80.5 + metro-babel-transformer: 0.80.8 + metro-cache: 0.80.8 + metro-cache-key: 0.80.8 + metro-config: 0.80.8 + metro-core: 0.80.8 + metro-file-map: 0.80.8 + metro-resolver: 0.80.8 + metro-runtime: 0.80.8 + metro-source-map: 0.80.8 + metro-symbolicate: 0.80.8 + metro-transform-plugins: 0.80.8 + metro-transform-worker: 0.80.8 mime-types: 2.1.35 node-fetch: 2.7.0 nullthrows: 1.1.1 @@ -13707,165 +10674,308 @@ snapshots: - encoding - supports-color - utf-8-validate + dev: false - micromatch@4.0.5: + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 - miller-rabin@4.0.1: + /miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true dependencies: bn.js: 4.12.0 brorand: 1.1.0 + dev: false - mime-db@1.52.0: {} + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false - mime-types@2.1.35: + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 + dev: false - mime@1.6.0: {} + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: false - mime@2.6.0: {} + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: false - mimic-fn@1.2.0: {} + /mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + dev: false - mimic-fn@2.1.0: {} + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} - min-indent@1.0.1: {} + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: false - minimalistic-assert@1.0.1: {} + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: false - minimalistic-crypto-utils@1.0.1: {} + /minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: false - minimatch@3.1.2: + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - minimatch@5.1.6: + /minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 + dev: true - minimatch@9.0.3: + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - minimatch@9.0.4: + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - minimist@1.2.8: {} + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass-collect@1.0.2: + /minipass-collect@1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} dependencies: minipass: 3.3.6 + dev: false - minipass-flush@1.0.5: + /minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} dependencies: minipass: 3.3.6 + dev: false - minipass-pipeline@1.2.4: + /minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} dependencies: minipass: 3.3.6 + dev: false - minipass@3.3.6: + /minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} dependencies: yallist: 4.0.0 + dev: false - minipass@5.0.0: {} + /minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + dev: true + + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + dev: false - minipass@7.0.4: {} + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: + /minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} dependencies: minipass: 3.3.6 yallist: 4.0.0 + dev: false - mkdirp@0.5.6: + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true dependencies: minimist: 1.2.8 - mkdirp@1.0.4: {} + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: false - moti@0.27.5(react-dom@18.2.0(react@18.2.0))(react-native-reanimated@3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react@18.2.0): + /moti@0.27.5(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react@18.2.0): + resolution: {integrity: sha512-6PbHgNTzSyipTon57TBm5w3/cKKMZVugq/Ey2YLbZbMLxsmL4uz6zGO0uBcZWkKaVqm9O8LcK+WdGMyNiR2yrg==} + peerDependencies: + react-native-reanimated: '*' dependencies: - framer-motion: 6.5.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react-native-reanimated: 3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + framer-motion: 6.5.1(react-dom@18.2.0)(react@18.2.0) + react-native-reanimated: 3.6.3(@babel/core@7.24.5)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6)(@babel/plugin-proposal-optional-chaining@7.21.0)(@babel/plugin-transform-arrow-functions@7.24.1)(@babel/plugin-transform-shorthand-properties@7.24.1)(@babel/plugin-transform-template-literals@7.24.1)(react-native@0.73.6)(react@18.2.0) transitivePeerDependencies: - react - react-dom + dev: false - mrmime@1.0.1: {} + /mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: false - ms@2.0.0: {} + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: false - ms@2.1.2: {} + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: {} + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: false - mute-stream@0.0.8: {} + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true - mv@2.1.1: + /mv@2.1.1: + resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} + engines: {node: '>=0.8.0'} + requiresBuild: true dependencies: mkdirp: 0.5.6 ncp: 2.0.0 rimraf: 2.4.5 + dev: false optional: true - mz@2.7.0: + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 + dev: false - nanoid@3.3.7: {} + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: false - natural-compare@1.4.0: {} + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - ncp@2.0.0: + /ncp@2.0.0: + resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} + hasBin: true + requiresBuild: true + dev: false optional: true - negotiator@0.6.3: {} + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: false - neo-async@2.6.2: {} + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - nested-error-stacks@2.0.1: {} + /nested-error-stacks@2.0.1: + resolution: {integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==} + dev: false - netmask@2.0.2: {} + /netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} + dev: true - nice-try@1.0.5: {} + /nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + dev: false - no-case@2.3.2: + /no-case@2.3.2: + resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} dependencies: lower-case: 1.1.4 + dev: true - nocache@3.0.4: {} + /nocache@3.0.4: + resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} + engines: {node: '>=12.0.0'} + dev: false - node-abort-controller@3.1.1: {} + /node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + dev: false - node-dir@0.1.17: + /node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} dependencies: minimatch: 3.1.2 + dev: false - node-domexception@1.0.0: {} + /node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: false - node-fetch@2.7.0: + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true dependencies: whatwg-url: 5.0.0 + dev: false - node-fetch@3.3.2: + /node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: data-uri-to-buffer: 4.0.1 fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 + dev: false - node-forge@1.3.1: {} + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + dev: false - node-int64@0.4.0: {} + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: false - node-plop@0.26.3: + /node-plop@0.26.3: + resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==} + engines: {node: '>=8.9.4'} dependencies: - '@babel/runtime-corejs3': 7.23.9 + '@babel/runtime-corejs3': 7.24.5 '@types/inquirer': 6.5.0 change-case: 3.1.0 del: 5.1.0 @@ -13876,134 +10986,217 @@ snapshots: lodash.get: 4.4.2 mkdirp: 0.5.6 resolve: 1.22.8 + dev: true - node-releases@2.0.14: {} + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - node-stream-zip@1.15.0: {} + /node-stream-zip@1.15.0: + resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} + engines: {node: '>=0.12.0'} + dev: false - normalize-path@3.0.0: {} + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: false - normalize-url@2.0.1: + /normalize-url@2.0.1: + resolution: {integrity: sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==} + engines: {node: '>=4'} dependencies: prepend-http: 2.0.0 query-string: 5.1.1 sort-keys: 2.0.0 + dev: false - npm-package-arg@7.0.0: + /npm-package-arg@7.0.0: + resolution: {integrity: sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==} dependencies: hosted-git-info: 3.0.8 osenv: 0.1.5 semver: 5.7.2 validate-npm-package-name: 3.0.0 + dev: false - npm-run-path@2.0.2: + /npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} dependencies: path-key: 2.0.1 + dev: false - npm-run-path@4.0.1: + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} dependencies: path-key: 3.1.1 - nth-check@2.1.1: + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: boolbase: 1.0.0 + dev: false - nullthrows@1.1.1: {} + /nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + dev: false - ob1@0.80.5: {} + /ob1@0.80.8: + resolution: {integrity: sha512-QHJQk/lXMmAW8I7AIM3in1MSlwe1umR72Chhi8B7Xnq6mzjhBKkA6Fy/zAhQnGkA4S912EPCEvTij5yh+EQTAA==} + engines: {node: '>=18'} + dev: false - object-assign@4.1.1: {} + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: false - object-hash@3.0.0: {} + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: false - object-inspect@1.13.1: {} + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: false - object-keys@1.1.1: {} + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: false - object.assign@4.1.5: + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 + dev: false - object.entries@1.1.7: + /object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 + dev: false - object.fromentries@2.0.7: + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: false - object.groupby@1.0.1: + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.3 + es-abstract: 1.23.3 + dev: false - object.hasown@1.1.3: + /object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: false - object.values@1.1.7: + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 + dev: false - on-finished@2.3.0: + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 + dev: false - on-finished@2.4.1: + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 + dev: false - on-headers@1.0.2: {} + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: false - once@1.4.0: + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - onetime@2.0.1: + /onetime@2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} dependencies: mimic-fn: 1.2.0 + dev: false - onetime@5.1.2: + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - open@6.4.0: + /open@6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} dependencies: is-wsl: 1.1.0 + dev: false - open@7.4.2: + /open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} dependencies: is-docker: 2.2.1 is-wsl: 2.2.0 + dev: false - open@8.4.2: + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 + dev: false - optionator@0.9.3: + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + word-wrap: 1.2.5 - ora@3.4.0: + /ora@3.4.0: + resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} + engines: {node: '>=6'} dependencies: chalk: 2.4.2 cli-cursor: 2.1.0 @@ -14011,8 +11204,11 @@ snapshots: log-symbols: 2.2.0 strip-ansi: 5.2.0 wcwidth: 1.0.1 + dev: false - ora@4.1.1: + /ora@4.1.1: + resolution: {integrity: sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==} + engines: {node: '>=8'} dependencies: chalk: 3.0.0 cli-cursor: 3.1.0 @@ -14022,8 +11218,11 @@ snapshots: mute-stream: 0.0.8 strip-ansi: 6.0.1 wcwidth: 1.0.1 + dev: true - ora@5.4.1: + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} dependencies: bl: 4.1.0 chalk: 4.1.2 @@ -14035,438 +11234,761 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 - os-homedir@1.0.2: {} + /os-homedir@1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + dev: false - os-tmpdir@1.0.2: {} + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} - osenv@0.1.5: + /osenv@0.1.5: + resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} dependencies: os-homedir: 1.0.2 os-tmpdir: 1.0.2 + dev: false - p-finally@1.0.0: {} + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: false - p-limit@2.3.0: + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} dependencies: p-try: 2.2.0 - p-limit@3.1.0: + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - p-locate@3.0.0: + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} dependencies: p-limit: 2.3.0 - p-locate@4.1.0: + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} dependencies: p-limit: 2.3.0 + dev: false - p-locate@5.0.0: + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - p-map@3.0.0: + /p-map@3.0.0: + resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} + engines: {node: '>=8'} dependencies: aggregate-error: 3.1.0 + dev: true - p-map@4.0.0: + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 + dev: false - p-try@2.2.0: {} + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} - pac-proxy-agent@7.0.1: + /pac-proxy-agent@7.0.1: + resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==} + engines: {node: '>= 14'} dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.0 + agent-base: 7.1.1 debug: 4.3.4 - get-uri: 6.0.2 - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 - pac-resolver: 7.0.0 - socks-proxy-agent: 8.0.2 + get-uri: 6.0.3 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.3 transitivePeerDependencies: - supports-color + dev: true - pac-resolver@7.0.0: + /pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} dependencies: degenerator: 5.0.1 - ip: 1.1.8 netmask: 2.0.2 + dev: true - param-case@2.1.1: + /param-case@2.1.1: + resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} dependencies: no-case: 2.3.2 + dev: true - parent-module@1.0.1: + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} dependencies: callsites: 3.1.0 - parse-asn1@5.1.6: + /parse-asn1@5.1.7: + resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} + engines: {node: '>= 0.10'} dependencies: - asn1.js: 5.4.1 + asn1.js: 4.10.1 browserify-aes: 1.2.0 evp_bytestokey: 1.0.3 + hash-base: 3.0.4 pbkdf2: 3.1.2 safe-buffer: 5.2.1 + dev: false - parse-hls@1.0.7: {} + /parse-hls@1.0.7: + resolution: {integrity: sha512-tnAK2nXe8J/Jf66SwY2cUAKKXInLR9hkNhTtcS7t6J4CgkG8LGBfC1GuuXg7kLLbIQLXpVhZrY/tfyhDbqfzwg==} + dev: false - parse-json@4.0.0: + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} dependencies: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 + dev: false - parse-png@2.1.0: + /parse-png@2.1.0: + resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==} + engines: {node: '>=10'} dependencies: pngjs: 3.4.0 + dev: false - parse5-htmlparser2-tree-adapter@7.0.0: + /parse5-htmlparser2-tree-adapter@7.0.0: + resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} dependencies: domhandler: 5.0.3 parse5: 7.1.2 + dev: false - parse5@7.1.2: + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 + dev: false - parseurl@1.3.3: {} + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: false - pascal-case@2.0.1: + /pascal-case@2.0.1: + resolution: {integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==} dependencies: camel-case: 3.0.0 upper-case-first: 1.1.2 + dev: true - password-prompt@1.1.3: + /password-prompt@1.1.3: + resolution: {integrity: sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==} dependencies: ansi-escapes: 4.3.2 cross-spawn: 7.0.3 + dev: false - path-case@2.1.1: + /path-case@2.1.1: + resolution: {integrity: sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==} dependencies: no-case: 2.3.2 + dev: true - path-exists@3.0.0: {} + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} - path-exists@4.0.0: {} + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} - path-is-absolute@1.0.1: {} + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} - path-key@2.0.1: {} + /path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + dev: false - path-key@3.1.1: {} + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} - path-parse@1.0.7: {} + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.10.2: + /path-scurry@1.10.2: + resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 10.2.0 + lru-cache: 10.2.2 minipass: 7.0.4 - path-type@4.0.0: {} + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} - pbkdf2@3.1.2: + /pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} dependencies: create-hash: 1.2.0 create-hmac: 1.1.7 ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 + dev: false - performant-array-to-tree@1.11.0: {} + /performant-array-to-tree@1.11.0: + resolution: {integrity: sha512-YwCqIDvnaebXaKuKQhI5yJD6ryDc3FxvoeX/5ougXTKDUWb7s5S2BuBgIyftCa4sBe1+ZU5Kmi4RJy+pjjjrpw==} + dev: false - picocolors@1.0.0: {} + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - picomatch@2.3.1: {} + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} - picomatch@3.0.1: {} + /picomatch@3.0.1: + resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} + engines: {node: '>=10'} + dev: false - pify@2.3.0: {} + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: false - pify@4.0.1: {} + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: false - pirates@4.0.6: {} + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: false - pkg-dir@3.0.0: + /pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} dependencies: find-up: 3.0.0 + dev: false - pkg-dir@4.2.0: + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} dependencies: find-up: 4.1.0 + dev: false - pkg-up@3.1.0: + /pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} dependencies: find-up: 3.0.0 + dev: true - plist@3.1.0: + /plist@3.1.0: + resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} + engines: {node: '>=10.4.0'} dependencies: '@xmldom/xmldom': 0.8.10 base64-js: 1.5.1 xmlbuilder: 15.1.1 + dev: false - pngjs@3.4.0: {} + /pngjs@3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + dev: false - popmotion@11.0.3: + /popmotion@11.0.3: + resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} dependencies: framesync: 6.0.1 hey-listen: 1.0.8 style-value-types: 5.0.0 tslib: 2.6.2 + dev: false + + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + dev: false - postcss-import@15.1.0(postcss@8.4.38): + /postcss-import@15.1.0(postcss@8.4.38): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 dependencies: postcss: 8.4.38 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 + dev: false - postcss-js@4.0.1(postcss@8.4.38): + /postcss-js@4.0.1(postcss@8.4.38): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 postcss: 8.4.38 + dev: false - postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.4.8(@swc/helpers@0.5.6))(@types/node@20.12.7)(typescript@5.4.3)): + /postcss-load-config@4.0.2(postcss@8.4.38): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true dependencies: lilconfig: 3.1.1 - yaml: 2.4.1 - optionalDependencies: postcss: 8.4.38 - ts-node: 10.9.2(@swc/core@1.4.8(@swc/helpers@0.5.6))(@types/node@20.12.7)(typescript@5.4.3) + yaml: 2.4.2 + dev: false - postcss-nested@6.0.1(postcss@8.4.38): + /postcss-nested@6.0.1(postcss@8.4.38): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 dependencies: postcss: 8.4.38 postcss-selector-parser: 6.0.16 + dev: false - postcss-selector-parser@6.0.16: + /postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} + engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 + dev: false - postcss-value-parser@4.2.0: {} - - postcss@8.4.33: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - - postcss@8.4.36: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.1.0 + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: false - postcss@8.4.38: + /postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.2.0 + dev: false - prelude-ls@1.2.1: {} + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} - prepend-http@2.0.0: {} + /prepend-http@2.0.0: + resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} + engines: {node: '>=4'} + dev: false - prettier-plugin-tailwindcss@0.5.11(@ianvs/prettier-plugin-sort-imports@4.1.1(prettier@3.2.4))(prettier@3.2.4): + /prettier-plugin-tailwindcss@0.5.14(@ianvs/prettier-plugin-sort-imports@4.2.1)(prettier@3.2.5): + resolution: {integrity: sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig-melody': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig-melody': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true dependencies: - prettier: 3.2.4 - optionalDependencies: - '@ianvs/prettier-plugin-sort-imports': 4.1.1(prettier@3.2.4) + '@ianvs/prettier-plugin-sort-imports': 4.2.1(prettier@3.2.5) + prettier: 3.2.5 + dev: false - prettier@2.8.8: {} + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: false - prettier@3.2.4: {} + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true - pretty-bytes@5.6.0: {} + /pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + dev: false - pretty-format@26.6.2: + /pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} dependencies: '@jest/types': 26.6.2 ansi-regex: 5.0.1 ansi-styles: 4.3.0 react-is: 17.0.2 + dev: false - pretty-format@29.7.0: + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 18.2.0 + react-is: 18.3.1 + dev: false - process-nextick-args@2.0.1: {} + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false - progress@2.0.3: {} + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: false - promise-inflight@1.0.1: {} + /promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dev: false - promise@7.3.1: + /promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} dependencies: asap: 2.0.6 + dev: false - promise@8.3.0: + /promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} dependencies: asap: 2.0.6 + dev: false - prompts@2.4.2: + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 + dev: false - prop-types@15.8.1: + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 + dev: false - proxy-agent@6.3.1: + /proxy-agent@6.4.0: + resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} + engines: {node: '>= 14'} dependencies: - agent-base: 7.1.0 + agent-base: 7.1.1 debug: 4.3.4 - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 lru-cache: 7.18.3 pac-proxy-agent: 7.0.1 proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.2 + socks-proxy-agent: 8.0.3 transitivePeerDependencies: - supports-color + dev: true - proxy-from-env@1.1.0: {} + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: true - public-encrypt@4.0.3: + /public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} dependencies: bn.js: 4.12.0 browserify-rsa: 4.1.0 create-hash: 1.2.0 - parse-asn1: 5.1.6 + parse-asn1: 5.1.7 randombytes: 2.1.0 safe-buffer: 5.2.1 + dev: false - pump@3.0.0: + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 + dev: false - punycode@1.4.1: {} + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: false - punycode@2.3.1: {} + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} - qrcode-terminal@0.11.0: {} + /qrcode-terminal@0.11.0: + resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==} + hasBin: true + dev: false - qs@6.11.2: + /qs@6.12.1: + resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} + engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 + dev: false - query-string@5.1.1: + /query-string@5.1.1: + resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} + engines: {node: '>=0.10.0'} dependencies: decode-uri-component: 0.2.2 object-assign: 4.1.1 strict-uri-encode: 1.1.0 + dev: false - query-string@7.1.3: + /query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} dependencies: decode-uri-component: 0.2.2 filter-obj: 1.1.0 split-on-first: 1.1.0 strict-uri-encode: 2.0.0 + dev: false - queue-microtask@1.2.3: {} + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - queue@6.0.2: + /queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} dependencies: inherits: 2.0.4 + dev: false - r-json@1.3.0: + /r-json@1.3.0: + resolution: {integrity: sha512-xesd+RHCpymPCYd9DvDvUr1w1IieSChkqYF1EpuAYrvCfLXji9NP36DvyYZJZZB5soVDvZ0WUtBoZaU1g5Yt9A==} dependencies: w-json: 1.3.10 + dev: false - randombytes@2.1.0: + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 + dev: false - randomfill@1.0.4: + /randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} dependencies: randombytes: 2.1.0 safe-buffer: 5.2.1 + dev: false - range-parser@1.2.1: {} + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: false - rc@1.2.8: + /rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true dependencies: deep-extend: 0.6.0 ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 - react-devtools-core@4.28.5: + /react-devtools-core@4.28.5: + resolution: {integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==} dependencies: shell-quote: 1.8.1 ws: 7.5.9 transitivePeerDependencies: - bufferutil - utf-8-validate + dev: false - react-dom@18.2.0(react@18.2.0): + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 dependencies: loose-envify: 1.4.0 react: 18.2.0 - scheduler: 0.23.0 + scheduler: 0.23.2 + dev: false - react-fast-compare@3.2.2: {} + /react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + dev: false - react-freeze@1.0.3(react@18.2.0): + /react-freeze@1.0.4(react@18.2.0): + resolution: {integrity: sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA==} + engines: {node: '>=10'} + peerDependencies: + react: '>=17.0.0' dependencies: react: 18.2.0 + dev: false - react-helmet-async@1.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /react-helmet-async@1.3.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 invariant: 2.2.4 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-fast-compare: 3.2.2 shallowequal: 1.1.0 + dev: false - react-is@16.13.1: {} + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: false - react-is@17.0.2: {} + /react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + dev: false - react-is@18.2.0: {} + /react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + dev: false - react-native-animatable@1.3.3: + /react-native-animatable@1.3.3: + resolution: {integrity: sha512-2ckIxZQAsvWn25Ho+DK3d1mXIgj7tITkrS4pYDvx96WyOttSvzzFeQnM2od0+FUMzILbdHDsDEqZvnz1DYNQ1w==} dependencies: prop-types: 15.8.1 + dev: false - react-native-context-menu-view@1.14.1(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0): + /react-native-context-menu-view@1.16.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-zqeOAizM7MVV9o6h/quS0REQikBq3J4BkIRLFygY6RiCjr6rwuzSGkif7JRCHpAQQumSKlLqYl4N2h3AdoIHVg==} + peerDependencies: + react: ^16.8.1 || ^17.0.0 || ^18.0.0 + react-native: '>=0.60.0-rc.0 <1.0.x' dependencies: react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - ? react-native-css-interop@0.0.35(@babel/core@7.23.9)(react-native-reanimated@3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-safe-area-context@4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native-svg@14.1.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0)(tailwindcss@3.4.3(ts-node@10.9.2(@swc/core@1.4.8(@swc/helpers@0.5.6))(@types/node@20.12.7)(typescript@5.4.3))) - : dependencies: - '@babel/helper-module-imports': 7.22.15 - '@babel/traverse': 7.23.9 - '@babel/types': 7.24.0 - babel-plugin-tester: 11.0.4(@babel/core@7.23.9) + /react-native-css-interop@0.0.34(@babel/core@7.24.5)(react-native-reanimated@3.6.3)(react-native-safe-area-context@4.8.2)(react-native-svg@14.1.0)(react-native@0.73.6)(react@18.2.0)(tailwindcss@3.4.3): + resolution: {integrity: sha512-gz9b0RAyqy5Q/ogPQie8zkWHI+UFhn8JOPELUAV4k2XNkuXzfPRWDMSjQww51ozh7qx7oBKSYDnaCB/D6XgJ1Q==} + engines: {node: '>=18'} + peerDependencies: + react: '>=18' + react-native: '*' + react-native-reanimated: '>=3.6.2' + react-native-safe-area-context: '*' + react-native-svg: '*' + tailwindcss: ~3 + peerDependenciesMeta: + react-native-safe-area-context: + optional: true + react-native-svg: + optional: true + dependencies: + '@babel/helper-module-imports': 7.24.3 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + babel-plugin-tester: 11.0.4(@babel/core@7.24.5) lightningcss: 1.22.0 react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) - react-native-reanimated: 3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - tailwindcss: 3.4.3(ts-node@10.9.2(@swc/core@1.4.8(@swc/helpers@0.5.6))(@types/node@20.12.7)(typescript@5.4.3)) - optionalDependencies: - react-native-safe-area-context: 4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - react-native-svg: 14.1.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + react-native-reanimated: 3.6.3(@babel/core@7.24.5)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6)(@babel/plugin-proposal-optional-chaining@7.21.0)(@babel/plugin-transform-arrow-functions@7.24.1)(@babel/plugin-transform-shorthand-properties@7.24.1)(@babel/plugin-transform-template-literals@7.24.1)(react-native@0.73.6)(react@18.2.0) + react-native-safe-area-context: 4.8.2(react-native@0.73.6)(react@18.2.0) + react-native-svg: 14.1.0(react-native@0.73.6)(react@18.2.0) + tailwindcss: 3.4.3 transitivePeerDependencies: - '@babel/core' - supports-color + dev: false - react-native-fit-image@1.5.5: + /react-native-fit-image@1.5.5: + resolution: {integrity: sha512-Wl3Vq2DQzxgsWKuW4USfck9zS7YzhvLNPpkwUUCF90bL32e1a0zOVQ3WsJILJOwzmPdHfzZmWasiiAUNBkhNkg==} dependencies: prop-types: 15.8.1 + dev: false - react-native-gesture-handler@2.14.1(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0): + /react-native-gesture-handler@2.14.1(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-YiM1BApV4aKeuwsM6O4C2ufwewYEKk6VMXOt0YqEZFMwABBFWhXLySFZYjBSNRU2USGppJbfHP1q1DfFQpKhdA==} + peerDependencies: + react: '*' + react-native: '*' dependencies: '@egjs/hammerjs': 2.0.17 hoist-non-react-statics: 3.3.2 @@ -14474,110 +11996,175 @@ snapshots: lodash: 4.17.21 prop-types: 15.8.1 react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - react-native-markdown-display@7.0.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0): + /react-native-markdown-display@7.0.2(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-Mn4wotMvMfLAwbX/huMLt202W5DsdpMO/kblk+6eUs55S57VVNni1gzZCh5qpznYLjIQELNh50VIozEfY6fvaQ==} + peerDependencies: + react: '>=16.2.0' + react-native: '>=0.50.4' dependencies: css-to-react-native: 3.2.0 markdown-it: 10.0.0 prop-types: 15.8.1 react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) react-native-fit-image: 1.5.5 + dev: false - react-native-mmkv@2.12.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0): + /react-native-mmkv@2.12.2(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-6058Aq0p57chPrUutLGe9fYoiDVDNMU2PKV+lLFUJ3GhoHvUrLdsS1PDSCLr00yqzL4WJQ7TTzH+V8cpyrNcfg==} + peerDependencies: + react: '*' + react-native: '>=0.71.0' dependencies: react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - react-native-modal@13.0.1(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0): + /react-native-modal@13.0.1(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-UB+mjmUtf+miaG/sDhOikRfBOv0gJdBU2ZE1HtFWp6UixW9jCk/bhGdHUgmZljbPpp0RaO/6YiMmQSSK3kkMaw==} + peerDependencies: + react: '*' + react-native: '>=0.65.0' dependencies: prop-types: 15.8.1 react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) react-native-animatable: 1.3.3 + dev: false - react-native-quick-base64@2.0.8(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0): + /react-native-quick-base64@2.1.2(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-xghaXpWdB0ji8OwYyo0fWezRroNxiNFCNFpGUIyE7+qc4gA/IGWnysIG5L0MbdoORv8FkTKUvfd6yCUN5R2VFA==} + peerDependencies: + react: '*' + react-native: '*' dependencies: base64-js: 1.5.1 react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - react-native-quick-crypto@0.6.1(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0): + /react-native-quick-crypto@0.6.1(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-s6uFo7tcI3syo8/y5j+t6Rf+KVSuRKDp6tH04A0vjaHptJC6Iu7DVgkNYO7aqtfrYn8ZUgQ/Kqaq+m4i9TxgIQ==} + peerDependencies: + react: '*' + react-native: '>=0.71.0' dependencies: - '@craftzdog/react-native-buffer': 6.0.5(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + '@craftzdog/react-native-buffer': 6.0.5(react-native@0.73.6)(react@18.2.0) '@types/node': 17.0.45 crypto-browserify: 3.12.0 events: 3.3.0 react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) - react-native-quick-base64: 2.0.8(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + react-native-quick-base64: 2.1.2(react-native@0.73.6)(react@18.2.0) stream-browserify: 3.0.0 string_decoder: 1.3.0 + dev: false - react-native-reanimated@3.6.2(@babel/core@7.23.9)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9))(@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9))(@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.23.9))(@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.23.9))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0): + /react-native-reanimated@3.6.3(@babel/core@7.24.5)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6)(@babel/plugin-proposal-optional-chaining@7.21.0)(@babel/plugin-transform-arrow-functions@7.24.1)(@babel/plugin-transform-shorthand-properties@7.24.1)(@babel/plugin-transform-template-literals@7.24.1)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-2KkkPozoIvDbJcHuf8qeyoLROXQxizSi+2CTCkuNVkVZOxxY4B0Omvgq61aOQhSZUh/649x1YHoAaTyGMGDJUw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-nullish-coalescing-operator': ^7.0.0-0 + '@babel/plugin-proposal-optional-chaining': ^7.0.0-0 + '@babel/plugin-transform-arrow-functions': ^7.0.0-0 + '@babel/plugin-transform-shorthand-properties': ^7.0.0-0 + '@babel/plugin-transform-template-literals': ^7.0.0-0 + react: '*' + react-native: '*' dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.9) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.9) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-object-assign': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.23.9) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.23.9) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.24.5 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-object-assign': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.5) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.5) convert-source-map: 2.0.0 invariant: 2.2.4 react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - react-native-safe-area-context@4.8.2(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0): + /react-native-safe-area-context@4.8.2(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-ffUOv8BJQ6RqO3nLml5gxJ6ab3EestPiyWekxdzO/1MQ7NF8fW1Mzh1C5QE9yq573Xefnc7FuzGXjtesZGv7cQ==} + peerDependencies: + react: '*' + react-native: '*' dependencies: react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - react-native-screens@3.29.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0): + /react-native-screens@3.29.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-yB1GoAMamFAcYf4ku94uBPn0/ani9QG7NdI98beJ5cet2YFESYYzuEIuU+kt+CNRcO8qqKeugxlfgAa3HyTqlg==} + peerDependencies: + react: '*' + react-native: '*' dependencies: react: 18.2.0 - react-freeze: 1.0.3(react@18.2.0) - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-freeze: 1.0.4(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) warn-once: 0.1.1 + dev: false - react-native-svg@14.1.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0): + /react-native-svg@14.1.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-HeseElmEk+AXGwFZl3h56s0LtYD9HyGdrpg8yd9QM26X+d7kjETrRQ9vCjtxuT5dCZEIQ5uggU1dQhzasnsCWA==} + peerDependencies: + react: '*' + react-native: '*' dependencies: css-select: 5.1.0 css-tree: 1.1.3 react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + dev: false - react-native-video@5.2.1: + /react-native-video@5.2.1: + resolution: {integrity: sha512-aJlr9MeTuQ0LpZ4n+EC9RvhoKeiPbLtI2Rxy8u7zo/wzGevbRpWHSBj9xZ5YDBXnAVXzuqyNIkGhdw7bfdIBZw==} dependencies: deprecated-react-native-prop-types: 2.3.0 keymirror: 0.1.1 prop-types: 15.8.1 shaka-player: 2.5.23 + dev: false - react-native-web-internals@1.94.0: + /react-native-web-internals@1.96.0: + resolution: {integrity: sha512-FssrkOsfOO7KVsmQ3865DJDxIYIUdpA39woM/8Wtm0U5h9I68NFThnMMr3eOPIQrjOAOmg9ABIP/dbZFJZ0fqg==} dependencies: - '@tamagui/normalize-css-color': 1.94.0 - '@tamagui/react-native-use-pressable': 1.94.0(react@18.2.0) - '@tamagui/react-native-use-responder-events': 1.94.0(react@18.2.0) - '@tamagui/simple-hash': 1.94.0 + '@tamagui/normalize-css-color': 1.96.0 + '@tamagui/react-native-use-pressable': 1.96.0(react@18.2.0) + '@tamagui/react-native-use-responder-events': 1.96.0(react@18.2.0) + '@tamagui/simple-hash': 1.96.0 react: 18.2.0 styleq: 0.1.3 + dev: false - react-native-web-lite@1.94.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /react-native-web-lite@1.96.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-iZJtzfo7VRyjZBVcXHxTCAbJJRrKe3BjFFmeovms1S0Gbcm7NlAPFrqa+YiBBZYfzPHTKx1k6QxhywzB9f3onw==} + peerDependencies: + react: '*' + react-dom: '*' dependencies: - '@tamagui/normalize-css-color': 1.94.0 + '@tamagui/normalize-css-color': 1.96.0 invariant: 2.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-native-web-internals: 1.94.0 + react-native-web-internals: 1.96.0 styleq: 0.1.3 + dev: false - react-native-web@0.19.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /react-native-web@0.19.11(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-51Qcjr0AtIgskwLqLsBByUMPs2nAWZ+6QF7x/siC72svNPcJ1/daXoPTNuHR2fX4oOrDATC4Vmc/SXOYPH19rw==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: - '@babel/runtime': 7.23.9 - '@react-native/normalize-color': 2.1.0 + '@babel/runtime': 7.24.5 + '@react-native/normalize-colors': 0.74.81 fbjs: 3.0.5 inline-style-prefixer: 6.0.4 memoize-one: 6.0.0 @@ -14588,20 +12175,26 @@ snapshots: styleq: 0.1.3 transitivePeerDependencies: - encoding + dev: false - react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0): + /react-native@0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0): + resolution: {integrity: sha512-oqmZe8D2/VolIzSPZw+oUd6j/bEmeRHwsLn1xLA5wllEYsZ5zNuMsDus235ONOnCRwexqof/J3aztyQswSmiaA==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + react: 18.2.0 dependencies: '@jest/create-cache-key-function': 29.7.0 '@react-native-community/cli': 12.3.6 '@react-native-community/cli-platform-android': 12.3.6 '@react-native-community/cli-platform-ios': 12.3.6 '@react-native/assets-registry': 0.73.1 - '@react-native/codegen': 0.73.3(@babel/preset-env@7.23.9(@babel/core@7.23.9)) - '@react-native/community-cli-plugin': 0.73.17(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9)) + '@react-native/codegen': 0.73.3(@babel/preset-env@7.24.5) + '@react-native/community-cli-plugin': 0.73.17(@babel/core@7.24.5)(@babel/preset-env@7.24.5) '@react-native/gradle-plugin': 0.73.4 '@react-native/js-polyfills': 0.73.1 '@react-native/normalize-colors': 0.73.2 - '@react-native/virtualized-lists': 0.73.4(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0)) + '@react-native/virtualized-lists': 0.73.4(react-native@0.73.6) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -14614,15 +12207,15 @@ snapshots: jest-environment-node: 29.7.0 jsc-android: 250231.0.0 memoize-one: 5.2.1 - metro-runtime: 0.80.5 - metro-source-map: 0.80.5 + metro-runtime: 0.80.8 + metro-source-map: 0.80.8 mkdirp: 0.5.6 nullthrows: 1.1.1 pretty-format: 26.6.2 promise: 8.3.0 react: 18.2.0 react-devtools-core: 4.28.5 - react-refresh: 0.14.0 + react-refresh: 0.14.2 react-shallow-renderer: 16.15.0(react@18.2.0) regenerator-runtime: 0.13.11 scheduler: 0.24.0-canary-efb381bbf-20230505 @@ -14637,52 +12230,95 @@ snapshots: - encoding - supports-color - utf-8-validate + dev: false - react-refresh@0.14.0: {} + /react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + dev: false + + /react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + dev: false - react-remove-scroll-bar@2.3.6(@types/react@18.2.52)(react@18.2.0): + /react-remove-scroll-bar@2.3.6(@types/react@18.3.1)(react@18.2.0): + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.1 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.52)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.3.1)(react@18.2.0) tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.52 + dev: false - react-remove-scroll@2.5.5(@types/react@18.2.52)(react@18.2.0): + /react-remove-scroll@2.5.5(@types/react@18.3.1)(react@18.2.0): + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.1 react: 18.2.0 - react-remove-scroll-bar: 2.3.6(@types/react@18.2.52)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.52)(react@18.2.0) + react-remove-scroll-bar: 2.3.6(@types/react@18.3.1)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.3.1)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.1(@types/react@18.2.52)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.52)(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.52 + use-callback-ref: 1.3.2(@types/react@18.3.1)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.3.1)(react@18.2.0) + dev: false - react-shallow-renderer@16.15.0(react@18.2.0): + /react-shallow-renderer@16.15.0(react@18.2.0): + resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: object-assign: 4.1.1 react: 18.2.0 - react-is: 18.2.0 + react-is: 18.3.1 + dev: false - react-style-singleton@2.2.1(@types/react@18.2.52)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.3.1)(react@18.2.0): + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.1 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.52 + dev: false - react@18.2.0: + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 + dev: false - read-cache@1.0.0: + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 + dev: false - readable-stream@2.3.8: + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -14691,65 +12327,97 @@ snapshots: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 + dev: false - readable-stream@3.6.2: + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - readdirp@3.6.0: + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 + dev: false - readline@1.3.0: {} + /readline@1.3.0: + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} + dev: false - recast@0.21.5: + /recast@0.21.5: + resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} + engines: {node: '>= 4'} dependencies: ast-types: 0.15.2 esprima: 4.0.1 source-map: 0.6.1 tslib: 2.6.2 + dev: false - reflect.getprototypeof@1.0.4: + /reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.3 - globalthis: 1.0.3 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 which-builtin-type: 1.1.3 + dev: false - reforest@0.13.0(@types/react@18.2.52)(immer@10.0.3)(react@18.2.0): + /reforest@0.13.0(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0): + resolution: {integrity: sha512-f0It/s51f1UWCCCni0viULALDBhxWBPFnLmZRYtKcz4zYeNWqeNTdcnU/OpBry9tk+jyMQcH3MLK8UdzsAvA5w==} + peerDependencies: + react: '>=16.8' dependencies: performant-array-to-tree: 1.11.0 react: 18.2.0 - zustand: 4.4.7(@types/react@18.2.52)(immer@10.0.3)(react@18.2.0) + zustand: 4.5.2(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer + dev: false - regenerate-unicode-properties@10.1.1: + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} dependencies: regenerate: 1.4.2 - regenerate@1.4.2: {} + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - regenerator-runtime@0.13.11: {} + /regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: false - regenerator-runtime@0.14.1: {} + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regenerator-transform@0.15.2: + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.5 - regexp.prototype.flags@1.5.1: + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - set-function-name: 2.0.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + dev: false - regexpu-core@5.3.2: + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} dependencies: '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 @@ -14758,163 +12426,276 @@ snapshots: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 - registry-auth-token@3.3.2: + /registry-auth-token@3.3.2: + resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} dependencies: rc: 1.2.8 safe-buffer: 5.2.1 + dev: true - registry-url@3.1.0: + /registry-url@3.1.0: + resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} + engines: {node: '>=0.10.0'} dependencies: rc: 1.2.8 + dev: true - regjsparser@0.9.1: + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true dependencies: jsesc: 0.5.0 - remove-trailing-slash@0.1.1: {} + /remove-trailing-slash@0.1.1: + resolution: {integrity: sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==} + dev: false - require-directory@2.1.1: {} + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: false - require-from-string@2.0.2: {} + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: false - require-main-filename@2.0.0: {} + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: false - requireg@0.2.2: + /requireg@0.2.2: + resolution: {integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==} + engines: {node: '>= 4.0.0'} dependencies: nested-error-stacks: 2.0.1 rc: 1.2.8 resolve: 1.7.1 + dev: false - reselect@4.1.8: {} + /reselect@4.1.8: + resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} + dev: true - resolve-from@3.0.0: {} + /resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + dev: false - resolve-from@4.0.0: {} + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} - resolve-from@5.0.0: {} + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: false - resolve-pkg-maps@1.0.0: {} + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: false - resolve.exports@2.0.2: {} + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: false - resolve@1.22.8: + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@1.7.1: + /resolve@1.7.1: + resolution: {integrity: sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==} dependencies: path-parse: 1.0.7 + dev: false - resolve@2.0.0-next.5: + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: false - restore-cursor@2.0.0: + /restore-cursor@2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} dependencies: onetime: 2.0.1 signal-exit: 3.0.7 + dev: false - restore-cursor@3.1.0: + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - reusify@1.0.4: {} + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rimraf@2.4.5: + /rimraf@2.4.5: + resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==} + hasBin: true + requiresBuild: true dependencies: glob: 6.0.4 + dev: false optional: true - rimraf@2.6.3: + /rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true dependencies: glob: 7.2.3 + dev: false - rimraf@2.7.1: + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true dependencies: glob: 7.2.3 + dev: false - rimraf@3.0.2: + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true dependencies: glob: 7.2.3 - ripemd160@2.0.2: + /ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} dependencies: hash-base: 3.1.0 inherits: 2.0.4 + dev: false - run-async@2.4.1: {} + /run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true - run-parallel@1.2.0: + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - rxjs@6.6.7: + /rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} dependencies: tslib: 1.14.1 + dev: true - rxjs@7.8.1: + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: tslib: 2.6.2 + dev: true - safe-array-concat@1.1.0: + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.3 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 + dev: false - safe-buffer@5.1.2: {} + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false - safe-buffer@5.2.1: {} + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-json-stringify@1.2.0: + /safe-json-stringify@1.2.0: + resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==} + requiresBuild: true + dev: false optional: true - safe-regex-test@1.0.2: + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.3 + call-bind: 1.0.7 + es-errors: 1.3.0 is-regex: 1.1.4 + dev: false - safer-buffer@2.1.2: {} + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true - sax@1.3.0: {} + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + dev: false - scheduler@0.23.0: + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} dependencies: loose-envify: 1.4.0 + dev: false - scheduler@0.24.0-canary-efb381bbf-20230505: + /scheduler@0.24.0-canary-efb381bbf-20230505: + resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} dependencies: loose-envify: 1.4.0 + dev: false - schema-utils@4.2.0: + /schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} dependencies: '@types/json-schema': 7.0.15 - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - ajv-keywords: 5.1.0(ajv@8.12.0) + ajv: 8.13.0 + ajv-formats: 2.1.1(ajv@8.13.0) + ajv-keywords: 5.1.0(ajv@8.13.0) + dev: false - semver@5.7.2: {} + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: false - semver@6.3.1: {} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true - semver@7.3.2: {} + /semver@7.3.2: + resolution: {integrity: sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==} + engines: {node: '>=10'} + hasBin: true + dev: false - semver@7.5.3: + /semver@7.5.3: + resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} + engines: {node: '>=10'} + hasBin: true dependencies: lru-cache: 6.0.0 + dev: false - semver@7.5.4: + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true dependencies: lru-cache: 6.0.0 - send@0.18.0: + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} dependencies: debug: 2.6.9 depd: 2.0.0 @@ -14931,15 +12712,23 @@ snapshots: statuses: 2.0.1 transitivePeerDependencies: - supports-color + dev: false - sentence-case@2.1.1: + /sentence-case@2.1.1: + resolution: {integrity: sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==} dependencies: no-case: 2.3.2 upper-case-first: 1.1.2 + dev: true - serialize-error@2.1.0: {} + /serialize-error@2.1.0: + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} + dev: false - serve-static@1.15.0: + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} dependencies: encodeurl: 1.0.2 escape-html: 1.0.3 @@ -14947,291 +12736,500 @@ snapshots: send: 0.18.0 transitivePeerDependencies: - supports-color + dev: false - set-blocking@2.0.0: {} + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: false - set-cookie-parser@2.6.0: {} + /set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + dev: false - set-function-length@1.2.0: + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.4 + es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.3 + get-intrinsic: 1.2.4 gopd: 1.0.1 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 + dev: false - set-function-name@2.0.1: + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.4 + es-errors: 1.3.0 functions-have-names: 1.2.3 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 + dev: false - set-value@4.1.0: + /set-value@4.1.0: + resolution: {integrity: sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==} + engines: {node: '>=11.0'} dependencies: is-plain-object: 2.0.4 is-primitive: 3.0.1 + dev: false - setimmediate@1.0.5: {} + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: false - setprototypeof@1.2.0: {} + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: false - sf-symbols-typescript@1.0.0: {} + /sf-symbols-typescript@1.0.0: + resolution: {integrity: sha512-DkS7q3nN68dEMb4E18HFPDAvyrjDZK9YAQQF2QxeFu9gp2xRDXFMF8qLJ1EmQ/qeEGQmop4lmMM1WtYJTIcCMw==} + engines: {node: '>=10'} + dev: false - sha.js@2.4.11: + /sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 + dev: false - shaka-player@2.5.23: + /shaka-player@2.5.23: + resolution: {integrity: sha512-3MC9k0OXJGw8AZ4n/ZNCZS2yDxx+3as5KgH6Tx4Q5TRboTBBCu6dYPI5vp1DxKeyU12MBN1Zcbs7AKzXv2EnCg==} + deprecated: Shaka Player < v4.2 is no longer supported. dependencies: eme-encryption-scheme-polyfill: 2.1.1 + dev: false - shallow-clone@3.0.1: + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} dependencies: kind-of: 6.0.3 + dev: false - shallowequal@1.1.0: {} + /shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + dev: false - shebang-command@1.2.0: + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 + dev: false - shebang-command@2.0.0: + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - shebang-regex@1.0.0: {} + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: false - shebang-regex@3.0.0: {} + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} - shell-quote@1.8.1: {} + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: false - side-channel@1.0.4: + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.3 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 object-inspect: 1.13.1 + dev: false - signal-exit@3.0.7: {} + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - signal-exit@4.1.0: {} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: false - simple-plist@1.3.1: + /simple-plist@1.3.1: + resolution: {integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==} dependencies: bplist-creator: 0.1.0 bplist-parser: 0.3.1 plist: 3.1.0 + dev: false - simple-swizzle@0.2.2: + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: is-arrayish: 0.3.2 + dev: false - sisteransi@1.0.5: {} + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: false - slash@3.0.0: {} + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} - slash@4.0.0: {} + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: false - slice-ansi@2.1.0: + /slice-ansi@2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} dependencies: ansi-styles: 3.2.1 astral-regex: 1.0.0 is-fullwidth-code-point: 2.0.0 + dev: false - slice-ansi@4.0.0: + /slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 + dev: false - slugify@1.6.6: {} + /slugify@1.6.6: + resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} + engines: {node: '>=8.0.0'} + dev: false - smart-buffer@4.2.0: {} + /smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + dev: true - snake-case@2.1.0: + /snake-case@2.1.0: + resolution: {integrity: sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==} dependencies: no-case: 2.3.2 + dev: true - socks-proxy-agent@8.0.2: + /socks-proxy-agent@8.0.3: + resolution: {integrity: sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==} + engines: {node: '>= 14'} dependencies: - agent-base: 7.1.0 + agent-base: 7.1.1 debug: 4.3.4 - socks: 2.7.1 + socks: 2.8.3 transitivePeerDependencies: - supports-color + dev: true - socks@2.7.1: + /socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} dependencies: - ip: 2.0.0 + ip-address: 9.0.5 smart-buffer: 4.2.0 + dev: true - sonner@0.3.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + /sonner@0.3.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-yIwaQ4dftMvFApuruto2t7wGyyaPRpj5qYBWYJIz4Z7uGcVn0IfqI/hWN0JyJN4izNbZFuCYZISf3fOGnvSlNQ==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + dev: false - sort-keys@2.0.0: + /sort-keys@2.0.0: + resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} + engines: {node: '>=4'} dependencies: is-plain-obj: 1.1.0 + dev: false - source-map-js@1.0.2: {} - - source-map-js@1.1.0: {} - - source-map-js@1.2.0: {} + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + dev: false - source-map-support@0.5.21: + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + dev: false - source-map@0.5.7: {} + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: false - source-map@0.6.1: {} + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} - source-map@0.7.4: {} + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: false - split-on-first@1.1.0: {} + /split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + dev: false - split@1.0.1: + /split@1.0.1: + resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} dependencies: through: 2.3.8 + dev: false + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: false - sprintf-js@1.0.3: {} + /sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + dev: true - srt-webvtt@2.0.0: {} + /srt-webvtt@2.0.0: + resolution: {integrity: sha512-G2Z7/Jf2NRKrmLYNSIhSYZZYE6OFlKXFp9Au2/zJBKgrioUzmrAys1x7GT01dwl6d2sEnqr5uahEIOd0JW/Rbw==} + dev: false - ssri@8.0.1: + /ssri@8.0.1: + resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} + engines: {node: '>= 8'} dependencies: minipass: 3.3.6 + dev: false - stack-utils@2.0.6: + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 + dev: false - stackframe@1.3.4: {} + /stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + dev: false - stacktrace-parser@0.1.10: + /stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} dependencies: type-fest: 0.7.1 + dev: false - statuses@1.5.0: {} + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: false - statuses@2.0.1: {} + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: false - stream-browserify@3.0.0: + /stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} dependencies: inherits: 2.0.4 readable-stream: 3.6.2 + dev: false - stream-buffers@2.2.0: {} + /stream-buffers@2.2.0: + resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} + engines: {node: '>= 0.10.0'} + dev: false - stream-slice@0.1.2: {} + /stream-slice@0.1.2: + resolution: {integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==} + dev: false - strict-uri-encode@1.1.0: {} + /strict-uri-encode@1.1.0: + resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} + engines: {node: '>=0.10.0'} + dev: false - strict-uri-encode@2.0.0: {} + /strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + dev: false - string-width@4.2.3: + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 + dev: false - string.prototype.matchall@4.0.10: + /string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.3 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.6 - regexp.prototype.flags: 1.5.1 - set-function-name: 2.0.1 - side-channel: 1.0.4 - - string.prototype.trim@1.2.8: + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 + set-function-name: 2.0.2 + side-channel: 1.0.6 + dev: false + + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + dev: false - string.prototype.trimend@1.0.7: + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 + dev: false - string.prototype.trimstart@1.0.7: + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 + dev: false - string_decoder@1.1.1: + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 + dev: false - string_decoder@1.3.0: + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - strip-ansi@5.2.0: + /strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} dependencies: ansi-regex: 4.1.1 + dev: false - strip-ansi@6.0.1: + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 + dev: false - strip-bom@3.0.0: {} + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: false - strip-eof@1.0.0: {} + /strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + dev: false - strip-final-newline@2.0.0: {} + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} - strip-indent@3.0.0: + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} dependencies: min-indent: 1.0.1 + dev: false - strip-json-comments@2.0.1: {} + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} - strip-json-comments@3.1.1: {} + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} - strnum@1.0.5: {} + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: false - structured-headers@0.4.1: {} + /structured-headers@0.4.1: + resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} + dev: false - style-value-types@5.0.0: + /style-value-types@5.0.0: + resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} dependencies: hey-listen: 1.0.8 tslib: 2.6.2 + dev: false - styleq@0.1.3: {} + /styleq@0.1.3: + resolution: {integrity: sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==} + dev: false - subsrt-ts@2.1.2: {} + /subsrt-ts@2.1.2: + resolution: {integrity: sha512-45yNlK42Z0pz4lAaNYbR5P60M2jmHl+gfAaiJxDIXsXXqoE7TkDCzl/00HgWyZXKkdIU6s8FiNtRvrlOZb+5Qg==} + hasBin: true + dev: false - sucrase@3.34.0: + /sucrase@3.34.0: + resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} + engines: {node: '>=8'} + hasBin: true dependencies: - '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 glob: 7.1.6 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 ts-interface-checker: 0.1.13 + dev: false - sucrase@3.35.0: + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true dependencies: '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 @@ -15240,48 +13238,77 @@ snapshots: mz: 2.7.0 pirates: 4.0.6 ts-interface-checker: 0.1.13 + dev: false - sudo-prompt@8.2.5: {} + /sudo-prompt@8.2.5: + resolution: {integrity: sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==} + dev: false - sudo-prompt@9.1.1: {} + /sudo-prompt@9.1.1: + resolution: {integrity: sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==} + dev: false - sudo-prompt@9.2.1: {} + /sudo-prompt@9.2.1: + resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} + dev: false - supports-color@5.5.0: + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - supports-color@7.2.0: + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - supports-color@8.1.1: + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} dependencies: has-flag: 4.0.0 + dev: false - supports-hyperlinks@2.3.0: + /supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 supports-color: 7.2.0 + dev: false - supports-preserve-symlinks-flag@1.0.0: {} + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} - swap-case@1.1.2: + /swap-case@1.1.2: + resolution: {integrity: sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==} dependencies: lower-case: 1.1.4 upper-case: 1.1.3 + dev: true - tabbable@6.2.0: {} + /tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + dev: false - table@6.8.1: + /table@6.8.2: + resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} + engines: {node: '>=10.0.0'} dependencies: - ajv: 8.12.0 + ajv: 8.13.0 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: false - tailwindcss@3.4.3(ts-node@10.9.2(@swc/core@1.4.8(@swc/helpers@0.5.6))(@types/node@20.12.7)(typescript@5.4.3)): + /tailwindcss@3.4.3: + resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} + engines: {node: '>=14.0.0'} + hasBin: true dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -15300,77 +13327,86 @@ snapshots: postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@swc/core@1.4.8(@swc/helpers@0.5.6))(@types/node@20.12.7)(typescript@5.4.3)) + postcss-load-config: 4.0.2(postcss@8.4.38) postcss-nested: 6.0.1(postcss@8.4.38) postcss-selector-parser: 6.0.16 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: - ts-node + dev: false - tamagui@1.94.0(@types/react@18.2.52)(immer@10.0.3)(react-dom@18.2.0(react@18.2.0))(react-native-web@0.19.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0): + /tamagui@1.96.0(@types/react@18.3.1)(immer@10.1.1)(react-dom@18.2.0)(react-native-web@0.19.11)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-MGkUbyKP1uWSrEW0waDYhF6z18dRaHzt6w3EHJRoL5w30D+5QrjP9a/BTOj6DUe1aJRe+FwmETfCAl4szgTMMg==} + peerDependencies: + react: '*' + react-native: '*' + react-native-web: '*' dependencies: - '@tamagui/accordion': 1.94.0(react@18.2.0) - '@tamagui/adapt': 1.94.0(react@18.2.0) - '@tamagui/alert-dialog': 1.94.0(@types/react@18.2.52)(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/animate-presence': 1.94.0(react@18.2.0) - '@tamagui/avatar': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/button': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/card': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/checkbox': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/dialog': 1.94.0(@types/react@18.2.52)(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/elements': 1.94.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@tamagui/fake-react-native': 1.94.0 - '@tamagui/focusable': 1.94.0(react@18.2.0) - '@tamagui/font-size': 1.94.0(react@18.2.0) - '@tamagui/form': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/get-button-sized': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/get-font-sized': 1.94.0(react@18.2.0) - '@tamagui/get-token': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/group': 1.94.0(@types/react@18.2.52)(immer@10.0.3)(react@18.2.0) - '@tamagui/helpers-tamagui': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/image': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/label': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/linear-gradient': 1.94.0(react@18.2.0) - '@tamagui/list-item': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/polyfill-dev': 1.94.0 - '@tamagui/popover': 1.94.0(@types/react@18.2.52)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/popper': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/portal': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/progress': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/radio-group': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/react-native-media-driver': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0)) - '@tamagui/scroll-view': 1.94.0(react@18.2.0) - '@tamagui/select': 1.94.0(@types/react@18.2.52)(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/separator': 1.94.0(react@18.2.0) - '@tamagui/shapes': 1.94.0(react@18.2.0) - '@tamagui/sheet': 1.94.0(@types/react@18.2.52)(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/slider': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/switch': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/tabs': 1.94.0(@types/react@18.2.52)(immer@10.0.3)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/text': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/theme': 1.94.0(react@18.2.0) - '@tamagui/toggle-group': 1.94.0(@types/react@18.2.52)(immer@10.0.3)(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/tooltip': 1.94.0(@types/react@18.2.52)(react-dom@18.2.0(react@18.2.0))(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) - '@tamagui/use-debounce': 1.94.0(react@18.2.0) - '@tamagui/use-force-update': 1.94.0(react@18.2.0) - '@tamagui/use-window-dimensions': 1.94.0(react-native@0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0))(react@18.2.0) - '@tamagui/visually-hidden': 1.94.0(react@18.2.0) + '@tamagui/accordion': 1.96.0(react@18.2.0) + '@tamagui/adapt': 1.96.0(react@18.2.0) + '@tamagui/alert-dialog': 1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0) + '@tamagui/animate-presence': 1.96.0(react@18.2.0) + '@tamagui/avatar': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/button': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/card': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/checkbox': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/dialog': 1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0) + '@tamagui/elements': 1.96.0(react-dom@18.2.0)(react@18.2.0) + '@tamagui/fake-react-native': 1.96.0 + '@tamagui/focusable': 1.96.0(react@18.2.0) + '@tamagui/font-size': 1.96.0(react@18.2.0) + '@tamagui/form': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/get-button-sized': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/get-font-sized': 1.96.0(react@18.2.0) + '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/group': 1.96.0(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0) + '@tamagui/helpers-tamagui': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/image': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/label': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/linear-gradient': 1.96.0(react@18.2.0) + '@tamagui/list-item': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/polyfill-dev': 1.96.0 + '@tamagui/popover': 1.96.0(@types/react@18.3.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) + '@tamagui/popper': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/portal': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/progress': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/radio-group': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/react-native-media-driver': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/scroll-view': 1.96.0(react@18.2.0) + '@tamagui/select': 1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0) + '@tamagui/separator': 1.96.0(react@18.2.0) + '@tamagui/shapes': 1.96.0(react@18.2.0) + '@tamagui/sheet': 1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0) + '@tamagui/slider': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/switch': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/tabs': 1.96.0(@types/react@18.3.1)(immer@10.1.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) + '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/theme': 1.96.0(react@18.2.0) + '@tamagui/toggle-group': 1.96.0(@types/react@18.3.1)(immer@10.1.1)(react-native@0.73.6)(react@18.2.0) + '@tamagui/tooltip': 1.96.0(@types/react@18.3.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) + '@tamagui/use-debounce': 1.96.0(react@18.2.0) + '@tamagui/use-force-update': 1.96.0(react@18.2.0) + '@tamagui/use-window-dimensions': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/visually-hidden': 1.96.0(react@18.2.0) react: 18.2.0 - react-native: 0.73.6(@babel/core@7.23.9)(@babel/preset-env@7.23.9(@babel/core@7.23.9))(react@18.2.0) - react-native-web: 0.19.10(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) + react-native-web: 0.19.11(react-dom@18.2.0)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer - react-dom + dev: false - tar@6.2.0: + /tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 @@ -15378,393 +13414,703 @@ snapshots: minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 + dev: false - temp-dir@1.0.0: {} + /temp-dir@1.0.0: + resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} + engines: {node: '>=4'} + dev: false - temp-dir@2.0.0: {} + /temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + dev: false - temp@0.8.4: + /temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} dependencies: rimraf: 2.6.3 + dev: false - tempy@0.3.0: + /tempy@0.3.0: + resolution: {integrity: sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==} + engines: {node: '>=8'} dependencies: temp-dir: 1.0.0 type-fest: 0.3.1 unique-string: 1.0.0 + dev: false - tempy@0.7.1: + /tempy@0.7.1: + resolution: {integrity: sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==} + engines: {node: '>=10'} dependencies: del: 6.1.1 is-stream: 2.0.1 temp-dir: 2.0.0 type-fest: 0.16.0 unique-string: 2.0.0 + dev: false - terminal-link@2.1.1: + /terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} dependencies: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 + dev: false - terser@5.27.0: + /terser@5.31.0: + resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} + engines: {node: '>=10'} + hasBin: true dependencies: - '@jridgewell/source-map': 0.3.5 + '@jridgewell/source-map': 0.3.6 acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 + dev: false - text-encoding-polyfill@0.6.7: {} + /text-encoding-polyfill@0.6.7: + resolution: {integrity: sha512-/DZ1XJqhbqRkCop6s9ZFu8JrFRwmVuHg4quIRm+ziFkR3N3ec6ck6yBvJ1GYeEQZhLVwRW0rZE+C3SSJpy0RTg==} + dev: false - text-table@0.2.0: {} + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - thenify-all@1.6.0: + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 + dev: false - thenify@3.3.1: + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 + dev: false - throat@5.0.0: {} + /throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + dev: false - through2@2.0.5: + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} dependencies: readable-stream: 2.3.8 xtend: 4.0.2 + dev: false - through@2.3.8: {} + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - tinycolor2@1.6.0: {} + /tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + dev: true - tinygradient@1.1.5: + /tinygradient@1.1.5: + resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==} dependencies: '@types/tinycolor2': 1.4.6 tinycolor2: 1.6.0 + dev: true - title-case@2.1.1: + /title-case@2.1.1: + resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==} dependencies: no-case: 2.3.2 upper-case: 1.1.3 + dev: true - tmdb-ts@1.6.1: + /tmdb-ts@1.8.0: + resolution: {integrity: sha512-Y1M2gLrN9V0VA06fPQFtYOUpnMT0ySTOQM2gpysj2wXMMI8jUMeoctERt9F0C3lhJ38kwMXuOwZuyHiAtCAAvA==} dependencies: cross-fetch: 3.1.8 transitivePeerDependencies: - encoding + dev: false - tmp@0.0.33: + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 - tmpl@1.0.5: {} + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: false - to-fast-properties@2.0.0: {} + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} - to-regex-range@5.0.1: + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - toidentifier@1.0.1: {} + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: false - tr46@0.0.3: {} + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false - traverse@0.6.8: {} + /traverse@0.6.9: + resolution: {integrity: sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==} + engines: {node: '>= 0.4'} + dependencies: + gopd: 1.0.1 + typedarray.prototype.slice: 1.0.3 + which-typed-array: 1.1.15 + dev: false - ts-api-utils@1.0.3(typescript@5.4.3): + /ts-api-utils@1.3.0(typescript@5.4.5): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' dependencies: - typescript: 5.4.3 + typescript: 5.4.5 - ts-interface-checker@0.1.13: {} + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: false - ts-node@10.9.2(@swc/core@1.4.8(@swc/helpers@0.5.6))(@types/node@20.12.7)(typescript@5.4.3): + /ts-node@10.9.2(@types/node@20.12.8)(typescript@5.4.5): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 + '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.7 + '@types/node': 20.12.8 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.4.3 + typescript: 5.4.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.4.8(@swc/helpers@0.5.6) + dev: true - tsconfig-paths@3.15.0: + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 + dev: false - tslib@1.14.1: {} + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true - tslib@2.6.2: {} + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - turbo-darwin-64@1.12.2: + /turbo-darwin-64@1.13.3: + resolution: {integrity: sha512-glup8Qx1qEFB5jerAnXbS8WrL92OKyMmg5Hnd4PleLljAeYmx+cmmnsmLT7tpaVZIN58EAAwu8wHC6kIIqhbWA==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - turbo-darwin-arm64@1.12.2: + /turbo-darwin-arm64@1.13.3: + resolution: {integrity: sha512-/np2xD+f/+9qY8BVtuOQXRq5f9LehCFxamiQnwdqWm5iZmdjygC5T3uVSYuagVFsZKMvX3ycySwh8dylGTl6lg==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true optional: true - turbo-linux-64@1.12.2: + /turbo-linux-64@1.13.3: + resolution: {integrity: sha512-G+HGrau54iAnbXLfl+N/PynqpDwi/uDzb6iM9hXEDG+yJnSJxaHMShhOkXYJPk9offm9prH33Khx2scXrYVW1g==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true optional: true - turbo-linux-arm64@1.12.2: + /turbo-linux-arm64@1.13.3: + resolution: {integrity: sha512-qWwEl5VR02NqRyl68/3pwp3c/olZuSp+vwlwrunuoNTm6JXGLG5pTeme4zoHNnk0qn4cCX7DFrOboArlYxv0wQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true optional: true - turbo-windows-64@1.12.2: + /turbo-windows-64@1.13.3: + resolution: {integrity: sha512-Nudr4bRChfJzBPzEmpVV85VwUYRCGKecwkBFpbp2a4NtrJ3+UP1VZES653ckqCu2FRyRuS0n03v9euMbAvzH+Q==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true optional: true - turbo-windows-arm64@1.12.2: + /turbo-windows-arm64@1.13.3: + resolution: {integrity: sha512-ouJCgsVLd3icjRLmRvHQDDZnmGzT64GBupM1Y+TjtYn2LVaEBoV6hicFy8x5DUpnqdLy+YpCzRMkWlwhmkX7sQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true optional: true - turbo@1.12.2: + /turbo@1.13.3: + resolution: {integrity: sha512-n17HJv4F4CpsYTvKzUJhLbyewbXjq1oLCi90i5tW1TiWDz16ML1eDG7wi5dHaKxzh5efIM56SITnuVbMq5dk4g==} + hasBin: true optionalDependencies: - turbo-darwin-64: 1.12.2 - turbo-darwin-arm64: 1.12.2 - turbo-linux-64: 1.12.2 - turbo-linux-arm64: 1.12.2 - turbo-windows-64: 1.12.2 - turbo-windows-arm64: 1.12.2 - - type-check@0.4.0: + turbo-darwin-64: 1.13.3 + turbo-darwin-arm64: 1.13.3 + turbo-linux-64: 1.13.3 + turbo-linux-arm64: 1.13.3 + turbo-windows-64: 1.13.3 + turbo-windows-arm64: 1.13.3 + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 - type-detect@4.0.8: {} + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: false - type-fest@0.16.0: {} + /type-fest@0.16.0: + resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} + engines: {node: '>=10'} + dev: false - type-fest@0.20.2: {} + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} - type-fest@0.21.3: {} + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} - type-fest@0.3.1: {} + /type-fest@0.3.1: + resolution: {integrity: sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==} + engines: {node: '>=6'} + dev: false - type-fest@0.7.1: {} + /type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + dev: false - type-fest@3.13.1: {} + /type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} + dev: false - typed-array-buffer@1.0.0: + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.3 + call-bind: 1.0.7 + es-errors: 1.3.0 is-typed-array: 1.1.13 + dev: false - typed-array-byte-length@1.0.0: + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 - has-proto: 1.0.1 + gopd: 1.0.1 + has-proto: 1.0.3 is-typed-array: 1.1.13 + dev: false - typed-array-byte-offset@1.0.0: + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.6 - call-bind: 1.0.5 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 - has-proto: 1.0.1 + gopd: 1.0.1 + has-proto: 1.0.3 is-typed-array: 1.1.13 + dev: false - typed-array-length@1.0.4: + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + dev: false - typescript@5.4.3: {} + /typedarray.prototype.slice@1.0.3: + resolution: {integrity: sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + typed-array-buffer: 1.0.2 + typed-array-byte-offset: 1.0.2 + dev: false + + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true - ua-parser-js@1.0.37: {} + /ua-parser-js@1.0.37: + resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} + dev: false - uc.micro@1.0.6: {} + /uc.micro@1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + dev: false - uglify-js@3.17.4: + /uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + requiresBuild: true + dev: true optional: true - unbox-primitive@1.0.2: + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + dev: false - undici-types@5.26.5: {} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - unicode-canonical-property-names-ecmascript@2.0.0: {} + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} - unicode-match-property-ecmascript@2.0.0: + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 - unicode-match-property-value-ecmascript@2.1.0: {} + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} - unicode-property-aliases-ecmascript@2.1.0: {} + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} - unique-filename@1.1.1: + /unique-filename@1.1.1: + resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} dependencies: unique-slug: 2.0.2 + dev: false - unique-slug@2.0.2: + /unique-slug@2.0.2: + resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} dependencies: imurmurhash: 0.1.4 + dev: false - unique-string@1.0.0: + /unique-string@1.0.0: + resolution: {integrity: sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==} + engines: {node: '>=4'} dependencies: crypto-random-string: 1.0.0 + dev: false - unique-string@2.0.0: + /unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} dependencies: crypto-random-string: 2.0.0 + dev: false - universal-user-agent@6.0.1: {} + /universal-user-agent@6.0.1: + resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} + dev: false - universalify@0.1.2: {} + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: false - universalify@1.0.0: {} + /universalify@1.0.0: + resolution: {integrity: sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==} + engines: {node: '>= 10.0.0'} + dev: false - universalify@2.0.1: {} + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} - unpacker@1.0.1: {} + /unpacker@1.0.1: + resolution: {integrity: sha512-0HTljwp8+JBdITpoHcK1LWi7X9U2BspUmWv78UWZh7NshYhbh1nec8baY/iSbe2OQTZ2bhAtVdnr6/BTD0DKVg==} + dev: false - unpipe@1.0.0: {} + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: false - update-browserslist-db@1.0.13(browserslist@4.22.3): + /update-browserslist-db@1.0.14(browserslist@4.23.0): + resolution: {integrity: sha512-JixKH8GR2pWYshIPUg/NujK3JO7JiqEEUiNArE86NQyrgUuZeTlZQN3xuS/yiV5Kb48ev9K6RqNkaJjXsdg7Jw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' dependencies: - browserslist: 4.22.3 - escalade: 3.1.1 + browserslist: 4.23.0 + escalade: 3.1.2 picocolors: 1.0.0 - update-check@1.5.4: + /update-check@1.5.4: + resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} dependencies: registry-auth-token: 3.3.2 registry-url: 3.1.0 + dev: true - upper-case-first@1.1.2: + /upper-case-first@1.1.2: + resolution: {integrity: sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==} dependencies: upper-case: 1.1.3 + dev: true - upper-case@1.1.3: {} + /upper-case@1.1.3: + resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} + dev: true - uri-js@4.4.1: + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.1 - url-join@4.0.0: {} + /url-join@4.0.0: + resolution: {integrity: sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA==} + dev: false - url@0.11.3: + /url@0.11.3: + resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} dependencies: punycode: 1.4.1 - qs: 6.11.2 + qs: 6.12.1 + dev: false - use-callback-ref@1.3.1(@types/react@18.2.52)(react@18.2.0): + /use-callback-ref@1.3.2(@types/react@18.3.1)(react@18.2.0): + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.1 react: 18.2.0 tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.52 + dev: false - use-latest-callback@0.1.9(react@18.2.0): + /use-latest-callback@0.1.9(react@18.2.0): + resolution: {integrity: sha512-CL/29uS74AwreI/f2oz2hLTW7ZqVeV5+gxFeGudzQrgkCytrHw33G4KbnQOrRlAEzzAFXi7dDLMC9zhWcVpzmw==} + peerDependencies: + react: '>=16.8' dependencies: react: 18.2.0 + dev: false - use-sidecar@1.1.2(@types/react@18.2.52)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.3.1)(react@18.2.0): + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.3.1 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.2 - optionalDependencies: - '@types/react': 18.2.52 + dev: false - use-sync-external-store@1.2.0(react@18.2.0): + /use-sync-external-store@1.2.0(react@18.2.0): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: react: 18.2.0 + dev: false - util-deprecate@1.0.2: {} + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - util@0.12.5: + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} dependencies: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 is-typed-array: 1.1.13 - which-typed-array: 1.1.14 + which-typed-array: 1.1.15 + dev: false - utils-merge@1.0.1: {} + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: false - uuid@7.0.3: {} + /uuid@7.0.3: + resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==} + hasBin: true + dev: false - uuid@8.3.2: {} + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: false - v8-compile-cache-lib@3.0.1: {} + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true - valid-url@1.0.9: {} + /valid-url@1.0.9: + resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==} + dev: false - validate-npm-package-name@3.0.0: + /validate-npm-package-name@3.0.0: + resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} dependencies: builtins: 1.0.3 + dev: false - validate-npm-package-name@5.0.0: + /validate-npm-package-name@5.0.0: + resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - builtins: 5.0.1 + builtins: 5.1.0 + dev: true - vary@1.1.2: {} + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: false - vlq@1.0.1: {} + /vlq@1.0.1: + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + dev: false - w-json@1.3.10: {} + /w-json@1.3.10: + resolution: {integrity: sha512-XadVyw0xE+oZ5FGApXsdswv96rOhStzKqL53uSe5UaTadABGkWIg1+DTx8kiZ/VqTZTBneoL0l65RcPe4W3ecw==} + dev: false - walker@1.0.8: + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 + dev: false - warn-once@0.1.1: {} + /warn-once@0.1.1: + resolution: {integrity: sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==} + dev: false - wcwidth@1.0.1: + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 - web-encoding@1.1.5: + /web-encoding@1.1.5: + resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} dependencies: util: 0.12.5 optionalDependencies: '@zxing/text-encoding': 0.9.0 + dev: false - web-streams-polyfill@3.3.3: {} + /web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + dev: false - webidl-conversions@3.0.1: {} + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false - webidl-conversions@5.0.0: {} + /webidl-conversions@5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + dev: false - whatwg-fetch@3.6.20: {} + /whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + dev: false - whatwg-url-without-unicode@8.0.0-3: + /whatwg-url-without-unicode@8.0.0-3: + resolution: {integrity: sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==} + engines: {node: '>=10'} dependencies: buffer: 5.7.1 punycode: 2.3.1 webidl-conversions: 5.0.0 + dev: false - whatwg-url@5.0.0: + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 + dev: false - which-boxed-primitive@1.0.2: + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 + dev: false - which-builtin-type@1.1.3: + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} dependencies: function.prototype.name: 1.1.6 has-tostringtag: 1.0.2 @@ -15776,108 +14122,211 @@ snapshots: is-weakref: 1.0.2 isarray: 2.0.5 which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.14 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + dev: false - which-collection@1.0.1: + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} dependencies: - is-map: 2.0.2 - is-set: 2.0.2 - is-weakmap: 2.0.1 - is-weakset: 2.0.2 + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 + dev: false - which-module@2.0.1: {} + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + dev: false - which-typed-array@1.1.14: + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.6 - call-bind: 1.0.5 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.2 + dev: false - which@1.3.1: + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true dependencies: isexe: 2.0.0 + dev: false - which@2.0.2: + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true dependencies: isexe: 2.0.0 - wonka@4.0.15: {} + /wonka@4.0.15: + resolution: {integrity: sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==} + dev: false + + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} - wordwrap@1.0.0: {} + /wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + dev: true - wrap-ansi@6.2.0: + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@7.0.0: + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + dev: false - wrap-ansi@8.1.0: + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 + dev: false - wrappy@1.0.2: {} + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@2.4.3: + /write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} dependencies: graceful-fs: 4.2.11 imurmurhash: 0.1.4 signal-exit: 3.0.7 + dev: false - ws@6.2.2: + /ws@6.2.2: + resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true dependencies: async-limiter: 1.0.1 + dev: false - ws@7.5.9: {} + /ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false - ws@8.16.0: {} + /ws@8.17.0: + resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false - xcode@3.0.1: + /xcode@3.0.1: + resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==} + engines: {node: '>=10.0.0'} dependencies: simple-plist: 1.3.1 uuid: 7.0.3 + dev: false - xml2js@0.6.0: + /xml2js@0.6.0: + resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==} + engines: {node: '>=4.0.0'} dependencies: sax: 1.3.0 xmlbuilder: 11.0.1 + dev: false - xmlbuilder@11.0.1: {} + /xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + dev: false - xmlbuilder@14.0.0: {} + /xmlbuilder@14.0.0: + resolution: {integrity: sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==} + engines: {node: '>=8.0'} + dev: false - xmlbuilder@15.1.1: {} + /xmlbuilder@15.1.1: + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} + dev: false - xtend@4.0.2: {} + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: false - y18n@4.0.3: {} + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: false - y18n@5.0.8: {} + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: false - yallist@3.1.1: {} + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: {} + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.4.1: {} + /yaml@2.4.2: + resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} + engines: {node: '>= 14'} + hasBin: true + dev: false - yargs-parser@18.1.3: + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} dependencies: camelcase: 5.3.1 decamelize: 1.2.0 + dev: false - yargs-parser@21.1.1: {} + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: false - yargs@15.4.1: + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} dependencies: cliui: 6.0.0 decamelize: 1.2.0 @@ -15890,8 +14339,11 @@ snapshots: which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 + dev: false - yargs@17.7.2: + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} dependencies: cliui: 8.0.1 escalade: 3.1.2 @@ -15900,15 +14352,52 @@ snapshots: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 + dev: false - yn@3.1.1: {} + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true - yocto-queue@0.1.0: {} + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} - zustand@4.4.7(@types/react@18.2.52)(immer@10.0.3)(react@18.2.0): + /zustand@4.5.2(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0): + resolution: {integrity: sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true dependencies: - use-sync-external-store: 1.2.0(react@18.2.0) - optionalDependencies: - '@types/react': 18.2.52 - immer: 10.0.3 + '@types/react': 18.3.1 + immer: 10.1.1 react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + + github.com/sussy-code/providers/ead928c5d09cad1c23aeab58687d3fae7f426dba: + resolution: {tarball: https://codeload.github.com/sussy-code/providers/tar.gz/ead928c5d09cad1c23aeab58687d3fae7f426dba} + name: '@movie-web/providers' + version: 2.3.0 + prepare: true + requiresBuild: true + dependencies: + cheerio: 1.0.0-rc.12 + cookie: 0.6.0 + crypto-js: 4.2.0 + form-data: 4.0.0 + iso-639-1: 3.1.2 + nanoid: 3.3.7 + node-fetch: 3.3.2 + set-cookie-parser: 2.6.0 + unpacker: 1.0.1 + dev: false From 918b45c76d52b0a114ed911c053246a666aed5e7 Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Thu, 2 May 2024 13:38:19 +0200 Subject: [PATCH 05/49] feat: marketplace module --- .../expo-module.config.json | 6 +++ .../modules/check-ios-marketplace/index.ts | 22 +++++++++++ .../ios/CheckIosMarketplace.podspec | 21 ++++++++++ .../ios/CheckIosMarketplaceModule.swift | 39 +++++++++++++++++++ .../src/CheckIosMarketplaceModule.android.ts | 10 +++++ .../src/CheckIosMarketplaceModule.ts | 5 +++ apps/expo/src/app/(tabs)/settings.tsx | 6 ++- 7 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 apps/expo/modules/check-ios-marketplace/expo-module.config.json create mode 100644 apps/expo/modules/check-ios-marketplace/index.ts create mode 100644 apps/expo/modules/check-ios-marketplace/ios/CheckIosMarketplace.podspec create mode 100644 apps/expo/modules/check-ios-marketplace/ios/CheckIosMarketplaceModule.swift create mode 100644 apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.android.ts create mode 100644 apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.ts diff --git a/apps/expo/modules/check-ios-marketplace/expo-module.config.json b/apps/expo/modules/check-ios-marketplace/expo-module.config.json new file mode 100644 index 0000000..362d5be --- /dev/null +++ b/apps/expo/modules/check-ios-marketplace/expo-module.config.json @@ -0,0 +1,6 @@ +{ + "platforms": ["ios"], + "ios": { + "modules": ["CheckIosMarketplaceModule"] + } +} diff --git a/apps/expo/modules/check-ios-marketplace/index.ts b/apps/expo/modules/check-ios-marketplace/index.ts new file mode 100644 index 0000000..e090dfe --- /dev/null +++ b/apps/expo/modules/check-ios-marketplace/index.ts @@ -0,0 +1,22 @@ +import CheckIosMarketplaceModule from "./src/CheckIosMarketplaceModule"; + +export enum MarketplaceSource { + AppStore = "App Store", + TestFlight = "TestFlight", + Marketplace = "Alternative marketplace", + Web = "Website", + Other = "Other", + Unknown = "Unknown", + Error = "Error", + Unavailable = "Unavailable" +} + +interface CheckIosMarketplaceModule { + getCurrentMarketplaceAsync(): Promise; +} + +export async function getCurrentMarketplaceAsync(): Promise { + return ( + CheckIosMarketplaceModule as CheckIosMarketplaceModule + ).getCurrentMarketplaceAsync(); +} diff --git a/apps/expo/modules/check-ios-marketplace/ios/CheckIosMarketplace.podspec b/apps/expo/modules/check-ios-marketplace/ios/CheckIosMarketplace.podspec new file mode 100644 index 0000000..8cce772 --- /dev/null +++ b/apps/expo/modules/check-ios-marketplace/ios/CheckIosMarketplace.podspec @@ -0,0 +1,21 @@ +Pod::Spec.new do |s| + s.name = 'CheckIosMarketplace' + s.version = '1.0.0' + s.summary = 'Get current iOS Marketplace.' + s.description = 'Get current iOS Marketplace.' + s.author = 'castdrian' + s.homepage = 'https://docs.expo.dev/modules/' + s.platforms = { :ios => '13.4', :tvos => '13.4' } + s.source = { git: '' } + s.static_framework = true + + s.dependency 'ExpoModulesCore' + + # Swift/Objective-C compatibility + s.pod_target_xcconfig = { + 'DEFINES_MODULE' => 'YES', + 'SWIFT_COMPILATION_MODE' => 'wholemodule' + } + + s.source_files = "**/*.{h,m,mm,swift,hpp,cpp}" +end diff --git a/apps/expo/modules/check-ios-marketplace/ios/CheckIosMarketplaceModule.swift b/apps/expo/modules/check-ios-marketplace/ios/CheckIosMarketplaceModule.swift new file mode 100644 index 0000000..85bb9ad --- /dev/null +++ b/apps/expo/modules/check-ios-marketplace/ios/CheckIosMarketplaceModule.swift @@ -0,0 +1,39 @@ +import ExpoModulesCore + +#if canImport(MarketplaceKit) +import MarketplaceKit +#endif + +public class CheckIosMarketplaceModule: Module { + public func definition() -> ModuleDefinition { + Name("CheckIosMarketplace") + + AsyncFunction("getCurrentMarketplaceAsync") { () -> Any in + #if canImport(MarketplaceKit) + if #available(iOS 17.4, *) { + do { + let currentDistributor = try await AppDistributor.current + switch currentDistributor { + case .appStore: + return "App Store" + case .testFlight: + return "TestFlight" + case .marketplace: + return "Alternative marketplace" + case .other: + return "Other" + @unknown default: + return "Unknown" + } + } catch { + return "Error" + } + } else { + return "Unavailable" + } + #else + return "Unavailable" + #endif + } + } +} diff --git a/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.android.ts b/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.android.ts new file mode 100644 index 0000000..cc72074 --- /dev/null +++ b/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.android.ts @@ -0,0 +1,10 @@ +import { UnavailabilityError } from "expo-modules-core"; + +export default { + isDevelopmentProvisioningProfile: () => { + throw new UnavailabilityError( + "CheckIosMarketplace", + "getCurrentMarketplace", + ); + }, +}; diff --git a/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.ts b/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.ts new file mode 100644 index 0000000..5d729a3 --- /dev/null +++ b/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.ts @@ -0,0 +1,5 @@ +import { requireNativeModule } from "expo-modules-core"; + +// It loads the native module object from the JSI or falls back to +// the bridge module (from NativeModulesProxy) if the remote debugger is on. +export default requireNativeModule("CheckIosMarketplace"); diff --git a/apps/expo/src/app/(tabs)/settings.tsx b/apps/expo/src/app/(tabs)/settings.tsx index 810287c..21413a1 100644 --- a/apps/expo/src/app/(tabs)/settings.tsx +++ b/apps/expo/src/app/(tabs)/settings.tsx @@ -38,6 +38,7 @@ import { usePlayerSettingsStore, } from "~/stores/settings"; import { useThemeStore } from "~/stores/theme"; +import { getCurrentMarketplaceAsync } from "modules/check-ios-marketplace"; const themeOptions: ThemeStoreOption[] = [ "main", @@ -74,7 +75,10 @@ export default function SettingsScreen() { ); setShowUpdateSheet(true); } else { - showToast("No updates available"); + showToast("No updates available"); + void getCurrentMarketplaceAsync().then((marketplace) => { + console.log(marketplace); + }); } }, }); From eedbbf310cb19ce81689ddd7a1da785c7c4dbd81 Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Thu, 2 May 2024 13:43:41 +0200 Subject: [PATCH 06/49] chore: bump tamagui since it appears to be broken otherwise --- .../modules/check-ios-marketplace/index.ts | 24 +- apps/expo/package.json | 10 +- apps/expo/src/app/(tabs)/settings.tsx | 10 +- apps/expo/tsconfig.json | 8 +- packages/api/tsconfig.json | 4 +- packages/provider-utils/tsconfig.json | 4 +- packages/tmdb/tsconfig.json | 4 +- pnpm-lock.yaml | 515 ++++++++---------- tooling/colors/tsconfig.json | 4 +- tooling/eslint/tsconfig.json | 4 +- tooling/prettier/tsconfig.json | 4 +- 11 files changed, 277 insertions(+), 314 deletions(-) diff --git a/apps/expo/modules/check-ios-marketplace/index.ts b/apps/expo/modules/check-ios-marketplace/index.ts index e090dfe..3b5f8c6 100644 --- a/apps/expo/modules/check-ios-marketplace/index.ts +++ b/apps/expo/modules/check-ios-marketplace/index.ts @@ -1,22 +1,22 @@ import CheckIosMarketplaceModule from "./src/CheckIosMarketplaceModule"; export enum MarketplaceSource { - AppStore = "App Store", - TestFlight = "TestFlight", - Marketplace = "Alternative marketplace", - Web = "Website", - Other = "Other", - Unknown = "Unknown", - Error = "Error", - Unavailable = "Unavailable" + AppStore = "App Store", + TestFlight = "TestFlight", + Marketplace = "Alternative marketplace", + Web = "Website", + Other = "Other", + Unknown = "Unknown", + Error = "Error", + Unavailable = "Unavailable", } interface CheckIosMarketplaceModule { - getCurrentMarketplaceAsync(): Promise; + getCurrentMarketplaceAsync(): Promise; } export async function getCurrentMarketplaceAsync(): Promise { - return ( - CheckIosMarketplaceModule as CheckIosMarketplaceModule - ).getCurrentMarketplaceAsync(); + return ( + CheckIosMarketplaceModule as CheckIosMarketplaceModule + ).getCurrentMarketplaceAsync(); } diff --git a/apps/expo/package.json b/apps/expo/package.json index 3a1a044..4f314bd 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -27,11 +27,11 @@ "@react-native-anywhere/polyfill-base64": "0.0.1-alpha.0", "@react-navigation/native": "^6.1.9", "@salihgun/react-native-video-processor": "^0.3.1", - "@tamagui/animations-moti": "^1.94.0", - "@tamagui/babel-plugin": "^1.94.0", - "@tamagui/config": "^1.94.0", - "@tamagui/metro-plugin": "^1.94.0", - "@tamagui/toast": "1.94.0", + "@tamagui/animations-moti": "^1.96.0", + "@tamagui/babel-plugin": "^1.96.0", + "@tamagui/config": "^1.96.0", + "@tamagui/metro-plugin": "^1.96.0", + "@tamagui/toast": "1.96.0", "@tanstack/react-query": "^5.22.2", "burnt": "^0.12.2", "class-variance-authority": "^0.7.0", diff --git a/apps/expo/src/app/(tabs)/settings.tsx b/apps/expo/src/app/(tabs)/settings.tsx index 21413a1..18b6c41 100644 --- a/apps/expo/src/app/(tabs)/settings.tsx +++ b/apps/expo/src/app/(tabs)/settings.tsx @@ -12,6 +12,7 @@ import { MaterialIcons, } from "@expo/vector-icons"; import { useMutation } from "@tanstack/react-query"; +import { getCurrentMarketplaceAsync } from "modules/check-ios-marketplace"; import { Adapt, ScrollView, @@ -38,7 +39,6 @@ import { usePlayerSettingsStore, } from "~/stores/settings"; import { useThemeStore } from "~/stores/theme"; -import { getCurrentMarketplaceAsync } from "modules/check-ios-marketplace"; const themeOptions: ThemeStoreOption[] = [ "main", @@ -75,10 +75,10 @@ export default function SettingsScreen() { ); setShowUpdateSheet(true); } else { - showToast("No updates available"); - void getCurrentMarketplaceAsync().then((marketplace) => { - console.log(marketplace); - }); + showToast("No updates available"); + void getCurrentMarketplaceAsync().then((marketplace) => { + console.log(marketplace); + }); } }, }); diff --git a/apps/expo/tsconfig.json b/apps/expo/tsconfig.json index 0d01eda..8dccf0d 100644 --- a/apps/expo/tsconfig.json +++ b/apps/expo/tsconfig.json @@ -6,10 +6,10 @@ "paths": { "~/*": ["./src/*"], "~/components/*": ["./src/components/*"], - "modules/*": ["./modules/*"], + "modules/*": ["./modules/*"] }, "jsx": "react-native", - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json", + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" }, "include": [ "src", @@ -18,7 +18,7 @@ "*.js", ".expo/types/**/*.ts", "expo-env.d.ts", - "src/plugins/*", + "src/plugins/*" ], - "exclude": ["node_modules"], + "exclude": ["node_modules"] } diff --git a/packages/api/tsconfig.json b/packages/api/tsconfig.json index 12305a4..c29938c 100644 --- a/packages/api/tsconfig.json +++ b/packages/api/tsconfig.json @@ -1,8 +1,8 @@ { "extends": "@movie-web/tsconfig/base.json", "compilerOptions": { - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json", + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" }, "include": ["*.ts", "src"], - "exclude": ["node_modules"], + "exclude": ["node_modules"] } diff --git a/packages/provider-utils/tsconfig.json b/packages/provider-utils/tsconfig.json index 12305a4..c29938c 100644 --- a/packages/provider-utils/tsconfig.json +++ b/packages/provider-utils/tsconfig.json @@ -1,8 +1,8 @@ { "extends": "@movie-web/tsconfig/base.json", "compilerOptions": { - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json", + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" }, "include": ["*.ts", "src"], - "exclude": ["node_modules"], + "exclude": ["node_modules"] } diff --git a/packages/tmdb/tsconfig.json b/packages/tmdb/tsconfig.json index 12305a4..c29938c 100644 --- a/packages/tmdb/tsconfig.json +++ b/packages/tmdb/tsconfig.json @@ -1,8 +1,8 @@ { "extends": "@movie-web/tsconfig/base.json", "compilerOptions": { - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json", + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" }, "include": ["*.ts", "src"], - "exclude": ["node_modules"], + "exclude": ["node_modules"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0cf33ae..d23864c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,20 +54,20 @@ importers: specifier: ^0.3.1 version: 0.3.1(ffmpeg-kit-react-native@6.0.2)(react-native-video@5.2.1)(react-native@0.73.6)(react@18.2.0) '@tamagui/animations-moti': - specifier: ^1.94.0 + specifier: ^1.96.0 version: 1.96.0(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react@18.2.0) '@tamagui/babel-plugin': - specifier: ^1.94.0 + specifier: ^1.96.0 version: 1.96.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5) '@tamagui/config': - specifier: ^1.94.0 + specifier: ^1.96.0 version: 1.96.0(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react-native@0.73.6)(react@18.2.0) '@tamagui/metro-plugin': - specifier: ^1.94.0 + specifier: ^1.96.0 version: 1.96.0(@babel/core@7.24.5)(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react-native-safe-area-context@4.8.2)(react-native-svg@14.1.0)(react-native@0.73.6)(react@18.2.0)(tailwindcss@3.4.3)(typescript@5.4.5) '@tamagui/toast': - specifier: 1.94.0 - version: 1.94.0(react-native@0.73.6)(react@18.2.0) + specifier: 1.96.0 + version: 1.96.0(react-native@0.73.6)(react@18.2.0) '@tanstack/react-query': specifier: ^5.22.2 version: 5.32.1(react@18.2.0) @@ -3873,18 +3873,6 @@ packages: - '@types/react' dev: false - /@tamagui/animate-presence@1.94.0(react@18.2.0): - resolution: {integrity: sha512-vdjwMjXBYaTvlzBKdcxPzuf7opSg/ipXH3debtpVpbBgCllC4r5X8P00btYxLKrkI0I7NVTDUMOQRln1OH4IdQ==} - dependencies: - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/use-constant': 1.94.0(react@18.2.0) - '@tamagui/use-force-update': 1.94.0(react@18.2.0) - '@tamagui/use-presence': 1.94.0(react@18.2.0) - '@tamagui/web': 1.94.0 - transitivePeerDependencies: - - react - dev: false - /@tamagui/animate-presence@1.96.0(react@18.2.0): resolution: {integrity: sha512-JRBuYSG8PcKPQXr29rb3/1vLSl0vb2XXYTTzzy6EsyO40q4Yq5fCatO7FTg0kZ2xXR8rE1FpxvWhkmDxYjpNrg==} dependencies: @@ -4119,14 +4107,6 @@ packages: resolution: {integrity: sha512-4fLIiwnD6VWJtHbOKJJTMDFYqEudylqqL1kOyHK+QloF+w186CWIETMwXo3ycxjDq3kYnnx/rr0sWAEnq67w1Q==} dev: false - /@tamagui/compose-refs@1.94.0(react@18.2.0): - resolution: {integrity: sha512-acbqt+5PR3AQtfJ1eyxAaRArg+40DXLjyJZou57+vZ2fB4bAY1NHBhsiDp0ytKBWDefZWB5ltie7lL3BImBRBg==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - /@tamagui/compose-refs@1.96.0(react@18.2.0): resolution: {integrity: sha512-t4gY6+0VP/vq0J6r7bkVh8RUhE9ZXyjsxOA0kQa1wjTGbez1yE+OuRtoTU3XnDK8BymZl2YWzAA8sKxnUzSdCw==} peerDependencies: @@ -4164,14 +4144,6 @@ packages: - react-native-reanimated dev: false - /@tamagui/constants@1.94.0(react@18.2.0): - resolution: {integrity: sha512-2G44sIpoSw7YuK1yIM5dzBg9z5IwYcvnVJ4Tcv2sSPYVvcErZLODTbe3fc4ssXEIVTNPWbhD69LRvq+LW2vV9g==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - /@tamagui/constants@1.96.0(react@18.2.0): resolution: {integrity: sha512-wlDqX3GV7vTtY1mlrmwd/H/UThkFZ6J3frosw2q7MgKsvqOxQbFGUhEMgS1Jmt8S+Fzktuy1+N8v1sRrajEsKA==} peerDependencies: @@ -4180,18 +4152,6 @@ packages: react: 18.2.0 dev: false - /@tamagui/core@1.94.0(react@18.2.0): - resolution: {integrity: sha512-L6QJ5avPXVzozoMwJEvMnYt4xAO59Ht/nv2kf51c0QCP84BbwsNDrTJztjdWQ2J3f3QOczKCzBPsIOU4iEevVw==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/react-native-use-pressable': 1.94.0(react@18.2.0) - '@tamagui/react-native-use-responder-events': 1.94.0(react@18.2.0) - '@tamagui/use-event': 1.94.0(react@18.2.0) - '@tamagui/web': 1.94.0 - react: 18.2.0 - dev: false - /@tamagui/core@1.96.0(react@18.2.0): resolution: {integrity: sha512-QBtJpWibCFu6Y+9rTsXA31V5D3V5ctvyZCydRF8GYkQvScGDpQmFNWLezPHJ9Q/8lqlczxzpOyXGanIY14sEKQ==} peerDependencies: @@ -4204,14 +4164,6 @@ packages: react: 18.2.0 dev: false - /@tamagui/create-context@1.94.0(react@18.2.0): - resolution: {integrity: sha512-WJLbRU2HKppZJBNPvUHBpF6B0sKxG1EQ/0YaQw+H8jIsn3ogSt6NzAR86DkpWg/yahWhz5humcNKwNeNkrIbFA==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - /@tamagui/create-context@1.96.0(react@18.2.0): resolution: {integrity: sha512-7h+JaKVoOWY9tmtVTmxZR87RUu3xyrfAfF6qs8OrMxNuIQDmSRWwyqEaF+/3ikU7YVBYUjs8qvF48/FJfGFUrg==} peerDependencies: @@ -4262,19 +4214,6 @@ packages: - '@types/react' dev: false - /@tamagui/dismissable@1.94.0(react@18.2.0): - resolution: {integrity: sha512-jWgB2hQin9evkCqv5/WGvuzAQuRuaIfF+NzL+N/V3rVrV9HaoFwtpoRjKrGZSZNUT98msr1vBjfxS9+3m00/Tw==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/use-escape-keydown': 1.94.0 - '@tamagui/use-event': 1.94.0(react@18.2.0) - react: 18.2.0 - dev: false - /@tamagui/dismissable@1.96.0(react@18.2.0): resolution: {integrity: sha512-Xz82OA2Vzw9wq5jCjfYBytoHpnK95bCDwxvDMlWZdo2ztfT0qGh/VOF6llx0qUc2FysbPd9s1LvZrXfVphCXgg==} peerDependencies: @@ -4404,15 +4343,6 @@ packages: - react-native dev: false - /@tamagui/get-font-sized@1.94.0(react@18.2.0): - resolution: {integrity: sha512-c+Ddga34d4jZ6qnX48XUJ1mDXYkuMysaLoPGg6YFOE5eKdWYpDDbGcwrB8Wwh+0SV2ae/1hYQc0JbxHVSvwbNw==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/core': 1.94.0(react@18.2.0) - react: 18.2.0 - dev: false - /@tamagui/get-font-sized@1.96.0(react@18.2.0): resolution: {integrity: sha512-PXGkJdauNaZam5tnCmebMrewxzH5VZ4EfUcfZEMKJ6DQ6dgM/HfROF/3261Cz9nkOSvaLYuSMPSdH9ZDxJ58Nw==} peerDependencies: @@ -4456,18 +4386,6 @@ packages: '@tamagui/types': 1.96.0 dev: false - /@tamagui/helpers-tamagui@1.94.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-gVfoRUIs1zZb5zzP87+8slKP/PTHHkIiaLMsVsV3/e4MjegOfDNU9LJDiAAZddQEItu+5kFVCFHgx3Q1ek1r9g==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/web': 1.94.0 - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - /@tamagui/helpers-tamagui@1.96.0(react-native@0.73.6)(react@18.2.0): resolution: {integrity: sha512-KgLHHvgMWDmxq+2APw5g64xeXBVL0HSFNaOH5HVt5YXW1SJzAJveWDG4zUpBg5cNlYQA2gqUx+jTggs7AG0jxg==} peerDependencies: @@ -4480,15 +4398,6 @@ packages: react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) dev: false - /@tamagui/helpers@1.94.0(react@18.2.0): - resolution: {integrity: sha512-7GJN2UztmI5hdmcBwhlGqGg2uxr3+S9LhnjjIitmveXchgqv0Zik4pCLagh9SQeTDoEkoZ5X3/PmM25jbTvGcw==} - dependencies: - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/simple-hash': 1.94.0 - transitivePeerDependencies: - - react - dev: false - /@tamagui/helpers@1.96.0(react@18.2.0): resolution: {integrity: sha512-8MCEG4v8y/yyqxuXHLUEKe9cT+rMlg+XDvbjhjwR4uYDvc420z26EJhHz9vZGrElBYzYp7uNuWptMib1ihdgcA==} dependencies: @@ -4561,8 +4470,8 @@ packages: dependencies: '@tamagui/static': 1.96.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5) fs-extra: 11.2.0 - metro-config: 0.80.8 - metro-transform-worker: 0.80.8 + metro-config: 0.80.9 + metro-transform-worker: 0.80.9 react-native-css-interop: 0.0.34(@babel/core@7.24.5)(react-native-reanimated@3.6.3)(react-native-safe-area-context@4.8.2)(react-native-svg@14.1.0)(react-native@0.73.6)(react@18.2.0)(tailwindcss@3.4.3) transitivePeerDependencies: - '@babel/core' @@ -4580,22 +4489,12 @@ packages: - utf-8-validate dev: false - /@tamagui/normalize-css-color@1.94.0: - resolution: {integrity: sha512-Uf65nZneTx6Jvqpq28lGvfMEoXSS4bE3cTlbNbeABwogGd3e5x15NiPkMraq08oPHw/P+rl+844FTEkeMFxv/g==} - dependencies: - '@react-native/normalize-color': 2.1.0 - dev: false - /@tamagui/normalize-css-color@1.96.0: resolution: {integrity: sha512-FWOLPBh8joDDxp2m1l8/tDmETF/9FySKEjTubFitvhgKCfWzM0x8GumA/8FpIp8YyEENIOy1kdKRtx8BUO5qlQ==} dependencies: '@react-native/normalize-color': 2.1.0 dev: false - /@tamagui/polyfill-dev@1.94.0: - resolution: {integrity: sha512-aK2XRxzDIlixyn1n+Os+2gL370nbD/SBXi6vb9hfxZmuJH5DpNCMUuFjTzamhd/CjixLhnLLoOZtp1FIA+reLg==} - dev: false - /@tamagui/polyfill-dev@1.96.0: resolution: {integrity: sha512-TXowsPngnSxvhDHrtwUnQx3EADQivBpxqzvY5RJxKNU+UL8+o+FtQ1lRSaaWOPdU1wTr81rA0FBmx7QvWCwS/g==} dev: false @@ -4650,20 +4549,6 @@ packages: react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) dev: false - /@tamagui/portal@1.94.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-ns/fRTL62psU0WnyTR+MEIIGwwp+s90or6zlFe4PsilTKLbW+ZZLA8ovP2F0NOrC7sagBIIYhuD2WxvXprZMXw==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/use-event': 1.94.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - /@tamagui/portal@1.96.0(react-native@0.73.6)(react@18.2.0): resolution: {integrity: sha512-0qjSed2tz1dEyzI/a/hTEp3bcamvzNwPzLapD0hVdmUN7t7W23lrBdwhsa4+RanNnss94PyA2y51gFGQh5uuOw==} peerDependencies: @@ -4732,14 +4617,6 @@ packages: - react dev: false - /@tamagui/react-native-use-pressable@1.94.0(react@18.2.0): - resolution: {integrity: sha512-t4jIdBjvoYo8yCF6ja2ggO2jkKznUE6PfZ8sWWhi92Kph9s4zdFEhnYSx1/VCY3GQ5mnWBa8cftrCKFFWkdM5g==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - /@tamagui/react-native-use-pressable@1.96.0(react@18.2.0): resolution: {integrity: sha512-qM3/GjH1+QdaXPMFnO1bRR0PqSLlpoolg13vR9VkLJQ4FIzxP0HJJOAU0T94u/oVgpgwOWbRR27QR72ee3zTrg==} peerDependencies: @@ -4748,14 +4625,6 @@ packages: react: 18.2.0 dev: false - /@tamagui/react-native-use-responder-events@1.94.0(react@18.2.0): - resolution: {integrity: sha512-G6jsichSB3X5ycqxl++jcPbok7bofXmmFYgLH5Rgleo9k7U2NTlWRzkfNAowJ9hLy6doL9Hky5IN/3Kwtpj3vg==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - /@tamagui/react-native-use-responder-events@1.96.0(react@18.2.0): resolution: {integrity: sha512-qwVseY70+MJ8WmM/Wy6sZjjBsDRCFsrrlguTF9feCKnKmLy2Ja21CokHDJUdK6LZmNxvEpNRPQJLE/mGC4FQ4g==} peerDependencies: @@ -4889,10 +4758,6 @@ packages: resolution: {integrity: sha512-ZkblCN7CONic1/M5nbntqMDe0t/KnVWIx94+x7RpBzX5WJmfRKn4GrD2mozWo7D11nPHg98X/zPrb2EaW7OYCA==} dev: false - /@tamagui/simple-hash@1.94.0: - resolution: {integrity: sha512-r3YeMhrDHo9vcKxgh0KXtWsRaZ2w57MngsL030tH1//pBtu8TcEZRZVbWBrgSsSUFiVBqob7ZEwSBvjnkKxdBQ==} - dev: false - /@tamagui/simple-hash@1.96.0: resolution: {integrity: sha512-NsVkfw+W05SWGQOJO/L7NuqERewzUeMjX+GKadH+gZqE5WG/SjY7x7fVH1i9JCbpkT+816xXh3YYcx3kfjFaDQ==} dev: false @@ -4916,15 +4781,6 @@ packages: react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) dev: false - /@tamagui/stacks@1.94.0(react@18.2.0): - resolution: {integrity: sha512-oH1P+IUtreKQloVM9aCE9tY9OXjXMdABg0dxFYnkJSZSia025DaOfUzqH0fQJXmDrqOO6+rYWgo3vEnngeLTlg==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/core': 1.94.0(react@18.2.0) - react: 18.2.0 - dev: false - /@tamagui/stacks@1.96.0(react@18.2.0): resolution: {integrity: sha512-IjYg9mTDXJeVax9e/RYu1KpC4sjhmpcHpDzlVvfMo9IW8+8ro4o24pLTadlSKYcHPXAemqBKzK558VlJLRy/tw==} peerDependencies: @@ -5038,19 +4894,6 @@ packages: - react-native dev: false - /@tamagui/text@1.94.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-CGkjuwSHl+PF3HoZ/LDQfQH+NuzX2FN4AQzUFxoCZuf34Jafmbi31P1pbE2lY1+LdGE/joRBeZ3GwkJJU16M9A==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/get-font-sized': 1.94.0(react@18.2.0) - '@tamagui/helpers-tamagui': 1.94.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/web': 1.94.0 - react: 18.2.0 - transitivePeerDependencies: - - react-native - dev: false - /@tamagui/text@1.96.0(react-native@0.73.6)(react@18.2.0): resolution: {integrity: sha512-ozeXGcFmC1fFPiyd+bYYMGX4GwouwjlUp82nnsTn7rVMcvsRCWjKr3MsISBYqzmCvBwhee40nL4IwHqmzQM+yA==} peerDependencies: @@ -5094,33 +4937,29 @@ packages: - react dev: false - /@tamagui/timer@1.94.0: - resolution: {integrity: sha512-YNmripupVw06ZPccuuEBBEvWhZFHasZ0G2fYM4Pu4jWlUFt+ZhlRRs3BOZsANHH8xVSqE+KKTL0XSfcBbJMPnw==} - dev: false - /@tamagui/timer@1.96.0: resolution: {integrity: sha512-5Xrz+XNxEWYZu7obRryQHWPvrPpi3H3W513wUztmOhLO/KZ+G3X+POnGvwFPDPvpoJcDsRM+nvHZ6mMGgy5GbA==} dev: false - /@tamagui/toast@1.94.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-4+0bw+NzvlXRAK19BUy6AIxsVXW7pXmNxDszZPu5Jax1gEunNgTzhLaSeBkFq9oIJNuer9i8E4m3I9P5XBV7tw==} + /@tamagui/toast@1.96.0(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-N9YD3CEukzf3BVe1fuaSoKgrDHYUMsET7V8j4WJB7Muf37PzplBnocSlOAqFgxfeqhkVaqUoj6Kpye48Q5DzQQ==} peerDependencies: react: '*' react-native: '*' dependencies: - '@tamagui/animate-presence': 1.94.0(react@18.2.0) - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/core': 1.94.0(react@18.2.0) - '@tamagui/create-context': 1.94.0(react@18.2.0) - '@tamagui/dismissable': 1.94.0(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/polyfill-dev': 1.94.0 - '@tamagui/portal': 1.94.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/stacks': 1.94.0(react@18.2.0) - '@tamagui/text': 1.94.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/use-controllable-state': 1.94.0(react@18.2.0) - '@tamagui/visually-hidden': 1.94.0(react@18.2.0) + '@tamagui/animate-presence': 1.96.0(react@18.2.0) + '@tamagui/compose-refs': 1.96.0(react@18.2.0) + '@tamagui/constants': 1.96.0(react@18.2.0) + '@tamagui/core': 1.96.0(react@18.2.0) + '@tamagui/create-context': 1.96.0(react@18.2.0) + '@tamagui/dismissable': 1.96.0(react@18.2.0) + '@tamagui/helpers': 1.96.0(react@18.2.0) + '@tamagui/polyfill-dev': 1.96.0 + '@tamagui/portal': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/stacks': 1.96.0(react@18.2.0) + '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) + '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) + '@tamagui/visually-hidden': 1.96.0(react@18.2.0) react: 18.2.0 react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) dev: false @@ -5176,30 +5015,14 @@ packages: - react-dom dev: false - /@tamagui/types@1.94.0: - resolution: {integrity: sha512-xPkJqf9EVtcUkiw9+08PKkanl/fNY+PFgskcqn7LkmgrG28ekueEnVBV8t5EXvByaK7oo5r+zyAPXjgb18gJHQ==} - dev: false - /@tamagui/types@1.96.0: resolution: {integrity: sha512-8w6vu7SAVSOK2cXpn0KVi/iVfRQzcA5sO7I5x+E9RTCF/YFkxbciT9XRsgWO8ERPMbu1zUIfetJkNsvCPO+qFQ==} dev: false - /@tamagui/use-callback-ref@1.94.0: - resolution: {integrity: sha512-R++Xk2K9zWGPHdJV0T4mbrKVG3bNmCZleIlWyEIwAkzhXiDVD0vMFRyToAv6mJWbCcqe+2YVOUmoVFmGfS/QEA==} - dev: false - /@tamagui/use-callback-ref@1.96.0: resolution: {integrity: sha512-+kgcom6W6ejtZYXG8ENlSsBoHJECbLLx928eX3je8JpNRUzwKD+zifddnqcTa8+/ICWNvJG7mOBIrM8pT1Psng==} dev: false - /@tamagui/use-constant@1.94.0(react@18.2.0): - resolution: {integrity: sha512-Ufd4GbyKljLtwG6y1j8oufAuM+wjeGHmCSC690IGrZY/yREYG/6DoSZaTt3ToDfo7P5HG/6SSLd0IwcMg1h8ig==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - /@tamagui/use-constant@1.96.0(react@18.2.0): resolution: {integrity: sha512-RMSPratnwiRCGekDqGvkEa3UhAhBNWFrjhzjO7yQCv3dijgWVoyD7FNVOTG46DP3haGiZokVFWcT8G3u/PJ7CQ==} peerDependencies: @@ -5208,15 +5031,6 @@ packages: react: 18.2.0 dev: false - /@tamagui/use-controllable-state@1.94.0(react@18.2.0): - resolution: {integrity: sha512-DnTbjx1zfJMyzWzZ8mnWdbe3bRTyIBkFFEZXYiFEDDEbaOREKO2wDZRrA8jsvR+AYixAHWpIREPfk75X0lXy9A==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/use-event': 1.94.0(react@18.2.0) - react: 18.2.0 - dev: false - /@tamagui/use-controllable-state@1.96.0(react@18.2.0): resolution: {integrity: sha512-NpGKc4wz2oG0ez9G0W/IrG1OtKBfR4Pcg000WJADSw/Hc2L7mDLIBA3F8RNm3mZM0YEkUzAdXINQvQfx7A9uxA==} peerDependencies: @@ -5234,15 +5048,6 @@ packages: react: 18.2.0 dev: false - /@tamagui/use-did-finish-ssr@1.94.0(react@18.2.0): - resolution: {integrity: sha512-QX3i5nN4FulFXlrN3S792B2r67fz0GkOu7rkqDJj3hDmJTFFK2BMMDR0TS2zeZI1Lhf3NRW4V5QvadTZ05uRaQ==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/constants': 1.94.0(react@18.2.0) - react: 18.2.0 - dev: false - /@tamagui/use-did-finish-ssr@1.96.0(react@18.2.0): resolution: {integrity: sha512-ba/ujEXJYtdaWoNIJGzdBDZQpwuy4GH1hvxbTIAhYtlAXJUa0YCGE33+YRj3eSGsHDab0IS5NBCoL+cP0DmWjA==} peerDependencies: @@ -5260,27 +5065,12 @@ packages: react: 18.2.0 dev: false - /@tamagui/use-escape-keydown@1.94.0: - resolution: {integrity: sha512-Oqmhh8kb3UcUlSZvMB7B1MGiHah5zfeCQYO6KyxfStQcIvScChCYOsjNsBRdnElB4l679pelS5TKrjsnG8s8/Q==} - dependencies: - '@tamagui/use-callback-ref': 1.94.0 - dev: false - /@tamagui/use-escape-keydown@1.96.0: resolution: {integrity: sha512-feTsUAlQRSkPAh5LfJyYjMS5t898w2HB1TZt1aHq7BSdNFex+RZg9e1YOfwmOwXj6C6rawnrEsUcimeZaJi6ow==} dependencies: '@tamagui/use-callback-ref': 1.96.0 dev: false - /@tamagui/use-event@1.94.0(react@18.2.0): - resolution: {integrity: sha512-1oXVBHksOtGnk1znzunVTUywGYCjTnOoMbwgxB2qyXJOiKeMKULb1h3oNIJ3sliA0Vf4W6CdG3nX16RqrikvSw==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/constants': 1.94.0(react@18.2.0) - react: 18.2.0 - dev: false - /@tamagui/use-event@1.96.0(react@18.2.0): resolution: {integrity: sha512-kSx46K02x6WF+BYvsteJMuP5HNsraCXm+mf31Qb8efXvQYOxdL/UdebNDIPbRL9RKRcH/MUTqQH8kLIrRLwaLA==} peerDependencies: @@ -5290,14 +5080,6 @@ packages: react: 18.2.0 dev: false - /@tamagui/use-force-update@1.94.0(react@18.2.0): - resolution: {integrity: sha512-8sYdNDssnKJhZ/2UTVpO9364Ml4HAMXz8rajKo88r3Y6IU8qGJ9VK9fFYre6X5mWcBewHK9FS7lk/ivpk65QhA==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - /@tamagui/use-force-update@1.96.0(react@18.2.0): resolution: {integrity: sha512-0CbD2DytTxF6QRP05HKMS5/ns/E9AYfHo7qxxpy9/kiMluR3I+fRx3L/c0XjhwXAiDcM36XJ0lLqw+zAROQc4Q==} peerDependencies: @@ -5316,15 +5098,6 @@ packages: react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) dev: false - /@tamagui/use-presence@1.94.0(react@18.2.0): - resolution: {integrity: sha512-kGrysrGYYm4teL+P3tFHopvb2Q8cYqSpsbBZ0WZgadS3Ne6UaMzhjyPXz3ASOVGWiSTLJtrkmW9rPfywELzUPg==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/web': 1.94.0 - react: 18.2.0 - dev: false - /@tamagui/use-presence@1.96.0(react@18.2.0): resolution: {integrity: sha512-pIOLsBMtD7a5Z06LJ9eDY79yJ++b05qQxErl96W87kydKKGdixsVW71f1kSm9YzRJlVMEZi8kc13607enk4eBg==} peerDependencies: @@ -5349,15 +5122,6 @@ packages: react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) dev: false - /@tamagui/visually-hidden@1.94.0(react@18.2.0): - resolution: {integrity: sha512-YmmNOfiJTkCx4EE25RyHBxDuDSiVyShBBNNtPSgZRs3zqjY7NT/UZyseGk/g+aYbW5L27stYa5aNNRFLKqSwlQ==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/web': 1.94.0 - react: 18.2.0 - dev: false - /@tamagui/visually-hidden@1.96.0(react@18.2.0): resolution: {integrity: sha512-m2z/3WwXYslfHiU/szqieo0d6pmiD4G4xgOlNAYfHkN7lDlRQIIe4e1qopvgoEAdAHr1FDVUx0G7WhT4qCrzIg==} peerDependencies: @@ -5367,22 +5131,6 @@ packages: react: 18.2.0 dev: false - /@tamagui/web@1.94.0: - resolution: {integrity: sha512-Mwv/JLks46FoXncv2h6RI4AUYdEXJlnOZog450ZwDEgn13JQJLS8VEZsAgVOK5sc4zt/WzeS7pEvquS9DEridg==} - dependencies: - '@tamagui/compose-refs': 1.94.0(react@18.2.0) - '@tamagui/constants': 1.94.0(react@18.2.0) - '@tamagui/helpers': 1.94.0(react@18.2.0) - '@tamagui/normalize-css-color': 1.94.0 - '@tamagui/timer': 1.94.0 - '@tamagui/types': 1.94.0 - '@tamagui/use-did-finish-ssr': 1.94.0(react@18.2.0) - '@tamagui/use-event': 1.94.0(react@18.2.0) - '@tamagui/use-force-update': 1.94.0(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@tamagui/web@1.96.0(react@18.2.0): resolution: {integrity: sha512-qFdfrXs2LbPU9lnBHjOfxziVDqvwX3YtVPPidEYOrmBB112GaiaGjLA5MpgM+CJpYMoFpu+MOxzW73/7ouqMCw==} peerDependencies: @@ -10476,11 +10224,27 @@ packages: - supports-color dev: false + /metro-babel-transformer@0.80.9: + resolution: {integrity: sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ==} + engines: {node: '>=18'} + dependencies: + '@babel/core': 7.24.5 + hermes-parser: 0.20.1 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + /metro-cache-key@0.80.8: resolution: {integrity: sha512-qWKzxrLsRQK5m3oH8ePecqCc+7PEhR03cJE6Z6AxAj0idi99dHOSitTmY0dclXVB9vP2tQIAE8uTd8xkYGk8fA==} engines: {node: '>=18'} dev: false + /metro-cache-key@0.80.9: + resolution: {integrity: sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg==} + engines: {node: '>=18'} + dev: false + /metro-cache@0.80.8: resolution: {integrity: sha512-5svz+89wSyLo7BxdiPDlwDTgcB9kwhNMfNhiBZPNQQs1vLFXxOkILwQiV5F2EwYT9DEr6OPZ0hnJkZfRQ8lDYQ==} engines: {node: '>=18'} @@ -10489,6 +10253,14 @@ packages: rimraf: 3.0.2 dev: false + /metro-cache@0.80.9: + resolution: {integrity: sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w==} + engines: {node: '>=18'} + dependencies: + metro-core: 0.80.9 + rimraf: 3.0.2 + dev: false + /metro-config@0.80.8: resolution: {integrity: sha512-VGQJpfJawtwRzGzGXVUoohpIkB0iPom4DmSbAppKfumdhtLA8uVeEPp2GM61kL9hRvdbMhdWA7T+hZFDlo4mJA==} engines: {node: '>=18'} @@ -10507,6 +10279,24 @@ packages: - utf-8-validate dev: false + /metro-config@0.80.9: + resolution: {integrity: sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg==} + engines: {node: '>=18'} + dependencies: + connect: 3.7.0 + cosmiconfig: 5.2.1 + jest-validate: 29.7.0 + metro: 0.80.9 + metro-cache: 0.80.9 + metro-core: 0.80.9 + metro-runtime: 0.80.9 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + /metro-core@0.80.8: resolution: {integrity: sha512-g6lud55TXeISRTleW6SHuPFZHtYrpwNqbyFIVd9j9Ofrb5IReiHp9Zl8xkAfZQp8v6ZVgyXD7c130QTsCz+vBw==} engines: {node: '>=18'} @@ -10515,6 +10305,14 @@ packages: metro-resolver: 0.80.8 dev: false + /metro-core@0.80.9: + resolution: {integrity: sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg==} + engines: {node: '>=18'} + dependencies: + lodash.throttle: 4.1.1 + metro-resolver: 0.80.9 + dev: false + /metro-file-map@0.80.8: resolution: {integrity: sha512-eQXMFM9ogTfDs2POq7DT2dnG7rayZcoEgRbHPXvhUWkVwiKkro2ngcBE++ck/7A36Cj5Ljo79SOkYwHaWUDYDw==} engines: {node: '>=18'} @@ -10535,6 +10333,26 @@ packages: - supports-color dev: false + /metro-file-map@0.80.9: + resolution: {integrity: sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ==} + engines: {node: '>=18'} + dependencies: + anymatch: 3.1.3 + debug: 2.6.9 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-worker: 29.7.0 + micromatch: 4.0.5 + node-abort-controller: 3.1.1 + nullthrows: 1.1.1 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: false + /metro-minify-terser@0.80.8: resolution: {integrity: sha512-y8sUFjVvdeUIINDuW1sejnIjkZfEF+7SmQo0EIpYbWmwh+kq/WMj74yVaBWuqNjirmUp1YNfi3alT67wlbBWBQ==} engines: {node: '>=18'} @@ -10542,11 +10360,23 @@ packages: terser: 5.31.0 dev: false + /metro-minify-terser@0.80.9: + resolution: {integrity: sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A==} + engines: {node: '>=18'} + dependencies: + terser: 5.31.0 + dev: false + /metro-resolver@0.80.8: resolution: {integrity: sha512-JdtoJkP27GGoZ2HJlEsxs+zO7jnDUCRrmwXJozTlIuzLHMRrxgIRRby9fTCbMhaxq+iA9c+wzm3iFb4NhPmLbQ==} engines: {node: '>=18'} dev: false + /metro-resolver@0.80.9: + resolution: {integrity: sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w==} + engines: {node: '>=18'} + dev: false + /metro-runtime@0.80.8: resolution: {integrity: sha512-2oScjfv6Yb79PelU1+p8SVrCMW9ZjgEiipxq7jMRn8mbbtWzyv3g8Mkwr+KwOoDFI/61hYPUbY8cUnu278+x1g==} engines: {node: '>=18'} @@ -10554,6 +10384,13 @@ packages: '@babel/runtime': 7.24.5 dev: false + /metro-runtime@0.80.9: + resolution: {integrity: sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg==} + engines: {node: '>=18'} + dependencies: + '@babel/runtime': 7.24.5 + dev: false + /metro-source-map@0.80.8: resolution: {integrity: sha512-+OVISBkPNxjD4eEKhblRpBf463nTMk3KMEeYS8Z4xM/z3qujGJGSsWUGRtH27+c6zElaSGtZFiDMshEb8mMKQg==} engines: {node: '>=18'} @@ -10570,6 +10407,22 @@ packages: - supports-color dev: false + /metro-source-map@0.80.9: + resolution: {integrity: sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw==} + engines: {node: '>=18'} + dependencies: + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + invariant: 2.2.4 + metro-symbolicate: 0.80.9 + nullthrows: 1.1.1 + ob1: 0.80.9 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + /metro-symbolicate@0.80.8: resolution: {integrity: sha512-nwhYySk79jQhwjL9QmOUo4wS+/0Au9joEryDWw7uj4kz2yvw1uBjwmlql3BprQCBzRdB3fcqOP8kO8Es+vE31g==} engines: {node: '>=18'} @@ -10585,6 +10438,21 @@ packages: - supports-color dev: false + /metro-symbolicate@0.80.9: + resolution: {integrity: sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA==} + engines: {node: '>=18'} + hasBin: true + dependencies: + invariant: 2.2.4 + metro-source-map: 0.80.9 + nullthrows: 1.1.1 + source-map: 0.5.7 + through2: 2.0.5 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + /metro-transform-plugins@0.80.8: resolution: {integrity: sha512-sSu8VPL9Od7w98MftCOkQ1UDeySWbsIAS5I54rW22BVpPnI3fQ42srvqMLaJUQPjLehUanq8St6OMBCBgH/UWw==} engines: {node: '>=18'} @@ -10598,6 +10466,19 @@ packages: - supports-color dev: false + /metro-transform-plugins@0.80.9: + resolution: {integrity: sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg==} + engines: {node: '>=18'} + dependencies: + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + /metro-transform-worker@0.80.8: resolution: {integrity: sha512-+4FG3TQk3BTbNqGkFb2uCaxYTfsbuFOCKMMURbwu0ehCP8ZJuTUramkaNZoATS49NSAkRgUltgmBa4YaKZ5mqw==} engines: {node: '>=18'} @@ -10621,6 +10502,29 @@ packages: - utf-8-validate dev: false + /metro-transform-worker@0.80.9: + resolution: {integrity: sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ==} + engines: {node: '>=18'} + dependencies: + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/types': 7.24.5 + metro: 0.80.9 + metro-babel-transformer: 0.80.9 + metro-cache: 0.80.9 + metro-cache-key: 0.80.9 + metro-minify-terser: 0.80.9 + metro-source-map: 0.80.9 + metro-transform-plugins: 0.80.9 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + /metro@0.80.8: resolution: {integrity: sha512-in7S0W11mg+RNmcXw+2d9S3zBGmCARDxIwoXJAmLUQOQoYsRP3cpGzyJtc7WOw8+FXfpgXvceD0u+PZIHXEL7g==} engines: {node: '>=18'} @@ -10676,6 +10580,61 @@ packages: - utf-8-validate dev: false + /metro@0.80.9: + resolution: {integrity: sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg==} + engines: {node: '>=18'} + hasBin: true + dependencies: + '@babel/code-frame': 7.24.2 + '@babel/core': 7.24.5 + '@babel/generator': 7.24.5 + '@babel/parser': 7.24.5 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.5 + '@babel/types': 7.24.5 + accepts: 1.3.8 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 2.6.9 + denodeify: 1.2.1 + error-stack-parser: 2.1.4 + graceful-fs: 4.2.11 + hermes-parser: 0.20.1 + image-size: 1.1.1 + invariant: 2.2.4 + jest-worker: 29.7.0 + jsc-safe-url: 0.2.4 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.80.9 + metro-cache: 0.80.9 + metro-cache-key: 0.80.9 + metro-config: 0.80.9 + metro-core: 0.80.9 + metro-file-map: 0.80.9 + metro-resolver: 0.80.9 + metro-runtime: 0.80.9 + metro-source-map: 0.80.9 + metro-symbolicate: 0.80.9 + metro-transform-plugins: 0.80.9 + metro-transform-worker: 0.80.9 + mime-types: 2.1.35 + node-fetch: 2.7.0 + nullthrows: 1.1.1 + rimraf: 3.0.2 + serialize-error: 2.1.0 + source-map: 0.5.7 + strip-ansi: 6.0.1 + throat: 5.0.0 + ws: 7.5.9 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -11047,6 +11006,11 @@ packages: engines: {node: '>=18'} dev: false + /ob1@0.80.9: + resolution: {integrity: sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==} + engines: {node: '>=18'} + dev: false + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -14388,7 +14352,6 @@ packages: resolution: {tarball: https://codeload.github.com/sussy-code/providers/tar.gz/ead928c5d09cad1c23aeab58687d3fae7f426dba} name: '@movie-web/providers' version: 2.3.0 - prepare: true requiresBuild: true dependencies: cheerio: 1.0.0-rc.12 diff --git a/tooling/colors/tsconfig.json b/tooling/colors/tsconfig.json index 12305a4..c29938c 100644 --- a/tooling/colors/tsconfig.json +++ b/tooling/colors/tsconfig.json @@ -1,8 +1,8 @@ { "extends": "@movie-web/tsconfig/base.json", "compilerOptions": { - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json", + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" }, "include": ["*.ts", "src"], - "exclude": ["node_modules"], + "exclude": ["node_modules"] } diff --git a/tooling/eslint/tsconfig.json b/tooling/eslint/tsconfig.json index 6e1fcf4..39b1852 100644 --- a/tooling/eslint/tsconfig.json +++ b/tooling/eslint/tsconfig.json @@ -1,8 +1,8 @@ { "extends": "@movie-web/tsconfig/base.json", "compilerOptions": { - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json", + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" }, "include": ["."], - "exclude": ["node_modules"], + "exclude": ["node_modules"] } diff --git a/tooling/prettier/tsconfig.json b/tooling/prettier/tsconfig.json index 6e1fcf4..39b1852 100644 --- a/tooling/prettier/tsconfig.json +++ b/tooling/prettier/tsconfig.json @@ -1,8 +1,8 @@ { "extends": "@movie-web/tsconfig/base.json", "compilerOptions": { - "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json", + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" }, "include": ["."], - "exclude": ["node_modules"], + "exclude": ["node_modules"] } From d1b762d59d5291bbf1005c0bafcdb5aa55d80a69 Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Thu, 2 May 2024 13:53:09 +0200 Subject: [PATCH 07/49] chore: cleanup --- apps/expo/src/app/(tabs)/settings.tsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/apps/expo/src/app/(tabs)/settings.tsx b/apps/expo/src/app/(tabs)/settings.tsx index 18b6c41..810287c 100644 --- a/apps/expo/src/app/(tabs)/settings.tsx +++ b/apps/expo/src/app/(tabs)/settings.tsx @@ -12,7 +12,6 @@ import { MaterialIcons, } from "@expo/vector-icons"; import { useMutation } from "@tanstack/react-query"; -import { getCurrentMarketplaceAsync } from "modules/check-ios-marketplace"; import { Adapt, ScrollView, @@ -76,9 +75,6 @@ export default function SettingsScreen() { setShowUpdateSheet(true); } else { showToast("No updates available"); - void getCurrentMarketplaceAsync().then((marketplace) => { - console.log(marketplace); - }); } }, }); From 26aea32b6d996acd0cb9c221d7c6c5bfd2ff4881 Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Thu, 2 May 2024 14:25:15 +0200 Subject: [PATCH 08/49] chore: adjust metro config for eventual new arch release --- apps/expo/app.config.ts | 186 +++++++++++++++++++------------------- apps/expo/metro.config.js | 13 ++- pnpm-lock.yaml | 1 + 3 files changed, 107 insertions(+), 93 deletions(-) diff --git a/apps/expo/app.config.ts b/apps/expo/app.config.ts index 7dbc050..f1ad70c 100644 --- a/apps/expo/app.config.ts +++ b/apps/expo/app.config.ts @@ -4,97 +4,101 @@ import { version } from "./package.json"; import withRemoveiOSNotificationEntitlement from "./src/plugins/withRemoveiOSNotificationEntitlement"; const defineConfig = (): ExpoConfig => ({ - name: "movie-web", - slug: "mw-mobile", - scheme: "movieweb", - version, - icon: "./assets/images/icon.png", - userInterfaceStyle: "automatic", - splash: { - image: "./assets/images/splash.png", - resizeMode: "contain", - backgroundColor: "#000000", - }, - updates: { - fallbackToCacheTimeout: 0, - }, - assetBundlePatterns: ["**/*"], - ios: { - bundleIdentifier: "dev.movieweb.app", - supportsTablet: true, - requireFullScreen: true, - infoPlist: { - CFBundleName: "movie-web", - NSPhotoLibraryUsageDescription: - "This app saves videos to the photo library.", - NSAppTransportSecurity: { - NSAllowsArbitraryLoads: true, - }, - }, - }, - android: { - package: "dev.movieweb.app", - permissions: ["WRITE_SETTINGS"], - }, - web: { - favicon: "./assets/images/favicon.png", - bundler: "metro", - }, - experiments: { - tsconfigPaths: true, - typedRoutes: true, - }, - plugins: [ - "expo-router", - [withRemoveiOSNotificationEntitlement as unknown as string], - [ - "expo-screen-orientation", - { - initialOrientation: "PORTRAIT_UP", - }, - ], - [ - "expo-build-properties", - { - android: { - minSdkVersion: 24, - packagingOptions: { - pickFirst: [ - "lib/x86/libcrypto.so", - "lib/x86_64/libcrypto.so", - "lib/armeabi-v7a/libcrypto.so", - "lib/arm64-v8a/libcrypto.so", - ], - }, - }, - }, - ], - [ - "expo-alternate-app-icons", - [ - "./assets/images/main.png", - "./assets/images/blue.png", - "./assets/images/gray.png", - "./assets/images/red.png", - "./assets/images/teal.png", - ], - ], - [ - "expo-media-library", - { - photosPermission: "Allow $(PRODUCT_NAME) to access your photos.", - savePhotosPermission: "Allow $(PRODUCT_NAME) to save photos.", - isAccessMediaLocationEnabled: true, - }, - ], - [ - "expo-pod-pinner", - { - targetName: "movieweb", - pods: [{ "OpenSSL-Universal": "1.1.2200" }], - }, - ], - ], + name: "movie-web", + slug: "mw-mobile", + scheme: "movieweb", + version, + icon: "./assets/images/icon.png", + userInterfaceStyle: "automatic", + splash: { + image: "./assets/images/splash.png", + resizeMode: "contain", + backgroundColor: "#000000", + }, + updates: { + fallbackToCacheTimeout: 0, + }, + assetBundlePatterns: ["**/*"], + ios: { + bundleIdentifier: "dev.movieweb.app", + supportsTablet: true, + requireFullScreen: true, + infoPlist: { + CFBundleName: "movie-web", + NSPhotoLibraryUsageDescription: + "This app saves videos to the photo library.", + NSAppTransportSecurity: { + NSAllowsArbitraryLoads: true, + }, + }, + }, + android: { + package: "dev.movieweb.app", + permissions: ["WRITE_SETTINGS"], + }, + web: { + favicon: "./assets/images/favicon.png", + bundler: "metro", + }, + experiments: { + tsconfigPaths: true, + typedRoutes: true, + }, + plugins: [ + "expo-router", + [withRemoveiOSNotificationEntitlement as unknown as string], + [ + "expo-screen-orientation", + { + initialOrientation: "PORTRAIT_UP", + }, + ], + [ + "expo-build-properties", + { + ios: { + newArchEnabled: false, + }, + android: { + newArchEnabled: false, + minSdkVersion: 24, + packagingOptions: { + pickFirst: [ + "lib/x86/libcrypto.so", + "lib/x86_64/libcrypto.so", + "lib/armeabi-v7a/libcrypto.so", + "lib/arm64-v8a/libcrypto.so", + ], + }, + }, + }, + ], + [ + "expo-alternate-app-icons", + [ + "./assets/images/main.png", + "./assets/images/blue.png", + "./assets/images/gray.png", + "./assets/images/red.png", + "./assets/images/teal.png", + ], + ], + [ + "expo-media-library", + { + photosPermission: "Allow $(PRODUCT_NAME) to access your photos.", + savePhotosPermission: "Allow $(PRODUCT_NAME) to save photos.", + isAccessMediaLocationEnabled: true, + }, + ], + [ + "expo-pod-pinner", + { + targetName: "movieweb", + pods: [{ "OpenSSL-Universal": "1.1.2200" }], + }, + ], + ], }); export default defineConfig; diff --git a/apps/expo/metro.config.js b/apps/expo/metro.config.js index 259061d..3445cb6 100644 --- a/apps/expo/metro.config.js +++ b/apps/expo/metro.config.js @@ -1,5 +1,6 @@ // Learn more: https://docs.expo.dev/guides/monorepos/ const { getDefaultConfig } = require("expo/metro-config"); +const { mergeConfig } = require('metro-config'); const { FileStore } = require("metro-cache"); const { withTamagui } = require("@tamagui/metro-plugin"); @@ -8,9 +9,17 @@ const path = require("path"); module.exports = withTurborepoManagedCache( withMonorepoPaths( withTamagui( - getDefaultConfig(__dirname, { + mergeConfig(getDefaultConfig(__dirname, { isCSSEnabled: true, - }), + }), { + transformer: { + getTransformOptions: async () => ({ + transform: { + inlineRequires: true, + }, + }), + }, + }), { components: ["tamagui"], config: "./tamagui.config.ts", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d23864c..f86f7e8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14352,6 +14352,7 @@ packages: resolution: {tarball: https://codeload.github.com/sussy-code/providers/tar.gz/ead928c5d09cad1c23aeab58687d3fae7f426dba} name: '@movie-web/providers' version: 2.3.0 + prepare: true requiresBuild: true dependencies: cheerio: 1.0.0-rc.12 From 486d242158a65a9c148e4021b951096c39af34b5 Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Thu, 2 May 2024 14:33:11 +0200 Subject: [PATCH 09/49] fix: prevent screen sleeping on android --- apps/expo/app.config.ts | 7 ++----- apps/expo/package.json | 1 + apps/expo/src/components/player/VideoPlayer.tsx | 2 ++ pnpm-lock.yaml | 4 +++- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/apps/expo/app.config.ts b/apps/expo/app.config.ts index f1ad70c..a3405f0 100644 --- a/apps/expo/app.config.ts +++ b/apps/expo/app.config.ts @@ -20,20 +20,17 @@ const defineConfig = (): ExpoConfig => ({ }, assetBundlePatterns: ["**/*"], ios: { - bundleIdentifier: "dev.movieweb.app", + bundleIdentifier: "dev.movieweb.mobile", supportsTablet: true, requireFullScreen: true, infoPlist: { CFBundleName: "movie-web", NSPhotoLibraryUsageDescription: "This app saves videos to the photo library.", - NSAppTransportSecurity: { - NSAllowsArbitraryLoads: true, - }, }, }, android: { - package: "dev.movieweb.app", + package: "dev.movieweb.mobile", permissions: ["WRITE_SETTINGS"], }, web: { diff --git a/apps/expo/package.json b/apps/expo/package.json index 4f314bd..7f97be4 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -45,6 +45,7 @@ "expo-constants": "~15.4.5", "expo-file-system": "~16.0.8", "expo-haptics": "~12.8.1", + "expo-keep-awake": "~12.8.2", "expo-linear-gradient": "^12.7.2", "expo-linking": "~6.2.2", "expo-media-library": "~15.9.1", diff --git a/apps/expo/src/components/player/VideoPlayer.tsx b/apps/expo/src/components/player/VideoPlayer.tsx index 35a7db0..9fd6611 100644 --- a/apps/expo/src/components/player/VideoPlayer.tsx +++ b/apps/expo/src/components/player/VideoPlayer.tsx @@ -11,6 +11,7 @@ import Animated, { import { useSafeAreaInsets } from "react-native-safe-area-context"; import { ResizeMode, Video } from "expo-av"; import * as Haptics from "expo-haptics"; +import { useKeepAwake } from "expo-keep-awake"; import * as NavigationBar from "expo-navigation-bar"; import * as Network from "expo-network"; import { useRouter } from "expo-router"; @@ -42,6 +43,7 @@ import { CaptionRenderer } from "./CaptionRenderer"; import { ControlsOverlay } from "./ControlsOverlay"; export const VideoPlayer = () => { + useKeepAwake(); const { brightness, showBrightnessOverlay, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f86f7e8..f655b9b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -107,6 +107,9 @@ importers: expo-haptics: specifier: ~12.8.1 version: 12.8.1(expo@50.0.17) + expo-keep-awake: + specifier: ~12.8.2 + version: 12.8.2(expo@50.0.17) expo-linear-gradient: specifier: ^12.7.2 version: 12.7.2(expo@50.0.17) @@ -14352,7 +14355,6 @@ packages: resolution: {tarball: https://codeload.github.com/sussy-code/providers/tar.gz/ead928c5d09cad1c23aeab58687d3fae7f426dba} name: '@movie-web/providers' version: 2.3.0 - prepare: true requiresBuild: true dependencies: cheerio: 1.0.0-rc.12 From 67a879f6fb38ea6c441b0ab4f3159e567ba7a3d5 Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Thu, 2 May 2024 15:51:02 +0200 Subject: [PATCH 10/49] refactor: test bun (possibly revert if needed) --- .github/workflows/build-mobile-comment.yml | 38 +- .github/workflows/build-mobile.yml | 38 +- .github/workflows/ci.yml | 6 +- .github/workflows/release-mobile.yml | 40 +- .nvmrc | 1 - apps/expo/package.json | 1 + bun.lockb | Bin 0 -> 725404 bytes package.json | 17 +- packages/provider-utils/package.json | 40 +- pnpm-lock.yaml | 14369 ------------------- pnpm-workspace.yaml | 4 - tooling/eslint/package.json | 4 +- tooling/github/setup/action.yml | 12 +- 13 files changed, 88 insertions(+), 14482 deletions(-) delete mode 100644 .nvmrc create mode 100755 bun.lockb delete mode 100644 pnpm-lock.yaml delete mode 100644 pnpm-workspace.yaml diff --git a/.github/workflows/build-mobile-comment.yml b/.github/workflows/build-mobile-comment.yml index f8136ae..bb5b10f 100644 --- a/.github/workflows/build-mobile-comment.yml +++ b/.github/workflows/build-mobile-comment.yml @@ -21,17 +21,9 @@ jobs: with: ref: ${{ steps.comment-branch.outputs.head_ref }} - - uses: pnpm/action-setup@v3 - name: Install pnpm + - uses: oven-sh/setup-bun@v1 with: - version: 9 - run_install: false - - - name: Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 21 - cache: "pnpm" + bun-version: latest - name: Set up JDK 17 uses: actions/setup-java@v4 @@ -46,16 +38,16 @@ jobs: uses: actions/cache@v4 with: path: "**/node_modules" - key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} + key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }} - name: Install dependencies - run: corepack enable && pnpm install + run: bun install - name: Setup Gradle uses: gradle/actions/setup-gradle@v3 - name: Build Android app - run: cd apps/expo && pnpm apk + run: cd apps/expo && bun apk - name: Upload movie-web.apk as artifact uses: actions/upload-artifact@v4 @@ -75,35 +67,27 @@ jobs: with: ref: ${{ steps.comment-branch.outputs.head_ref }} - - uses: pnpm/action-setup@v3 - name: Install pnpm - with: - version: 9 - run_install: false - - - name: Install Node.js - uses: actions/setup-node@v4 + - uses: oven-sh/setup-bun@v1 with: - node-version: 21 - cache: "pnpm" + bun-version: latest - name: Cache Node Modules uses: actions/cache@v4 with: path: "**/node_modules" - key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} + key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }} - name: Install dependencies - run: pnpm install + run: bun install - name: Cache Pods uses: actions/cache@v4 with: path: apps/expo/ios - key: ${{ runner.os }}-pods-${{ hashFiles('**/pnpm-lock.yaml') }} + key: ${{ runner.os }}-pods-${{ hashFiles('**/bun.lockb') }} - name: Build iOS app - run: cd apps/expo && pnpm ipa + run: cd apps/expo && bun ipa - name: Upload movie-web.ipa as artifact uses: actions/upload-artifact@v4 diff --git a/.github/workflows/build-mobile.yml b/.github/workflows/build-mobile.yml index 56df6fd..9bedd9e 100644 --- a/.github/workflows/build-mobile.yml +++ b/.github/workflows/build-mobile.yml @@ -17,17 +17,9 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - uses: pnpm/action-setup@v3 - name: Install pnpm + - uses: oven-sh/setup-bun@v1 with: - version: 9 - run_install: false - - - name: Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 21 - cache: "pnpm" + bun-version: latest - name: Set up JDK 17 uses: actions/setup-java@v4 @@ -42,16 +34,16 @@ jobs: uses: actions/cache@v4 with: path: "**/node_modules" - key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} + key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }} - name: Install dependencies - run: corepack enable && pnpm install + run: bun install - name: Setup Gradle uses: gradle/actions/setup-gradle@v3 - name: Build Android app - run: cd apps/expo && pnpm apk + run: cd apps/expo && bun apk - name: Upload movie-web.apk as artifact uses: actions/upload-artifact@v3 @@ -66,35 +58,27 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - uses: pnpm/action-setup@v3 - name: Install pnpm - with: - version: 9 - run_install: false - - - name: Install Node.js - uses: actions/setup-node@v4 + - uses: oven-sh/setup-bun@v1 with: - node-version: 21 - cache: "pnpm" + bun-version: latest - name: Cache Node Modules uses: actions/cache@v4 with: path: "**/node_modules" - key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} + key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }} - name: Install dependencies - run: pnpm install + run: bun install - name: Cache Pods uses: actions/cache@v4 with: path: apps/expo/ios - key: ${{ runner.os }}-pods-${{ hashFiles('**/pnpm-lock.yaml') }} + key: ${{ runner.os }}-pods-${{ hashFiles('**/bun.lockb') }} - name: Build iOS app - run: cd apps/expo && pnpm ipa + run: cd apps/expo && bun ipa - name: Upload movie-web.ipa as artifact uses: actions/upload-artifact@v4 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 45e6be3..915fc24 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,7 +28,7 @@ jobs: uses: ./tooling/github/setup - name: Lint - run: pnpm lint && pnpm lint:ws + run: bun lint && bun lint:ws format: runs-on: ubuntu-latest @@ -39,7 +39,7 @@ jobs: uses: ./tooling/github/setup - name: Format - run: pnpm format + run: bun format typecheck: runs-on: ubuntu-latest @@ -50,4 +50,4 @@ jobs: uses: ./tooling/github/setup - name: Typecheck - run: pnpm typecheck + run: bun typecheck diff --git a/.github/workflows/release-mobile.yml b/.github/workflows/release-mobile.yml index 6ce6d8d..6b7091b 100644 --- a/.github/workflows/release-mobile.yml +++ b/.github/workflows/release-mobile.yml @@ -3,7 +3,7 @@ name: release mobile app on: push: branches: - - main + - master workflow_dispatch: permissions: @@ -39,17 +39,9 @@ jobs: - name: Pull version bump run: git pull --all - - uses: pnpm/action-setup@v3 - name: Install pnpm + - uses: oven-sh/setup-bun@v1 with: - version: 9 - run_install: false - - - name: Install Node.js - uses: actions/setup-node@v4 - with: - node-version: 21 - cache: "pnpm" + bun-version: latest - name: Set up JDK 17 uses: actions/setup-java@v4 @@ -64,16 +56,16 @@ jobs: uses: actions/cache@v4 with: path: "**/node_modules" - key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} + key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }} - name: Install dependencies - run: corepack enable && pnpm install + run: bun install - name: Setup Gradle uses: gradle/actions/setup-gradle@v3 - name: Build Android app - run: cd apps/expo && pnpm apk + run: cd apps/expo && bun apk - name: Upload movie-web.apk as artifact uses: actions/upload-artifact@v4 @@ -92,35 +84,27 @@ jobs: - name: Pull version bump run: git pull --all - - uses: pnpm/action-setup@v3 - name: Install pnpm - with: - version: 9 - run_install: false - - - name: Install Node.js - uses: actions/setup-node@v4 + - uses: oven-sh/setup-bun@v1 with: - node-version: 21 - cache: "pnpm" + bun-version: latest - name: Cache Node Modules uses: actions/cache@v4 with: path: "**/node_modules" - key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} + key: ${{ runner.os }}-bun-${{ hashFiles('**/bun.lockb') }} - name: Install dependencies - run: pnpm install + run: bun install - name: Cache Pods uses: actions/cache@v4 with: path: apps/expo/ios - key: ${{ runner.os }}-pods-${{ hashFiles('**/pnpm-lock.yaml') }} + key: ${{ runner.os }}-pods-${{ hashFiles('**/bun.lockb') }} - name: Build iOS app - run: cd apps/expo && pnpm ipa + run: cd apps/expo && bun ipa - name: Upload movie-web.ipa as artifact uses: actions/upload-artifact@v4 diff --git a/.nvmrc b/.nvmrc deleted file mode 100644 index a3d2332..0000000 --- a/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -20.11 \ No newline at end of file diff --git a/apps/expo/package.json b/apps/expo/package.json index 7f97be4..4edd09f 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -33,6 +33,7 @@ "@tamagui/metro-plugin": "^1.96.0", "@tamagui/toast": "1.96.0", "@tanstack/react-query": "^5.22.2", + "ajv": "^8.13.0", "burnt": "^0.12.2", "class-variance-authority": "^0.7.0", "expo": "~50.0.14", diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..e57098eb53d4fa121acf51d63660baf6112137dc GIT binary patch literal 725404 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

; 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

^GzlmeH0o3x`tE(~{ikEM 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

on{ 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 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index b0f1903..c1fca89 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,12 @@ { "name": "@movie-web/native", "private": true, - "engines": { - "node": ">=20.11.0" - }, - "packageManager": "pnpm@9.0.6", + "packageManager": "bun@1.1.6", + "workspaces": [ + "apps/*", + "packages/*", + "tooling/*" + ], "scripts": { "build": "turbo build", "clean": "git clean -xdf node_modules", @@ -14,8 +16,8 @@ "format:fix": "turbo format --continue -- --write --cache --cache-location node_modules/.cache/.prettiercache", "lint": "turbo lint --continue -- --cache --cache-location node_modules/.cache/.eslintcache", "lint:fix": "turbo lint --continue -- --fix --cache --cache-location node_modules/.cache/.eslintcache", - "lint:ws": "pnpm dlx sherif@latest", - "postinstall": "pnpm lint:ws", + "lint:ws": "bunx sherif@latest", + "postinstall": "bun lint:ws", "typecheck": "turbo typecheck" }, "devDependencies": { @@ -25,6 +27,5 @@ "turbo": "^1.11.3", "typescript": "^5.4.3" }, - "prettier": "@movie-web/prettier-config", - "pnpm": {} + "prettier": "@movie-web/prettier-config" } diff --git a/packages/provider-utils/package.json b/packages/provider-utils/package.json index d841e98..8c6ab23 100644 --- a/packages/provider-utils/package.json +++ b/packages/provider-utils/package.json @@ -1,6 +1,6 @@ { "name": "@movie-web/provider-utils", - "private": true, + "private": false, "version": "0.1.0", "type": "module", "main": "./src/index.ts", @@ -28,10 +28,42 @@ ] }, "prettier": "@movie-web/prettier-config", + "trustedDependencies": ["@movie-web/providers"], "dependencies": { - "@movie-web/providers": "github:sussy-code/providers", + "@movie-web/providers": "https://github.com/castdrian/providers-bun", + "@nabla/vite-plugin-eslint": "^2.0.2", + "@types/cookie": "^0.6.0", + "@types/crypto-js": "^4.2.2", + "@types/node-fetch": "^2.6.11", + "@types/randombytes": "^2.0.3", + "@types/set-cookie-parser": "^2.4.7", + "@types/spinnies": "^0.5.3", + "@typescript-eslint/eslint-plugin": "^7.4.0", + "@typescript-eslint/parser": "^7.4.0", + "@vitest/coverage-v8": "^1.4.0", + "commander": "^12.0.0", + "cross-env": "^7.0.3", + "dotenv": "^16.4.5", + "enquirer": "^2.4.1", + "eslint": "^8.57.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-prettier": "^5.1.3", + "node-fetch": "^3.3.2", "parse-hls": "^1.0.7", + "prettier": "^3.2.5", + "puppeteer": "^22.6.1", + "spinnies": "^0.5.1", "srt-webvtt": "^2.0.0", - "tmdb-ts": "^1.6.1" + "tmdb-ts": "^1.6.1", + "tsc-alias": "^1.8.8", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.4.3", + "vite": "^5.2.7", + "vite-node": "^1.4.0", + "vite-plugin-dts": "^3.8.1", + "vitest": "^1.4.0" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index f655b9b..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,14369 +0,0 @@ -lockfileVersion: '6.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - devDependencies: - '@movie-web/prettier-config': - specifier: workspace:^0.1.0 - version: link:tooling/prettier - '@turbo/gen': - specifier: ^1.11.3 - version: 1.13.3(@types/node@20.12.8)(typescript@5.4.5) - prettier: - specifier: ^3.1.1 - version: 3.2.5 - turbo: - specifier: ^1.11.3 - version: 1.13.3 - typescript: - specifier: ^5.4.3 - version: 5.4.5 - - apps/expo: - dependencies: - '@expo/metro-config': - specifier: ^0.17.3 - version: 0.17.7(@react-native/babel-preset@0.74.81) - '@movie-web/api': - specifier: workspace:* - version: link:../../packages/api - '@movie-web/colors': - specifier: workspace:* - version: link:../../tooling/colors - '@movie-web/provider-utils': - specifier: workspace:* - version: link:../../packages/provider-utils - '@movie-web/tmdb': - specifier: workspace:* - version: link:../../packages/tmdb - '@octokit/rest': - specifier: ^20.0.2 - version: 20.1.0 - '@react-native-anywhere/polyfill-base64': - specifier: 0.0.1-alpha.0 - version: 0.0.1-alpha.0 - '@react-navigation/native': - specifier: ^6.1.9 - version: 6.1.17(react-native@0.73.6)(react@18.2.0) - '@salihgun/react-native-video-processor': - specifier: ^0.3.1 - version: 0.3.1(ffmpeg-kit-react-native@6.0.2)(react-native-video@5.2.1)(react-native@0.73.6)(react@18.2.0) - '@tamagui/animations-moti': - specifier: ^1.96.0 - version: 1.96.0(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react@18.2.0) - '@tamagui/babel-plugin': - specifier: ^1.96.0 - version: 1.96.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5) - '@tamagui/config': - specifier: ^1.96.0 - version: 1.96.0(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react-native@0.73.6)(react@18.2.0) - '@tamagui/metro-plugin': - specifier: ^1.96.0 - version: 1.96.0(@babel/core@7.24.5)(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react-native-safe-area-context@4.8.2)(react-native-svg@14.1.0)(react-native@0.73.6)(react@18.2.0)(tailwindcss@3.4.3)(typescript@5.4.5) - '@tamagui/toast': - specifier: 1.96.0 - version: 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tanstack/react-query': - specifier: ^5.22.2 - version: 5.32.1(react@18.2.0) - burnt: - specifier: ^0.12.2 - version: 0.12.2(expo@50.0.17)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) - class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 - expo: - specifier: ~50.0.14 - version: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - expo-alternate-app-icons: - specifier: ^0.1.7 - version: 0.1.7(expo@50.0.17)(react-native@0.73.6)(react@18.2.0) - expo-application: - specifier: ~5.8.3 - version: 5.8.4(expo@50.0.17) - expo-av: - specifier: ~13.10.5 - version: 13.10.6(expo@50.0.17) - expo-brightness: - specifier: ~11.8.0 - version: 11.8.0(expo@50.0.17) - expo-build-properties: - specifier: ~0.11.1 - version: 0.11.1(expo@50.0.17) - expo-clipboard: - specifier: ^5.0.1 - version: 5.0.1(expo@50.0.17) - expo-constants: - specifier: ~15.4.5 - version: 15.4.6(expo@50.0.17) - expo-file-system: - specifier: ~16.0.8 - version: 16.0.9(expo@50.0.17) - expo-haptics: - specifier: ~12.8.1 - version: 12.8.1(expo@50.0.17) - expo-keep-awake: - specifier: ~12.8.2 - version: 12.8.2(expo@50.0.17) - expo-linear-gradient: - specifier: ^12.7.2 - version: 12.7.2(expo@50.0.17) - expo-linking: - specifier: ~6.2.2 - version: 6.2.2(expo@50.0.17) - expo-media-library: - specifier: ~15.9.1 - version: 15.9.2(expo@50.0.17) - expo-navigation-bar: - specifier: ^2.8.1 - version: 2.8.1(expo@50.0.17) - expo-network: - specifier: ~5.8.0 - version: 5.8.0(expo@50.0.17) - expo-pod-pinner: - specifier: ^1.0.1 - version: 1.0.1 - expo-router: - specifier: ~3.4.8 - version: 3.4.8(expo-constants@15.4.6)(expo-linking@6.2.2)(expo-modules-autolinking@1.10.3)(expo-status-bar@1.11.1)(expo@50.0.17)(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react-native-safe-area-context@4.8.2)(react-native-screens@3.29.0)(react-native@0.73.6)(react@18.2.0) - expo-screen-orientation: - specifier: ~6.4.1 - version: 6.4.1(expo@50.0.17) - expo-splash-screen: - specifier: ~0.26.4 - version: 0.26.4(expo-modules-autolinking@1.10.3)(expo@50.0.17) - expo-status-bar: - specifier: ~1.11.1 - version: 1.11.1 - expo-system-ui: - specifier: ^2.9.3 - version: 2.9.4(expo@50.0.17) - expo-web-browser: - specifier: ^12.8.2 - version: 12.8.2(expo@50.0.17) - ffmpeg-kit-react-native: - specifier: ^6.0.2 - version: 6.0.2(react-native@0.73.6)(react@18.2.0) - immer: - specifier: ^10.0.3 - version: 10.1.1 - iso-639-1: - specifier: ^3.1.2 - version: 3.1.2 - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-native: - specifier: 0.73.6 - version: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - react-native-context-menu-view: - specifier: ^1.14.1 - version: 1.16.0(react-native@0.73.6)(react@18.2.0) - react-native-gesture-handler: - specifier: ~2.14.1 - version: 2.14.1(react-native@0.73.6)(react@18.2.0) - react-native-markdown-display: - specifier: ^7.0.2 - version: 7.0.2(react-native@0.73.6)(react@18.2.0) - react-native-mmkv: - specifier: ^2.12.2 - version: 2.12.2(react-native@0.73.6)(react@18.2.0) - react-native-modal: - specifier: ^13.0.1 - version: 13.0.1(react-native@0.73.6)(react@18.2.0) - react-native-quick-base64: - specifier: ^2.0.8 - version: 2.1.2(react-native@0.73.6)(react@18.2.0) - react-native-quick-crypto: - specifier: ^0.6.1 - version: 0.6.1(react-native@0.73.6)(react@18.2.0) - react-native-reanimated: - specifier: ~3.6.2 - version: 3.6.3(@babel/core@7.24.5)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6)(@babel/plugin-proposal-optional-chaining@7.21.0)(@babel/plugin-transform-arrow-functions@7.24.1)(@babel/plugin-transform-shorthand-properties@7.24.1)(@babel/plugin-transform-template-literals@7.24.1)(react-native@0.73.6)(react@18.2.0) - react-native-safe-area-context: - specifier: ~4.8.2 - version: 4.8.2(react-native@0.73.6)(react@18.2.0) - react-native-screens: - specifier: ~3.29.0 - version: 3.29.0(react-native@0.73.6)(react@18.2.0) - react-native-svg: - specifier: 14.1.0 - version: 14.1.0(react-native@0.73.6)(react@18.2.0) - react-native-web: - specifier: ^0.19.10 - version: 0.19.11(react-dom@18.2.0)(react@18.2.0) - subsrt-ts: - specifier: ^2.1.2 - version: 2.1.2 - tamagui: - specifier: ^1.94.0 - version: 1.96.0(@types/react@18.3.1)(immer@10.1.1)(react-dom@18.2.0)(react-native-web@0.19.11)(react-native@0.73.6)(react@18.2.0) - text-encoding-polyfill: - specifier: ^0.6.7 - version: 0.6.7 - zustand: - specifier: ^4.4.7 - version: 4.5.2(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0) - devDependencies: - '@babel/core': - specifier: ^7.23.9 - version: 7.24.5 - '@babel/preset-env': - specifier: ^7.23.9 - version: 7.24.5(@babel/core@7.24.5) - '@babel/runtime': - specifier: ^7.23.9 - version: 7.24.5 - '@movie-web/eslint-config': - specifier: workspace:^0.2.0 - version: link:../../tooling/eslint - '@movie-web/prettier-config': - specifier: workspace:^0.1.0 - version: link:../../tooling/prettier - '@movie-web/tsconfig': - specifier: workspace:^0.1.0 - version: link:../../tooling/typescript - '@tanstack/eslint-plugin-query': - specifier: ^5.20.1 - version: 5.32.1(eslint@8.57.0)(typescript@5.4.5) - '@types/babel__core': - specifier: ^7.20.5 - version: 7.20.5 - '@types/react': - specifier: ^18.2.48 - version: 18.3.1 - babel-plugin-module-resolver: - specifier: ^5.0.0 - version: 5.0.2 - eslint: - specifier: ^8.56.0 - version: 8.57.0 - prettier: - specifier: ^3.1.1 - version: 3.2.5 - typescript: - specifier: ^5.4.3 - version: 5.4.5 - - packages/api: - dependencies: - '@noble/hashes': - specifier: ^1.4.0 - version: 1.4.0 - '@scure/bip39': - specifier: ^1.3.0 - version: 1.3.0 - node-forge: - specifier: ^1.3.1 - version: 1.3.1 - devDependencies: - '@movie-web/eslint-config': - specifier: workspace:^0.2.0 - version: link:../../tooling/eslint - '@movie-web/prettier-config': - specifier: workspace:^0.1.0 - version: link:../../tooling/prettier - '@movie-web/tsconfig': - specifier: workspace:^0.1.0 - version: link:../../tooling/typescript - '@types/node-forge': - specifier: ^1.3.11 - version: 1.3.11 - eslint: - specifier: ^8.56.0 - version: 8.57.0 - prettier: - specifier: ^3.1.1 - version: 3.2.5 - typescript: - specifier: ^5.4.3 - version: 5.4.5 - - packages/provider-utils: - dependencies: - '@movie-web/providers': - specifier: github:sussy-code/providers - version: github.com/sussy-code/providers/ead928c5d09cad1c23aeab58687d3fae7f426dba - parse-hls: - specifier: ^1.0.7 - version: 1.0.7 - srt-webvtt: - specifier: ^2.0.0 - version: 2.0.0 - tmdb-ts: - specifier: ^1.6.1 - version: 1.8.0 - devDependencies: - '@movie-web/eslint-config': - specifier: workspace:^0.2.0 - version: link:../../tooling/eslint - '@movie-web/prettier-config': - specifier: workspace:^0.1.0 - version: link:../../tooling/prettier - '@movie-web/tsconfig': - specifier: workspace:^0.1.0 - version: link:../../tooling/typescript - eslint: - specifier: ^8.56.0 - version: 8.57.0 - prettier: - specifier: ^3.1.1 - version: 3.2.5 - typescript: - specifier: ^5.4.3 - version: 5.4.5 - - packages/tmdb: - dependencies: - tmdb-ts: - specifier: ^1.6.1 - version: 1.8.0 - devDependencies: - '@movie-web/eslint-config': - specifier: workspace:^0.2.0 - version: link:../../tooling/eslint - '@movie-web/prettier-config': - specifier: workspace:^0.1.0 - version: link:../../tooling/prettier - '@movie-web/tsconfig': - specifier: workspace:^0.1.0 - version: link:../../tooling/typescript - eslint: - specifier: ^8.56.0 - version: 8.57.0 - prettier: - specifier: ^3.1.1 - version: 3.2.5 - typescript: - specifier: ^5.4.3 - version: 5.4.5 - - tooling/colors: - devDependencies: - '@movie-web/eslint-config': - specifier: workspace:^0.2.0 - version: link:../eslint - '@movie-web/prettier-config': - specifier: workspace:^0.1.0 - version: link:../prettier - '@movie-web/tsconfig': - specifier: workspace:^0.1.0 - version: link:../typescript - eslint: - specifier: ^8.56.0 - version: 8.57.0 - prettier: - specifier: ^3.1.1 - version: 3.2.5 - typescript: - specifier: ^5.4.3 - version: 5.4.5 - - tooling/eslint: - dependencies: - '@typescript-eslint/eslint-plugin': - specifier: ^6.19.1 - version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/parser': - specifier: ^6.19.1 - version: 6.21.0(eslint@8.57.0)(typescript@5.4.5) - eslint-config-prettier: - specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) - eslint-config-turbo: - specifier: ^1.11.3 - version: 1.13.3(eslint@8.57.0) - eslint-plugin-import: - specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0) - eslint-plugin-jsx-a11y: - specifier: ^6.8.0 - version: 6.8.0(eslint@8.57.0) - eslint-plugin-react: - specifier: ^7.33.2 - version: 7.34.1(eslint@8.57.0) - eslint-plugin-react-hooks: - specifier: ^4.6.0 - version: 4.6.2(eslint@8.57.0) - devDependencies: - '@movie-web/prettier-config': - specifier: workspace:^0.1.0 - version: link:../prettier - '@movie-web/tsconfig': - specifier: workspace:^0.1.0 - version: link:../typescript - '@types/eslint': - specifier: ^8.56.2 - version: 8.56.10 - eslint: - specifier: ^8.56.0 - version: 8.57.0 - prettier: - specifier: ^3.1.1 - version: 3.2.5 - typescript: - specifier: ^5.4.3 - version: 5.4.5 - - tooling/github: {} - - tooling/prettier: - dependencies: - '@ianvs/prettier-plugin-sort-imports': - specifier: ^4.1.1 - version: 4.2.1(prettier@3.2.5) - prettier: - specifier: ^3.1.1 - version: 3.2.5 - prettier-plugin-tailwindcss: - specifier: ^0.5.10 - version: 0.5.14(@ianvs/prettier-plugin-sort-imports@4.2.1)(prettier@3.2.5) - devDependencies: - '@movie-web/tsconfig': - specifier: workspace:^0.1.0 - version: link:../typescript - typescript: - specifier: ^5.4.3 - version: 5.4.5 - - tooling/typescript: {} - -packages: - - /@alloc/quick-lru@5.2.0: - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - dev: false - - /@ampproject/remapping@2.3.0: - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - - /@babel/code-frame@7.10.4: - resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} - dependencies: - '@babel/highlight': 7.24.5 - dev: false - - /@babel/code-frame@7.24.2: - resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.24.5 - picocolors: 1.0.0 - - /@babel/compat-data@7.24.4: - resolution: {integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==} - engines: {node: '>=6.9.0'} - - /@babel/core@7.24.5: - resolution: {integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helpers': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - /@babel/generator@7.24.5: - resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - - /@babel/helper-annotate-as-pure@7.22.5: - resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - - /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: - resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - - /@babel/helper-compilation-targets@7.23.6: - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 6.3.1 - - /@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.5): - resolution: {integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.24.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - semver: 6.3.1 - - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.5): - resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 - - /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.5): - resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - /@babel/helper-environment-visitor@7.22.20: - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} - - /@babel/helper-function-name@7.23.0: - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 - - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - - /@babel/helper-member-expression-to-functions@7.24.5: - resolution: {integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - - /@babel/helper-module-imports@7.24.3: - resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - - /@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5): - resolution: {integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.24.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 - - /@babel/helper-optimise-call-expression@7.22.5: - resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - - /@babel/helper-plugin-utils@7.24.5: - resolution: {integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==} - engines: {node: '>=6.9.0'} - - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.5): - resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.24.5 - - /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.24.5 - '@babel/helper-optimise-call-expression': 7.22.5 - - /@babel/helper-simple-access@7.24.5: - resolution: {integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - - /@babel/helper-skip-transparent-expression-wrappers@7.22.5: - resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - - /@babel/helper-split-export-declaration@7.24.5: - resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.5 - - /@babel/helper-string-parser@7.24.1: - resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} - engines: {node: '>=6.9.0'} - - /@babel/helper-validator-identifier@7.24.5: - resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} - engines: {node: '>=6.9.0'} - - /@babel/helper-validator-option@7.23.5: - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} - - /@babel/helper-wrap-function@7.24.5: - resolution: {integrity: sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 - - /@babel/helpers@7.24.5: - resolution: {integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - transitivePeerDependencies: - - supports-color - - /@babel/highlight@7.24.5: - resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.24.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.0 - - /@babel/parser@7.24.5: - resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.24.5 - - /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.24.5): - resolution: {integrity: sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) - - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.24.5): - resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) - dev: false - - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.5): - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - dev: false - - /@babel/plugin-proposal-decorators@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-decorators': 7.24.1(@babel/core@7.24.5) - dev: false - - /@babel/plugin-proposal-export-default-from@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-+0hrgGGV3xyYIjOrD/bUZk/iUwOIGuoANfRfVg1cPhYBxF+TIXSEcc42DqzBICmWsnAQ+SfKedY0bj8QD+LuMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.5) - dev: false - - /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.24.5): - resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) - dev: false - - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.5): - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - dev: false - - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.5): - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) - dev: false - - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.5): - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - dev: false - - /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.24.5): - resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) - dev: false - - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.5): - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - dev: false - - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5): - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.5): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.5): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.5): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-decorators@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.5): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-export-default-from@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-cNXSxv9eTkGUtd0PsNMK8Yx5xeScxfpWOUAxE+ZPAXXEcAMOC3fk7LRdXq5fvpra2pLx2p1YtkAhpUbB2SwaRA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.5): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - - /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.5): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.5): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.5): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.5): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.5): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.5): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.5): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.5): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.5): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.5): - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.5): - resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) - - /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) - - /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.24.5): - resolution: {integrity: sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.5): - resolution: {integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) - - /@babel/plugin-transform-classes@7.24.5(@babel/core@7.24.5): - resolution: {integrity: sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) - '@babel/helper-split-export-declaration': 7.24.5 - globals: 11.12.0 - - /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/template': 7.24.0 - - /@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.24.5): - resolution: {integrity: sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) - - /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) - - /@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) - dev: false - - /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) - - /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) - - /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-simple-access': 7.24.5 - - /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 - - /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.5): - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - - /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) - - /@babel/plugin-transform-object-assign@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-I1kctor9iKtupb7jv7FyjApHCuKLBKCblVAeHVK9PB6FW7GI0ac6RtobC3MwwJy8CZ1JxuhQmnbrsqI5G8hAIg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - - /@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.24.5): - resolution: {integrity: sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - - /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) - - /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) - - /@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.24.5): - resolution: {integrity: sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - - /@babel/plugin-transform-parameters@7.24.5(@babel/core@7.24.5): - resolution: {integrity: sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.24.5): - resolution: {integrity: sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) - - /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.5): - resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) - dev: false - - /@babel/plugin-transform-react-jsx-self@7.24.5(@babel/core@7.24.5): - resolution: {integrity: sha512-RtCJoUO2oYrYwFPtR1/jkoBEcFuI1ae9a9IMxeyAVa3a1Ap4AnxmyIKG2b2FaJKqkidw/0cxRbWN+HOs6ZWd1w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - - /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.5): - resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@babel/types': 7.24.5 - dev: false - - /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-plugin-utils': 7.24.5 - dev: false - - /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - regenerator-transform: 0.15.2 - - /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.5): - resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.5 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.24.5): - resolution: {integrity: sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-typescript@7.24.5(@babel/core@7.24.5): - resolution: {integrity: sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5) - dev: false - - /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - /@babel/preset-env@7.24.5(@babel/core@7.24.5): - resolution: {integrity: sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.5) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.5) - '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.5) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.5) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) - core-js-compat: 3.37.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - /@babel/preset-flow@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5) - dev: false - - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.5): - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/types': 7.24.5 - esutils: 2.0.3 - - /@babel/preset-react@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.5) - '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.5) - dev: false - - /@babel/preset-typescript@7.24.1(@babel/core@7.24.5): - resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5) - dev: false - - /@babel/register@7.23.7(@babel/core@7.24.5): - resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.6 - source-map-support: 0.5.21 - dev: false - - /@babel/regjsgen@0.8.0: - resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - - /@babel/runtime-corejs3@7.24.5: - resolution: {integrity: sha512-GWO0mgzNMLWaSYM4z4NVIuY0Cd1fl8cPnuetuddu5w/qGuvt5Y7oUi/kvvQGK9xgOkFJDQX2heIvTRn/OQ1XTg==} - engines: {node: '>=6.9.0'} - dependencies: - core-js-pure: 3.37.0 - regenerator-runtime: 0.14.1 - dev: true - - /@babel/runtime@7.24.5: - resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - - /@babel/template@7.24.0: - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - - /@babel/traverse@7.24.5: - resolution: {integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - /@babel/types@7.24.5: - resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.24.5 - to-fast-properties: 2.0.0 - - /@craftzdog/react-native-buffer@6.0.5(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-Av+YqfwA9e7jhgI9GFE/gTpwl/H+dRRLmZyJPOpKTy107j9Oj7oXlm3/YiMNz+C/CEGqcKAOqnXDLs4OL6AAFw==} - dependencies: - ieee754: 1.2.1 - react-native-quick-base64: 2.1.2(react-native@0.73.6)(react@18.2.0) - transitivePeerDependencies: - - react - - react-native - dev: false - - /@cspotcode/source-map-support@0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - dev: true - - /@egjs/hammerjs@2.0.17: - resolution: {integrity: sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==} - engines: {node: '>=0.8.0'} - dependencies: - '@types/hammerjs': 2.0.45 - dev: false - - /@emotion/is-prop-valid@0.8.8: - resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} - requiresBuild: true - dependencies: - '@emotion/memoize': 0.7.4 - dev: false - optional: true - - /@emotion/memoize@0.7.4: - resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} - requiresBuild: true - dev: false - optional: true - - /@esbuild/aix-ppc64@0.20.2: - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - requiresBuild: true - dev: false - optional: true - - /@esbuild/android-arm64@0.20.2: - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@esbuild/android-arm@0.20.2: - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@esbuild/android-x64@0.20.2: - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@esbuild/darwin-arm64@0.20.2: - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@esbuild/darwin-x64@0.20.2: - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@esbuild/freebsd-arm64@0.20.2: - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/freebsd-x64@0.20.2: - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-arm64@0.20.2: - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-arm@0.20.2: - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-ia32@0.20.2: - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-loong64@0.20.2: - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-mips64el@0.20.2: - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-ppc64@0.20.2: - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-riscv64@0.20.2: - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-s390x@0.20.2: - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-x64@0.20.2: - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/netbsd-x64@0.20.2: - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/openbsd-x64@0.20.2: - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/sunos-x64@0.20.2: - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: false - optional: true - - /@esbuild/win32-arm64@0.20.2: - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@esbuild/win32-ia32@0.20.2: - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@esbuild/win32-x64@0.20.2: - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.57.0 - eslint-visitor-keys: 3.4.3 - - /@eslint-community/regexpp@4.10.0: - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - /@eslint/js@8.57.0: - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - /@expo/bunyan@4.0.0: - resolution: {integrity: sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA==} - engines: {'0': node >=0.10.0} - dependencies: - uuid: 8.3.2 - optionalDependencies: - mv: 2.1.1 - safe-json-stringify: 1.2.0 - dev: false - - /@expo/cli@0.17.10(@react-native/babel-preset@0.74.81)(expo-modules-autolinking@1.10.3): - resolution: {integrity: sha512-Jw2wY+lsavP9GRqwwLqF/SvB7w2GZ4sWBMcBKTZ8F0lWjwmLGAUt4WYquf20agdmnY/oZUHvWNkrz/t3SflhnA==} - hasBin: true - dependencies: - '@babel/runtime': 7.24.5 - '@expo/code-signing-certificates': 0.0.5 - '@expo/config': 8.5.6 - '@expo/config-plugins': 7.9.1 - '@expo/devcert': 1.1.0 - '@expo/env': 0.2.3 - '@expo/image-utils': 0.4.2 - '@expo/json-file': 8.3.1 - '@expo/metro-config': 0.17.7(@react-native/babel-preset@0.74.81) - '@expo/osascript': 2.1.0 - '@expo/package-manager': 1.5.2 - '@expo/plist': 0.1.1 - '@expo/prebuild-config': 6.8.1(expo-modules-autolinking@1.10.3) - '@expo/rudder-sdk-node': 1.1.1 - '@expo/spawn-async': 1.5.0 - '@expo/xcpretty': 4.3.1 - '@react-native/dev-middleware': 0.73.8 - '@urql/core': 2.3.6(graphql@15.8.0) - '@urql/exchange-retry': 0.3.0(graphql@15.8.0) - accepts: 1.3.8 - arg: 5.0.2 - better-opn: 3.0.2 - bplist-parser: 0.3.2 - cacache: 15.3.0 - chalk: 4.1.2 - ci-info: 3.9.0 - connect: 3.7.0 - debug: 4.3.4 - env-editor: 0.4.2 - find-yarn-workspace-root: 2.0.0 - form-data: 3.0.1 - freeport-async: 2.0.0 - fs-extra: 8.1.0 - getenv: 1.0.0 - glob: 7.2.3 - graphql: 15.8.0 - graphql-tag: 2.12.6(graphql@15.8.0) - https-proxy-agent: 5.0.1 - internal-ip: 4.3.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - js-yaml: 3.14.1 - json-schema-deref-sync: 0.13.0 - lodash.debounce: 4.0.8 - md5hex: 1.0.0 - minimatch: 3.1.2 - minipass: 3.3.6 - node-fetch: 2.7.0 - node-forge: 1.3.1 - npm-package-arg: 7.0.0 - open: 8.4.2 - ora: 3.4.0 - picomatch: 3.0.1 - pretty-bytes: 5.6.0 - progress: 2.0.3 - prompts: 2.4.2 - qrcode-terminal: 0.11.0 - require-from-string: 2.0.2 - requireg: 0.2.2 - resolve: 1.22.8 - resolve-from: 5.0.0 - resolve.exports: 2.0.2 - semver: 7.6.0 - send: 0.18.0 - slugify: 1.6.6 - source-map-support: 0.5.21 - stacktrace-parser: 0.1.10 - structured-headers: 0.4.1 - tar: 6.2.1 - temp-dir: 2.0.0 - tempy: 0.7.1 - terminal-link: 2.1.1 - text-table: 0.2.0 - url-join: 4.0.0 - wrap-ansi: 7.0.0 - ws: 8.17.0 - transitivePeerDependencies: - - '@react-native/babel-preset' - - bluebird - - bufferutil - - encoding - - expo-modules-autolinking - - supports-color - - utf-8-validate - dev: false - - /@expo/code-signing-certificates@0.0.5: - resolution: {integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==} - dependencies: - node-forge: 1.3.1 - nullthrows: 1.1.1 - dev: false - - /@expo/config-plugins@7.8.4: - resolution: {integrity: sha512-hv03HYxb/5kX8Gxv/BTI8TLc9L06WzqAfHRRXdbar4zkLcP2oTzvsLEF4/L/TIpD3rsnYa0KU42d0gWRxzPCJg==} - dependencies: - '@expo/config-types': 50.0.1 - '@expo/fingerprint': 0.6.1 - '@expo/json-file': 8.3.1 - '@expo/plist': 0.1.1 - '@expo/sdk-runtime-versions': 1.0.0 - '@react-native/normalize-color': 2.1.0 - chalk: 4.1.2 - debug: 4.3.4 - find-up: 5.0.0 - getenv: 1.0.0 - glob: 7.1.6 - resolve-from: 5.0.0 - semver: 7.5.3 - slash: 3.0.0 - slugify: 1.6.6 - xcode: 3.0.1 - xml2js: 0.6.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@expo/config-plugins@7.9.1: - resolution: {integrity: sha512-ICt6Jed1J0tPYMQrJ8K5Qusgih2I6pZ2PU4VSvxsN3T4n97L13XpYV1vyq1Uc/HMl3UhOwldipmgpEbCfeDqsQ==} - dependencies: - '@expo/config-types': 50.0.1 - '@expo/fingerprint': 0.6.1 - '@expo/json-file': 8.3.1 - '@expo/plist': 0.1.1 - '@expo/sdk-runtime-versions': 1.0.0 - '@react-native/normalize-color': 2.1.0 - chalk: 4.1.2 - debug: 4.3.4 - find-up: 5.0.0 - getenv: 1.0.0 - glob: 7.1.6 - resolve-from: 5.0.0 - semver: 7.6.0 - slash: 3.0.0 - slugify: 1.6.6 - xcode: 3.0.1 - xml2js: 0.6.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@expo/config-types@50.0.1: - resolution: {integrity: sha512-EZHMgzkWRB9SMHO1e9m8s+OMahf92XYTnsCFjxhSfcDrcEoSdFPyJWDJVloHZPMGhxns7Fi2+A+bEVN/hD4NKA==} - dev: false - - /@expo/config@8.5.6: - resolution: {integrity: sha512-wF5awSg6MNn1cb1lIgjnhOn5ov2TEUTnkAVCsOl0QqDwcP+YIerteSFwjn9V52UZvg58L+LKxpCuGbw5IHavbg==} - dependencies: - '@babel/code-frame': 7.10.4 - '@expo/config-plugins': 7.9.1 - '@expo/config-types': 50.0.1 - '@expo/json-file': 8.3.1 - getenv: 1.0.0 - glob: 7.1.6 - require-from-string: 2.0.2 - resolve-from: 5.0.0 - semver: 7.5.3 - slugify: 1.6.6 - sucrase: 3.34.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@expo/devcert@1.1.0: - resolution: {integrity: sha512-ghUVhNJQOCTdQckSGTHctNp/0jzvVoMMkVh+6SHn+TZj8sU15U/npXIDt8NtQp0HedlPaCgkVdMu8Sacne0aEA==} - dependencies: - application-config-path: 0.1.1 - command-exists: 1.2.9 - debug: 3.2.7 - eol: 0.9.1 - get-port: 3.2.0 - glob: 7.2.3 - lodash: 4.17.21 - mkdirp: 0.5.6 - password-prompt: 1.1.3 - rimraf: 2.7.1 - sudo-prompt: 8.2.5 - tmp: 0.0.33 - tslib: 2.6.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@expo/env@0.2.3: - resolution: {integrity: sha512-a+uJ/e6MAVxPVVN/HbXU5qxzdqrqDwNQYxCfxtAufgmd5VZj54e5f3TJA3LEEUW3pTSZR8xK0H0EtVN297AZnw==} - dependencies: - chalk: 4.1.2 - debug: 4.3.4 - dotenv: 16.4.5 - dotenv-expand: 11.0.6 - getenv: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@expo/fingerprint@0.6.1: - resolution: {integrity: sha512-ggLn6unI6qowlA1FihdQwPpLn16VJulYkvYAEL50gaqVahfNEglRQMSH2giZzjD0d6xq2/EQuUdFyHaJfyJwOQ==} - hasBin: true - dependencies: - '@expo/spawn-async': 1.7.2 - chalk: 4.1.2 - debug: 4.3.4 - find-up: 5.0.0 - minimatch: 3.1.2 - p-limit: 3.1.0 - resolve-from: 5.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@expo/image-utils@0.4.2: - resolution: {integrity: sha512-CxP+1QXgRXsNnmv2FAUA2RWwK6kNBFg4QEmVXn2K9iLoEAI+i+1IQXcUgc+J7nTJl9pO7FIu2gIiEYGYffjLWQ==} - dependencies: - '@expo/spawn-async': 1.5.0 - chalk: 4.1.2 - fs-extra: 9.0.0 - getenv: 1.0.0 - jimp-compact: 0.16.1 - node-fetch: 2.7.0 - parse-png: 2.1.0 - resolve-from: 5.0.0 - semver: 7.3.2 - tempy: 0.3.0 - transitivePeerDependencies: - - encoding - dev: false - - /@expo/json-file@8.3.1: - resolution: {integrity: sha512-QIMMaqPvm8EGflp041h27OG8DDgh3RxzkEjEEvHJ9AUImgeieMCGrpDsnGOcPI4TR6MpJpLNAk5rZK4szhEwIQ==} - dependencies: - '@babel/code-frame': 7.10.4 - json5: 2.2.3 - write-file-atomic: 2.4.3 - dev: false - - /@expo/metro-config@0.17.7(@react-native/babel-preset@0.74.81): - resolution: {integrity: sha512-3vAdinAjMeRwdhGWWLX6PziZdAPvnyJ6KVYqnJErHHqH0cA6dgAENT3Vq6PEM1H2HgczKr2d5yG9AMgwy848ow==} - peerDependencies: - '@react-native/babel-preset': '*' - dependencies: - '@babel/core': 7.24.5 - '@babel/generator': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - '@expo/config': 8.5.6 - '@expo/env': 0.2.3 - '@expo/json-file': 8.3.1 - '@expo/spawn-async': 1.7.2 - '@react-native/babel-preset': 0.74.81(@babel/core@7.24.5)(@babel/preset-env@7.24.5) - babel-preset-fbjs: 3.4.0(@babel/core@7.24.5) - chalk: 4.1.2 - debug: 4.3.4 - find-yarn-workspace-root: 2.0.0 - fs-extra: 9.1.0 - getenv: 1.0.0 - glob: 7.2.3 - jsc-safe-url: 0.2.4 - lightningcss: 1.19.0 - postcss: 8.4.38 - resolve-from: 5.0.0 - sucrase: 3.34.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@expo/metro-runtime@3.1.3(react-native@0.73.6): - resolution: {integrity: sha512-u1CaQJJlSgvxBB5NJ6YMVvSDTTRzjT71dHpEBnKPZhpFv5ebVry52FZ2sEeEEA6mHG5zGxWXmHImW3hNKHh8EA==} - peerDependencies: - react-native: '*' - dependencies: - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@expo/osascript@2.1.0: - resolution: {integrity: sha512-bOhuFnlRaS7CU33+rFFIWdcET/Vkyn1vsN8BYFwCDEF5P1fVVvYN7bFOsQLTMD3nvi35C1AGmtqUr/Wfv8Xaow==} - engines: {node: '>=12'} - dependencies: - '@expo/spawn-async': 1.5.0 - exec-async: 2.2.0 - dev: false - - /@expo/package-manager@1.5.2: - resolution: {integrity: sha512-IuA9XtGBilce0q8cyxtWINqbzMB1Fia0Yrug/O53HNuRSwQguV/iqjV68bsa4z8mYerePhcFgtvISWLAlNEbUA==} - dependencies: - '@expo/json-file': 8.3.1 - '@expo/spawn-async': 1.7.2 - ansi-regex: 5.0.1 - chalk: 4.1.2 - find-up: 5.0.0 - find-yarn-workspace-root: 2.0.0 - js-yaml: 3.14.1 - micromatch: 4.0.5 - npm-package-arg: 7.0.0 - ora: 3.4.0 - split: 1.0.1 - sudo-prompt: 9.1.1 - dev: false - - /@expo/plist@0.1.1: - resolution: {integrity: sha512-90qbbblHYWR/z0R+HP2t7yRx0IG5AsEL0BqTY/vXcj4emhGhm39Dbwg4BO2t6qfdLljJISzUwEtWWTl1HNHAAg==} - dependencies: - '@xmldom/xmldom': 0.7.13 - base64-js: 1.5.1 - xmlbuilder: 14.0.0 - dev: false - - /@expo/prebuild-config@6.7.4(expo-modules-autolinking@1.10.3): - resolution: {integrity: sha512-x8EUdCa8DTMZ/dtEXjHAdlP+ljf6oSeSKNzhycXiHhpMSMG9jEhV28ocCwc6cKsjK5GziweEiHwvrj6+vsBlhA==} - peerDependencies: - expo-modules-autolinking: '>=0.8.1' - dependencies: - '@expo/config': 8.5.6 - '@expo/config-plugins': 7.8.4 - '@expo/config-types': 50.0.1 - '@expo/image-utils': 0.4.2 - '@expo/json-file': 8.3.1 - debug: 4.3.4 - expo-modules-autolinking: 1.10.3 - fs-extra: 9.1.0 - resolve-from: 5.0.0 - semver: 7.5.3 - xml2js: 0.6.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - - /@expo/prebuild-config@6.8.1(expo-modules-autolinking@1.10.3): - resolution: {integrity: sha512-ptK9e0dcj1eYlAWV+fG+QkuAWcLAT1AmtEbj++tn7ZjEj8+LkXRM73LCOEGaF0Er8i8ZWNnaVsgGW4vjgP5ZsA==} - peerDependencies: - expo-modules-autolinking: '>=0.8.1' - dependencies: - '@expo/config': 8.5.6 - '@expo/config-plugins': 7.9.1 - '@expo/config-types': 50.0.1 - '@expo/image-utils': 0.4.2 - '@expo/json-file': 8.3.1 - debug: 4.3.4 - expo-modules-autolinking: 1.10.3 - fs-extra: 9.1.0 - resolve-from: 5.0.0 - semver: 7.5.3 - xml2js: 0.6.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - - /@expo/rudder-sdk-node@1.1.1: - resolution: {integrity: sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==} - engines: {node: '>=12'} - dependencies: - '@expo/bunyan': 4.0.0 - '@segment/loosely-validate-event': 2.0.0 - fetch-retry: 4.1.1 - md5: 2.3.0 - node-fetch: 2.7.0 - remove-trailing-slash: 0.1.1 - uuid: 8.3.2 - transitivePeerDependencies: - - encoding - dev: false - - /@expo/sdk-runtime-versions@1.0.0: - resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} - dev: false - - /@expo/server@0.3.1: - resolution: {integrity: sha512-cCKyVA2IR9J4hDFPXzj3L08+Ngd/7z2F+JtdW0NLy03qShXBI5NSEEcaiHtjrgsLXPDe9PBw5Xgsfmxuduyggg==} - dependencies: - '@remix-run/node': 1.19.3 - abort-controller: 3.0.0 - debug: 4.3.4 - source-map-support: 0.5.21 - transitivePeerDependencies: - - supports-color - dev: false - - /@expo/spawn-async@1.5.0: - resolution: {integrity: sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew==} - engines: {node: '>=4'} - dependencies: - cross-spawn: 6.0.5 - dev: false - - /@expo/spawn-async@1.7.2: - resolution: {integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==} - engines: {node: '>=12'} - dependencies: - cross-spawn: 7.0.3 - dev: false - - /@expo/vector-icons@14.0.1: - resolution: {integrity: sha512-7oIe1RRWmRQXNxmewsuAaIRNAQfkig7EFTuI5T8PCI7T4q/rS5iXWvlzAEXndkzSOSs7BAANrLyj7AtpEhTksg==} - dependencies: - prop-types: 15.8.1 - dev: false - - /@expo/xcpretty@4.3.1: - resolution: {integrity: sha512-sqXgo1SCv+j4VtYEwl/bukuOIBrVgx6euIoCat3Iyx5oeoXwEA2USCoeL0IPubflMxncA2INkqJ/Wr3NGrSgzw==} - hasBin: true - dependencies: - '@babel/code-frame': 7.10.4 - chalk: 4.1.2 - find-up: 5.0.0 - js-yaml: 4.1.0 - dev: false - - /@floating-ui/core@1.6.1: - resolution: {integrity: sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==} - dependencies: - '@floating-ui/utils': 0.2.2 - dev: false - - /@floating-ui/dom@1.6.4: - resolution: {integrity: sha512-0G8R+zOvQsAG1pg2Q99P21jiqxqGBW1iRe/iXHsBRBxnpXKFI8QwbB4x5KmYLggNO5m34IQgOIu9SCRfR/WWiQ==} - dependencies: - '@floating-ui/core': 1.6.1 - '@floating-ui/utils': 0.2.2 - dev: false - - /@floating-ui/react-dom@2.0.9(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-q0umO0+LQK4+p6aGyvzASqKbKOJcAHJ7ycE9CuUvfx3s9zTHWmGJTPOIlM/hmSBfUfg/XfY5YhLBLR/LHwShQQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - dependencies: - '@floating-ui/dom': 1.6.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@floating-ui/react-native@0.10.5(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-r3CLdjMLLyIYKl34ltNN9hHZBRWC4BVsLLnqBf5yl3GlcaBFpMMX/NdtTKJVfbhQMurfsGbefhZrh8A9cVwkDA==} - peerDependencies: - react: '>=16.8.0' - react-native: '>=0.64.0' - dependencies: - '@floating-ui/core': 1.6.1 - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@floating-ui/react@0.26.13(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-kBa9wntpugzrZ8t/4yWelvSmEKZdeTXTJzrxqyrLmcU/n1SM4nvse8yQh2e1b37rJGvtu0EplV9+IkBrCJ1vkw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - dependencies: - '@floating-ui/react-dom': 2.0.9(react-dom@18.2.0)(react@18.2.0) - '@floating-ui/utils': 0.2.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tabbable: 6.2.0 - dev: false - - /@floating-ui/utils@0.2.2: - resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==} - dev: false - - /@gar/promisify@1.1.3: - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - dev: false - - /@graphql-typed-document-node/core@3.2.0(graphql@15.8.0): - resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - graphql: 15.8.0 - dev: false - - /@hapi/hoek@9.3.0: - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - dev: false - - /@hapi/topo@5.1.0: - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - dependencies: - '@hapi/hoek': 9.3.0 - dev: false - - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - /@humanwhocodes/object-schema@2.0.3: - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - - /@ianvs/prettier-plugin-sort-imports@4.2.1(prettier@3.2.5): - resolution: {integrity: sha512-NKN1LVFWUDGDGr3vt+6Ey3qPeN/163uR1pOPAlkWpgvAqgxQ6kSdUf1F0it8aHUtKRUzEGcK38Wxd07O61d7+Q==} - peerDependencies: - '@vue/compiler-sfc': 2.7.x || 3.x - prettier: 2 || 3 - peerDependenciesMeta: - '@vue/compiler-sfc': - optional: true - dependencies: - '@babel/core': 7.24.5 - '@babel/generator': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - prettier: 3.2.5 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: false - - /@isaacs/ttlcache@1.4.1: - resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} - engines: {node: '>=12'} - dev: false - - /@jest/create-cache-key-function@29.7.0: - resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - dev: false - - /@jest/environment@29.7.0: - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.12.8 - jest-mock: 29.7.0 - dev: false - - /@jest/fake-timers@29.7.0: - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.12.8 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 - dev: false - - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.27.8 - dev: false - - /@jest/types@26.6.2: - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} - engines: {node: '>= 10.14.2'} - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.8 - '@types/yargs': 15.0.19 - chalk: 4.1.2 - dev: false - - /@jest/types@29.6.3: - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 20.12.8 - '@types/yargs': 17.0.32 - chalk: 4.1.2 - dev: false - - /@jridgewell/gen-mapping@0.3.5: - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - - /@jridgewell/resolve-uri@3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - /@jridgewell/set-array@1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - /@jridgewell/source-map@0.3.6: - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - dev: false - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - /@jridgewell/trace-mapping@0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - /@jridgewell/trace-mapping@0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - - /@motionone/animation@10.17.0: - resolution: {integrity: sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg==} - dependencies: - '@motionone/easing': 10.17.0 - '@motionone/types': 10.17.0 - '@motionone/utils': 10.17.0 - tslib: 2.6.2 - dev: false - - /@motionone/dom@10.12.0: - resolution: {integrity: sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==} - dependencies: - '@motionone/animation': 10.17.0 - '@motionone/generators': 10.17.0 - '@motionone/types': 10.17.0 - '@motionone/utils': 10.17.0 - hey-listen: 1.0.8 - tslib: 2.6.2 - dev: false - - /@motionone/easing@10.17.0: - resolution: {integrity: sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg==} - dependencies: - '@motionone/utils': 10.17.0 - tslib: 2.6.2 - dev: false - - /@motionone/generators@10.17.0: - resolution: {integrity: sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ==} - dependencies: - '@motionone/types': 10.17.0 - '@motionone/utils': 10.17.0 - tslib: 2.6.2 - dev: false - - /@motionone/types@10.17.0: - resolution: {integrity: sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA==} - dev: false - - /@motionone/utils@10.17.0: - resolution: {integrity: sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg==} - dependencies: - '@motionone/types': 10.17.0 - hey-listen: 1.0.8 - tslib: 2.6.2 - dev: false - - /@noble/hashes@1.4.0: - resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} - engines: {node: '>= 16'} - dev: false - - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - /@npmcli/fs@1.1.1: - resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.6.0 - dev: false - - /@npmcli/move-file@1.1.2: - resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} - engines: {node: '>=10'} - deprecated: This functionality has been moved to @npmcli/fs - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - dev: false - - /@octokit/auth-token@4.0.0: - resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} - engines: {node: '>= 18'} - dev: false - - /@octokit/core@5.2.0: - resolution: {integrity: sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==} - engines: {node: '>= 18'} - dependencies: - '@octokit/auth-token': 4.0.0 - '@octokit/graphql': 7.1.0 - '@octokit/request': 8.4.0 - '@octokit/request-error': 5.1.0 - '@octokit/types': 13.5.0 - before-after-hook: 2.2.3 - universal-user-agent: 6.0.1 - dev: false - - /@octokit/endpoint@9.0.5: - resolution: {integrity: sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==} - engines: {node: '>= 18'} - dependencies: - '@octokit/types': 13.5.0 - universal-user-agent: 6.0.1 - dev: false - - /@octokit/graphql@7.1.0: - resolution: {integrity: sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==} - engines: {node: '>= 18'} - dependencies: - '@octokit/request': 8.4.0 - '@octokit/types': 13.5.0 - universal-user-agent: 6.0.1 - dev: false - - /@octokit/openapi-types@20.0.0: - resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==} - dev: false - - /@octokit/openapi-types@22.2.0: - resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==} - dev: false - - /@octokit/plugin-paginate-rest@9.2.1(@octokit/core@5.2.0): - resolution: {integrity: sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '5' - dependencies: - '@octokit/core': 5.2.0 - '@octokit/types': 12.6.0 - dev: false - - /@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.0): - resolution: {integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '5' - dependencies: - '@octokit/core': 5.2.0 - dev: false - - /@octokit/plugin-rest-endpoint-methods@10.4.1(@octokit/core@5.2.0): - resolution: {integrity: sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==} - engines: {node: '>= 18'} - peerDependencies: - '@octokit/core': '5' - dependencies: - '@octokit/core': 5.2.0 - '@octokit/types': 12.6.0 - dev: false - - /@octokit/request-error@5.1.0: - resolution: {integrity: sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==} - engines: {node: '>= 18'} - dependencies: - '@octokit/types': 13.5.0 - deprecation: 2.3.1 - once: 1.4.0 - dev: false - - /@octokit/request@8.4.0: - resolution: {integrity: sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==} - engines: {node: '>= 18'} - dependencies: - '@octokit/endpoint': 9.0.5 - '@octokit/request-error': 5.1.0 - '@octokit/types': 13.5.0 - universal-user-agent: 6.0.1 - dev: false - - /@octokit/rest@20.1.0: - resolution: {integrity: sha512-STVO3itHQLrp80lvcYB2UIKoeil5Ctsgd2s1AM+du3HqZIR35ZH7WE9HLwUOLXH0myA0y3AGNPo8gZtcgIbw0g==} - engines: {node: '>= 18'} - dependencies: - '@octokit/core': 5.2.0 - '@octokit/plugin-paginate-rest': 9.2.1(@octokit/core@5.2.0) - '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.0) - '@octokit/plugin-rest-endpoint-methods': 10.4.1(@octokit/core@5.2.0) - dev: false - - /@octokit/types@12.6.0: - resolution: {integrity: sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==} - dependencies: - '@octokit/openapi-types': 20.0.0 - dev: false - - /@octokit/types@13.5.0: - resolution: {integrity: sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==} - dependencies: - '@octokit/openapi-types': 22.2.0 - dev: false - - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - requiresBuild: true - dev: false - optional: true - - /@radix-ui/react-compose-refs@1.0.0(react@18.2.0): - resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - dependencies: - '@babel/runtime': 7.24.5 - react: 18.2.0 - dev: false - - /@radix-ui/react-slot@1.0.1(react@18.2.0): - resolution: {integrity: sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==} - peerDependencies: - react: ^16.8 || ^17.0 || ^18.0 - dependencies: - '@babel/runtime': 7.24.5 - '@radix-ui/react-compose-refs': 1.0.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@react-native-anywhere/polyfill-base64@0.0.1-alpha.0: - resolution: {integrity: sha512-OF3idcETV622AyFvvK54ot2EG0G43tZTZJyWtFHtrEKUmoUvSuC5DOMeLino0TwBQJn2s26MBnIPVgokBJb/xw==} - dependencies: - base-64: 0.1.0 - dev: false - - /@react-native-community/cli-clean@12.3.6: - resolution: {integrity: sha512-gUU29ep8xM0BbnZjwz9MyID74KKwutq9x5iv4BCr2im6nly4UMf1B1D+V225wR7VcDGzbgWjaezsJShLLhC5ig==} - dependencies: - '@react-native-community/cli-tools': 12.3.6 - chalk: 4.1.2 - execa: 5.1.1 - transitivePeerDependencies: - - encoding - dev: false - - /@react-native-community/cli-config@12.3.6: - resolution: {integrity: sha512-JGWSYQ9EAK6m2v0abXwFLEfsqJ1zkhzZ4CV261QZF9MoUNB6h57a274h1MLQR9mG6Tsh38wBUuNfEPUvS1vYew==} - dependencies: - '@react-native-community/cli-tools': 12.3.6 - chalk: 4.1.2 - cosmiconfig: 5.2.1 - deepmerge: 4.3.1 - glob: 7.2.3 - joi: 17.13.0 - transitivePeerDependencies: - - encoding - dev: false - - /@react-native-community/cli-debugger-ui@12.3.6: - resolution: {integrity: sha512-SjUKKsx5FmcK9G6Pb6UBFT0s9JexVStK5WInmANw75Hm7YokVvHEgtprQDz2Uvy5znX5g2ujzrkIU//T15KQzA==} - dependencies: - serve-static: 1.15.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@react-native-community/cli-doctor@12.3.6: - resolution: {integrity: sha512-fvBDv2lTthfw4WOQKkdTop2PlE9GtfrlNnpjB818MhcdEnPjfQw5YaTUcnNEGsvGomdCs1MVRMgYXXwPSN6OvQ==} - dependencies: - '@react-native-community/cli-config': 12.3.6 - '@react-native-community/cli-platform-android': 12.3.6 - '@react-native-community/cli-platform-ios': 12.3.6 - '@react-native-community/cli-tools': 12.3.6 - chalk: 4.1.2 - command-exists: 1.2.9 - deepmerge: 4.3.1 - envinfo: 7.13.0 - execa: 5.1.1 - hermes-profile-transformer: 0.0.6 - node-stream-zip: 1.15.0 - ora: 5.4.1 - semver: 7.6.0 - strip-ansi: 5.2.0 - wcwidth: 1.0.1 - yaml: 2.4.2 - transitivePeerDependencies: - - encoding - dev: false - - /@react-native-community/cli-hermes@12.3.6: - resolution: {integrity: sha512-sNGwfOCl8OAIjWCkwuLpP8NZbuO0dhDI/2W7NeOGDzIBsf4/c4MptTrULWtGIH9okVPLSPX0NnRyGQ+mSwWyuQ==} - dependencies: - '@react-native-community/cli-platform-android': 12.3.6 - '@react-native-community/cli-tools': 12.3.6 - chalk: 4.1.2 - hermes-profile-transformer: 0.0.6 - transitivePeerDependencies: - - encoding - dev: false - - /@react-native-community/cli-platform-android@12.3.6: - resolution: {integrity: sha512-DeDDAB8lHpuGIAPXeeD9Qu2+/wDTFPo99c8uSW49L0hkmZJixzvvvffbGQAYk32H0TmaI7rzvzH+qzu7z3891g==} - dependencies: - '@react-native-community/cli-tools': 12.3.6 - chalk: 4.1.2 - execa: 5.1.1 - fast-xml-parser: 4.3.6 - glob: 7.2.3 - logkitty: 0.7.1 - transitivePeerDependencies: - - encoding - dev: false - - /@react-native-community/cli-platform-ios@12.3.6: - resolution: {integrity: sha512-3eZ0jMCkKUO58wzPWlvAPRqezVKm9EPZyaPyHbRPWU8qw7JqkvnRlWIaYDGpjCJgVW4k2hKsEursLtYKb188tg==} - dependencies: - '@react-native-community/cli-tools': 12.3.6 - chalk: 4.1.2 - execa: 5.1.1 - fast-xml-parser: 4.3.6 - glob: 7.2.3 - ora: 5.4.1 - transitivePeerDependencies: - - encoding - dev: false - - /@react-native-community/cli-plugin-metro@12.3.6: - resolution: {integrity: sha512-3jxSBQt4fkS+KtHCPSyB5auIT+KKIrPCv9Dk14FbvOaEh9erUWEm/5PZWmtboW1z7CYeNbFMeXm9fM2xwtVOpg==} - dev: false - - /@react-native-community/cli-server-api@12.3.6: - resolution: {integrity: sha512-80NIMzo8b2W+PL0Jd7NjiJW9mgaT8Y8wsIT/lh6mAvYH7mK0ecDJUYUTAAv79Tbo1iCGPAr3T295DlVtS8s4yQ==} - dependencies: - '@react-native-community/cli-debugger-ui': 12.3.6 - '@react-native-community/cli-tools': 12.3.6 - compression: 1.7.4 - connect: 3.7.0 - errorhandler: 1.5.1 - nocache: 3.0.4 - pretty-format: 26.6.2 - serve-static: 1.15.0 - ws: 7.5.9 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@react-native-community/cli-tools@12.3.6: - resolution: {integrity: sha512-FPEvZn19UTMMXUp/piwKZSh8cMEfO8G3KDtOwo53O347GTcwNrKjgZGtLSPELBX2gr+YlzEft3CoRv2Qmo83fQ==} - dependencies: - appdirsjs: 1.2.7 - chalk: 4.1.2 - find-up: 5.0.0 - mime: 2.6.0 - node-fetch: 2.7.0 - open: 6.4.0 - ora: 5.4.1 - semver: 7.6.0 - shell-quote: 1.8.1 - sudo-prompt: 9.2.1 - transitivePeerDependencies: - - encoding - dev: false - - /@react-native-community/cli-types@12.3.6: - resolution: {integrity: sha512-xPqTgcUtZowQ8WKOkI9TLGBwH2bGggOC4d2FFaIRST3gTcjrEeGRNeR5aXCzJFIgItIft8sd7p2oKEdy90+01Q==} - dependencies: - joi: 17.13.0 - dev: false - - /@react-native-community/cli@12.3.6: - resolution: {integrity: sha512-647OSi6xBb8FbwFqX9zsJxOzu685AWtrOUWHfOkbKD+5LOpGORw+GQo0F9rWZnB68rLQyfKUZWJeaD00pGv5fw==} - engines: {node: '>=18'} - hasBin: true - dependencies: - '@react-native-community/cli-clean': 12.3.6 - '@react-native-community/cli-config': 12.3.6 - '@react-native-community/cli-debugger-ui': 12.3.6 - '@react-native-community/cli-doctor': 12.3.6 - '@react-native-community/cli-hermes': 12.3.6 - '@react-native-community/cli-plugin-metro': 12.3.6 - '@react-native-community/cli-server-api': 12.3.6 - '@react-native-community/cli-tools': 12.3.6 - '@react-native-community/cli-types': 12.3.6 - chalk: 4.1.2 - commander: 9.5.0 - deepmerge: 4.3.1 - execa: 5.1.1 - find-up: 4.1.0 - fs-extra: 8.1.0 - graceful-fs: 4.2.11 - prompts: 2.4.2 - semver: 7.6.0 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@react-native/assets-registry@0.73.1: - resolution: {integrity: sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg==} - engines: {node: '>=18'} - dev: false - - /@react-native/babel-plugin-codegen@0.73.4(@babel/preset-env@7.24.5): - resolution: {integrity: sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ==} - engines: {node: '>=18'} - dependencies: - '@react-native/codegen': 0.73.3(@babel/preset-env@7.24.5) - transitivePeerDependencies: - - '@babel/preset-env' - - supports-color - dev: false - - /@react-native/babel-plugin-codegen@0.74.81(@babel/preset-env@7.24.5): - resolution: {integrity: sha512-Bj6g5/xkLMBAdC6665TbD3uCKCQSmLQpGv3gyqya/ydZpv3dDmDXfkGmO4fqTwEMunzu09Sk55st2ipmuXAaAg==} - engines: {node: '>=18'} - dependencies: - '@react-native/codegen': 0.74.81(@babel/preset-env@7.24.5) - transitivePeerDependencies: - - '@babel/preset-env' - - supports-color - dev: false - - /@react-native/babel-preset@0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5): - resolution: {integrity: sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' - dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.24.5) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-export-default-from': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.5) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) - '@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.5) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) - '@babel/template': 7.24.0 - '@react-native/babel-plugin-codegen': 0.73.4(@babel/preset-env@7.24.5) - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.24.5) - react-refresh: 0.14.0 - transitivePeerDependencies: - - '@babel/preset-env' - - supports-color - dev: false - - /@react-native/babel-preset@0.74.81(@babel/core@7.24.5)(@babel/preset-env@7.24.5): - resolution: {integrity: sha512-H80B3Y3lBBVC4x9tceTEQq/04lx01gW6ajWCcVbd7sHvGEAxfMFEZUmVZr0451Cafn02wVnDJ8psto1F+0w5lw==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' - dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.24.5) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-export-default-from': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.24.5) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.5) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) - '@babel/plugin-transform-react-jsx-self': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.5) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) - '@babel/template': 7.24.0 - '@react-native/babel-plugin-codegen': 0.74.81(@babel/preset-env@7.24.5) - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.24.5) - react-refresh: 0.14.2 - transitivePeerDependencies: - - '@babel/preset-env' - - supports-color - dev: false - - /@react-native/codegen@0.73.3(@babel/preset-env@7.24.5): - resolution: {integrity: sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg==} - engines: {node: '>=18'} - peerDependencies: - '@babel/preset-env': ^7.1.6 - dependencies: - '@babel/parser': 7.24.5 - '@babel/preset-env': 7.24.5(@babel/core@7.24.5) - flow-parser: 0.206.0 - glob: 7.2.3 - invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.24.5) - mkdirp: 0.5.6 - nullthrows: 1.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@react-native/codegen@0.74.81(@babel/preset-env@7.24.5): - resolution: {integrity: sha512-hhXo4ccv2lYWaJrZDsdbRTZ5SzSOdyZ0MY6YXwf3xEFLuSunbUMu17Rz5LXemKXlpVx4KEgJ/TDc2pPVaRPZgA==} - engines: {node: '>=18'} - peerDependencies: - '@babel/preset-env': ^7.1.6 - dependencies: - '@babel/parser': 7.24.5 - '@babel/preset-env': 7.24.5(@babel/core@7.24.5) - glob: 7.2.3 - hermes-parser: 0.19.1 - invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.24.5) - mkdirp: 0.5.6 - nullthrows: 1.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@react-native/community-cli-plugin@0.73.17(@babel/core@7.24.5)(@babel/preset-env@7.24.5): - resolution: {integrity: sha512-F3PXZkcHg+1ARIr6FRQCQiB7ZAA+MQXGmq051metRscoLvgYJwj7dgC8pvgy0kexzUkHu5BNKrZeySzUft3xuQ==} - engines: {node: '>=18'} - dependencies: - '@react-native-community/cli-server-api': 12.3.6 - '@react-native-community/cli-tools': 12.3.6 - '@react-native/dev-middleware': 0.73.8 - '@react-native/metro-babel-transformer': 0.73.15(@babel/core@7.24.5)(@babel/preset-env@7.24.5) - chalk: 4.1.2 - execa: 5.1.1 - metro: 0.80.8 - metro-config: 0.80.8 - metro-core: 0.80.8 - node-fetch: 2.7.0 - readline: 1.3.0 - transitivePeerDependencies: - - '@babel/core' - - '@babel/preset-env' - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@react-native/debugger-frontend@0.73.3: - resolution: {integrity: sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw==} - engines: {node: '>=18'} - dev: false - - /@react-native/dev-middleware@0.73.8: - resolution: {integrity: sha512-oph4NamCIxkMfUL/fYtSsE+JbGOnrlawfQ0kKtDQ5xbOjPKotKoXqrs1eGwozNKv7FfQ393stk1by9a6DyASSg==} - engines: {node: '>=18'} - dependencies: - '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.73.3 - chrome-launcher: 0.15.2 - chromium-edge-launcher: 1.0.0 - connect: 3.7.0 - debug: 2.6.9 - node-fetch: 2.7.0 - open: 7.4.2 - serve-static: 1.15.0 - temp-dir: 2.0.0 - ws: 6.2.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@react-native/gradle-plugin@0.73.4: - resolution: {integrity: sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg==} - engines: {node: '>=18'} - dev: false - - /@react-native/js-polyfills@0.73.1: - resolution: {integrity: sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g==} - engines: {node: '>=18'} - dev: false - - /@react-native/metro-babel-transformer@0.73.15(@babel/core@7.24.5)(@babel/preset-env@7.24.5): - resolution: {integrity: sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' - dependencies: - '@babel/core': 7.24.5 - '@react-native/babel-preset': 0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5) - hermes-parser: 0.15.0 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@babel/preset-env' - - supports-color - dev: false - - /@react-native/normalize-color@2.1.0: - resolution: {integrity: sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA==} - dev: false - - /@react-native/normalize-colors@0.73.2: - resolution: {integrity: sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w==} - dev: false - - /@react-native/normalize-colors@0.74.81: - resolution: {integrity: sha512-g3YvkLO7UsSWiDfYAU+gLhRHtEpUyz732lZB+N8IlLXc5MnfXHC8GKneDGY3Mh52I3gBrs20o37D5viQX9E1CA==} - dev: false - - /@react-native/virtualized-lists@0.73.4(react-native@0.73.6): - resolution: {integrity: sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog==} - engines: {node: '>=18'} - peerDependencies: - react-native: '*' - dependencies: - invariant: 2.2.4 - nullthrows: 1.1.1 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@react-navigation/bottom-tabs@6.5.20(@react-navigation/native@6.1.17)(react-native-safe-area-context@4.8.2)(react-native-screens@3.29.0)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-ow6Z06iS4VqBO8d7FP+HsGjJLWt2xTWIvuWjpoCvsM/uQXzCRDIjBv9HaKcXbF0yTW7IMir0oDAbU5PFzEDdgA==} - peerDependencies: - '@react-navigation/native': ^6.0.0 - react: '*' - react-native: '*' - react-native-safe-area-context: '>= 3.0.0' - react-native-screens: '>= 3.0.0' - dependencies: - '@react-navigation/elements': 1.3.30(@react-navigation/native@6.1.17)(react-native-safe-area-context@4.8.2)(react-native@0.73.6)(react@18.2.0) - '@react-navigation/native': 6.1.17(react-native@0.73.6)(react@18.2.0) - color: 4.2.3 - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - react-native-safe-area-context: 4.8.2(react-native@0.73.6)(react@18.2.0) - react-native-screens: 3.29.0(react-native@0.73.6)(react@18.2.0) - warn-once: 0.1.1 - dev: false - - /@react-navigation/core@6.4.16(react@18.2.0): - resolution: {integrity: sha512-UDTJBsHxnzgFETR3ZxhctP+RWr4SkyeZpbhpkQoIGOuwSCkt1SE0qjU48/u6r6w6XlX8OqVudn1Ab0QFXTHxuQ==} - peerDependencies: - react: '*' - dependencies: - '@react-navigation/routers': 6.1.9 - escape-string-regexp: 4.0.0 - nanoid: 3.3.7 - query-string: 7.1.3 - react: 18.2.0 - react-is: 16.13.1 - use-latest-callback: 0.1.9(react@18.2.0) - dev: false - - /@react-navigation/elements@1.3.30(@react-navigation/native@6.1.17)(react-native-safe-area-context@4.8.2)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-plhc8UvCZs0UkV+sI+3bisIyn78wz9O/BiWZXpounu72k/R/Sj5PuZYFJ1fi6psvriUveMCGh4LeZckAZu2qiQ==} - peerDependencies: - '@react-navigation/native': ^6.0.0 - react: '*' - react-native: '*' - react-native-safe-area-context: '>= 3.0.0' - dependencies: - '@react-navigation/native': 6.1.17(react-native@0.73.6)(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - react-native-safe-area-context: 4.8.2(react-native@0.73.6)(react@18.2.0) - dev: false - - /@react-navigation/native-stack@6.9.26(@react-navigation/native@6.1.17)(react-native-safe-area-context@4.8.2)(react-native-screens@3.29.0)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-++dueQ+FDj2XkZ902DVrK79ub1vp19nSdAZWxKRgd6+Bc0Niiesua6rMCqymYOVaYh+dagwkA9r00bpt/U5WLw==} - peerDependencies: - '@react-navigation/native': ^6.0.0 - react: '*' - react-native: '*' - react-native-safe-area-context: '>= 3.0.0' - react-native-screens: '>= 3.0.0' - dependencies: - '@react-navigation/elements': 1.3.30(@react-navigation/native@6.1.17)(react-native-safe-area-context@4.8.2)(react-native@0.73.6)(react@18.2.0) - '@react-navigation/native': 6.1.17(react-native@0.73.6)(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - react-native-safe-area-context: 4.8.2(react-native@0.73.6)(react@18.2.0) - react-native-screens: 3.29.0(react-native@0.73.6)(react@18.2.0) - warn-once: 0.1.1 - dev: false - - /@react-navigation/native@6.1.17(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-mer3OvfwWOHoUSMJyLa4vnBH3zpFmCwuzrBPlw7feXklurr/ZDiLjLxUScOot6jLRMz/67GyilEYMmP99LL0RQ==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@react-navigation/core': 6.4.16(react@18.2.0) - escape-string-regexp: 4.0.0 - fast-deep-equal: 3.1.3 - nanoid: 3.3.7 - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@react-navigation/routers@6.1.9: - resolution: {integrity: sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA==} - dependencies: - nanoid: 3.3.7 - dev: false - - /@remix-run/node@1.19.3: - resolution: {integrity: sha512-z5qrVL65xLXIUpU4mkR4MKlMeKARLepgHAk4W5YY3IBXOreRqOGUC70POViYmY7x38c2Ia1NwqL80H+0h7jbMw==} - engines: {node: '>=14.0.0'} - dependencies: - '@remix-run/server-runtime': 1.19.3 - '@remix-run/web-fetch': 4.4.2 - '@remix-run/web-file': 3.1.0 - '@remix-run/web-stream': 1.1.0 - '@web3-storage/multipart-parser': 1.0.0 - abort-controller: 3.0.0 - cookie-signature: 1.2.1 - source-map-support: 0.5.21 - stream-slice: 0.1.2 - dev: false - - /@remix-run/router@1.7.2: - resolution: {integrity: sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==} - engines: {node: '>=14'} - dev: false - - /@remix-run/server-runtime@1.19.3: - resolution: {integrity: sha512-KzQ+htUsKqpBgKE2tWo7kIIGy3MyHP58Io/itUPvV+weDjApwr9tQr9PZDPA3yAY6rAzLax7BU0NMSYCXWFY5A==} - engines: {node: '>=14.0.0'} - dependencies: - '@remix-run/router': 1.7.2 - '@types/cookie': 0.4.1 - '@web3-storage/multipart-parser': 1.0.0 - cookie: 0.4.2 - set-cookie-parser: 2.6.0 - source-map: 0.7.4 - dev: false - - /@remix-run/web-blob@3.1.0: - resolution: {integrity: sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==} - dependencies: - '@remix-run/web-stream': 1.1.0 - web-encoding: 1.1.5 - dev: false - - /@remix-run/web-fetch@4.4.2: - resolution: {integrity: sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==} - engines: {node: ^10.17 || >=12.3} - dependencies: - '@remix-run/web-blob': 3.1.0 - '@remix-run/web-file': 3.1.0 - '@remix-run/web-form-data': 3.1.0 - '@remix-run/web-stream': 1.1.0 - '@web3-storage/multipart-parser': 1.0.0 - abort-controller: 3.0.0 - data-uri-to-buffer: 3.0.1 - mrmime: 1.0.1 - dev: false - - /@remix-run/web-file@3.1.0: - resolution: {integrity: sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==} - dependencies: - '@remix-run/web-blob': 3.1.0 - dev: false - - /@remix-run/web-form-data@3.1.0: - resolution: {integrity: sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==} - dependencies: - web-encoding: 1.1.5 - dev: false - - /@remix-run/web-stream@1.1.0: - resolution: {integrity: sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==} - dependencies: - web-streams-polyfill: 3.3.3 - dev: false - - /@salihgun/react-native-video-processor@0.3.1(ffmpeg-kit-react-native@6.0.2)(react-native-video@5.2.1)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-LBHmH7dp+gxaXZFaVc+OXwLxhHI/zrqyPO7Y7e0NL0k7/hG3ern/y7T4jlSl8lLjz20nqi1BU3sIE+QBEqNJxg==} - peerDependencies: - ffmpeg-kit-react-native: ^5.1.0 - react: '*' - react-native: '*' - react-native-video: ^5.2.1 - dependencies: - ffmpeg-kit-react-native: 6.0.2(react-native@0.73.6)(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - react-native-video: 5.2.1 - dev: false - - /@scure/base@1.1.6: - resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} - dev: false - - /@scure/bip39@1.3.0: - resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} - dependencies: - '@noble/hashes': 1.4.0 - '@scure/base': 1.1.6 - dev: false - - /@segment/loosely-validate-event@2.0.0: - resolution: {integrity: sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==} - dependencies: - component-type: 1.2.2 - join-component: 1.1.0 - dev: false - - /@sideway/address@4.1.5: - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} - dependencies: - '@hapi/hoek': 9.3.0 - dev: false - - /@sideway/formula@3.0.1: - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - dev: false - - /@sideway/pinpoint@2.0.0: - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - dev: false - - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: false - - /@sinonjs/commons@3.0.1: - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - dependencies: - type-detect: 4.0.8 - dev: false - - /@sinonjs/fake-timers@10.3.0: - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - dependencies: - '@sinonjs/commons': 3.0.1 - dev: false - - /@swc/core-darwin-arm64@1.4.17: - resolution: {integrity: sha512-HVl+W4LezoqHBAYg2JCqR+s9ife9yPfgWSj37iIawLWzOmuuJ7jVdIB7Ee2B75bEisSEKyxRlTl6Y1Oq3owBgw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@swc/core-darwin-x64@1.4.17: - resolution: {integrity: sha512-WYRO9Fdzq4S/he8zjW5I95G1zcvyd9yyD3Tgi4/ic84P5XDlSMpBDpBLbr/dCPjmSg7aUXxNQqKqGkl6dQxYlA==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@swc/core-linux-arm-gnueabihf@1.4.17: - resolution: {integrity: sha512-cgbvpWOvtMH0XFjvwppUCR+Y+nf6QPaGu6AQ5hqCP+5Lv2zO5PG0RfasC4zBIjF53xgwEaaWmGP5/361P30X8Q==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@swc/core-linux-arm64-gnu@1.4.17: - resolution: {integrity: sha512-l7zHgaIY24cF9dyQ/FOWbmZDsEj2a9gRFbmgx2u19e3FzOPuOnaopFj0fRYXXKCmtdx+anD750iBIYnTR+pq/Q==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@swc/core-linux-arm64-musl@1.4.17: - resolution: {integrity: sha512-qhH4gr9gAlVk8MBtzXbzTP3BJyqbAfUOATGkyUtohh85fPXQYuzVlbExix3FZXTwFHNidGHY8C+ocscI7uDaYw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@swc/core-linux-x64-gnu@1.4.17: - resolution: {integrity: sha512-vRDFATL1oN5oZMImkwbgSHEkp8xG1ofEASBypze01W1Tqto8t+yo6gsp69wzCZBlxldsvPpvFZW55Jq0Rn+UnA==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@swc/core-linux-x64-musl@1.4.17: - resolution: {integrity: sha512-zQNPXAXn3nmPqv54JVEN8k2JMEcMTQ6veVuU0p5O+A7KscJq+AGle/7ZQXzpXSfUCXlLMX4wvd+rwfGhh3J4cw==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@swc/core-win32-arm64-msvc@1.4.17: - resolution: {integrity: sha512-z86n7EhOwyzxwm+DLE5NoLkxCTme2lq7QZlDjbQyfCxOt6isWz8rkW5QowTX8w9Rdmk34ncrjSLvnHOeLY17+w==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@swc/core-win32-ia32-msvc@1.4.17: - resolution: {integrity: sha512-JBwuSTJIgiJJX6wtr4wmXbfvOswHFj223AumUrK544QV69k60FJ9q2adPW9Csk+a8wm1hLxq4HKa2K334UHJ/g==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@swc/core-win32-x64-msvc@1.4.17: - resolution: {integrity: sha512-jFkOnGQamtVDBm3MF5Kq1lgW8vx4Rm1UvJWRUfg+0gx7Uc3Jp3QMFeMNw/rDNQYRDYPG3yunCC+2463ycd5+dg==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@swc/core@1.4.17(@swc/helpers@0.5.11): - resolution: {integrity: sha512-tq+mdWvodMBNBBZbwFIMTVGYHe9N7zvEaycVVjfvAx20k1XozHbHhRv+9pEVFJjwRxLdXmtvFZd3QZHRAOpoNQ==} - engines: {node: '>=10'} - requiresBuild: true - peerDependencies: - '@swc/helpers': ^0.5.0 - peerDependenciesMeta: - '@swc/helpers': - optional: true - dependencies: - '@swc/counter': 0.1.3 - '@swc/helpers': 0.5.11 - '@swc/types': 0.1.6 - optionalDependencies: - '@swc/core-darwin-arm64': 1.4.17 - '@swc/core-darwin-x64': 1.4.17 - '@swc/core-linux-arm-gnueabihf': 1.4.17 - '@swc/core-linux-arm64-gnu': 1.4.17 - '@swc/core-linux-arm64-musl': 1.4.17 - '@swc/core-linux-x64-gnu': 1.4.17 - '@swc/core-linux-x64-musl': 1.4.17 - '@swc/core-win32-arm64-msvc': 1.4.17 - '@swc/core-win32-ia32-msvc': 1.4.17 - '@swc/core-win32-x64-msvc': 1.4.17 - dev: false - - /@swc/counter@0.1.3: - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - dev: false - - /@swc/helpers@0.5.11: - resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==} - dependencies: - tslib: 2.6.2 - dev: false - - /@swc/types@0.1.6: - resolution: {integrity: sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==} - dependencies: - '@swc/counter': 0.1.3 - dev: false - - /@tamagui/accordion@1.96.0(react@18.2.0): - resolution: {integrity: sha512-YgQF0WBaXs7PJd4Ws8er+aQAXL0CdYE0772IiCGf3NofUWle7rLFgRTO/Ctq563c/JHqmXxVW1GVHFmfBzNEoA==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/collapsible': 1.96.0(react@18.2.0) - '@tamagui/collection': 1.96.0(react@18.2.0) - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/polyfill-dev': 1.96.0 - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/adapt@1.96.0(react@18.2.0): - resolution: {integrity: sha512-R5/va+8L/IRM2UMSOj+QF9UlCA5fxB5FaEKOm4H+oHkFv1Mys2zBuW6lzAPL+z8mExuPfvJg6Qox5zYujSipjg==} - dependencies: - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - transitivePeerDependencies: - - react - dev: false - - /@tamagui/alert-dialog@1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-eKmHQIAZuu/ULQh/wsp2+PoJ7biu74+ptaIwaW1/cKh6vqvnC1tCwET8d0qLjW7CShvvgk1SD7A/muuL8Bnurg==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/animate-presence': 1.96.0(react@18.2.0) - '@tamagui/aria-hidden': 1.96.0(react@18.2.0) - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/dialog': 1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0) - '@tamagui/dismissable': 1.96.0(react@18.2.0) - '@tamagui/focus-scope': 1.96.0(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/polyfill-dev': 1.96.0 - '@tamagui/popper': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/portal': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/remove-scroll': 1.96.0(@types/react@18.3.1)(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - dev: false - - /@tamagui/animate-presence@1.96.0(react@18.2.0): - resolution: {integrity: sha512-JRBuYSG8PcKPQXr29rb3/1vLSl0vb2XXYTTzzy6EsyO40q4Yq5fCatO7FTg0kZ2xXR8rE1FpxvWhkmDxYjpNrg==} - dependencies: - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/use-constant': 1.96.0(react@18.2.0) - '@tamagui/use-force-update': 1.96.0(react@18.2.0) - '@tamagui/use-presence': 1.96.0(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - transitivePeerDependencies: - - react - dev: false - - /@tamagui/animate@1.96.0(react@18.2.0): - resolution: {integrity: sha512-DLKDkclcn2HRDz/tY91L0GVMz2fbFIN1NYECijPBZdZsxnwXRp3gHn8n82MIm2U9m/Uc0lwtq3hmj2jiAMIjqQ==} - dependencies: - '@tamagui/animate-presence': 1.96.0(react@18.2.0) - transitivePeerDependencies: - - react - dev: false - - /@tamagui/animations-css@1.96.0(react@18.2.0): - resolution: {integrity: sha512-TdKdCXpoVwmU+NmDmAbSlDMg71msBAX8h4NG2Dx14KGYUO7UZ60eab4RruQgRdlsKuQMTfDzUZ8nPFooM9LFbg==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/cubic-bezier-animator': 1.96.0 - '@tamagui/use-presence': 1.96.0(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/animations-moti@1.96.0(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react@18.2.0): - resolution: {integrity: sha512-I0+fGstqNBXOjGPi4EwWjk216TTTXh5HIYPkm+FkG8WOuBkPYbV69ZxtS+CDlgwSHK9rrCfkxjeuJTPm8Rh4HQ==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/use-presence': 1.96.0(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - moti: 0.27.5(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react@18.2.0) - react: 18.2.0 - transitivePeerDependencies: - - react-dom - - react-native-reanimated - dev: false - - /@tamagui/animations-react-native@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-dRYNn4txhRW1WrZkKFXIl7K5ajQ/rIApFC9j3UeoU3iHbpgJ19V9T8rJr6p+ZueY7QsbELXSNIhGKFoFUGWvRQ==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/use-presence': 1.96.0(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@tamagui/aria-hidden@1.96.0(react@18.2.0): - resolution: {integrity: sha512-3qqlVyIvkIrgJW0sS8XTXS0Rlw/hdjBfI2VRice+QhyImUeaNcXS7LpIyZEzez1rMN/RqAY7pBVHxAY1Zk0vQA==} - peerDependencies: - react: '*' - dependencies: - aria-hidden: 1.2.4 - react: 18.2.0 - dev: false - - /@tamagui/avatar@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-VENo1B2TEhuIoLkGOPL1oLWtCONjjyNkGLUNV0e8cMWksW76m8ku9n5gTraTwDvfADfOOuxqC3ObWd4pUC4wMA==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/image': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/shapes': 1.96.0(react@18.2.0) - '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@tamagui/babel-plugin@1.96.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5): - resolution: {integrity: sha512-Nt73CRemqRy19DgdYegqHm2bALvsjJVNK/klshSh1MVORMHkansmQi6drVCPjF5et9VTlxcvu4UPavD7ObVVTw==} - dependencies: - '@babel/generator': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@tamagui/static': 1.96.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5) - transitivePeerDependencies: - - encoding - - react - - react-dom - - supports-color - - typescript - dev: false - - /@tamagui/build@1.96.0(typescript@5.4.5): - resolution: {integrity: sha512-DWVw6S6QTS0A9J9o04JttyGDVspZXZtbdrl2qQGNC+4eFqJmQBziz1r1IC8qmUg1gwW8sO6unZnhVVKeYMdQqQ==} - hasBin: true - peerDependencies: - typescript: '*' - dependencies: - '@babel/core': 7.24.5 - '@types/fs-extra': 9.0.13 - babel-plugin-fully-specified: 1.3.0(@babel/core@7.24.5) - chokidar: 3.6.0 - esbuild: 0.20.2 - esbuild-plugin-es5: 2.1.0(esbuild@0.20.2) - esbuild-register: 3.5.0(esbuild@0.20.2) - execa: 5.1.1 - fast-glob: 3.3.2 - fs-extra: 11.2.0 - get-tsconfig: 4.7.3 - lodash.debounce: 4.0.8 - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - dev: false - - /@tamagui/button@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-YVNFptdwSqbtJ7W/IFQq0Z/SRMGxT2WZimWKVCIne95gHX60XfflJr2hnnLSFBEUJUOyltPythOZ5rBvKdbAYA==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/font-size': 1.96.0(react@18.2.0) - '@tamagui/get-button-sized': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/helpers-tamagui': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - transitivePeerDependencies: - - react-native - dev: false - - /@tamagui/card@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-9dOP7AEsMpNCOUW7PtDhDb/LKi5iKCek2ckI9a85EVaFsWN1re2t+W8JMwlUhlH6KjylHAVNGLq80PTNjAibCQ==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@tamagui/checkbox-headless@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-yM9kEvkoXPu8D/y0RtsApnhWTieOdJMlG+mRz1MAn5RSQfdF1uGH2RephTz6S4NP67E1HgW5cz9IeHQJtAn6qw==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/focusable': 1.96.0(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/label': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - '@tamagui/use-previous': 1.96.0 - react: 18.2.0 - transitivePeerDependencies: - - react-native - dev: false - - /@tamagui/checkbox@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-g0HrVhZVh3MJ3uZMEbycQPJnZwzL8qi5SODFJcNmTzJOmHa8TNceuubsCengrPMjODfnx7FrkZAcC+ZMvixq2Q==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/checkbox-headless': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/focusable': 1.96.0(react@18.2.0) - '@tamagui/font-size': 1.96.0(react@18.2.0) - '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/helpers-tamagui': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/label': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - '@tamagui/use-previous': 1.96.0 - react: 18.2.0 - transitivePeerDependencies: - - react-native - dev: false - - /@tamagui/cli-color@1.96.0: - resolution: {integrity: sha512-GROPPDpZzd85DQ3KYuGi+z3mqYR8ooM1y5izDjoZhXtw+rBto9nRE9l8/seTsp0L8KFAOa6LfVzDeIdAKB4M1w==} - dev: false - - /@tamagui/collapsible@1.96.0(react@18.2.0): - resolution: {integrity: sha512-VVBIBcdctBALkPyaYVOBv4F/+z1yWVeUlBrurpiPB/D42FM5w1RMBKXe2xihGGsp1XDylQsA2hrE6yRfViSQ/g==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/animate-presence': 1.96.0(react@18.2.0) - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/polyfill-dev': 1.96.0 - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/collection@1.96.0(react@18.2.0): - resolution: {integrity: sha512-/wz+QFiSl8VTxW17JDzXfrW4UeilIAH/DnSOBJxsgUR80eL8bbfpBLV6sqWbLqRKZgCy4I6oHbIuwiKQCjRorA==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/polyfill-dev': 1.96.0 - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/colors@1.96.0: - resolution: {integrity: sha512-4fLIiwnD6VWJtHbOKJJTMDFYqEudylqqL1kOyHK+QloF+w186CWIETMwXo3ycxjDq3kYnnx/rr0sWAEnq67w1Q==} - dev: false - - /@tamagui/compose-refs@1.96.0(react@18.2.0): - resolution: {integrity: sha512-t4gY6+0VP/vq0J6r7bkVh8RUhE9ZXyjsxOA0kQa1wjTGbez1yE+OuRtoTU3XnDK8BymZl2YWzAA8sKxnUzSdCw==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - - /@tamagui/config-default@1.96.0(react@18.2.0): - resolution: {integrity: sha512-+RZ86CQ9ICIuu9zvPGM6Lg9rFxvZuJKLAFrveqDs3sn4F7hBxkcEAUUDYk79QlCaRR67b0xGfrRhsaIyMgCYzw==} - dependencies: - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/shorthands': 1.96.0 - transitivePeerDependencies: - - react - dev: false - - /@tamagui/config@1.96.0(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-hVtbTfh/9yMB5CXQHcWn8vQZqGfxELkO75RVxvddbm1hX1dJt32WTnls2DkuqDBBhKJOGBW5aPz0496/vHDiug==} - dependencies: - '@tamagui/animations-css': 1.96.0(react@18.2.0) - '@tamagui/animations-moti': 1.96.0(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react@18.2.0) - '@tamagui/animations-react-native': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/colors': 1.96.0 - '@tamagui/font-inter': 1.96.0(react@18.2.0) - '@tamagui/font-silkscreen': 1.96.0(react@18.2.0) - '@tamagui/react-native-media-driver': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/shorthands': 1.96.0 - '@tamagui/themes': 1.96.0(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - transitivePeerDependencies: - - react - - react-dom - - react-native - - react-native-reanimated - dev: false - - /@tamagui/constants@1.96.0(react@18.2.0): - resolution: {integrity: sha512-wlDqX3GV7vTtY1mlrmwd/H/UThkFZ6J3frosw2q7MgKsvqOxQbFGUhEMgS1Jmt8S+Fzktuy1+N8v1sRrajEsKA==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - - /@tamagui/core@1.96.0(react@18.2.0): - resolution: {integrity: sha512-QBtJpWibCFu6Y+9rTsXA31V5D3V5ctvyZCydRF8GYkQvScGDpQmFNWLezPHJ9Q/8lqlczxzpOyXGanIY14sEKQ==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/react-native-use-pressable': 1.96.0(react@18.2.0) - '@tamagui/react-native-use-responder-events': 1.96.0(react@18.2.0) - '@tamagui/use-event': 1.96.0(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/create-context@1.96.0(react@18.2.0): - resolution: {integrity: sha512-7h+JaKVoOWY9tmtVTmxZR87RUu3xyrfAfF6qs8OrMxNuIQDmSRWwyqEaF+/3ikU7YVBYUjs8qvF48/FJfGFUrg==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - - /@tamagui/create-theme@1.96.0(react@18.2.0): - resolution: {integrity: sha512-cJSXV9RTNVpkEM6z47fxJRPOsEg3J2ZXrCM+tabWdcuPCSn5b2Jq06QRo8H9P+UYqje+di7B/VBO4IhHy0OQBQ==} - dependencies: - '@tamagui/web': 1.96.0(react@18.2.0) - transitivePeerDependencies: - - react - dev: false - - /@tamagui/cubic-bezier-animator@1.96.0: - resolution: {integrity: sha512-Byi3m2GaRtgXgMOhSUKLoTjwg70q9kZpvvl3sXpARDmUlNtC6fGqiqtzEpoEycj0mZeWb6ZiS9Wf+KHe7te8Sw==} - dev: false - - /@tamagui/dialog@1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-x4/9iHHazQpmlQ9XUWPaR2QOQbUFzDb+pz+oBK5xeTSsVs17rRhlsqy76xkbfUipnOTmNe5UgYpZ9zJYqvY3bg==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/adapt': 1.96.0(react@18.2.0) - '@tamagui/animate-presence': 1.96.0(react@18.2.0) - '@tamagui/aria-hidden': 1.96.0(react@18.2.0) - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/dismissable': 1.96.0(react@18.2.0) - '@tamagui/focus-scope': 1.96.0(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/polyfill-dev': 1.96.0 - '@tamagui/popper': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/portal': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/remove-scroll': 1.96.0(@types/react@18.3.1)(react@18.2.0) - '@tamagui/sheet': 1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - dev: false - - /@tamagui/dismissable@1.96.0(react@18.2.0): - resolution: {integrity: sha512-Xz82OA2Vzw9wq5jCjfYBytoHpnK95bCDwxvDMlWZdo2ztfT0qGh/VOF6llx0qUc2FysbPd9s1LvZrXfVphCXgg==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/use-escape-keydown': 1.96.0 - '@tamagui/use-event': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/elements@1.96.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Oc1hZ3TXQtng1QB/YLjsj0j7jFI7/7iL9aiQLguB/VaJB5y3QhnVJ9lxBkc69/b3DLI67XLqRHJagV0KhFGILA==} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - '@tamagui/core': 1.96.0(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@tamagui/fake-react-native@1.96.0: - resolution: {integrity: sha512-cExa9yp12cStVF+LBvJGpkFsppfIFAShaC/8+dqXHq1mU02fw6l9tC2xD6BJj/SxefHiS4PH2TumdoToA/En9g==} - dev: false - - /@tamagui/floating@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-Sz9LACE6YCQyZzYYzw7qCPXvuWHSlCVx7bHwVO4pHkQnWUOKafrdelXvTd/UNqTRxNLXEsD1NJE3Ew8KcG8HNg==} - peerDependencies: - react: '*' - dependencies: - '@floating-ui/react-dom': 2.0.9(react-dom@18.2.0)(react@18.2.0) - '@floating-ui/react-native': 0.10.5(react-native@0.73.6)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - react-native - dev: false - - /@tamagui/focus-scope@1.96.0(react@18.2.0): - resolution: {integrity: sha512-AiPebPwigya2WxvUNFUE1Y16LtEX0ASTVVBJw9NIRFTNqyfZBVRUTGr/g4VxApK4+fE/TFDbzNc0SKLkhzcEmQ==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/use-event': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/focusable@1.96.0(react@18.2.0): - resolution: {integrity: sha512-T5bfXou3v4DmMehSKXEA47F3648RdhkMoMBkmR1HTezWillBAgccl+YbLZQDPlxomTEk6xCkeCnfZQNZrcYvLw==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/font-inter@1.96.0(react@18.2.0): - resolution: {integrity: sha512-DGiWanp2uVN7RwBuCQ3LF30RBKJkE6H+ftdkvZj7fJGlf/+R1DQVA7Ve5GkeoXVrL/kWtbIvPXqlur2n1CPq+Q==} - dependencies: - '@tamagui/core': 1.96.0(react@18.2.0) - transitivePeerDependencies: - - react - dev: false - - /@tamagui/font-silkscreen@1.96.0(react@18.2.0): - resolution: {integrity: sha512-5GoOIz4T1qpuJ6hbuvwpKR2JDIHBqDgGjqekV3km35FSbjOMK4f6lYw4HyFYkZgBEZtm1eHWK5n9j9DM4KIcjg==} - dependencies: - '@tamagui/core': 1.96.0(react@18.2.0) - transitivePeerDependencies: - - react - dev: false - - /@tamagui/font-size@1.96.0(react@18.2.0): - resolution: {integrity: sha512-Qvidm9j68z8xC1frh4HMOfYTgCjjyOT8KB+iueVJ4d2CLd97X3XkgAWFAZYAtCek5gTrw78kJihHm5uVch0kDA==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/core': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/form@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-x9GG9jeB/ZKUsmbGieL4OEhY1XwWBSIYRud3MW9SQqBG388AyJGLEOny4xssmGesNLOjujFO56fNuC3QnakX2Q==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/focusable': 1.96.0(react@18.2.0) - '@tamagui/get-button-sized': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/get-font-sized': 1.96.0(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) - react: 18.2.0 - transitivePeerDependencies: - - react-native - dev: false - - /@tamagui/generate-themes@1.96.0(esbuild@0.20.2)(react@18.2.0): - resolution: {integrity: sha512-xuBH5faN+YoC74EX8qOr+9P4ffuySFW5R8MtmV+swxTWIS4sqzWgy8L8Qv5IUld7W5NEi2fBo4+X9cmsyXprvQ==} - dependencies: - '@tamagui/create-theme': 1.96.0(react@18.2.0) - '@tamagui/types': 1.96.0 - esbuild-register: 3.5.0(esbuild@0.20.2) - fs-extra: 11.2.0 - transitivePeerDependencies: - - esbuild - - react - - supports-color - dev: false - - /@tamagui/get-button-sized@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-aI20DkQdKx58IRQ9vFeTtdWdRpByuCPfv+9wGPIHlfwF076U6aQ3uMGnhc9Xojx94i6LpwugMVWFVIBkze45GA==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - transitivePeerDependencies: - - react-native - dev: false - - /@tamagui/get-font-sized@1.96.0(react@18.2.0): - resolution: {integrity: sha512-PXGkJdauNaZam5tnCmebMrewxzH5VZ4EfUcfZEMKJ6DQ6dgM/HfROF/3261Cz9nkOSvaLYuSMPSdH9ZDxJ58Nw==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/core': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/get-token@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-A/5W327/HI8NbJcwAB0JKIEr5P2lfzOztyjCq+KOsMf6m1DRKjHcEsGoK+Fh5Wy9spD61K2lK1WvFquceP1jGQ==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@tamagui/group@1.96.0(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0): - resolution: {integrity: sha512-kwSVR7QjFz1z7wVnZ5WXLKqUmVMkdDYXYmztileaktDkoS/MhurvT1qnAYsQRluMq16DlPnYXByqYdPONL1yoA==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - react: 18.2.0 - reforest: 0.13.0(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - immer - dev: false - - /@tamagui/helpers-node@1.96.0: - resolution: {integrity: sha512-eXROKgv5IOVDBgT+tDA77ZZMi+Q9Q1zFi7VCUkx0Mqi9ogFB5JqdhPvseRMb9ef2ntQPBRbF7jqPE8SC2PLrQA==} - dependencies: - '@tamagui/types': 1.96.0 - dev: false - - /@tamagui/helpers-tamagui@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-KgLHHvgMWDmxq+2APw5g64xeXBVL0HSFNaOH5HVt5YXW1SJzAJveWDG4zUpBg5cNlYQA2gqUx+jTggs7AG0jxg==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@tamagui/helpers@1.96.0(react@18.2.0): - resolution: {integrity: sha512-8MCEG4v8y/yyqxuXHLUEKe9cT+rMlg+XDvbjhjwR4uYDvc420z26EJhHz9vZGrElBYzYp7uNuWptMib1ihdgcA==} - dependencies: - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/simple-hash': 1.96.0 - transitivePeerDependencies: - - react - dev: false - - /@tamagui/image@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-BWCKz3HUr01gOVwT0B0vYNYKbWdDSGUm00EeddW9jC3NdS8qvROf+hV8Gp6FYYCjkB7oArqXLm0QPBOxl91m0Q==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@tamagui/label@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-zWJ1+NbigMMA1A3bMJ8mtrBNcRtqcPIQs6s0Avfwpze6jfu84lWSW8dBuTr82r7v8EvYJOQeHrxLmpyr9J/7Yg==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/focusable': 1.96.0(react@18.2.0) - '@tamagui/get-button-sized': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/get-font-sized': 1.96.0(react@18.2.0) - '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@tamagui/linear-gradient@1.96.0(react@18.2.0): - resolution: {integrity: sha512-IMoQHYVqx0pNhbYo/JbuFUdKulxq+hkpcoQB9WfzSUa2z6x6gdRjBaCOvjQg0+6jhmH/P9+wvJdF0zfHNqQ+FA==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/list-item@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-n6u2We7w+SbbDdCj623oh5OtbEFIbeI02Ygy+VAMGjslG6grV6wjsuBZsL7fTx6ET/DfSXOKJtM35RAgpW667Q==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/font-size': 1.96.0(react@18.2.0) - '@tamagui/get-font-sized': 1.96.0(react@18.2.0) - '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/helpers-tamagui': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - transitivePeerDependencies: - - react-native - dev: false - - /@tamagui/metro-plugin@1.96.0(@babel/core@7.24.5)(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react-native-safe-area-context@4.8.2)(react-native-svg@14.1.0)(react-native@0.73.6)(react@18.2.0)(tailwindcss@3.4.3)(typescript@5.4.5): - resolution: {integrity: sha512-S/wWRGQAmDzVJn3nUvNftcDSCsTlr2Dj2Pke5N3OuADy644eh3r63aCUI+N9zb/sl5d8mdt/hlVQhZaEbz1n2A==} - dependencies: - '@tamagui/static': 1.96.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5) - fs-extra: 11.2.0 - metro-config: 0.80.9 - metro-transform-worker: 0.80.9 - react-native-css-interop: 0.0.34(@babel/core@7.24.5)(react-native-reanimated@3.6.3)(react-native-safe-area-context@4.8.2)(react-native-svg@14.1.0)(react-native@0.73.6)(react@18.2.0)(tailwindcss@3.4.3) - transitivePeerDependencies: - - '@babel/core' - - bufferutil - - encoding - - react - - react-dom - - react-native - - react-native-reanimated - - react-native-safe-area-context - - react-native-svg - - supports-color - - tailwindcss - - typescript - - utf-8-validate - dev: false - - /@tamagui/normalize-css-color@1.96.0: - resolution: {integrity: sha512-FWOLPBh8joDDxp2m1l8/tDmETF/9FySKEjTubFitvhgKCfWzM0x8GumA/8FpIp8YyEENIOy1kdKRtx8BUO5qlQ==} - dependencies: - '@react-native/normalize-color': 2.1.0 - dev: false - - /@tamagui/polyfill-dev@1.96.0: - resolution: {integrity: sha512-TXowsPngnSxvhDHrtwUnQx3EADQivBpxqzvY5RJxKNU+UL8+o+FtQ1lRSaaWOPdU1wTr81rA0FBmx7QvWCwS/g==} - dev: false - - /@tamagui/popover@1.96.0(@types/react@18.3.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-NsYWiAQOsba6z3BAQY2cSh8xXkIHpmKOG6e+6Hu2kKNP2kJM3hK7f+//BwYjiAIK+pLp4+MkaOHDJpSW8bbmKQ==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@floating-ui/react': 0.26.13(react-dom@18.2.0)(react@18.2.0) - '@tamagui/adapt': 1.96.0(react@18.2.0) - '@tamagui/animate': 1.96.0(react@18.2.0) - '@tamagui/aria-hidden': 1.96.0(react@18.2.0) - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/dismissable': 1.96.0(react@18.2.0) - '@tamagui/floating': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/focus-scope': 1.96.0(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/polyfill-dev': 1.96.0 - '@tamagui/popper': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/portal': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/remove-scroll': 1.96.0(@types/react@18.3.1)(react@18.2.0) - '@tamagui/scroll-view': 1.96.0(react@18.2.0) - '@tamagui/sheet': 1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - react: 18.2.0 - react-freeze: 1.0.4(react@18.2.0) - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - react-dom - dev: false - - /@tamagui/popper@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-StzoClnGf8cFyI88jfnQlJ6U9z/IQLZnjtKGFmuZ7sEQmAUkK+T2w0GYQIBekRHmP+evIG41BDlOY60mYDnAFw==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/floating': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@tamagui/portal@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-0qjSed2tz1dEyzI/a/hTEp3bcamvzNwPzLapD0hVdmUN7t7W23lrBdwhsa4+RanNnss94PyA2y51gFGQh5uuOw==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/use-did-finish-ssr': 1.96.0(react@18.2.0) - '@tamagui/use-event': 1.96.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@tamagui/progress@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-ov1/uB8qkMy1JJU5osdfIyQs4kj5uekl2m8ZKHdCYzO3mMBgiaKTvOKOJ8T48/i11OqZabkoCUnb9atpATzqiA==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@tamagui/proxy-worm@1.96.0: - resolution: {integrity: sha512-0fKm5xMiZjigSyGxVVAIS9I+5l8dKvHOSkC+KkZy2oLnhB/vM2LaZZ6HbWgHCJrWpNdUnS7QM1efyOeHQj074g==} - dev: false - - /@tamagui/radio-group@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-mzBSdWnAqYVeCRPFMmeQMbDNrBlQFv+Uqjocb19wasMWJ611q/8mwulrMgSS9Ol2AaQ5vp4ar+R/ZlkmAYrGgg==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/focusable': 1.96.0(react@18.2.0) - '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/label': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/roving-focus': 1.96.0(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - '@tamagui/use-previous': 1.96.0 - react: 18.2.0 - transitivePeerDependencies: - - react-native - dev: false - - /@tamagui/react-native-media-driver@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-JMquShKznupr69W3fCC0/xEZvYurQtA6V7DqJ5bfZ5o/bP2CFIWjCeYldQcESqLj+vxs0bXADzO+WeaOVYaisw==} - peerDependencies: - react-native: '*' - dependencies: - '@tamagui/web': 1.96.0(react@18.2.0) - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - transitivePeerDependencies: - - react - dev: false - - /@tamagui/react-native-use-pressable@1.96.0(react@18.2.0): - resolution: {integrity: sha512-qM3/GjH1+QdaXPMFnO1bRR0PqSLlpoolg13vR9VkLJQ4FIzxP0HJJOAU0T94u/oVgpgwOWbRR27QR72ee3zTrg==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - - /@tamagui/react-native-use-responder-events@1.96.0(react@18.2.0): - resolution: {integrity: sha512-qwVseY70+MJ8WmM/Wy6sZjjBsDRCFsrrlguTF9feCKnKmLy2Ja21CokHDJUdK6LZmNxvEpNRPQJLE/mGC4FQ4g==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - - /@tamagui/remove-scroll@1.96.0(@types/react@18.3.1)(react@18.2.0): - resolution: {integrity: sha512-F/bvOsjxAf6mx06xqapxBfXLnx1+Mh82wEuYz+KOJcVCGatCrveK5h+2LE7pBD3u4Ed9SL+YfDOoDq64EgFFeg==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - react-remove-scroll: 2.5.5(@types/react@18.3.1)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - dev: false - - /@tamagui/roving-focus@1.96.0(react@18.2.0): - resolution: {integrity: sha512-8XGjfY8j5bvkaoeXIWA/4VcrPZO/IiPFBb0YwSB7b82jRIORvD/ZpDNyxrSZoD1iQUiNh07KkmC4sGWKEPdkwQ==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/collection': 1.96.0(react@18.2.0) - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - '@tamagui/use-direction': 1.96.0(react@18.2.0) - '@tamagui/use-event': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/scroll-view@1.96.0(react@18.2.0): - resolution: {integrity: sha512-sJep14aabpAm0na59iuZxf8T0/bbrZkv5FgSWNubnCyqKQ7UoJniqk+lfJSgSjzzFMe/jXS8wBWTaGZzAEoqLA==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/select@1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-VAUaKfoH/zufiGpL0b1673NKY4P9VWOsRWcRmILOpSd4dpfcf8VL4qt3xuaIoRFn65Yw7OgudXIeqjaI9BeNDg==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@floating-ui/react': 0.26.13(react-dom@18.2.0)(react@18.2.0) - '@floating-ui/react-dom': 2.0.9(react-dom@18.2.0)(react@18.2.0) - '@floating-ui/react-native': 0.10.5(react-native@0.73.6)(react@18.2.0) - '@tamagui/adapt': 1.96.0(react@18.2.0) - '@tamagui/animate-presence': 1.96.0(react@18.2.0) - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/dismissable': 1.96.0(react@18.2.0) - '@tamagui/focus-scope': 1.96.0(react@18.2.0) - '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/list-item': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/portal': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/remove-scroll': 1.96.0(@types/react@18.3.1)(react@18.2.0) - '@tamagui/separator': 1.96.0(react@18.2.0) - '@tamagui/sheet': 1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - '@tamagui/use-debounce': 1.96.0(react@18.2.0) - '@tamagui/use-event': 1.96.0(react@18.2.0) - '@tamagui/use-previous': 1.96.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - dev: false - - /@tamagui/separator@1.96.0(react@18.2.0): - resolution: {integrity: sha512-FOzZ4ljvCnMps9rZM2fjm+rW9tOvmCn0NTdVU+i0OZFur8PPP+LEp9gSygSUpkYSgYCw+Pb0Yl2pf7e0XBxNOw==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/shapes@1.96.0(react@18.2.0): - resolution: {integrity: sha512-1k5veFASBqFWSuBZETTNdBcmLfbMkKIRQ8SfrxiLbE1a69vsg/qAZ57rbe+i2qzrT+y9/nXI0OqxvbuAHb3lAQ==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/sheet@1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-B64SbRaQ8Mn/yvQ9YoRbm2keHVQuMzHR+4/FMhueQg3PP0t69LWdp9mvOBO8So08sbAg0Rh0xNuibrrLqmVQOQ==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/animate-presence': 1.96.0(react@18.2.0) - '@tamagui/animations-react-native': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/portal': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/remove-scroll': 1.96.0(@types/react@18.3.1)(react@18.2.0) - '@tamagui/scroll-view': 1.96.0(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/use-constant': 1.96.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - '@tamagui/use-keyboard-visible': 1.96.0(react-native@0.73.6)(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - dev: false - - /@tamagui/shorthands@1.96.0: - resolution: {integrity: sha512-ZkblCN7CONic1/M5nbntqMDe0t/KnVWIx94+x7RpBzX5WJmfRKn4GrD2mozWo7D11nPHg98X/zPrb2EaW7OYCA==} - dev: false - - /@tamagui/simple-hash@1.96.0: - resolution: {integrity: sha512-NsVkfw+W05SWGQOJO/L7NuqERewzUeMjX+GKadH+gZqE5WG/SjY7x7fVH1i9JCbpkT+816xXh3YYcx3kfjFaDQ==} - dev: false - - /@tamagui/slider@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-QwBQwrOWDBPj3D621odjS2mXwOr1KvnRWVWeGCdwGr9x7fP/yut7s8kckGxGzNtsRB5syh3klPneDoptykSOlw==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - '@tamagui/use-direction': 1.96.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@tamagui/stacks@1.96.0(react@18.2.0): - resolution: {integrity: sha512-IjYg9mTDXJeVax9e/RYu1KpC4sjhmpcHpDzlVvfMo9IW8+8ro4o24pLTadlSKYcHPXAemqBKzK558VlJLRy/tw==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/core': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/static@1.96.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5): - resolution: {integrity: sha512-AINf+ydj7Krbj+EvyTgadzpGK1DMmWvE+vdmXeKvPKwWlH56MqVWSWjcr4uajU0zY1HvbjHNJmj3/p+kyfAtag==} - dependencies: - '@babel/core': 7.24.5 - '@babel/generator': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) - '@babel/runtime': 7.24.5 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - '@tamagui/build': 1.96.0(typescript@5.4.5) - '@tamagui/cli-color': 1.96.0 - '@tamagui/config-default': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/fake-react-native': 1.96.0 - '@tamagui/generate-themes': 1.96.0(esbuild@0.20.2)(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/helpers-node': 1.96.0 - '@tamagui/proxy-worm': 1.96.0 - '@tamagui/shorthands': 1.96.0 - '@tamagui/types': 1.96.0 - babel-literal-to-ast: 2.1.0(@babel/core@7.24.5) - browserslist: 4.23.0 - check-dependency-version-consistency: 4.1.0 - esbuild: 0.20.2 - esbuild-register: 3.5.0(esbuild@0.20.2) - find-cache-dir: 3.3.2 - find-root: 1.1.0 - fs-extra: 11.2.0 - invariant: 2.2.4 - lodash: 4.17.21 - react-native-web: 0.19.11(react-dom@18.2.0)(react@18.2.0) - react-native-web-internals: 1.96.0 - react-native-web-lite: 1.96.0(react-dom@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - encoding - - react - - react-dom - - supports-color - - typescript - dev: false - - /@tamagui/switch-headless@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-Lii2+DBjw6Deq2QDwoL/DtoeG2fIyU3BTWTbtO/GU9k0FM8PtB1dhxnLcCGXWnpSvoshzKkWYqVFvrrvPrKFxQ==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/label': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/use-previous': 1.96.0 - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@tamagui/switch@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-S7fobE4u9L5tDqfKDIX0AwXDJa/tqf8lX8140efP13wY3jxTqW5McVpwBpRCuYlepTckUUiJB/dcb+Eo18mBIA==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/focusable': 1.96.0(react@18.2.0) - '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/label': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/switch-headless': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - '@tamagui/use-previous': 1.96.0 - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@tamagui/tabs@1.96.0(@types/react@18.3.1)(immer@10.1.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-ck2ChWddjcB+onUGMn34r8vJ5vVxO5OEcg1TQIjW3zTi5dnjzPsRg/8ZVJIU04pYm9IT3S330s67EJGmOwxVsA==} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/get-button-sized': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/group': 1.96.0(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/roving-focus': 1.96.0(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - '@tamagui/use-direction': 1.96.0(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - immer - - react-native - dev: false - - /@tamagui/text@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-ozeXGcFmC1fFPiyd+bYYMGX4GwouwjlUp82nnsTn7rVMcvsRCWjKr3MsISBYqzmCvBwhee40nL4IwHqmzQM+yA==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/get-font-sized': 1.96.0(react@18.2.0) - '@tamagui/helpers-tamagui': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - transitivePeerDependencies: - - react-native - dev: false - - /@tamagui/theme-builder@1.96.0(react@18.2.0): - resolution: {integrity: sha512-HEDotYmVvYlfQwJJ919HOO0xHEzZci6qFLvZlM8vp4rIVTdOz7S1DLgu6mAubBbBK76hKzkUAjDL7kAOKVYFXQ==} - dependencies: - '@tamagui/create-theme': 1.96.0(react@18.2.0) - color2k: 2.0.3 - transitivePeerDependencies: - - react - dev: false - - /@tamagui/theme@1.96.0(react@18.2.0): - resolution: {integrity: sha512-e0sAKBNcLdJy/CBJeCpyd5QpJ3xNI/X9sWqVOTof0NvoKuLaLyGHChxcXi/QKQ8Yl4nFExYl/7ksgzCZFfHJcQ==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/themes@1.96.0(react@18.2.0): - resolution: {integrity: sha512-P0QCZQW4+E51noC7jf3BBrIewrIxlYZa69Xx5aiSoRZC4XhATOTStCXn/LoAO0VazA9IcQLgVxQdz4by9+G3Pg==} - dependencies: - '@tamagui/colors': 1.96.0 - '@tamagui/create-theme': 1.96.0(react@18.2.0) - '@tamagui/theme-builder': 1.96.0(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - transitivePeerDependencies: - - react - dev: false - - /@tamagui/timer@1.96.0: - resolution: {integrity: sha512-5Xrz+XNxEWYZu7obRryQHWPvrPpi3H3W513wUztmOhLO/KZ+G3X+POnGvwFPDPvpoJcDsRM+nvHZ6mMGgy5GbA==} - dev: false - - /@tamagui/toast@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-N9YD3CEukzf3BVe1fuaSoKgrDHYUMsET7V8j4WJB7Muf37PzplBnocSlOAqFgxfeqhkVaqUoj6Kpye48Q5DzQQ==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/animate-presence': 1.96.0(react@18.2.0) - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/dismissable': 1.96.0(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/polyfill-dev': 1.96.0 - '@tamagui/portal': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - '@tamagui/visually-hidden': 1.96.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@tamagui/toggle-group@1.96.0(@types/react@18.3.1)(immer@10.1.1)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-Rl5sXj/Nq1bsf82B7id1MHm1IkynkCgsllAjg0ACLLkYwaJkusXmPFfmlK8hVGaFMDl1Wy5H4lJMgW0DoX1lYA==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/focusable': 1.96.0(react@18.2.0) - '@tamagui/font-size': 1.96.0(react@18.2.0) - '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/group': 1.96.0(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/helpers-tamagui': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/roving-focus': 1.96.0(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - '@tamagui/use-direction': 1.96.0(react@18.2.0) - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - transitivePeerDependencies: - - '@types/react' - - immer - - react-native - dev: false - - /@tamagui/tooltip@1.96.0(@types/react@18.3.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-R41EUZ5rp6gXDKEtM8i2UG7tywBdhorhBmqvC9053G1cXtfszflLX9mK2bxG5nnlL7JFFQpjjvUCWDOgCvq+xg==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@floating-ui/react': 0.26.13(react-dom@18.2.0)(react@18.2.0) - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/floating': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/polyfill-dev': 1.96.0 - '@tamagui/popover': 1.96.0(@types/react@18.3.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) - '@tamagui/popper': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - react-dom - dev: false - - /@tamagui/types@1.96.0: - resolution: {integrity: sha512-8w6vu7SAVSOK2cXpn0KVi/iVfRQzcA5sO7I5x+E9RTCF/YFkxbciT9XRsgWO8ERPMbu1zUIfetJkNsvCPO+qFQ==} - dev: false - - /@tamagui/use-callback-ref@1.96.0: - resolution: {integrity: sha512-+kgcom6W6ejtZYXG8ENlSsBoHJECbLLx928eX3je8JpNRUzwKD+zifddnqcTa8+/ICWNvJG7mOBIrM8pT1Psng==} - dev: false - - /@tamagui/use-constant@1.96.0(react@18.2.0): - resolution: {integrity: sha512-RMSPratnwiRCGekDqGvkEa3UhAhBNWFrjhzjO7yQCv3dijgWVoyD7FNVOTG46DP3haGiZokVFWcT8G3u/PJ7CQ==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - - /@tamagui/use-controllable-state@1.96.0(react@18.2.0): - resolution: {integrity: sha512-NpGKc4wz2oG0ez9G0W/IrG1OtKBfR4Pcg000WJADSw/Hc2L7mDLIBA3F8RNm3mZM0YEkUzAdXINQvQfx7A9uxA==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/use-event': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/use-debounce@1.96.0(react@18.2.0): - resolution: {integrity: sha512-+4zlOG++Hkq/eGD/Dqb+roSxUGEghieDBijdEdclWHQ8wpXQagzI7N9EsBIELmyaC55gCLCv8d9/85etXD8flA==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - - /@tamagui/use-did-finish-ssr@1.96.0(react@18.2.0): - resolution: {integrity: sha512-ba/ujEXJYtdaWoNIJGzdBDZQpwuy4GH1hvxbTIAhYtlAXJUa0YCGE33+YRj3eSGsHDab0IS5NBCoL+cP0DmWjA==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/constants': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/use-direction@1.96.0(react@18.2.0): - resolution: {integrity: sha512-euvD9DrZu6EIQ7Vo1WQV6DjIpYCKAX/p5hT9c46Pf8wk81brRdiVe/ns+iuzMHk7Zi3Vtj3dmVuaqD+dUqYxUg==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - - /@tamagui/use-escape-keydown@1.96.0: - resolution: {integrity: sha512-feTsUAlQRSkPAh5LfJyYjMS5t898w2HB1TZt1aHq7BSdNFex+RZg9e1YOfwmOwXj6C6rawnrEsUcimeZaJi6ow==} - dependencies: - '@tamagui/use-callback-ref': 1.96.0 - dev: false - - /@tamagui/use-event@1.96.0(react@18.2.0): - resolution: {integrity: sha512-kSx46K02x6WF+BYvsteJMuP5HNsraCXm+mf31Qb8efXvQYOxdL/UdebNDIPbRL9RKRcH/MUTqQH8kLIrRLwaLA==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/constants': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/use-force-update@1.96.0(react@18.2.0): - resolution: {integrity: sha512-0CbD2DytTxF6QRP05HKMS5/ns/E9AYfHo7qxxpy9/kiMluR3I+fRx3L/c0XjhwXAiDcM36XJ0lLqw+zAROQc4Q==} - peerDependencies: - react: '*' - dependencies: - react: 18.2.0 - dev: false - - /@tamagui/use-keyboard-visible@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-HTRElPlBu/oacj7YUQfKePPhRWpn9ha4EVuPu0OCvYg2l5UL/Pl0Nilu19xSYwYLEi9eoEE0PuHvJ8iPh5HfWA==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@tamagui/use-presence@1.96.0(react@18.2.0): - resolution: {integrity: sha512-pIOLsBMtD7a5Z06LJ9eDY79yJ++b05qQxErl96W87kydKKGdixsVW71f1kSm9YzRJlVMEZi8kc13607enk4eBg==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/use-previous@1.96.0: - resolution: {integrity: sha512-Lhg/CpotHvQvpf4D5jkwse+kRmR115gHtYI+V9EBmb1OKiIkK5HRfIWueykL2ptX3Y0TBvzr20Q+xo28IiHSdg==} - dev: false - - /@tamagui/use-window-dimensions@1.96.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-s53fmTw7YNQ1eXbzcll6PkN+20Y3SSZN8ggoQNdz06iU4zb5g3tLSZyuDj4J+v7B3DDe2Pr8fqdQ27xSBmb4Nw==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@tamagui/constants': 1.96.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /@tamagui/visually-hidden@1.96.0(react@18.2.0): - resolution: {integrity: sha512-m2z/3WwXYslfHiU/szqieo0d6pmiD4G4xgOlNAYfHkN7lDlRQIIe4e1qopvgoEAdAHr1FDVUx0G7WhT4qCrzIg==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/web': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tamagui/web@1.96.0(react@18.2.0): - resolution: {integrity: sha512-qFdfrXs2LbPU9lnBHjOfxziVDqvwX3YtVPPidEYOrmBB112GaiaGjLA5MpgM+CJpYMoFpu+MOxzW73/7ouqMCw==} - peerDependencies: - react: '*' - dependencies: - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/helpers': 1.96.0(react@18.2.0) - '@tamagui/normalize-css-color': 1.96.0 - '@tamagui/timer': 1.96.0 - '@tamagui/types': 1.96.0 - '@tamagui/use-did-finish-ssr': 1.96.0(react@18.2.0) - '@tamagui/use-event': 1.96.0(react@18.2.0) - '@tamagui/use-force-update': 1.96.0(react@18.2.0) - react: 18.2.0 - dev: false - - /@tanstack/eslint-plugin-query@5.32.1(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-hlvKBV0JncpoA2HThfiD6OH8pdtn2N7WR74nWmDEuBEV1HMwXDo1QF/h/oKRPheEjzokVI13D3p11Lfw2kQr+g==} - peerDependencies: - eslint: ^8.0.0 - dependencies: - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) - eslint: 8.57.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@tanstack/query-core@5.32.1: - resolution: {integrity: sha512-mCWa1wdGb1jiny4+qYegbSeadcFj+Nq65KFSs4A1DRveoIq7SrTwUhqu7hrB6d54cQH5x59DfJvxusn3w1Cj/g==} - dev: false - - /@tanstack/react-query@5.32.1(react@18.2.0): - resolution: {integrity: sha512-+nXLMB0JK0XwTJ+lQt49DPNLrbSppni9N5W5yMR085yW3YaRKRUFhfVTER3TvQd1UycHpoGPFnt1gHiijXERAg==} - peerDependencies: - react: ^18.0.0 - dependencies: - '@tanstack/query-core': 5.32.1 - react: 18.2.0 - dev: false - - /@tootallnate/quickjs-emscripten@0.23.0: - resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - dev: true - - /@tsconfig/node10@1.0.11: - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - dev: true - - /@tsconfig/node12@1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true - - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true - - /@tsconfig/node16@1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - dev: true - - /@turbo/gen@1.13.3(@types/node@20.12.8)(typescript@5.4.5): - resolution: {integrity: sha512-l+EM1gGzckFMaaVQyj3BVRa0QJ+tpp8HfiHOhGpBWW3Vc0Hfj92AY87Di/7HGABa+HVY7ueatMi7DJG+zkJBYg==} - hasBin: true - dependencies: - '@turbo/workspaces': 1.13.3 - chalk: 2.4.2 - commander: 10.0.1 - fs-extra: 10.1.0 - inquirer: 8.2.6 - minimatch: 9.0.4 - node-plop: 0.26.3 - proxy-agent: 6.4.0 - ts-node: 10.9.2(@types/node@20.12.8)(typescript@5.4.5) - update-check: 1.5.4 - validate-npm-package-name: 5.0.0 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - supports-color - - typescript - dev: true - - /@turbo/workspaces@1.13.3: - resolution: {integrity: sha512-QYZ8g3IVQebqNM8IsBlWYOWmOKjBZY55e6lx4EDOLuch1iWmyk+U8CLAI9UomMrSaKTs1Sx+PDkt63EgakvhUw==} - hasBin: true - dependencies: - chalk: 2.4.2 - commander: 10.0.1 - execa: 5.1.1 - fast-glob: 3.3.2 - fs-extra: 10.1.0 - gradient-string: 2.0.2 - inquirer: 8.2.6 - js-yaml: 4.1.0 - ora: 4.1.1 - rimraf: 3.0.2 - semver: 7.6.0 - update-check: 1.5.4 - dev: true - - /@types/babel__core@7.20.5: - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - dependencies: - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - '@types/babel__generator': 7.6.8 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.5 - dev: true - - /@types/babel__generator@7.6.8: - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - dependencies: - '@babel/types': 7.24.5 - dev: true - - /@types/babel__template@7.4.4: - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - dependencies: - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - dev: true - - /@types/babel__traverse@7.20.5: - resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} - dependencies: - '@babel/types': 7.24.5 - dev: true - - /@types/cookie@0.4.1: - resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} - dev: false - - /@types/eslint@8.56.10: - resolution: {integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==} - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 - dev: true - - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: true - - /@types/fs-extra@9.0.13: - resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} - dependencies: - '@types/node': 20.12.8 - dev: false - - /@types/glob@7.2.0: - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 20.12.8 - dev: true - - /@types/hammerjs@2.0.45: - resolution: {integrity: sha512-qkcUlZmX6c4J8q45taBKTL3p+LbITgyx7qhlPYOdOHZB7B31K0mXbP5YA7i7SgDeEGuI9MnumiKPEMrxg8j3KQ==} - dev: false - - /@types/inquirer@6.5.0: - resolution: {integrity: sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==} - dependencies: - '@types/through': 0.0.33 - rxjs: 6.6.7 - dev: true - - /@types/istanbul-lib-coverage@2.0.6: - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - dev: false - - /@types/istanbul-lib-report@3.0.3: - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - dev: false - - /@types/istanbul-reports@3.0.4: - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - dependencies: - '@types/istanbul-lib-report': 3.0.3 - dev: false - - /@types/js-yaml@4.0.9: - resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} - dev: false - - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: false - - /@types/minimatch@5.1.2: - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - dev: true - - /@types/node-forge@1.3.11: - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - dependencies: - '@types/node': 20.12.8 - dev: true - - /@types/node@17.0.45: - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - dev: false - - /@types/node@20.12.8: - resolution: {integrity: sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==} - dependencies: - undici-types: 5.26.5 - - /@types/prop-types@15.7.12: - resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} - - /@types/react@18.3.1: - resolution: {integrity: sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==} - dependencies: - '@types/prop-types': 15.7.12 - csstype: 3.1.3 - - /@types/semver@7.5.8: - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - - /@types/stack-utils@2.0.3: - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - dev: false - - /@types/through@0.0.33: - resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} - dependencies: - '@types/node': 20.12.8 - dev: true - - /@types/tinycolor2@1.4.6: - resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} - dev: true - - /@types/yargs-parser@21.0.3: - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - dev: false - - /@types/yargs@15.0.19: - resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} - dependencies: - '@types/yargs-parser': 21.0.3 - dev: false - - /@types/yargs@17.0.32: - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - dependencies: - '@types/yargs-parser': 21.0.3 - dev: false - - /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 - eslint: 8.57.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare: 1.4.0 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - dev: false - - /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 - eslint: 8.57.0 - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - dev: false - - /@typescript-eslint/scope-manager@6.21.0: - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - - /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) - debug: 4.3.4 - eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - dev: false - - /@typescript-eslint/types@6.21.0: - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} - engines: {node: ^16.0.0 || >=18.0.0} - - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5): - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.3 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) - eslint: 8.57.0 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color - - typescript - - /@typescript-eslint/visitor-keys@6.21.0: - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.21.0 - eslint-visitor-keys: 3.4.3 - - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - /@urql/core@2.3.6(graphql@15.8.0): - resolution: {integrity: sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==} - peerDependencies: - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@15.8.0) - graphql: 15.8.0 - wonka: 4.0.15 - dev: false - - /@urql/exchange-retry@0.3.0(graphql@15.8.0): - resolution: {integrity: sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==} - peerDependencies: - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - dependencies: - '@urql/core': 2.3.6(graphql@15.8.0) - graphql: 15.8.0 - wonka: 4.0.15 - dev: false - - /@web3-storage/multipart-parser@1.0.0: - resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==} - dev: false - - /@xmldom/xmldom@0.7.13: - resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==} - engines: {node: '>=10.0.0'} - dev: false - - /@xmldom/xmldom@0.8.10: - resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} - engines: {node: '>=10.0.0'} - dev: false - - /@zxing/text-encoding@0.9.0: - resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} - requiresBuild: true - dev: false - optional: true - - /abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - dependencies: - event-target-shim: 5.0.1 - dev: false - - /accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - dev: false - - /acorn-jsx@5.3.2(acorn@8.11.3): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.11.3 - - /acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - dev: true - - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - - /agent-base@7.1.1: - resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} - engines: {node: '>= 14'} - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - - /ajv-formats@2.1.1(ajv@8.13.0): - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - dependencies: - ajv: 8.13.0 - dev: false - - /ajv-keywords@5.1.0(ajv@8.13.0): - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - dependencies: - ajv: 8.13.0 - fast-deep-equal: 3.1.3 - dev: false - - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - /ajv@8.13.0: - resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: false - - /anser@1.4.10: - resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} - dev: false - - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - - /ansi-fragments@0.2.1: - resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} - dependencies: - colorette: 1.4.0 - slice-ansi: 2.1.0 - strip-ansi: 5.2.0 - dev: false - - /ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - dev: false - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - dev: false - - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: false - - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - dev: false - - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: false - - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: false - - /appdirsjs@1.2.7: - resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} - dev: false - - /application-config-path@0.1.1: - resolution: {integrity: sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==} - dev: false - - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true - - /arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - dev: false - - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: false - - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - /aria-hidden@1.2.4: - resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} - engines: {node: '>=10'} - dependencies: - tslib: 2.6.2 - dev: false - - /aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - dependencies: - dequal: 2.0.3 - dev: false - - /array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 - dev: false - - /array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - is-string: 1.0.7 - dev: false - - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - /array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 - dev: false - - /array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 - dev: false - - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - dev: false - - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - dev: false - - /array.prototype.toreversed@1.1.2: - resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - dev: false - - /array.prototype.tosorted@1.1.3: - resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 - dev: false - - /arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 - dev: false - - /asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false - - /asn1.js@4.10.1: - resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} - dependencies: - bn.js: 4.12.0 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - dev: false - - /ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - dev: false - - /ast-types@0.13.4: - resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} - engines: {node: '>=4'} - dependencies: - tslib: 2.6.2 - dev: true - - /ast-types@0.15.2: - resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} - engines: {node: '>=4'} - dependencies: - tslib: 2.6.2 - dev: false - - /astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} - dev: false - - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - dev: false - - /async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - dev: false - - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: false - - /at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - dev: false - - /available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - dependencies: - possible-typed-array-names: 1.0.0 - dev: false - - /axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} - engines: {node: '>=4'} - dev: false - - /axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} - dependencies: - dequal: 2.0.3 - dev: false - - /babel-core@7.0.0-bridge.0(@babel/core@7.24.5): - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.5 - dev: false - - /babel-literal-to-ast@2.1.0(@babel/core@7.24.5): - resolution: {integrity: sha512-CxfpQ0ysQ0bZOhlaPgcWjl79Em16Rhqc6++UAFn0A3duiXmuyhhj8yyl9PYbj0I0CyjrHovdDbp2QEKT7uIMxw==} - peerDependencies: - '@babel/core': ^7.1.2 - dependencies: - '@babel/core': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - transitivePeerDependencies: - - supports-color - dev: false - - /babel-plugin-fully-specified@1.3.0(@babel/core@7.24.5): - resolution: {integrity: sha512-STW+rXLxwCB839gmwBizuipaDBb/iGZ5Vg0bmfynYLyXRTWgofXDrePuW5VvBJq2x8yB6xvT+3J7Z0U79uQYNw==} - peerDependencies: - '@babel/core': '*' - dependencies: - '@babel/core': 7.24.5 - dev: false - - /babel-plugin-module-resolver@5.0.2: - resolution: {integrity: sha512-9KtaCazHee2xc0ibfqsDeamwDps6FZNo5S0Q81dUqEuFzVwPhcT4J5jOqIVvgCA3Q/wO9hKYxN/Ds3tIsp5ygg==} - dependencies: - find-babel-config: 2.1.1 - glob: 9.3.5 - pkg-up: 3.1.0 - reselect: 4.1.8 - resolve: 1.22.8 - dev: true - - /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.5): - resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.5 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.5): - resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) - core-js-compat: 3.37.0 - transitivePeerDependencies: - - supports-color - - /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.5): - resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) - transitivePeerDependencies: - - supports-color - - /babel-plugin-react-native-web@0.18.12: - resolution: {integrity: sha512-4djr9G6fMdwQoD6LQ7hOKAm39+y12flWgovAqS1k5O8f42YQ3A1FFMyV5kKfetZuGhZO5BmNmOdRRZQ1TixtDw==} - dev: false - - /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: - resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} - dev: false - - /babel-plugin-tester@11.0.4(@babel/core@7.24.5): - resolution: {integrity: sha512-cqswtpSPo0e++rZB0l/54EG17LL25l9gLgh59yXfnmNxX+2lZTIOpx2zt4YI9QIClVXc8xf63J6yWwKkzy0jNg==} - engines: {node: ^14.20.0 || ^16.16.0 || >=18.5.0} - peerDependencies: - '@babel/core': '>=7.11.6' - dependencies: - '@babel/core': 7.24.5 - core-js: 3.37.0 - debug: 4.3.4 - lodash.mergewith: 4.6.2 - prettier: 2.8.8 - strip-indent: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.24.5): - resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} - dependencies: - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) - transitivePeerDependencies: - - '@babel/core' - dev: false - - /babel-preset-expo@10.0.2(@babel/core@7.24.5): - resolution: {integrity: sha512-hg06qdSTK7MjKmFXSiq6cFoIbI3n3uT8a3NI2EZoISWhu+tedCj4DQduwi+3adFuRuYvAwECI0IYn/5iGh5zWQ==} - dependencies: - '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - '@babel/preset-env': 7.24.5(@babel/core@7.24.5) - '@babel/preset-react': 7.24.1(@babel/core@7.24.5) - '@react-native/babel-preset': 0.73.21(@babel/core@7.24.5)(@babel/preset-env@7.24.5) - babel-plugin-react-native-web: 0.18.12 - react-refresh: 0.14.0 - transitivePeerDependencies: - - '@babel/core' - - supports-color - dev: false - - /babel-preset-fbjs@3.4.0(@babel/core@7.24.5): - resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.5) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.5) - babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 - dev: false - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - /base-64@0.1.0: - resolution: {integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==} - dev: false - - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - /basic-ftp@5.0.5: - resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} - engines: {node: '>=10.0.0'} - dev: true - - /before-after-hook@2.2.3: - resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} - dev: false - - /better-opn@3.0.2: - resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} - engines: {node: '>=12.0.0'} - dependencies: - open: 8.4.2 - dev: false - - /big-integer@1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} - dev: false - - /binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - dev: false - - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - - /blueimp-md5@2.19.0: - resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} - dev: false - - /bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - dev: false - - /bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - dev: false - - /boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: false - - /bplist-creator@0.1.0: - resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==} - dependencies: - stream-buffers: 2.2.0 - dev: false - - /bplist-parser@0.3.1: - resolution: {integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==} - engines: {node: '>= 5.10.0'} - dependencies: - big-integer: 1.6.52 - dev: false - - /bplist-parser@0.3.2: - resolution: {integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==} - engines: {node: '>= 5.10.0'} - dependencies: - big-integer: 1.6.52 - dev: false - - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 - - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - - /brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - dev: false - - /browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - dependencies: - buffer-xor: 1.0.3 - cipher-base: 1.0.4 - create-hash: 1.2.0 - evp_bytestokey: 1.0.3 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: false - - /browserify-cipher@1.0.1: - resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} - dependencies: - browserify-aes: 1.2.0 - browserify-des: 1.0.2 - evp_bytestokey: 1.0.3 - dev: false - - /browserify-des@1.0.2: - resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} - dependencies: - cipher-base: 1.0.4 - des.js: 1.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: false - - /browserify-rsa@4.1.0: - resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} - dependencies: - bn.js: 5.2.1 - randombytes: 2.1.0 - dev: false - - /browserify-sign@4.2.3: - resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==} - engines: {node: '>= 0.12'} - dependencies: - bn.js: 5.2.1 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - create-hmac: 1.1.7 - elliptic: 6.5.5 - hash-base: 3.0.4 - inherits: 2.0.4 - parse-asn1: 5.1.7 - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - dev: false - - /browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001614 - electron-to-chromium: 1.4.752 - node-releases: 2.0.14 - update-browserslist-db: 1.0.14(browserslist@4.23.0) - - /bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - dependencies: - node-int64: 0.4.0 - dev: false - - /buffer-alloc-unsafe@1.1.0: - resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} - dev: false - - /buffer-alloc@1.2.0: - resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} - dependencies: - buffer-alloc-unsafe: 1.1.0 - buffer-fill: 1.0.0 - dev: false - - /buffer-fill@1.0.0: - resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} - dev: false - - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: false - - /buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - dev: false - - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - /builtins@1.0.3: - resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} - dev: false - - /builtins@5.1.0: - resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} - dependencies: - semver: 7.6.0 - dev: true - - /burnt@0.12.2(expo@50.0.17)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-bbZjGN4Om7dykr8ZcLb0tTO5L2becMR+HIez1ySUGgG/rvK+ePgBEuBA6lMOZqOTsUXhIKFUBH0sCXQ25fq5SA==} - peerDependencies: - expo: '*' - react: '*' - react-native: '*' - dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - sf-symbols-typescript: 1.0.0 - sonner: 0.3.5(react-dom@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - react-dom - dev: false - - /bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - dev: false - - /cacache@15.3.0: - resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} - engines: {node: '>= 10'} - dependencies: - '@npmcli/fs': 1.1.1 - '@npmcli/move-file': 1.1.2 - chownr: 2.0.0 - fs-minipass: 2.1.0 - glob: 7.2.3 - infer-owner: 1.0.4 - lru-cache: 6.0.0 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - mkdirp: 1.0.4 - p-map: 4.0.0 - promise-inflight: 1.0.1 - rimraf: 3.0.2 - ssri: 8.0.1 - tar: 6.2.1 - unique-filename: 1.1.1 - transitivePeerDependencies: - - bluebird - dev: false - - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - dev: false - - /caller-callsite@2.0.0: - resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} - engines: {node: '>=4'} - dependencies: - callsites: 2.0.0 - dev: false - - /caller-path@2.0.0: - resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} - engines: {node: '>=4'} - dependencies: - caller-callsite: 2.0.0 - dev: false - - /callsites@2.0.0: - resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} - engines: {node: '>=4'} - dev: false - - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - /camel-case@3.0.0: - resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 - dev: true - - /camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - dev: false - - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: false - - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: false - - /camelize@1.0.1: - resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - dev: false - - /caniuse-lite@1.0.30001614: - resolution: {integrity: sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==} - - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - /chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: false - - /change-case@3.1.0: - resolution: {integrity: sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==} - dependencies: - camel-case: 3.0.0 - constant-case: 2.0.0 - dot-case: 2.1.1 - header-case: 1.0.1 - is-lower-case: 1.1.3 - is-upper-case: 1.1.2 - lower-case: 1.1.4 - lower-case-first: 1.0.2 - no-case: 2.3.2 - param-case: 2.1.1 - pascal-case: 2.0.1 - path-case: 2.1.1 - sentence-case: 2.1.1 - snake-case: 2.1.0 - swap-case: 1.1.2 - title-case: 2.1.1 - upper-case: 1.1.3 - upper-case-first: 1.1.2 - dev: true - - /chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true - - /charenc@0.0.2: - resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - dev: false - - /check-dependency-version-consistency@4.1.0: - resolution: {integrity: sha512-xghkzKgMxpAfeP9OJfVrErtv8BU4h5kHYQyheHC0j0RYRVNWti0qI3+HkFgWBKejq2UE2wOnoWZlvDKFj6jFoA==} - engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} - hasBin: true - dependencies: - '@types/js-yaml': 4.0.9 - chalk: 5.3.0 - commander: 10.0.1 - edit-json-file: 1.8.0 - globby: 13.2.2 - js-yaml: 4.1.0 - semver: 7.6.0 - table: 6.8.2 - type-fest: 3.13.1 - dev: false - - /cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - dependencies: - boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - dev: false - - /cheerio@1.0.0-rc.12: - resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} - engines: {node: '>= 6'} - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.1.0 - htmlparser2: 8.0.2 - parse5: 7.1.2 - parse5-htmlparser2-tree-adapter: 7.0.0 - dev: false - - /chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: false - - /chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: false - - /chrome-launcher@0.15.2: - resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} - engines: {node: '>=12.13.0'} - hasBin: true - dependencies: - '@types/node': 20.12.8 - escape-string-regexp: 4.0.0 - is-wsl: 2.2.0 - lighthouse-logger: 1.4.2 - transitivePeerDependencies: - - supports-color - dev: false - - /chromium-edge-launcher@1.0.0: - resolution: {integrity: sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==} - dependencies: - '@types/node': 20.12.8 - escape-string-regexp: 4.0.0 - is-wsl: 2.2.0 - lighthouse-logger: 1.4.2 - mkdirp: 1.0.4 - rimraf: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - - /ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: false - - /ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - dev: false - - /cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: false - - /class-variance-authority@0.7.0: - resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} - dependencies: - clsx: 2.0.0 - dev: false - - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - /cli-cursor@2.1.0: - resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} - engines: {node: '>=4'} - dependencies: - restore-cursor: 2.0.0 - dev: false - - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - - /cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - /cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - dev: true - - /cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - dev: false - - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: false - - /clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - dev: false - - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - /clone@2.1.2: - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} - engines: {node: '>=0.8'} - dev: false - - /clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} - engines: {node: '>=6'} - dev: false - - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - /color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - dev: false - - /color2k@2.0.3: - resolution: {integrity: sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog==} - dev: false - - /color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - dev: false - - /colorette@1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - dev: false - - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: false - - /command-exists@1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - dev: false - - /commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: false - - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: false - - /commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - dev: false - - /commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - dev: false - - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: false - - /compare-urls@2.0.0: - resolution: {integrity: sha512-eCJcWn2OYFEIqbm70ta7LQowJOOZZqq1a2YbbFCFI1uwSvj+TWMwXVn7vPR1ceFNcAIt5RSTDbwdlX82gYLTkA==} - engines: {node: '>=6'} - dependencies: - normalize-url: 2.0.1 - dev: false - - /component-type@1.2.2: - resolution: {integrity: sha512-99VUHREHiN5cLeHm3YLq312p6v+HUEcwtLCAtelvUDI6+SH5g5Cr85oNR2S1o6ywzL0ykMbuwLzM2ANocjEOIA==} - dev: false - - /compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: false - - /compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} - engines: {node: '>= 0.8.0'} - dependencies: - accepts: 1.3.8 - bytes: 3.0.0 - compressible: 2.0.18 - debug: 2.6.9 - on-headers: 1.0.2 - safe-buffer: 5.1.2 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: false - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - /connect@3.7.0: - resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} - engines: {node: '>= 0.10.0'} - dependencies: - debug: 2.6.9 - finalhandler: 1.1.2 - parseurl: 1.3.3 - utils-merge: 1.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /constant-case@2.0.0: - resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==} - dependencies: - snake-case: 2.1.0 - upper-case: 1.1.3 - dev: true - - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - /cookie-signature@1.2.1: - resolution: {integrity: sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==} - engines: {node: '>=6.6.0'} - dev: false - - /cookie@0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} - engines: {node: '>= 0.6'} - dev: false - - /cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - dev: false - - /core-js-compat@3.37.0: - resolution: {integrity: sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==} - dependencies: - browserslist: 4.23.0 - - /core-js-pure@3.37.0: - resolution: {integrity: sha512-d3BrpyFr5eD4KcbRvQ3FTUx/KWmaDesr7+a3+1+P46IUnNoEt+oiLijPINZMEon7w9oGkIINWxrBAU9DEciwFQ==} - requiresBuild: true - dev: true - - /core-js@3.37.0: - resolution: {integrity: sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==} - requiresBuild: true - dev: false - - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false - - /cosmiconfig@5.2.1: - resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} - engines: {node: '>=4'} - dependencies: - import-fresh: 2.0.0 - is-directory: 0.3.1 - js-yaml: 3.14.1 - parse-json: 4.0.0 - dev: false - - /create-ecdh@4.0.4: - resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} - dependencies: - bn.js: 4.12.0 - elliptic: 6.5.5 - dev: false - - /create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - dependencies: - cipher-base: 1.0.4 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.2 - sha.js: 2.4.11 - dev: false - - /create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} - dependencies: - cipher-base: 1.0.4 - create-hash: 1.2.0 - inherits: 2.0.4 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - dev: false - - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true - - /cross-fetch@3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - dev: false - - /cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.2 - shebang-command: 1.2.0 - which: 1.3.1 - dev: false - - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - /crypt@0.0.2: - resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} - dev: false - - /crypto-browserify@3.12.0: - resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} - dependencies: - browserify-cipher: 1.0.1 - browserify-sign: 4.2.3 - create-ecdh: 4.0.4 - create-hash: 1.2.0 - create-hmac: 1.1.7 - diffie-hellman: 5.0.3 - inherits: 2.0.4 - pbkdf2: 3.1.2 - public-encrypt: 4.0.3 - randombytes: 2.1.0 - randomfill: 1.0.4 - dev: false - - /crypto-js@4.2.0: - resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - dev: false - - /crypto-random-string@1.0.0: - resolution: {integrity: sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==} - engines: {node: '>=4'} - dev: false - - /crypto-random-string@2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} - engines: {node: '>=8'} - dev: false - - /css-color-keywords@1.0.0: - resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} - engines: {node: '>=4'} - dev: false - - /css-in-js-utils@3.1.0: - resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} - dependencies: - hyphenate-style-name: 1.0.4 - dev: false - - /css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.1.0 - nth-check: 2.1.1 - dev: false - - /css-to-react-native@3.2.0: - resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} - dependencies: - camelize: 1.0.1 - css-color-keywords: 1.0.0 - postcss-value-parser: 4.2.0 - dev: false - - /css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - dev: false - - /css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - dev: false - - /cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - dev: false - - /csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - /dag-map@1.0.2: - resolution: {integrity: sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==} - dev: false - - /damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dev: false - - /data-uri-to-buffer@3.0.1: - resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} - engines: {node: '>= 6'} - dev: false - - /data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - dev: false - - /data-uri-to-buffer@6.0.2: - resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} - engines: {node: '>= 14'} - dev: true - - /data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - dev: false - - /data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - dev: false - - /data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - dev: false - - /dayjs@1.11.11: - resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} - dev: false - - /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: false - - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: false - - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: false - - /decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - dev: false - - /deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: false - - /default-gateway@4.2.0: - resolution: {integrity: sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==} - engines: {node: '>=6'} - dependencies: - execa: 1.0.0 - ip-regex: 2.1.0 - dev: false - - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - dependencies: - clone: 1.0.4 - - /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - dev: false - - /define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - dev: false - - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - dev: false - - /degenerator@5.0.1: - resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} - engines: {node: '>= 14'} - dependencies: - ast-types: 0.13.4 - escodegen: 2.1.0 - esprima: 4.0.1 - dev: true - - /del@5.1.0: - resolution: {integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==} - engines: {node: '>=8'} - dependencies: - globby: 10.0.2 - graceful-fs: 4.2.11 - is-glob: 4.0.3 - is-path-cwd: 2.2.0 - is-path-inside: 3.0.3 - p-map: 3.0.0 - rimraf: 3.0.2 - slash: 3.0.0 - dev: true - - /del@6.1.1: - resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} - engines: {node: '>=10'} - dependencies: - globby: 11.1.0 - graceful-fs: 4.2.11 - is-glob: 4.0.3 - is-path-cwd: 2.2.0 - is-path-inside: 3.0.3 - p-map: 4.0.0 - rimraf: 3.0.2 - slash: 3.0.0 - dev: false - - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: false - - /denodeify@1.2.1: - resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} - dev: false - - /depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - dev: false - - /deprecated-react-native-prop-types@2.3.0: - resolution: {integrity: sha512-pWD0voFtNYxrVqvBMYf5gq3NA2GCpfodS1yNynTPc93AYA/KEMGeWDqqeUB6R2Z9ZofVhks2aeJXiuQqKNpesA==} - dependencies: - '@react-native/normalize-color': 2.1.0 - invariant: 2.2.4 - prop-types: 15.8.1 - dev: false - - /deprecated-react-native-prop-types@5.0.0: - resolution: {integrity: sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ==} - engines: {node: '>=18'} - dependencies: - '@react-native/normalize-colors': 0.73.2 - invariant: 2.2.4 - prop-types: 15.8.1 - dev: false - - /deprecation@2.3.1: - resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} - dev: false - - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - dev: false - - /des.js@1.1.0: - resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - dev: false - - /destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dev: false - - /detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - dev: false - - /detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - dev: false - - /didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dev: false - - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: true - - /diffie-hellman@5.0.3: - resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} - dependencies: - bn.js: 4.12.0 - miller-rabin: 4.0.1 - randombytes: 2.1.0 - dev: false - - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - - /dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dev: false - - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: false - - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - - /dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - dev: false - - /domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: false - - /domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - dev: false - - /domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - dev: false - - /dot-case@2.1.1: - resolution: {integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==} - dependencies: - no-case: 2.3.2 - dev: true - - /dotenv-expand@11.0.6: - resolution: {integrity: sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==} - engines: {node: '>=12'} - dependencies: - dotenv: 16.4.5 - dev: false - - /dotenv@16.0.3: - resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} - engines: {node: '>=12'} - dev: false - - /dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} - engines: {node: '>=12'} - dev: false - - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: false - - /edit-json-file@1.8.0: - resolution: {integrity: sha512-IBOpbe2aQufNl5oZ4jsr2AmNVUy5bO7jS5hk0cCyWhOLdH59Xv41B3XQObE/JB89Ae5qDY9hVsq13/hgGhFBZg==} - dependencies: - find-value: 1.0.12 - iterate-object: 1.3.4 - r-json: 1.3.0 - set-value: 4.1.0 - w-json: 1.3.10 - dev: false - - /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - dev: false - - /electron-to-chromium@1.4.752: - resolution: {integrity: sha512-P3QJreYI/AUTcfBVrC4zy9KvnZWekViThgQMX/VpJ+IsOBbcX5JFpORM4qWapwWQ+agb2nYAOyn/4PMXOk0m2Q==} - - /elliptic@6.5.5: - resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - dev: false - - /eme-encryption-scheme-polyfill@2.1.1: - resolution: {integrity: sha512-njD17wcUrbqCj0ArpLu5zWXtaiupHb/2fIUQGdInf83GlI+Q6mmqaPGLdrke4savKAu15J/z1Tg/ivDgl14g0g==} - dev: false - - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: false - - /encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - dev: false - - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: false - - /entities@2.0.3: - resolution: {integrity: sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==} - dev: false - - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: false - - /env-editor@0.4.2: - resolution: {integrity: sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==} - engines: {node: '>=8'} - dev: false - - /envinfo@7.13.0: - resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} - engines: {node: '>=4'} - hasBin: true - dev: false - - /eol@0.9.1: - resolution: {integrity: sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==} - dev: false - - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: false - - /error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - dependencies: - stackframe: 1.3.4 - dev: false - - /errorhandler@1.5.1: - resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} - engines: {node: '>= 0.8'} - dependencies: - accepts: 1.3.8 - escape-html: 1.0.3 - dev: false - - /es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-data-view: 1.0.1 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 - dev: false - - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.4 - dev: false - - /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - dev: false - - /es-iterator-helpers@1.0.19: - resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - globalthis: 1.0.4 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - iterator.prototype: 1.1.2 - safe-array-concat: 1.1.2 - dev: false - - /es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - dev: false - - /es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.4 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - dev: false - - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - dependencies: - hasown: 2.0.2 - dev: false - - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: false - - /esbuild-plugin-es5@2.1.0(esbuild@0.20.2): - resolution: {integrity: sha512-V0rsjIHa/pswTvqM/N+jrhhBAiOdp+Ppwmhk9HQKfpvhYRUKsdeImiHeFP0oWkc+GX7pFxJzmceaPJT1RA7jyQ==} - engines: {node: '>=12.0'} - peerDependencies: - esbuild: ^0.19.0 - dependencies: - '@swc/core': 1.4.17(@swc/helpers@0.5.11) - '@swc/helpers': 0.5.11 - deepmerge: 4.3.1 - esbuild: 0.20.2 - dev: false - - /esbuild-register@3.5.0(esbuild@0.20.2): - resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} - peerDependencies: - esbuild: '>=0.12 <1' - dependencies: - debug: 4.3.4 - esbuild: 0.20.2 - transitivePeerDependencies: - - supports-color - dev: false - - /esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.20.2 - '@esbuild/android-arm': 0.20.2 - '@esbuild/android-arm64': 0.20.2 - '@esbuild/android-x64': 0.20.2 - '@esbuild/darwin-arm64': 0.20.2 - '@esbuild/darwin-x64': 0.20.2 - '@esbuild/freebsd-arm64': 0.20.2 - '@esbuild/freebsd-x64': 0.20.2 - '@esbuild/linux-arm': 0.20.2 - '@esbuild/linux-arm64': 0.20.2 - '@esbuild/linux-ia32': 0.20.2 - '@esbuild/linux-loong64': 0.20.2 - '@esbuild/linux-mips64el': 0.20.2 - '@esbuild/linux-ppc64': 0.20.2 - '@esbuild/linux-riscv64': 0.20.2 - '@esbuild/linux-s390x': 0.20.2 - '@esbuild/linux-x64': 0.20.2 - '@esbuild/netbsd-x64': 0.20.2 - '@esbuild/openbsd-x64': 0.20.2 - '@esbuild/sunos-x64': 0.20.2 - '@esbuild/win32-arm64': 0.20.2 - '@esbuild/win32-ia32': 0.20.2 - '@esbuild/win32-x64': 0.20.2 - dev: false - - /escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: false - - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: false - - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - /escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - dev: true - - /eslint-config-prettier@9.1.0(eslint@8.57.0): - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 8.57.0 - dev: false - - /eslint-config-turbo@1.13.3(eslint@8.57.0): - resolution: {integrity: sha512-if/QtwEiWZ5b7Bg8yZBPSvS0TeCG2Zvfa/+XBYANS7uSYucjmW+BBC8enJB0PqpB/YLGGOumeo3x7h1Nuba9iw==} - peerDependencies: - eslint: '>6.6.0' - dependencies: - eslint: 8.57.0 - eslint-plugin-turbo: 1.13.3(eslint@8.57.0) - dev: false - - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - dependencies: - debug: 3.2.7 - is-core-module: 2.13.1 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - dev: false - - /eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): - resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) - debug: 3.2.7 - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - dev: false - - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0): - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) - hasown: 2.0.2 - is-core-module: 2.13.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.0 - semver: 6.3.1 - tsconfig-paths: 3.15.0 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: false - - /eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - '@babel/runtime': 7.24.5 - aria-query: 5.3.0 - array-includes: 3.1.8 - array.prototype.flatmap: 1.3.2 - ast-types-flow: 0.0.8 - axe-core: 4.7.0 - axobject-query: 3.2.1 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.19 - eslint: 8.57.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.entries: 1.1.8 - object.fromentries: 2.0.8 - dev: false - - /eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dependencies: - eslint: 8.57.0 - dev: false - - /eslint-plugin-react@7.34.1(eslint@8.57.0): - resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.8 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.2 - array.prototype.toreversed: 1.1.2 - array.prototype.tosorted: 1.1.3 - doctrine: 2.1.0 - es-iterator-helpers: 1.0.19 - eslint: 8.57.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.8 - object.fromentries: 2.0.8 - object.hasown: 1.1.4 - object.values: 1.2.0 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.11 - dev: false - - /eslint-plugin-turbo@1.13.3(eslint@8.57.0): - resolution: {integrity: sha512-RjmlnqYsEqnJ+U3M3IS5jLJDjWv5NsvReCpsC61n5pJ4JMHTZ/lU0EIoL1ccuL1L5wP0APzdXdByBxERcPQ+Nw==} - peerDependencies: - eslint: '>6.6.0' - dependencies: - dotenv: 16.0.3 - eslint: 8.57.0 - dev: false - - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - /eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.1 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 3.4.3 - - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - /etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - dev: false - - /event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: false - - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: false - - /evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - dependencies: - md5.js: 1.3.5 - safe-buffer: 5.2.1 - dev: false - - /exec-async@2.2.0: - resolution: {integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==} - dev: false - - /execa@1.0.0: - resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} - engines: {node: '>=6'} - dependencies: - cross-spawn: 6.0.5 - get-stream: 4.1.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - dev: false - - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - /expo-alternate-app-icons@0.1.7(expo@50.0.17)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-4hIIGVRaNSedreT2GbujpR+vyz7x+/j8GPfGn/WHFYy8V0lmAOa8KgT2JeXuK1nB6s4Ler4yahrxUhcSI/lmqQ==} - peerDependencies: - expo: '*' - react: '*' - react-native: '*' - dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /expo-application@5.8.4(expo@50.0.17): - resolution: {integrity: sha512-mH0gSlFzMuiT20TkZnBppzUtdF6TFHwcaTRnvkSZanN9iTOeEEfQQ60hHT4lBizHjFWRs/QYZVtXGvkQ/cyMpg==} - peerDependencies: - expo: '*' - dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - dev: false - - /expo-asset@9.0.2(expo@50.0.17): - resolution: {integrity: sha512-PzYKME1MgUOoUvwtdzhAyXkjXOXGiSYqGKG/MsXwWr0Ef5wlBaBm2DCO9V6KYbng5tBPFu6hTjoRNil1tBOSow==} - dependencies: - '@react-native/assets-registry': 0.73.1 - blueimp-md5: 2.19.0 - expo-constants: 15.4.6(expo@50.0.17) - expo-file-system: 16.0.9(expo@50.0.17) - invariant: 2.2.4 - md5-file: 3.2.3 - transitivePeerDependencies: - - expo - - supports-color - dev: false - - /expo-av@13.10.6(expo@50.0.17): - resolution: {integrity: sha512-h3c1fg5yhWnP0RIGO+fhgPx6cmh4B4lnKdXR2i69aC3vs5D5Cu+JlzBon1gLIu6eUo2IVfC0RjSLpfQbcJ4doQ==} - peerDependencies: - expo: '*' - dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - dev: false - - /expo-brightness@11.8.0(expo@50.0.17): - resolution: {integrity: sha512-ipQA7s8PvJVhy+Ls6Dsql0veXXV5CdMcbXNPwQuXTbUofRE+8FHO0vasShMZlKYcD9KNgFygjx0U+THi80dtAw==} - peerDependencies: - expo: '*' - dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - dev: false - - /expo-build-properties@0.11.1(expo@50.0.17): - resolution: {integrity: sha512-m4j4aEjFaDuBE6KWYMxDhWgLzzSmpE7uHKAwtvXyNmRK+6JKF0gjiXi0sXgI5ngNppDQpsyPFMvqG7uQpRuCuw==} - peerDependencies: - expo: '*' - dependencies: - ajv: 8.13.0 - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - semver: 7.6.0 - dev: false - - /expo-clipboard@5.0.1(expo@50.0.17): - resolution: {integrity: sha512-JH853QJPr5W3h87If3aDTnMK+ESSIrwzU2TdfZrqZttVDY2pMIf/w37mVHHNYodXM4ATHXadtOkjKbAa0DWwUg==} - peerDependencies: - expo: '*' - dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - dev: false - - /expo-constants@15.4.6(expo@50.0.17): - resolution: {integrity: sha512-vizE69dww2Vl0PTWWvDmK0Jo2/J+WzdcMZlA05YEnEYofQuhKxTVsiuipf79mSOmFavt4UQYC1UnzptzKyfmiQ==} - peerDependencies: - expo: '*' - dependencies: - '@expo/config': 8.5.6 - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - transitivePeerDependencies: - - supports-color - dev: false - - /expo-file-system@16.0.9(expo@50.0.17): - resolution: {integrity: sha512-3gRPvKVv7/Y7AdD9eHMIdfg5YbUn2zbwKofjsloTI5sEC57SLUFJtbLvUCz9Pk63DaSQ7WIE1JM0EASyvuPbuw==} - peerDependencies: - expo: '*' - dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - dev: false - - /expo-font@11.10.3(expo@50.0.17): - resolution: {integrity: sha512-q1Td2zUvmLbCA9GV4OG4nLPw5gJuNY1VrPycsnemN1m8XWTzzs8nyECQQqrcBhgulCgcKZZJJ6U0kC2iuSoQHQ==} - peerDependencies: - expo: '*' - dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - fontfaceobserver: 2.3.0 - dev: false - - /expo-haptics@12.8.1(expo@50.0.17): - resolution: {integrity: sha512-ntLsHkfle8K8w9MW8pZEw92ZN3sguaGUSSIxv30fPKNeQFu7Cq/h47Qv3tONv2MO3wU48N9FbKnant6XlfptpA==} - peerDependencies: - expo: '*' - dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - dev: false - - /expo-keep-awake@12.8.2(expo@50.0.17): - resolution: {integrity: sha512-uiQdGbSX24Pt8nGbnmBtrKq6xL/Tm3+DuDRGBk/3ZE/HlizzNosGRIufIMJ/4B4FRw4dw8KU81h2RLuTjbay6g==} - peerDependencies: - expo: '*' - dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - dev: false - - /expo-linear-gradient@12.7.2(expo@50.0.17): - resolution: {integrity: sha512-Wwb2EF18ywgrlTodcXJ6Yt/UEcKitRMdXPNyP/IokmeKh4emoq9DxZJpZdkXm3HUTLlbRpi6/t32jrFVqXB9AQ==} - peerDependencies: - expo: '*' - dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - dev: false - - /expo-linking@6.2.2(expo@50.0.17): - resolution: {integrity: sha512-FEe6lP4f7xFT/vjoHRG+tt6EPVtkEGaWNK1smpaUevmNdyCJKqW0PDB8o8sfG6y7fly8ULe8qg3HhKh5J7aqUQ==} - dependencies: - expo-constants: 15.4.6(expo@50.0.17) - invariant: 2.2.4 - transitivePeerDependencies: - - expo - - supports-color - dev: false - - /expo-media-library@15.9.2(expo@50.0.17): - resolution: {integrity: sha512-ExRcCxNO768aWPQr9axuBDQLcFnRTSiqvWZ1XvnopCfZEic04wJ/CPAE1hLqTp7AyYrd6jHpqxa/aNKBAAFVeA==} - peerDependencies: - expo: '*' - dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - dev: false - - /expo-modules-autolinking@1.10.3: - resolution: {integrity: sha512-pn4n2Dl4iRh/zUeiChjRIe1C7EqOw1qhccr85viQV7W6l5vgRpY0osE51ij5LKg/kJmGRcJfs12+PwbdTplbKw==} - hasBin: true - dependencies: - '@expo/config': 8.5.6 - chalk: 4.1.2 - commander: 7.2.0 - fast-glob: 3.3.2 - find-up: 5.0.0 - fs-extra: 9.1.0 - transitivePeerDependencies: - - supports-color - dev: false - - /expo-modules-core@1.11.13: - resolution: {integrity: sha512-2H5qrGUvmLzmJNPDOnovH1Pfk5H/S/V0BifBmOQyDc9aUh9LaDwkqnChZGIXv8ZHDW8JRlUW0QqyWxTggkbw1A==} - dependencies: - invariant: 2.2.4 - dev: false - - /expo-navigation-bar@2.8.1(expo@50.0.17): - resolution: {integrity: sha512-aT5G+7SUsXDVPsRwp8fF940ycka1ABb4g3QKvTZN3YP6kMWvsiYEmRqMIJVy0zUr/i6bxBG1ZergkXimWrFt3w==} - peerDependencies: - expo: '*' - dependencies: - '@react-native/normalize-color': 2.1.0 - debug: 4.3.4 - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - transitivePeerDependencies: - - supports-color - dev: false - - /expo-network@5.8.0(expo@50.0.17): - resolution: {integrity: sha512-mTtyqRgLKvXWB+xCoY5WMtRrpVqYmcXWz3YbyN+X0HRGqXg7a+UYOXeKlxrkwBiadsElhmfMeaj1UpmW79Zw/w==} - peerDependencies: - expo: '*' - dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - dev: false - - /expo-pod-pinner@1.0.1: - resolution: {integrity: sha512-UeyCRXrI13tjb+rtQkjBjgs+eS1KntAgTRnLoawFdMp8s1T2bOcm9P4cIrFlLHt9aZBLLMdHra1TY6LiMI3+kw==} - dev: false - - /expo-router@3.4.8(expo-constants@15.4.6)(expo-linking@6.2.2)(expo-modules-autolinking@1.10.3)(expo-status-bar@1.11.1)(expo@50.0.17)(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react-native-safe-area-context@4.8.2)(react-native-screens@3.29.0)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-fOOAWHH4LSPjPFtIZbApxdTNU8xSS8qKvhZ7PfWNMfx9510J1R1Ce/nwENPzcRLHRuVofDsSAEBfi4kV03fJwg==} - peerDependencies: - '@react-navigation/drawer': ^6.5.8 - '@testing-library/jest-native': '*' - expo: '*' - expo-constants: '*' - expo-linking: '*' - expo-status-bar: '*' - react-native-reanimated: '*' - react-native-safe-area-context: '*' - react-native-screens: '*' - peerDependenciesMeta: - '@react-navigation/drawer': - optional: true - '@testing-library/jest-native': - optional: true - react-native-reanimated: - optional: true - dependencies: - '@expo/metro-runtime': 3.1.3(react-native@0.73.6) - '@expo/server': 0.3.1 - '@radix-ui/react-slot': 1.0.1(react@18.2.0) - '@react-navigation/bottom-tabs': 6.5.20(@react-navigation/native@6.1.17)(react-native-safe-area-context@4.8.2)(react-native-screens@3.29.0)(react-native@0.73.6)(react@18.2.0) - '@react-navigation/native': 6.1.17(react-native@0.73.6)(react@18.2.0) - '@react-navigation/native-stack': 6.9.26(@react-navigation/native@6.1.17)(react-native-safe-area-context@4.8.2)(react-native-screens@3.29.0)(react-native@0.73.6)(react@18.2.0) - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - expo-constants: 15.4.6(expo@50.0.17) - expo-linking: 6.2.2(expo@50.0.17) - expo-splash-screen: 0.26.4(expo-modules-autolinking@1.10.3)(expo@50.0.17) - expo-status-bar: 1.11.1 - react-helmet-async: 1.3.0(react-dom@18.2.0)(react@18.2.0) - react-native-reanimated: 3.6.3(@babel/core@7.24.5)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6)(@babel/plugin-proposal-optional-chaining@7.21.0)(@babel/plugin-transform-arrow-functions@7.24.1)(@babel/plugin-transform-shorthand-properties@7.24.1)(@babel/plugin-transform-template-literals@7.24.1)(react-native@0.73.6)(react@18.2.0) - react-native-safe-area-context: 4.8.2(react-native@0.73.6)(react@18.2.0) - react-native-screens: 3.29.0(react-native@0.73.6)(react@18.2.0) - schema-utils: 4.2.0 - transitivePeerDependencies: - - encoding - - expo-modules-autolinking - - react - - react-dom - - react-native - - supports-color - dev: false - - /expo-screen-orientation@6.4.1(expo@50.0.17): - resolution: {integrity: sha512-VM0C9ORNL1aT6Dr2OUeryzV519n0FjtXI2m+HlijOMi1QT2bPg4tBkCd7HLgywU4dZ1Esa46ewUudmk+fOqmMQ==} - peerDependencies: - expo: '*' - dependencies: - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - dev: false - - /expo-splash-screen@0.26.4(expo-modules-autolinking@1.10.3)(expo@50.0.17): - resolution: {integrity: sha512-2DwofTQ0FFQCsvDysm/msENsbyNsJiAJwK3qK/oXeizECAPqD7bK19J4z9kuEbr7ORPX9MLnTQYKl6kmX3keUg==} - peerDependencies: - expo: '*' - dependencies: - '@expo/prebuild-config': 6.7.4(expo-modules-autolinking@1.10.3) - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - transitivePeerDependencies: - - encoding - - expo-modules-autolinking - - supports-color - dev: false - - /expo-status-bar@1.11.1: - resolution: {integrity: sha512-ddQEtCOgYHTLlFUe/yH67dDBIoct5VIULthyT3LRJbEwdpzAgueKsX2FYK02ldh440V87PWKCamh7R9evk1rrg==} - dev: false - - /expo-system-ui@2.9.4(expo@50.0.17): - resolution: {integrity: sha512-ExJ8AzEZjb/zbg6nRLrN/mqxWr6e4fAcT0LBN/YvPZljbMo23HU+/lPy0/YctF1tRRvQ3Z95ABSNjnx9ajQBjg==} - peerDependencies: - expo: '*' - dependencies: - '@react-native/normalize-color': 2.1.0 - debug: 4.3.4 - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - transitivePeerDependencies: - - supports-color - dev: false - - /expo-web-browser@12.8.2(expo@50.0.17): - resolution: {integrity: sha512-Mw8WoFMSADecNjtC4PZVsVj1/lYdxIAH1jOVV+F8v8SEWYxORWofoShfXg7oUxRLu0iUG8JETfO5y4m8+fOgdg==} - peerDependencies: - expo: '*' - dependencies: - compare-urls: 2.0.0 - expo: 50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81) - url: 0.11.3 - dev: false - - /expo@50.0.17(@babel/core@7.24.5)(@react-native/babel-preset@0.74.81): - resolution: {integrity: sha512-eD8Nh10BgVwecU7EVyogx7X314ajxVpJdFwkXhi341AD61S2WPX31NMHW82XGXas6dbDjdbgtaOMo5H/vylB7Q==} - hasBin: true - dependencies: - '@babel/runtime': 7.24.5 - '@expo/cli': 0.17.10(@react-native/babel-preset@0.74.81)(expo-modules-autolinking@1.10.3) - '@expo/config': 8.5.6 - '@expo/config-plugins': 7.9.1 - '@expo/metro-config': 0.17.7(@react-native/babel-preset@0.74.81) - '@expo/vector-icons': 14.0.1 - babel-preset-expo: 10.0.2(@babel/core@7.24.5) - expo-asset: 9.0.2(expo@50.0.17) - expo-file-system: 16.0.9(expo@50.0.17) - expo-font: 11.10.3(expo@50.0.17) - expo-keep-awake: 12.8.2(expo@50.0.17) - expo-modules-autolinking: 1.10.3 - expo-modules-core: 1.11.13 - fbemitter: 3.0.0 - whatwg-url-without-unicode: 8.0.0-3 - transitivePeerDependencies: - - '@babel/core' - - '@react-native/babel-preset' - - bluebird - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: true - - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - /fast-loops@1.1.3: - resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==} - dev: false - - /fast-xml-parser@4.3.6: - resolution: {integrity: sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==} - hasBin: true - dependencies: - strnum: 1.0.5 - dev: false - - /fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - dependencies: - reusify: 1.0.4 - - /fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - dependencies: - bser: 2.1.1 - dev: false - - /fbemitter@3.0.0: - resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} - dependencies: - fbjs: 3.0.5 - transitivePeerDependencies: - - encoding - dev: false - - /fbjs-css-vars@1.0.2: - resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} - dev: false - - /fbjs@3.0.5: - resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} - dependencies: - cross-fetch: 3.1.8 - fbjs-css-vars: 1.0.2 - loose-envify: 1.4.0 - object-assign: 4.1.1 - promise: 7.3.1 - setimmediate: 1.0.5 - ua-parser-js: 1.0.37 - transitivePeerDependencies: - - encoding - dev: false - - /fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.3.3 - dev: false - - /fetch-retry@4.1.1: - resolution: {integrity: sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==} - dev: false - - /ffmpeg-kit-react-native@6.0.2(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-r9uSmahq8TeyIb7fXf3ft+uUXyoeWRFa99+khjo0TAzWO9y0z9wU7eGnab9JLw1MmCB9v64o4yojNluJhVm9nQ==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - dependencies: - escape-string-regexp: 1.0.5 - dev: true - - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.2.0 - - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - - /filter-obj@1.1.0: - resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} - engines: {node: '>=0.10.0'} - dev: false - - /finalhandler@1.1.2: - resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} - engines: {node: '>= 0.8'} - dependencies: - debug: 2.6.9 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.3.0 - parseurl: 1.3.3 - statuses: 1.5.0 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /find-babel-config@2.1.1: - resolution: {integrity: sha512-5Ji+EAysHGe1OipH7GN4qDjok5Z1uw5KAwDCbicU/4wyTZY7CqOCzcWbG7J5ad9mazq67k89fXlbc1MuIfl9uA==} - dependencies: - json5: 2.2.3 - path-exists: 4.0.0 - dev: true - - /find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} - dependencies: - commondir: 1.0.1 - make-dir: 2.1.0 - pkg-dir: 3.0.0 - dev: false - - /find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} - dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 - dev: false - - /find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - dev: false - - /find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - dependencies: - locate-path: 3.0.0 - - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: false - - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - /find-value@1.0.12: - resolution: {integrity: sha512-OCpo8LTk8eZ2sdDCwbU2Lc3ivYsdM6yod6jP2jHcNEFcjPhkgH0+POzTIol7xx1LZgtbI5rkO5jqxsG5MWtPjQ==} - dev: false - - /find-yarn-workspace-root@2.0.0: - resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} - dependencies: - micromatch: 4.0.5 - dev: false - - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.3.1 - keyv: 4.5.4 - rimraf: 3.0.2 - - /flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - - /flow-enums-runtime@0.0.6: - resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - dev: false - - /flow-parser@0.206.0: - resolution: {integrity: sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==} - engines: {node: '>=0.4.0'} - dev: false - - /fontfaceobserver@2.3.0: - resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} - dev: false - - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - dependencies: - is-callable: 1.2.7 - dev: false - - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - dev: false - - /form-data@3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: false - - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: false - - /formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - dependencies: - fetch-blob: 3.2.0 - dev: false - - /framer-motion@6.5.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} - peerDependencies: - react: '>=16.8 || ^17.0.0 || ^18.0.0' - react-dom: '>=16.8 || ^17.0.0 || ^18.0.0' - dependencies: - '@motionone/dom': 10.12.0 - framesync: 6.0.1 - hey-listen: 1.0.8 - popmotion: 11.0.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - style-value-types: 5.0.0 - tslib: 2.6.2 - optionalDependencies: - '@emotion/is-prop-valid': 0.8.8 - dev: false - - /framesync@6.0.1: - resolution: {integrity: sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==} - dependencies: - tslib: 2.6.2 - dev: false - - /freeport-async@2.0.0: - resolution: {integrity: sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==} - engines: {node: '>=8'} - dev: false - - /fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - dev: false - - /fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - dev: true - - /fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - /fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: false - - /fs-extra@9.0.0: - resolution: {integrity: sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==} - engines: {node: '>=10'} - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 1.0.0 - dev: false - - /fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - dev: false - - /fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - functions-have-names: 1.2.3 - dev: false - - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: false - - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: false - - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - dev: false - - /get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - dev: false - - /get-port@3.2.0: - resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} - engines: {node: '>=4'} - dev: false - - /get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - dependencies: - pump: 3.0.0 - dev: false - - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - /get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - dev: false - - /get-tsconfig@4.7.3: - resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} - dependencies: - resolve-pkg-maps: 1.0.0 - dev: false - - /get-uri@6.0.3: - resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} - engines: {node: '>= 14'} - dependencies: - basic-ftp: 5.0.5 - data-uri-to-buffer: 6.0.2 - debug: 4.3.4 - fs-extra: 11.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /getenv@1.0.0: - resolution: {integrity: sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==} - engines: {node: '>=6'} - dev: false - - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - - /glob@10.3.12: - resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.6 - minimatch: 9.0.4 - minipass: 7.0.4 - path-scurry: 1.10.2 - dev: false - - /glob@6.0.4: - resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} - requiresBuild: true - dependencies: - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: false - optional: true - - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: false - - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - /glob@9.3.5: - resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - fs.realpath: 1.0.0 - minimatch: 8.0.4 - minipass: 4.2.8 - path-scurry: 1.10.2 - dev: true - - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - - /globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.1 - gopd: 1.0.1 - dev: false - - /globby@10.0.2: - resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} - engines: {node: '>=8'} - dependencies: - '@types/glob': 7.2.0 - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - glob: 7.2.3 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 - dev: true - - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 - - /globby@13.2.2: - resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 4.0.0 - dev: false - - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - dependencies: - get-intrinsic: 1.2.4 - dev: false - - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - /gradient-string@2.0.2: - resolution: {integrity: sha512-rEDCuqUQ4tbD78TpzsMtt5OIf0cBCSDWSJtUDaF6JsAh+k0v9r++NzxNEG87oDZx9ZwGhD8DaezR2L/yrw0Jdw==} - engines: {node: '>=10'} - dependencies: - chalk: 4.1.2 - tinygradient: 1.1.5 - dev: true - - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - /graphql-tag@2.12.6(graphql@15.8.0): - resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} - engines: {node: '>=10'} - peerDependencies: - graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - graphql: 15.8.0 - tslib: 2.6.2 - dev: false - - /graphql@15.8.0: - resolution: {integrity: sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==} - engines: {node: '>= 10.x'} - dev: false - - /handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} - engines: {node: '>=0.4.7'} - hasBin: true - dependencies: - minimist: 1.2.8 - neo-async: 2.6.2 - source-map: 0.6.1 - wordwrap: 1.0.0 - optionalDependencies: - uglify-js: 3.17.4 - dev: true - - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: false - - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - dependencies: - es-define-property: 1.0.0 - dev: false - - /has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - dev: false - - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: false - - /has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: false - - /hash-base@3.0.4: - resolution: {integrity: sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==} - engines: {node: '>=4'} - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: false - - /hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - dev: false - - /hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - dev: false - - /hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - dependencies: - function-bind: 1.1.2 - - /header-case@1.0.1: - resolution: {integrity: sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==} - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 - dev: true - - /hermes-estree@0.15.0: - resolution: {integrity: sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ==} - dev: false - - /hermes-estree@0.19.1: - resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} - dev: false - - /hermes-estree@0.20.1: - resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} - dev: false - - /hermes-parser@0.15.0: - resolution: {integrity: sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==} - dependencies: - hermes-estree: 0.15.0 - dev: false - - /hermes-parser@0.19.1: - resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} - dependencies: - hermes-estree: 0.19.1 - dev: false - - /hermes-parser@0.20.1: - resolution: {integrity: sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==} - dependencies: - hermes-estree: 0.20.1 - dev: false - - /hermes-profile-transformer@0.0.6: - resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} - engines: {node: '>=8'} - dependencies: - source-map: 0.7.4 - dev: false - - /hey-listen@1.0.8: - resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} - dev: false - - /hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - dev: false - - /hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - dependencies: - react-is: 16.13.1 - dev: false - - /hosted-git-info@3.0.8: - resolution: {integrity: sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==} - engines: {node: '>=10'} - dependencies: - lru-cache: 6.0.0 - dev: false - - /htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - entities: 4.5.0 - dev: false - - /http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - dev: false - - /http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.1 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - - /https-proxy-agent@7.0.4: - resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.1 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - /hyphenate-style-name@1.0.4: - resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} - dev: false - - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: true - - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - /ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - - /image-size@1.1.1: - resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} - engines: {node: '>=16.x'} - hasBin: true - dependencies: - queue: 6.0.2 - dev: false - - /immer@10.1.1: - resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} - dev: false - - /import-fresh@2.0.0: - resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} - engines: {node: '>=4'} - dependencies: - caller-path: 2.0.0 - resolve-from: 3.0.0 - dev: false - - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - /infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - dev: false - - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - /inline-style-prefixer@6.0.4: - resolution: {integrity: sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==} - dependencies: - css-in-js-utils: 3.1.0 - fast-loops: 1.1.3 - dev: false - - /inquirer@7.3.3: - resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} - engines: {node: '>=8.0.0'} - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - run-async: 2.4.1 - rxjs: 6.6.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - dev: true - - /inquirer@8.2.6: - resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} - engines: {node: '>=12.0.0'} - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.1 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 6.2.0 - dev: true - - /internal-ip@4.3.0: - resolution: {integrity: sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==} - engines: {node: '>=6'} - dependencies: - default-gateway: 4.2.0 - ipaddr.js: 1.9.1 - dev: false - - /internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.0.6 - dev: false - - /invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - dependencies: - loose-envify: 1.4.0 - dev: false - - /ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} - engines: {node: '>= 12'} - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 - dev: true - - /ip-regex@2.1.0: - resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} - engines: {node: '>=4'} - dev: false - - /ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - dev: false - - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - dev: false - - /is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - dev: false - - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: false - - /is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: false - - /is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: false - - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - dependencies: - has-bigints: 1.0.2 - dev: false - - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.3.0 - dev: false - - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - dev: false - - /is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: false - - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: false - - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - dependencies: - hasown: 2.0.2 - - /is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} - dependencies: - is-typed-array: 1.1.13 - dev: false - - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: false - - /is-directory@0.3.1: - resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} - engines: {node: '>=0.10.0'} - dev: false - - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: false - - /is-extglob@1.0.0: - resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==} - engines: {node: '>=0.10.0'} - dev: false - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - /is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - dependencies: - call-bind: 1.0.7 - dev: false - - /is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - dev: false - - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: false - - /is-glob@2.0.1: - resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 1.0.0 - dev: false - - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - - /is-invalid-path@0.1.0: - resolution: {integrity: sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-glob: 2.0.1 - dev: false - - /is-lower-case@1.1.3: - resolution: {integrity: sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==} - dependencies: - lower-case: 1.1.4 - dev: true - - /is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - dev: false - - /is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - dev: false - - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: false - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - /is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - /is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - dev: false - - /is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: false - - /is-primitive@3.0.1: - resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} - engines: {node: '>=0.10.0'} - dev: false - - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - dev: false - - /is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - dev: false - - /is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - dev: false - - /is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - dev: false - - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: false - - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: false - - /is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - dependencies: - which-typed-array: 1.1.15 - dev: false - - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - /is-upper-case@1.1.2: - resolution: {integrity: sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==} - dependencies: - upper-case: 1.1.3 - dev: true - - /is-valid-path@0.1.1: - resolution: {integrity: sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==} - engines: {node: '>=0.10.0'} - dependencies: - is-invalid-path: 0.1.0 - dev: false - - /is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - dev: false - - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.7 - dev: false - - /is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - dev: false - - /is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - dev: false - - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: false - - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false - - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: false - - /isbinaryfile@4.0.10: - resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} - engines: {node: '>= 8.0.0'} - dev: true - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - /iso-639-1@3.1.2: - resolution: {integrity: sha512-Le7BRl3Jt9URvaiEHJCDEdvPZCfhiQoXnFgLAWNRhzFMwRFdWO7/5tLRQbiPzE394I9xd7KdRCM7S6qdOhwG5A==} - engines: {node: '>=6.0'} - dev: false - - /isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - dev: false - - /iterate-object@1.3.4: - resolution: {integrity: sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==} - dev: false - - /iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.6 - set-function-name: 2.0.2 - dev: false - - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - dev: false - - /jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.12.8 - jest-mock: 29.7.0 - jest-util: 29.7.0 - dev: false - - /jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: false - - /jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/code-frame': 7.24.2 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 - dev: false - - /jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.12.8 - jest-util: 29.7.0 - dev: false - - /jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.12.8 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - dev: false - - /jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.6.3 - leven: 3.1.0 - pretty-format: 29.7.0 - dev: false - - /jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@types/node': 20.12.8 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: false - - /jimp-compact@0.16.1: - resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} - dev: false - - /jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} - hasBin: true - dev: false - - /joi@17.13.0: - resolution: {integrity: sha512-9qcrTyoBmFZRNHeVP4edKqIUEgFzq7MHvTNSDuHSqkpOPtiBkgNgcmTSqmiw1kw9tdKaiddvIDv/eCJDxmqWCA==} - dependencies: - '@hapi/hoek': 9.3.0 - '@hapi/topo': 5.1.0 - '@sideway/address': 4.1.5 - '@sideway/formula': 3.0.1 - '@sideway/pinpoint': 2.0.0 - dev: false - - /join-component@1.1.0: - resolution: {integrity: sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==} - dev: false - - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: false - - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - - /jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - dev: true - - /jsc-android@250231.0.0: - resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} - dev: false - - /jsc-safe-url@0.2.4: - resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} - dev: false - - /jscodeshift@0.14.0(@babel/preset-env@7.24.5): - resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - dependencies: - '@babel/core': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/preset-env': 7.24.5(@babel/core@7.24.5) - '@babel/preset-flow': 7.24.1(@babel/core@7.24.5) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.5) - '@babel/register': 7.23.7(@babel/core@7.24.5) - babel-core: 7.0.0-bridge.0(@babel/core@7.24.5) - chalk: 4.1.2 - flow-parser: 0.206.0 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - neo-async: 2.6.2 - node-dir: 0.1.17 - recast: 0.21.5 - temp: 0.8.4 - write-file-atomic: 2.4.3 - transitivePeerDependencies: - - supports-color - dev: false - - /jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: false - - /json-schema-deref-sync@0.13.0: - resolution: {integrity: sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==} - engines: {node: '>=6.0.0'} - dependencies: - clone: 2.1.2 - dag-map: 1.0.2 - is-valid-path: 0.1.1 - lodash: 4.17.21 - md5: 2.2.1 - memory-cache: 0.2.0 - traverse: 0.6.9 - valid-url: 1.0.9 - dev: false - - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: false - - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: false - - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - optionalDependencies: - graceful-fs: 4.2.11 - dev: false - - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - /jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - dependencies: - array-includes: 3.1.8 - array.prototype.flat: 1.3.2 - object.assign: 4.1.5 - object.values: 1.2.0 - dev: false - - /keymirror@0.1.1: - resolution: {integrity: sha512-vIkZAFWoDijgQT/Nvl2AHCMmnegN2ehgTPYuyy2hWQkQSntI0S7ESYqdLkoSe1HyEBFHHkCgSIvVdSEiWwKvCg==} - dev: false - - /keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - dependencies: - json-buffer: 3.0.1 - - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: false - - /kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: false - - /language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} - dev: false - - /language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - dependencies: - language-subtag-registry: 0.3.22 - dev: false - - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: false - - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - /lighthouse-logger@1.4.2: - resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} - dependencies: - debug: 2.6.9 - marky: 1.2.5 - transitivePeerDependencies: - - supports-color - dev: false - - /lightningcss-darwin-arm64@1.19.0: - resolution: {integrity: sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /lightningcss-darwin-arm64@1.22.0: - resolution: {integrity: sha512-aH2be3nNny+It5YEVm8tBSSdRlBVWQV8m2oJ7dESiYRzyY/E/bQUe2xlw5caaMuhlM9aoTMtOH25yzMhir0qPg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /lightningcss-darwin-x64@1.19.0: - resolution: {integrity: sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /lightningcss-darwin-x64@1.22.0: - resolution: {integrity: sha512-9KHRFA0Y6mNxRHeoQMp0YaI0R0O2kOgUlYPRjuasU4d+pI8NRhVn9bt0yX9VPs5ibWX1RbDViSPtGJvYYrfVAQ==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /lightningcss-freebsd-x64@1.22.0: - resolution: {integrity: sha512-xaYL3xperGwD85rQioDb52ozF3NAJb+9wrge3jD9lxGffplu0Mn35rXMptB8Uc2N9Mw1i3Bvl7+z1evlqVl7ww==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /lightningcss-linux-arm-gnueabihf@1.19.0: - resolution: {integrity: sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /lightningcss-linux-arm-gnueabihf@1.22.0: - resolution: {integrity: sha512-epQGvXIjOuxrZpMpMnRjK54ZqzhiHhCPLtHvw2fb6NeK2kK9YtF0wqmeTBiQ1AkbWfnnXGTstYaFNiadNK+StQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /lightningcss-linux-arm64-gnu@1.19.0: - resolution: {integrity: sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /lightningcss-linux-arm64-gnu@1.22.0: - resolution: {integrity: sha512-AArGtKSY4DGTA8xP8SDyNyKtpsUl1Rzq6FW4JomeyUQ4nBrR71uPChksTpj3gmWuGhZeRKLeCUI1DBid/zhChg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /lightningcss-linux-arm64-musl@1.19.0: - resolution: {integrity: sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /lightningcss-linux-arm64-musl@1.22.0: - resolution: {integrity: sha512-RRraNgP8hnBPhInTTUdlFm+z16C/ghbxBG51Sw00hd7HUyKmEUKRozyc5od+/N6pOrX/bIh5vIbtMXIxsos0lg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /lightningcss-linux-x64-gnu@1.19.0: - resolution: {integrity: sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /lightningcss-linux-x64-gnu@1.22.0: - resolution: {integrity: sha512-grdrhYGRi2KrR+bsXJVI0myRADqyA7ekprGxiuK5QRNkv7kj3Yq1fERDNyzZvjisHwKUi29sYMClscbtl+/Zpw==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /lightningcss-linux-x64-musl@1.19.0: - resolution: {integrity: sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /lightningcss-linux-x64-musl@1.22.0: - resolution: {integrity: sha512-t5f90X+iQUtIyR56oXIHMBUyQFX/zwmPt72E6Dane3P8KNGlkijTg2I75XVQS860gNoEFzV7Mm5ArRRA7u5CAQ==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /lightningcss-win32-x64-msvc@1.19.0: - resolution: {integrity: sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /lightningcss-win32-x64-msvc@1.22.0: - resolution: {integrity: sha512-64HTDtOOZE9PUCZJiZZQpyqXBbdby1lnztBccnqh+NtbKxjnGzP92R2ngcgeuqMPecMNqNWxgoWgTGpC+yN5Sw==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /lightningcss@1.19.0: - resolution: {integrity: sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==} - engines: {node: '>= 12.0.0'} - dependencies: - detect-libc: 1.0.3 - optionalDependencies: - lightningcss-darwin-arm64: 1.19.0 - lightningcss-darwin-x64: 1.19.0 - lightningcss-linux-arm-gnueabihf: 1.19.0 - lightningcss-linux-arm64-gnu: 1.19.0 - lightningcss-linux-arm64-musl: 1.19.0 - lightningcss-linux-x64-gnu: 1.19.0 - lightningcss-linux-x64-musl: 1.19.0 - lightningcss-win32-x64-msvc: 1.19.0 - dev: false - - /lightningcss@1.22.0: - resolution: {integrity: sha512-+z0qvwRVzs4XGRXelnWRNwqsXUx8k3bSkbP8vD42kYKSk3z9OM2P3e/gagT7ei/gwh8DTS80LZOFZV6lm8Z8Fg==} - engines: {node: '>= 12.0.0'} - dependencies: - detect-libc: 1.0.3 - optionalDependencies: - lightningcss-darwin-arm64: 1.22.0 - lightningcss-darwin-x64: 1.22.0 - lightningcss-freebsd-x64: 1.22.0 - lightningcss-linux-arm-gnueabihf: 1.22.0 - lightningcss-linux-arm64-gnu: 1.22.0 - lightningcss-linux-arm64-musl: 1.22.0 - lightningcss-linux-x64-gnu: 1.22.0 - lightningcss-linux-x64-musl: 1.22.0 - lightningcss-win32-x64-msvc: 1.22.0 - dev: false - - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - dev: false - - /lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} - engines: {node: '>=14'} - dev: false - - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: false - - /linkify-it@2.2.0: - resolution: {integrity: sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==} - dependencies: - uc.micro: 1.0.6 - dev: false - - /locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: false - - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - - /lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - - /lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - dev: true - - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - /lodash.mergewith@4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - dev: false - - /lodash.throttle@4.1.1: - resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - dev: false - - /lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} - dev: false - - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - /log-symbols@2.2.0: - resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} - engines: {node: '>=4'} - dependencies: - chalk: 2.4.2 - dev: false - - /log-symbols@3.0.0: - resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} - engines: {node: '>=8'} - dependencies: - chalk: 2.4.2 - dev: true - - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - /logkitty@0.7.1: - resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} - hasBin: true - dependencies: - ansi-fragments: 0.2.1 - dayjs: 1.11.11 - yargs: 15.4.1 - dev: false - - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - dependencies: - js-tokens: 4.0.0 - dev: false - - /lower-case-first@1.0.2: - resolution: {integrity: sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==} - dependencies: - lower-case: 1.1.4 - dev: true - - /lower-case@1.1.4: - resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} - dev: true - - /lru-cache@10.2.2: - resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} - engines: {node: 14 || >=16.14} - - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 - - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - - /lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - dev: true - - /make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - dependencies: - pify: 4.0.1 - semver: 5.7.2 - dev: false - - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.1 - dev: false - - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true - - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - dependencies: - tmpl: 1.0.5 - dev: false - - /markdown-it@10.0.0: - resolution: {integrity: sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==} - hasBin: true - dependencies: - argparse: 1.0.10 - entities: 2.0.3 - linkify-it: 2.2.0 - mdurl: 1.0.1 - uc.micro: 1.0.6 - dev: false - - /marky@1.2.5: - resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} - dev: false - - /md5-file@3.2.3: - resolution: {integrity: sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==} - engines: {node: '>=0.10'} - hasBin: true - dependencies: - buffer-alloc: 1.2.0 - dev: false - - /md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: false - - /md5@2.2.1: - resolution: {integrity: sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==} - dependencies: - charenc: 0.0.2 - crypt: 0.0.2 - is-buffer: 1.1.6 - dev: false - - /md5@2.3.0: - resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} - dependencies: - charenc: 0.0.2 - crypt: 0.0.2 - is-buffer: 1.1.6 - dev: false - - /md5hex@1.0.0: - resolution: {integrity: sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ==} - dev: false - - /mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - dev: false - - /mdurl@1.0.1: - resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} - dev: false - - /memoize-one@5.2.1: - resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - dev: false - - /memoize-one@6.0.0: - resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} - dev: false - - /memory-cache@0.2.0: - resolution: {integrity: sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==} - dev: false - - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - /metro-babel-transformer@0.80.8: - resolution: {integrity: sha512-TTzNwRZb2xxyv4J/+yqgtDAP2qVqH3sahsnFu6Xv4SkLqzrivtlnyUbaeTdJ9JjtADJUEjCbgbFgUVafrXdR9Q==} - engines: {node: '>=18'} - dependencies: - '@babel/core': 7.24.5 - hermes-parser: 0.20.1 - nullthrows: 1.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-babel-transformer@0.80.9: - resolution: {integrity: sha512-d76BSm64KZam1nifRZlNJmtwIgAeZhZG3fi3K+EmPOlrR8rDtBxQHDSN3fSGeNB9CirdTyabTMQCkCup6BXFSQ==} - engines: {node: '>=18'} - dependencies: - '@babel/core': 7.24.5 - hermes-parser: 0.20.1 - nullthrows: 1.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-cache-key@0.80.8: - resolution: {integrity: sha512-qWKzxrLsRQK5m3oH8ePecqCc+7PEhR03cJE6Z6AxAj0idi99dHOSitTmY0dclXVB9vP2tQIAE8uTd8xkYGk8fA==} - engines: {node: '>=18'} - dev: false - - /metro-cache-key@0.80.9: - resolution: {integrity: sha512-hRcYGhEiWIdM87hU0fBlcGr+tHDEAT+7LYNCW89p5JhErFt/QaAkVx4fb5bW3YtXGv5BTV7AspWPERoIb99CXg==} - engines: {node: '>=18'} - dev: false - - /metro-cache@0.80.8: - resolution: {integrity: sha512-5svz+89wSyLo7BxdiPDlwDTgcB9kwhNMfNhiBZPNQQs1vLFXxOkILwQiV5F2EwYT9DEr6OPZ0hnJkZfRQ8lDYQ==} - engines: {node: '>=18'} - dependencies: - metro-core: 0.80.8 - rimraf: 3.0.2 - dev: false - - /metro-cache@0.80.9: - resolution: {integrity: sha512-ujEdSI43QwI+Dj2xuNax8LMo8UgKuXJEdxJkzGPU6iIx42nYa1byQ+aADv/iPh5sh5a//h5FopraW5voXSgm2w==} - engines: {node: '>=18'} - dependencies: - metro-core: 0.80.9 - rimraf: 3.0.2 - dev: false - - /metro-config@0.80.8: - resolution: {integrity: sha512-VGQJpfJawtwRzGzGXVUoohpIkB0iPom4DmSbAppKfumdhtLA8uVeEPp2GM61kL9hRvdbMhdWA7T+hZFDlo4mJA==} - engines: {node: '>=18'} - dependencies: - connect: 3.7.0 - cosmiconfig: 5.2.1 - jest-validate: 29.7.0 - metro: 0.80.8 - metro-cache: 0.80.8 - metro-core: 0.80.8 - metro-runtime: 0.80.8 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /metro-config@0.80.9: - resolution: {integrity: sha512-28wW7CqS3eJrunRGnsibWldqgwRP9ywBEf7kg+uzUHkSFJNKPM1K3UNSngHmH0EZjomizqQA2Zi6/y6VdZMolg==} - engines: {node: '>=18'} - dependencies: - connect: 3.7.0 - cosmiconfig: 5.2.1 - jest-validate: 29.7.0 - metro: 0.80.9 - metro-cache: 0.80.9 - metro-core: 0.80.9 - metro-runtime: 0.80.9 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /metro-core@0.80.8: - resolution: {integrity: sha512-g6lud55TXeISRTleW6SHuPFZHtYrpwNqbyFIVd9j9Ofrb5IReiHp9Zl8xkAfZQp8v6ZVgyXD7c130QTsCz+vBw==} - engines: {node: '>=18'} - dependencies: - lodash.throttle: 4.1.1 - metro-resolver: 0.80.8 - dev: false - - /metro-core@0.80.9: - resolution: {integrity: sha512-tbltWQn+XTdULkGdzHIxlxk4SdnKxttvQQV3wpqqFbHDteR4gwCyTR2RyYJvxgU7HELfHtrVbqgqAdlPByUSbg==} - engines: {node: '>=18'} - dependencies: - lodash.throttle: 4.1.1 - metro-resolver: 0.80.9 - dev: false - - /metro-file-map@0.80.8: - resolution: {integrity: sha512-eQXMFM9ogTfDs2POq7DT2dnG7rayZcoEgRbHPXvhUWkVwiKkro2ngcBE++ck/7A36Cj5Ljo79SOkYwHaWUDYDw==} - engines: {node: '>=18'} - dependencies: - anymatch: 3.1.3 - debug: 2.6.9 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - invariant: 2.2.4 - jest-worker: 29.7.0 - micromatch: 4.0.5 - node-abort-controller: 3.1.1 - nullthrows: 1.1.1 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-file-map@0.80.9: - resolution: {integrity: sha512-sBUjVtQMHagItJH/wGU9sn3k2u0nrCl0CdR4SFMO1tksXLKbkigyQx4cbpcyPVOAmGTVuy3jyvBlELaGCAhplQ==} - engines: {node: '>=18'} - dependencies: - anymatch: 3.1.3 - debug: 2.6.9 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - invariant: 2.2.4 - jest-worker: 29.7.0 - micromatch: 4.0.5 - node-abort-controller: 3.1.1 - nullthrows: 1.1.1 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-minify-terser@0.80.8: - resolution: {integrity: sha512-y8sUFjVvdeUIINDuW1sejnIjkZfEF+7SmQo0EIpYbWmwh+kq/WMj74yVaBWuqNjirmUp1YNfi3alT67wlbBWBQ==} - engines: {node: '>=18'} - dependencies: - terser: 5.31.0 - dev: false - - /metro-minify-terser@0.80.9: - resolution: {integrity: sha512-FEeCeFbkvvPuhjixZ1FYrXtO0araTpV6UbcnGgDUpH7s7eR5FG/PiJz3TsuuPP/HwCK19cZtQydcA2QrCw446A==} - engines: {node: '>=18'} - dependencies: - terser: 5.31.0 - dev: false - - /metro-resolver@0.80.8: - resolution: {integrity: sha512-JdtoJkP27GGoZ2HJlEsxs+zO7jnDUCRrmwXJozTlIuzLHMRrxgIRRby9fTCbMhaxq+iA9c+wzm3iFb4NhPmLbQ==} - engines: {node: '>=18'} - dev: false - - /metro-resolver@0.80.9: - resolution: {integrity: sha512-wAPIjkN59BQN6gocVsAvvpZ1+LQkkqUaswlT++cJafE/e54GoVkMNCmrR4BsgQHr9DknZ5Um/nKueeN7kaEz9w==} - engines: {node: '>=18'} - dev: false - - /metro-runtime@0.80.8: - resolution: {integrity: sha512-2oScjfv6Yb79PelU1+p8SVrCMW9ZjgEiipxq7jMRn8mbbtWzyv3g8Mkwr+KwOoDFI/61hYPUbY8cUnu278+x1g==} - engines: {node: '>=18'} - dependencies: - '@babel/runtime': 7.24.5 - dev: false - - /metro-runtime@0.80.9: - resolution: {integrity: sha512-8PTVIgrVcyU+X/rVCy/9yxNlvXsBCk5JwwkbAm/Dm+Abo6NBGtNjWF0M1Xo/NWCb4phamNWcD7cHdR91HhbJvg==} - engines: {node: '>=18'} - dependencies: - '@babel/runtime': 7.24.5 - dev: false - - /metro-source-map@0.80.8: - resolution: {integrity: sha512-+OVISBkPNxjD4eEKhblRpBf463nTMk3KMEeYS8Z4xM/z3qujGJGSsWUGRtH27+c6zElaSGtZFiDMshEb8mMKQg==} - engines: {node: '>=18'} - dependencies: - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - invariant: 2.2.4 - metro-symbolicate: 0.80.8 - nullthrows: 1.1.1 - ob1: 0.80.8 - source-map: 0.5.7 - vlq: 1.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-source-map@0.80.9: - resolution: {integrity: sha512-RMn+XS4VTJIwMPOUSj61xlxgBvPeY4G6s5uIn6kt6HB6A/k9ekhr65UkkDD7WzHYs3a9o869qU8tvOZvqeQzgw==} - engines: {node: '>=18'} - dependencies: - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - invariant: 2.2.4 - metro-symbolicate: 0.80.9 - nullthrows: 1.1.1 - ob1: 0.80.9 - source-map: 0.5.7 - vlq: 1.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-symbolicate@0.80.8: - resolution: {integrity: sha512-nwhYySk79jQhwjL9QmOUo4wS+/0Au9joEryDWw7uj4kz2yvw1uBjwmlql3BprQCBzRdB3fcqOP8kO8Es+vE31g==} - engines: {node: '>=18'} - hasBin: true - dependencies: - invariant: 2.2.4 - metro-source-map: 0.80.8 - nullthrows: 1.1.1 - source-map: 0.5.7 - through2: 2.0.5 - vlq: 1.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-symbolicate@0.80.9: - resolution: {integrity: sha512-Ykae12rdqSs98hg41RKEToojuIW85wNdmSe/eHUgMkzbvCFNVgcC0w3dKZEhSsqQOXapXRlLtHkaHLil0UD/EA==} - engines: {node: '>=18'} - hasBin: true - dependencies: - invariant: 2.2.4 - metro-source-map: 0.80.9 - nullthrows: 1.1.1 - source-map: 0.5.7 - through2: 2.0.5 - vlq: 1.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-transform-plugins@0.80.8: - resolution: {integrity: sha512-sSu8VPL9Od7w98MftCOkQ1UDeySWbsIAS5I54rW22BVpPnI3fQ42srvqMLaJUQPjLehUanq8St6OMBCBgH/UWw==} - engines: {node: '>=18'} - dependencies: - '@babel/core': 7.24.5 - '@babel/generator': 7.24.5 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - nullthrows: 1.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-transform-plugins@0.80.9: - resolution: {integrity: sha512-UlDk/uc8UdfLNJhPbF3tvwajyuuygBcyp+yBuS/q0z3QSuN/EbLllY3rK8OTD9n4h00qZ/qgxGv/lMFJkwP4vg==} - engines: {node: '>=18'} - dependencies: - '@babel/core': 7.24.5 - '@babel/generator': 7.24.5 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - nullthrows: 1.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-transform-worker@0.80.8: - resolution: {integrity: sha512-+4FG3TQk3BTbNqGkFb2uCaxYTfsbuFOCKMMURbwu0ehCP8ZJuTUramkaNZoATS49NSAkRgUltgmBa4YaKZ5mqw==} - engines: {node: '>=18'} - dependencies: - '@babel/core': 7.24.5 - '@babel/generator': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - metro: 0.80.8 - metro-babel-transformer: 0.80.8 - metro-cache: 0.80.8 - metro-cache-key: 0.80.8 - metro-minify-terser: 0.80.8 - metro-source-map: 0.80.8 - metro-transform-plugins: 0.80.8 - nullthrows: 1.1.1 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /metro-transform-worker@0.80.9: - resolution: {integrity: sha512-c/IrzMUVnI0hSVVit4TXzt3A1GiUltGVlzCmLJWxNrBGHGrJhvgePj38+GXl1Xf4Fd4vx6qLUkKMQ3ux73bFLQ==} - engines: {node: '>=18'} - dependencies: - '@babel/core': 7.24.5 - '@babel/generator': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - metro: 0.80.9 - metro-babel-transformer: 0.80.9 - metro-cache: 0.80.9 - metro-cache-key: 0.80.9 - metro-minify-terser: 0.80.9 - metro-source-map: 0.80.9 - metro-transform-plugins: 0.80.9 - nullthrows: 1.1.1 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /metro@0.80.8: - resolution: {integrity: sha512-in7S0W11mg+RNmcXw+2d9S3zBGmCARDxIwoXJAmLUQOQoYsRP3cpGzyJtc7WOw8+FXfpgXvceD0u+PZIHXEL7g==} - engines: {node: '>=18'} - hasBin: true - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/core': 7.24.5 - '@babel/generator': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - accepts: 1.3.8 - chalk: 4.1.2 - ci-info: 2.0.0 - connect: 3.7.0 - debug: 2.6.9 - denodeify: 1.2.1 - error-stack-parser: 2.1.4 - graceful-fs: 4.2.11 - hermes-parser: 0.20.1 - image-size: 1.1.1 - invariant: 2.2.4 - jest-worker: 29.7.0 - jsc-safe-url: 0.2.4 - lodash.throttle: 4.1.1 - metro-babel-transformer: 0.80.8 - metro-cache: 0.80.8 - metro-cache-key: 0.80.8 - metro-config: 0.80.8 - metro-core: 0.80.8 - metro-file-map: 0.80.8 - metro-resolver: 0.80.8 - metro-runtime: 0.80.8 - metro-source-map: 0.80.8 - metro-symbolicate: 0.80.8 - metro-transform-plugins: 0.80.8 - metro-transform-worker: 0.80.8 - mime-types: 2.1.35 - node-fetch: 2.7.0 - nullthrows: 1.1.1 - rimraf: 3.0.2 - serialize-error: 2.1.0 - source-map: 0.5.7 - strip-ansi: 6.0.1 - throat: 5.0.0 - ws: 7.5.9 - yargs: 17.7.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /metro@0.80.9: - resolution: {integrity: sha512-Bc57Xf3GO2Xe4UWQsBj/oW6YfLPABEu8jfDVDiNmJvoQW4CO34oDPuYKe4KlXzXhcuNsqOtSxpbjCRRVjhhREg==} - engines: {node: '>=18'} - hasBin: true - dependencies: - '@babel/code-frame': 7.24.2 - '@babel/core': 7.24.5 - '@babel/generator': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - accepts: 1.3.8 - chalk: 4.1.2 - ci-info: 2.0.0 - connect: 3.7.0 - debug: 2.6.9 - denodeify: 1.2.1 - error-stack-parser: 2.1.4 - graceful-fs: 4.2.11 - hermes-parser: 0.20.1 - image-size: 1.1.1 - invariant: 2.2.4 - jest-worker: 29.7.0 - jsc-safe-url: 0.2.4 - lodash.throttle: 4.1.1 - metro-babel-transformer: 0.80.9 - metro-cache: 0.80.9 - metro-cache-key: 0.80.9 - metro-config: 0.80.9 - metro-core: 0.80.9 - metro-file-map: 0.80.9 - metro-resolver: 0.80.9 - metro-runtime: 0.80.9 - metro-source-map: 0.80.9 - metro-symbolicate: 0.80.9 - metro-transform-plugins: 0.80.9 - metro-transform-worker: 0.80.9 - mime-types: 2.1.35 - node-fetch: 2.7.0 - nullthrows: 1.1.1 - rimraf: 3.0.2 - serialize-error: 2.1.0 - source-map: 0.5.7 - strip-ansi: 6.0.1 - throat: 5.0.0 - ws: 7.5.9 - yargs: 17.7.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - /miller-rabin@4.0.1: - resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} - hasBin: true - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - dev: false - - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: false - - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: false - - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - dev: false - - /mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - dev: false - - /mimic-fn@1.2.0: - resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} - engines: {node: '>=4'} - dev: false - - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: false - - /minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - dev: false - - /minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - dev: false - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - - /minimatch@8.0.4: - resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: true - - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - - /minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - /minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - dependencies: - minipass: 3.3.6 - dev: false - - /minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 - dev: false - - /minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} - dev: true - - /minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - dev: false - - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - - /minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - dev: false - - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - dependencies: - minimist: 1.2.8 - - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: false - - /moti@0.27.5(react-dom@18.2.0)(react-native-reanimated@3.6.3)(react@18.2.0): - resolution: {integrity: sha512-6PbHgNTzSyipTon57TBm5w3/cKKMZVugq/Ey2YLbZbMLxsmL4uz6zGO0uBcZWkKaVqm9O8LcK+WdGMyNiR2yrg==} - peerDependencies: - react-native-reanimated: '*' - dependencies: - framer-motion: 6.5.1(react-dom@18.2.0)(react@18.2.0) - react-native-reanimated: 3.6.3(@babel/core@7.24.5)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6)(@babel/plugin-proposal-optional-chaining@7.21.0)(@babel/plugin-transform-arrow-functions@7.24.1)(@babel/plugin-transform-shorthand-properties@7.24.1)(@babel/plugin-transform-template-literals@7.24.1)(react-native@0.73.6)(react@18.2.0) - transitivePeerDependencies: - - react - - react-dom - dev: false - - /mrmime@1.0.1: - resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} - engines: {node: '>=10'} - dev: false - - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: false - - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false - - /mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - dev: true - - /mv@2.1.1: - resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} - engines: {node: '>=0.8.0'} - requiresBuild: true - dependencies: - mkdirp: 0.5.6 - ncp: 2.0.0 - rimraf: 2.4.5 - dev: false - optional: true - - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - dev: false - - /nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: false - - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - /ncp@2.0.0: - resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} - hasBin: true - requiresBuild: true - dev: false - optional: true - - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: false - - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - /nested-error-stacks@2.0.1: - resolution: {integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==} - dev: false - - /netmask@2.0.2: - resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} - engines: {node: '>= 0.4.0'} - dev: true - - /nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - dev: false - - /no-case@2.3.2: - resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} - dependencies: - lower-case: 1.1.4 - dev: true - - /nocache@3.0.4: - resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} - engines: {node: '>=12.0.0'} - dev: false - - /node-abort-controller@3.1.1: - resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - dev: false - - /node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} - dependencies: - minimatch: 3.1.2 - dev: false - - /node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - dev: false - - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: false - - /node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - dev: false - - /node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - dev: false - - /node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: false - - /node-plop@0.26.3: - resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==} - engines: {node: '>=8.9.4'} - dependencies: - '@babel/runtime-corejs3': 7.24.5 - '@types/inquirer': 6.5.0 - change-case: 3.1.0 - del: 5.1.0 - globby: 10.0.2 - handlebars: 4.7.8 - inquirer: 7.3.3 - isbinaryfile: 4.0.10 - lodash.get: 4.4.2 - mkdirp: 0.5.6 - resolve: 1.22.8 - dev: true - - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - - /node-stream-zip@1.15.0: - resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} - engines: {node: '>=0.12.0'} - dev: false - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: false - - /normalize-url@2.0.1: - resolution: {integrity: sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==} - engines: {node: '>=4'} - dependencies: - prepend-http: 2.0.0 - query-string: 5.1.1 - sort-keys: 2.0.0 - dev: false - - /npm-package-arg@7.0.0: - resolution: {integrity: sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==} - dependencies: - hosted-git-info: 3.0.8 - osenv: 0.1.5 - semver: 5.7.2 - validate-npm-package-name: 3.0.0 - dev: false - - /npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - dependencies: - path-key: 2.0.1 - dev: false - - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - - /nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - dependencies: - boolbase: 1.0.0 - dev: false - - /nullthrows@1.1.1: - resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - dev: false - - /ob1@0.80.8: - resolution: {integrity: sha512-QHJQk/lXMmAW8I7AIM3in1MSlwe1umR72Chhi8B7Xnq6mzjhBKkA6Fy/zAhQnGkA4S912EPCEvTij5yh+EQTAA==} - engines: {node: '>=18'} - dev: false - - /ob1@0.80.9: - resolution: {integrity: sha512-v9yOxowkZbxWhKOaaTyLjIm1aLy4ebMNcSn4NYJKOAI/Qv+SkfEfszpLr2GIxsccmb2Y2HA9qtsqiIJ80ucpVA==} - engines: {node: '>=18'} - dev: false - - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: false - - /object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - dev: false - - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - dev: false - - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: false - - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: false - - /object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: false - - /object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - dev: false - - /object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - dev: false - - /object.hasown@1.1.4: - resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - dev: false - - /object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: false - - /on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} - dependencies: - ee-first: 1.1.1 - dev: false - - /on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - dependencies: - ee-first: 1.1.1 - dev: false - - /on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - dev: false - - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - - /onetime@2.0.1: - resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} - engines: {node: '>=4'} - dependencies: - mimic-fn: 1.2.0 - dev: false - - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - - /open@6.4.0: - resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} - engines: {node: '>=8'} - dependencies: - is-wsl: 1.1.0 - dev: false - - /open@7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - is-wsl: 2.2.0 - dev: false - - /open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - dev: false - - /optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - - /ora@3.4.0: - resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} - engines: {node: '>=6'} - dependencies: - chalk: 2.4.2 - cli-cursor: 2.1.0 - cli-spinners: 2.9.2 - log-symbols: 2.2.0 - strip-ansi: 5.2.0 - wcwidth: 1.0.1 - dev: false - - /ora@4.1.1: - resolution: {integrity: sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==} - engines: {node: '>=8'} - dependencies: - chalk: 3.0.0 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - log-symbols: 3.0.0 - mute-stream: 0.0.8 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - dev: true - - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - - /os-homedir@1.0.2: - resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} - engines: {node: '>=0.10.0'} - dev: false - - /os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - /osenv@0.1.5: - resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} - dependencies: - os-homedir: 1.0.2 - os-tmpdir: 1.0.2 - dev: false - - /p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - dev: false - - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - - /p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - dependencies: - p-limit: 2.3.0 - - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: false - - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - - /p-map@3.0.0: - resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} - engines: {node: '>=8'} - dependencies: - aggregate-error: 3.1.0 - dev: true - - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - dependencies: - aggregate-error: 3.1.0 - dev: false - - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - /pac-proxy-agent@7.0.1: - resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==} - engines: {node: '>= 14'} - dependencies: - '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.1 - debug: 4.3.4 - get-uri: 6.0.3 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4 - pac-resolver: 7.0.1 - socks-proxy-agent: 8.0.3 - transitivePeerDependencies: - - supports-color - dev: true - - /pac-resolver@7.0.1: - resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} - engines: {node: '>= 14'} - dependencies: - degenerator: 5.0.1 - netmask: 2.0.2 - dev: true - - /param-case@2.1.1: - resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} - dependencies: - no-case: 2.3.2 - dev: true - - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - - /parse-asn1@5.1.7: - resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} - engines: {node: '>= 0.10'} - dependencies: - asn1.js: 4.10.1 - browserify-aes: 1.2.0 - evp_bytestokey: 1.0.3 - hash-base: 3.0.4 - pbkdf2: 3.1.2 - safe-buffer: 5.2.1 - dev: false - - /parse-hls@1.0.7: - resolution: {integrity: sha512-tnAK2nXe8J/Jf66SwY2cUAKKXInLR9hkNhTtcS7t6J4CgkG8LGBfC1GuuXg7kLLbIQLXpVhZrY/tfyhDbqfzwg==} - dev: false - - /parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: false - - /parse-png@2.1.0: - resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==} - engines: {node: '>=10'} - dependencies: - pngjs: 3.4.0 - dev: false - - /parse5-htmlparser2-tree-adapter@7.0.0: - resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} - dependencies: - domhandler: 5.0.3 - parse5: 7.1.2 - dev: false - - /parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} - dependencies: - entities: 4.5.0 - dev: false - - /parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: false - - /pascal-case@2.0.1: - resolution: {integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==} - dependencies: - camel-case: 3.0.0 - upper-case-first: 1.1.2 - dev: true - - /password-prompt@1.1.3: - resolution: {integrity: sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==} - dependencies: - ansi-escapes: 4.3.2 - cross-spawn: 7.0.3 - dev: false - - /path-case@2.1.1: - resolution: {integrity: sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==} - dependencies: - no-case: 2.3.2 - dev: true - - /path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - /path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - dev: false - - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - /path-scurry@1.10.2: - resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - lru-cache: 10.2.2 - minipass: 7.0.4 - - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - /pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} - dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - dev: false - - /performant-array-to-tree@1.11.0: - resolution: {integrity: sha512-YwCqIDvnaebXaKuKQhI5yJD6ryDc3FxvoeX/5ougXTKDUWb7s5S2BuBgIyftCa4sBe1+ZU5Kmi4RJy+pjjjrpw==} - dev: false - - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - /picomatch@3.0.1: - resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} - engines: {node: '>=10'} - dev: false - - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - dev: false - - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: false - - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - dev: false - - /pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - dependencies: - find-up: 3.0.0 - dev: false - - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: false - - /pkg-up@3.1.0: - resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} - engines: {node: '>=8'} - dependencies: - find-up: 3.0.0 - dev: true - - /plist@3.1.0: - resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} - engines: {node: '>=10.4.0'} - dependencies: - '@xmldom/xmldom': 0.8.10 - base64-js: 1.5.1 - xmlbuilder: 15.1.1 - dev: false - - /pngjs@3.4.0: - resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} - engines: {node: '>=4.0.0'} - dev: false - - /popmotion@11.0.3: - resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} - dependencies: - framesync: 6.0.1 - hey-listen: 1.0.8 - style-value-types: 5.0.0 - tslib: 2.6.2 - dev: false - - /possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - dev: false - - /postcss-import@15.1.0(postcss@8.4.38): - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.8 - dev: false - - /postcss-js@4.0.1(postcss@8.4.38): - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.38 - dev: false - - /postcss-load-config@4.0.2(postcss@8.4.38): - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 3.1.1 - postcss: 8.4.38 - yaml: 2.4.2 - dev: false - - /postcss-nested@6.0.1(postcss@8.4.38): - resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.16 - dev: false - - /postcss-selector-parser@6.0.16: - resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} - engines: {node: '>=4'} - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - dev: false - - /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: false - - /postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.2.0 - dev: false - - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - /prepend-http@2.0.0: - resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} - engines: {node: '>=4'} - dev: false - - /prettier-plugin-tailwindcss@0.5.14(@ianvs/prettier-plugin-sort-imports@4.2.1)(prettier@3.2.5): - resolution: {integrity: sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==} - engines: {node: '>=14.21.3'} - peerDependencies: - '@ianvs/prettier-plugin-sort-imports': '*' - '@prettier/plugin-pug': '*' - '@shopify/prettier-plugin-liquid': '*' - '@trivago/prettier-plugin-sort-imports': '*' - '@zackad/prettier-plugin-twig-melody': '*' - prettier: ^3.0 - prettier-plugin-astro: '*' - prettier-plugin-css-order: '*' - prettier-plugin-import-sort: '*' - prettier-plugin-jsdoc: '*' - prettier-plugin-marko: '*' - prettier-plugin-organize-attributes: '*' - prettier-plugin-organize-imports: '*' - prettier-plugin-sort-imports: '*' - prettier-plugin-style-order: '*' - prettier-plugin-svelte: '*' - peerDependenciesMeta: - '@ianvs/prettier-plugin-sort-imports': - optional: true - '@prettier/plugin-pug': - optional: true - '@shopify/prettier-plugin-liquid': - optional: true - '@trivago/prettier-plugin-sort-imports': - optional: true - '@zackad/prettier-plugin-twig-melody': - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-import-sort: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-marko: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-sort-imports: - optional: true - prettier-plugin-style-order: - optional: true - prettier-plugin-svelte: - optional: true - dependencies: - '@ianvs/prettier-plugin-sort-imports': 4.2.1(prettier@3.2.5) - prettier: 3.2.5 - dev: false - - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: false - - /prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} - engines: {node: '>=14'} - hasBin: true - - /pretty-bytes@5.6.0: - resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} - engines: {node: '>=6'} - dev: false - - /pretty-format@26.6.2: - resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} - engines: {node: '>= 10'} - dependencies: - '@jest/types': 26.6.2 - ansi-regex: 5.0.1 - ansi-styles: 4.3.0 - react-is: 17.0.2 - dev: false - - /pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - dev: false - - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false - - /progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - dev: false - - /promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - dev: false - - /promise@7.3.1: - resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} - dependencies: - asap: 2.0.6 - dev: false - - /promise@8.3.0: - resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} - dependencies: - asap: 2.0.6 - dev: false - - /prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - dev: false - - /prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - dev: false - - /proxy-agent@6.4.0: - resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.1 - debug: 4.3.4 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4 - lru-cache: 7.18.3 - pac-proxy-agent: 7.0.1 - proxy-from-env: 1.1.0 - socks-proxy-agent: 8.0.3 - transitivePeerDependencies: - - supports-color - dev: true - - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: true - - /public-encrypt@4.0.3: - resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} - dependencies: - bn.js: 4.12.0 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - parse-asn1: 5.1.7 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - dev: false - - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: false - - /punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - dev: false - - /punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - /qrcode-terminal@0.11.0: - resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==} - hasBin: true - dev: false - - /qs@6.12.1: - resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} - engines: {node: '>=0.6'} - dependencies: - side-channel: 1.0.6 - dev: false - - /query-string@5.1.1: - resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} - engines: {node: '>=0.10.0'} - dependencies: - decode-uri-component: 0.2.2 - object-assign: 4.1.1 - strict-uri-encode: 1.1.0 - dev: false - - /query-string@7.1.3: - resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} - engines: {node: '>=6'} - dependencies: - decode-uri-component: 0.2.2 - filter-obj: 1.1.0 - split-on-first: 1.1.0 - strict-uri-encode: 2.0.0 - dev: false - - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - /queue@6.0.2: - resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} - dependencies: - inherits: 2.0.4 - dev: false - - /r-json@1.3.0: - resolution: {integrity: sha512-xesd+RHCpymPCYd9DvDvUr1w1IieSChkqYF1EpuAYrvCfLXji9NP36DvyYZJZZB5soVDvZ0WUtBoZaU1g5Yt9A==} - dependencies: - w-json: 1.3.10 - dev: false - - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /randomfill@1.0.4: - resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} - dependencies: - randombytes: 2.1.0 - safe-buffer: 5.2.1 - dev: false - - /range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - dev: false - - /rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - - /react-devtools-core@4.28.5: - resolution: {integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==} - dependencies: - shell-quote: 1.8.1 - ws: 7.5.9 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /react-dom@18.2.0(react@18.2.0): - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 - dependencies: - loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.2 - dev: false - - /react-fast-compare@3.2.2: - resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - dev: false - - /react-freeze@1.0.4(react@18.2.0): - resolution: {integrity: sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA==} - engines: {node: '>=10'} - peerDependencies: - react: '>=17.0.0' - dependencies: - react: 18.2.0 - dev: false - - /react-helmet-async@1.3.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@babel/runtime': 7.24.5 - invariant: 2.2.4 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-fast-compare: 3.2.2 - shallowequal: 1.1.0 - dev: false - - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - dev: false - - /react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - dev: false - - /react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - dev: false - - /react-native-animatable@1.3.3: - resolution: {integrity: sha512-2ckIxZQAsvWn25Ho+DK3d1mXIgj7tITkrS4pYDvx96WyOttSvzzFeQnM2od0+FUMzILbdHDsDEqZvnz1DYNQ1w==} - dependencies: - prop-types: 15.8.1 - dev: false - - /react-native-context-menu-view@1.16.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-zqeOAizM7MVV9o6h/quS0REQikBq3J4BkIRLFygY6RiCjr6rwuzSGkif7JRCHpAQQumSKlLqYl4N2h3AdoIHVg==} - peerDependencies: - react: ^16.8.1 || ^17.0.0 || ^18.0.0 - react-native: '>=0.60.0-rc.0 <1.0.x' - dependencies: - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /react-native-css-interop@0.0.34(@babel/core@7.24.5)(react-native-reanimated@3.6.3)(react-native-safe-area-context@4.8.2)(react-native-svg@14.1.0)(react-native@0.73.6)(react@18.2.0)(tailwindcss@3.4.3): - resolution: {integrity: sha512-gz9b0RAyqy5Q/ogPQie8zkWHI+UFhn8JOPELUAV4k2XNkuXzfPRWDMSjQww51ozh7qx7oBKSYDnaCB/D6XgJ1Q==} - engines: {node: '>=18'} - peerDependencies: - react: '>=18' - react-native: '*' - react-native-reanimated: '>=3.6.2' - react-native-safe-area-context: '*' - react-native-svg: '*' - tailwindcss: ~3 - peerDependenciesMeta: - react-native-safe-area-context: - optional: true - react-native-svg: - optional: true - dependencies: - '@babel/helper-module-imports': 7.24.3 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - babel-plugin-tester: 11.0.4(@babel/core@7.24.5) - lightningcss: 1.22.0 - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - react-native-reanimated: 3.6.3(@babel/core@7.24.5)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6)(@babel/plugin-proposal-optional-chaining@7.21.0)(@babel/plugin-transform-arrow-functions@7.24.1)(@babel/plugin-transform-shorthand-properties@7.24.1)(@babel/plugin-transform-template-literals@7.24.1)(react-native@0.73.6)(react@18.2.0) - react-native-safe-area-context: 4.8.2(react-native@0.73.6)(react@18.2.0) - react-native-svg: 14.1.0(react-native@0.73.6)(react@18.2.0) - tailwindcss: 3.4.3 - transitivePeerDependencies: - - '@babel/core' - - supports-color - dev: false - - /react-native-fit-image@1.5.5: - resolution: {integrity: sha512-Wl3Vq2DQzxgsWKuW4USfck9zS7YzhvLNPpkwUUCF90bL32e1a0zOVQ3WsJILJOwzmPdHfzZmWasiiAUNBkhNkg==} - dependencies: - prop-types: 15.8.1 - dev: false - - /react-native-gesture-handler@2.14.1(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-YiM1BApV4aKeuwsM6O4C2ufwewYEKk6VMXOt0YqEZFMwABBFWhXLySFZYjBSNRU2USGppJbfHP1q1DfFQpKhdA==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - '@egjs/hammerjs': 2.0.17 - hoist-non-react-statics: 3.3.2 - invariant: 2.2.4 - lodash: 4.17.21 - prop-types: 15.8.1 - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /react-native-markdown-display@7.0.2(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-Mn4wotMvMfLAwbX/huMLt202W5DsdpMO/kblk+6eUs55S57VVNni1gzZCh5qpznYLjIQELNh50VIozEfY6fvaQ==} - peerDependencies: - react: '>=16.2.0' - react-native: '>=0.50.4' - dependencies: - css-to-react-native: 3.2.0 - markdown-it: 10.0.0 - prop-types: 15.8.1 - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - react-native-fit-image: 1.5.5 - dev: false - - /react-native-mmkv@2.12.2(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-6058Aq0p57chPrUutLGe9fYoiDVDNMU2PKV+lLFUJ3GhoHvUrLdsS1PDSCLr00yqzL4WJQ7TTzH+V8cpyrNcfg==} - peerDependencies: - react: '*' - react-native: '>=0.71.0' - dependencies: - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /react-native-modal@13.0.1(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-UB+mjmUtf+miaG/sDhOikRfBOv0gJdBU2ZE1HtFWp6UixW9jCk/bhGdHUgmZljbPpp0RaO/6YiMmQSSK3kkMaw==} - peerDependencies: - react: '*' - react-native: '>=0.65.0' - dependencies: - prop-types: 15.8.1 - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - react-native-animatable: 1.3.3 - dev: false - - /react-native-quick-base64@2.1.2(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-xghaXpWdB0ji8OwYyo0fWezRroNxiNFCNFpGUIyE7+qc4gA/IGWnysIG5L0MbdoORv8FkTKUvfd6yCUN5R2VFA==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - base64-js: 1.5.1 - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /react-native-quick-crypto@0.6.1(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-s6uFo7tcI3syo8/y5j+t6Rf+KVSuRKDp6tH04A0vjaHptJC6Iu7DVgkNYO7aqtfrYn8ZUgQ/Kqaq+m4i9TxgIQ==} - peerDependencies: - react: '*' - react-native: '>=0.71.0' - dependencies: - '@craftzdog/react-native-buffer': 6.0.5(react-native@0.73.6)(react@18.2.0) - '@types/node': 17.0.45 - crypto-browserify: 3.12.0 - events: 3.3.0 - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - react-native-quick-base64: 2.1.2(react-native@0.73.6)(react@18.2.0) - stream-browserify: 3.0.0 - string_decoder: 1.3.0 - dev: false - - /react-native-reanimated@3.6.3(@babel/core@7.24.5)(@babel/plugin-proposal-nullish-coalescing-operator@7.18.6)(@babel/plugin-proposal-optional-chaining@7.21.0)(@babel/plugin-transform-arrow-functions@7.24.1)(@babel/plugin-transform-shorthand-properties@7.24.1)(@babel/plugin-transform-template-literals@7.24.1)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-2KkkPozoIvDbJcHuf8qeyoLROXQxizSi+2CTCkuNVkVZOxxY4B0Omvgq61aOQhSZUh/649x1YHoAaTyGMGDJUw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-nullish-coalescing-operator': ^7.0.0-0 - '@babel/plugin-proposal-optional-chaining': ^7.0.0-0 - '@babel/plugin-transform-arrow-functions': ^7.0.0-0 - '@babel/plugin-transform-shorthand-properties': ^7.0.0-0 - '@babel/plugin-transform-template-literals': ^7.0.0-0 - react: '*' - react-native: '*' - dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.5) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-object-assign': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.5) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.5) - convert-source-map: 2.0.0 - invariant: 2.2.4 - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /react-native-safe-area-context@4.8.2(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-ffUOv8BJQ6RqO3nLml5gxJ6ab3EestPiyWekxdzO/1MQ7NF8fW1Mzh1C5QE9yq573Xefnc7FuzGXjtesZGv7cQ==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /react-native-screens@3.29.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-yB1GoAMamFAcYf4ku94uBPn0/ani9QG7NdI98beJ5cet2YFESYYzuEIuU+kt+CNRcO8qqKeugxlfgAa3HyTqlg==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - react: 18.2.0 - react-freeze: 1.0.4(react@18.2.0) - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - warn-once: 0.1.1 - dev: false - - /react-native-svg@14.1.0(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-HeseElmEk+AXGwFZl3h56s0LtYD9HyGdrpg8yd9QM26X+d7kjETrRQ9vCjtxuT5dCZEIQ5uggU1dQhzasnsCWA==} - peerDependencies: - react: '*' - react-native: '*' - dependencies: - css-select: 5.1.0 - css-tree: 1.1.3 - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - dev: false - - /react-native-video@5.2.1: - resolution: {integrity: sha512-aJlr9MeTuQ0LpZ4n+EC9RvhoKeiPbLtI2Rxy8u7zo/wzGevbRpWHSBj9xZ5YDBXnAVXzuqyNIkGhdw7bfdIBZw==} - dependencies: - deprecated-react-native-prop-types: 2.3.0 - keymirror: 0.1.1 - prop-types: 15.8.1 - shaka-player: 2.5.23 - dev: false - - /react-native-web-internals@1.96.0: - resolution: {integrity: sha512-FssrkOsfOO7KVsmQ3865DJDxIYIUdpA39woM/8Wtm0U5h9I68NFThnMMr3eOPIQrjOAOmg9ABIP/dbZFJZ0fqg==} - dependencies: - '@tamagui/normalize-css-color': 1.96.0 - '@tamagui/react-native-use-pressable': 1.96.0(react@18.2.0) - '@tamagui/react-native-use-responder-events': 1.96.0(react@18.2.0) - '@tamagui/simple-hash': 1.96.0 - react: 18.2.0 - styleq: 0.1.3 - dev: false - - /react-native-web-lite@1.96.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-iZJtzfo7VRyjZBVcXHxTCAbJJRrKe3BjFFmeovms1S0Gbcm7NlAPFrqa+YiBBZYfzPHTKx1k6QxhywzB9f3onw==} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - '@tamagui/normalize-css-color': 1.96.0 - invariant: 2.2.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-native-web-internals: 1.96.0 - styleq: 0.1.3 - dev: false - - /react-native-web@0.19.11(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-51Qcjr0AtIgskwLqLsBByUMPs2nAWZ+6QF7x/siC72svNPcJ1/daXoPTNuHR2fX4oOrDATC4Vmc/SXOYPH19rw==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - '@babel/runtime': 7.24.5 - '@react-native/normalize-colors': 0.74.81 - fbjs: 3.0.5 - inline-style-prefixer: 6.0.4 - memoize-one: 6.0.0 - nullthrows: 1.1.1 - postcss-value-parser: 4.2.0 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styleq: 0.1.3 - transitivePeerDependencies: - - encoding - dev: false - - /react-native@0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0): - resolution: {integrity: sha512-oqmZe8D2/VolIzSPZw+oUd6j/bEmeRHwsLn1xLA5wllEYsZ5zNuMsDus235ONOnCRwexqof/J3aztyQswSmiaA==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - react: 18.2.0 - dependencies: - '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 12.3.6 - '@react-native-community/cli-platform-android': 12.3.6 - '@react-native-community/cli-platform-ios': 12.3.6 - '@react-native/assets-registry': 0.73.1 - '@react-native/codegen': 0.73.3(@babel/preset-env@7.24.5) - '@react-native/community-cli-plugin': 0.73.17(@babel/core@7.24.5)(@babel/preset-env@7.24.5) - '@react-native/gradle-plugin': 0.73.4 - '@react-native/js-polyfills': 0.73.1 - '@react-native/normalize-colors': 0.73.2 - '@react-native/virtualized-lists': 0.73.4(react-native@0.73.6) - abort-controller: 3.0.0 - anser: 1.4.10 - ansi-regex: 5.0.1 - base64-js: 1.5.1 - chalk: 4.1.2 - deprecated-react-native-prop-types: 5.0.0 - event-target-shim: 5.0.1 - flow-enums-runtime: 0.0.6 - invariant: 2.2.4 - jest-environment-node: 29.7.0 - jsc-android: 250231.0.0 - memoize-one: 5.2.1 - metro-runtime: 0.80.8 - metro-source-map: 0.80.8 - mkdirp: 0.5.6 - nullthrows: 1.1.1 - pretty-format: 26.6.2 - promise: 8.3.0 - react: 18.2.0 - react-devtools-core: 4.28.5 - react-refresh: 0.14.2 - react-shallow-renderer: 16.15.0(react@18.2.0) - regenerator-runtime: 0.13.11 - scheduler: 0.24.0-canary-efb381bbf-20230505 - stacktrace-parser: 0.1.10 - whatwg-fetch: 3.6.20 - ws: 6.2.2 - yargs: 17.7.2 - transitivePeerDependencies: - - '@babel/core' - - '@babel/preset-env' - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} - engines: {node: '>=0.10.0'} - dev: false - - /react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} - engines: {node: '>=0.10.0'} - dev: false - - /react-remove-scroll-bar@2.3.6(@types/react@18.3.1)(react@18.2.0): - resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.3.1 - react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.3.1)(react@18.2.0) - tslib: 2.6.2 - dev: false - - /react-remove-scroll@2.5.5(@types/react@18.3.1)(react@18.2.0): - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.3.1 - react: 18.2.0 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.1)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.3.1)(react@18.2.0) - tslib: 2.6.2 - use-callback-ref: 1.3.2(@types/react@18.3.1)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.3.1)(react@18.2.0) - dev: false - - /react-shallow-renderer@16.15.0(react@18.2.0): - resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - dependencies: - object-assign: 4.1.1 - react: 18.2.0 - react-is: 18.3.1 - dev: false - - /react-style-singleton@2.2.1(@types/react@18.3.1)(react@18.2.0): - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.3.1 - get-nonce: 1.0.1 - invariant: 2.2.4 - react: 18.2.0 - tslib: 2.6.2 - dev: false - - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - dependencies: - loose-envify: 1.4.0 - dev: false - - /read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - dependencies: - pify: 2.3.0 - dev: false - - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: false - - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: false - - /readline@1.3.0: - resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - dev: false - - /recast@0.21.5: - resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} - engines: {node: '>= 4'} - dependencies: - ast-types: 0.15.2 - esprima: 4.0.1 - source-map: 0.6.1 - tslib: 2.6.2 - dev: false - - /reflect.getprototypeof@1.0.6: - resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - globalthis: 1.0.4 - which-builtin-type: 1.1.3 - dev: false - - /reforest@0.13.0(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0): - resolution: {integrity: sha512-f0It/s51f1UWCCCni0viULALDBhxWBPFnLmZRYtKcz4zYeNWqeNTdcnU/OpBry9tk+jyMQcH3MLK8UdzsAvA5w==} - peerDependencies: - react: '>=16.8' - dependencies: - performant-array-to-tree: 1.11.0 - react: 18.2.0 - zustand: 4.5.2(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - immer - dev: false - - /regenerate-unicode-properties@10.1.1: - resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - - /regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: false - - /regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - - /regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} - dependencies: - '@babel/runtime': 7.24.5 - - /regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 - dev: false - - /regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} - engines: {node: '>=4'} - dependencies: - '@babel/regjsgen': 0.8.0 - regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.1 - regjsparser: 0.9.1 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.1.0 - - /registry-auth-token@3.3.2: - resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} - dependencies: - rc: 1.2.8 - safe-buffer: 5.2.1 - dev: true - - /registry-url@3.1.0: - resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} - engines: {node: '>=0.10.0'} - dependencies: - rc: 1.2.8 - dev: true - - /regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true - dependencies: - jsesc: 0.5.0 - - /remove-trailing-slash@0.1.1: - resolution: {integrity: sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==} - dev: false - - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: false - - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: false - - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: false - - /requireg@0.2.2: - resolution: {integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==} - engines: {node: '>= 4.0.0'} - dependencies: - nested-error-stacks: 2.0.1 - rc: 1.2.8 - resolve: 1.7.1 - dev: false - - /reselect@4.1.8: - resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} - dev: true - - /resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} - dev: false - - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: false - - /resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: false - - /resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - dev: false - - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - /resolve@1.7.1: - resolution: {integrity: sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==} - dependencies: - path-parse: 1.0.7 - dev: false - - /resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: false - - /restore-cursor@2.0.0: - resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} - engines: {node: '>=4'} - dependencies: - onetime: 2.0.1 - signal-exit: 3.0.7 - dev: false - - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - /rimraf@2.4.5: - resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==} - hasBin: true - requiresBuild: true - dependencies: - glob: 6.0.4 - dev: false - optional: true - - /rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: false - - /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: false - - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.2.3 - - /ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - dev: false - - /run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - dev: true - - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - - /rxjs@6.6.7: - resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} - engines: {npm: '>=2.0.0'} - dependencies: - tslib: 1.14.1 - dev: true - - /rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - dependencies: - tslib: 2.6.2 - dev: true - - /safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - isarray: 2.0.5 - dev: false - - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: false - - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - /safe-json-stringify@1.2.0: - resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==} - requiresBuild: true - dev: false - optional: true - - /safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-regex: 1.1.4 - dev: false - - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true - - /sax@1.3.0: - resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} - dev: false - - /scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - dependencies: - loose-envify: 1.4.0 - dev: false - - /scheduler@0.24.0-canary-efb381bbf-20230505: - resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} - dependencies: - loose-envify: 1.4.0 - dev: false - - /schema-utils@4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.13.0 - ajv-formats: 2.1.1(ajv@8.13.0) - ajv-keywords: 5.1.0(ajv@8.13.0) - dev: false - - /semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - dev: false - - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - /semver@7.3.2: - resolution: {integrity: sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==} - engines: {node: '>=10'} - hasBin: true - dev: false - - /semver@7.5.3: - resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: false - - /semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - - /send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /sentence-case@2.1.1: - resolution: {integrity: sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==} - dependencies: - no-case: 2.3.2 - upper-case-first: 1.1.2 - dev: true - - /serialize-error@2.1.0: - resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} - engines: {node: '>=0.10.0'} - dev: false - - /serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} - dependencies: - encodeurl: 1.0.2 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.18.0 - transitivePeerDependencies: - - supports-color - dev: false - - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: false - - /set-cookie-parser@2.6.0: - resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - dev: false - - /set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - dev: false - - /set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - dev: false - - /set-value@4.1.0: - resolution: {integrity: sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==} - engines: {node: '>=11.0'} - dependencies: - is-plain-object: 2.0.4 - is-primitive: 3.0.1 - dev: false - - /setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - dev: false - - /setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - dev: false - - /sf-symbols-typescript@1.0.0: - resolution: {integrity: sha512-DkS7q3nN68dEMb4E18HFPDAvyrjDZK9YAQQF2QxeFu9gp2xRDXFMF8qLJ1EmQ/qeEGQmop4lmMM1WtYJTIcCMw==} - engines: {node: '>=10'} - dev: false - - /sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: false - - /shaka-player@2.5.23: - resolution: {integrity: sha512-3MC9k0OXJGw8AZ4n/ZNCZS2yDxx+3as5KgH6Tx4Q5TRboTBBCu6dYPI5vp1DxKeyU12MBN1Zcbs7AKzXv2EnCg==} - deprecated: Shaka Player < v4.2 is no longer supported. - dependencies: - eme-encryption-scheme-polyfill: 2.1.1 - dev: false - - /shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - dependencies: - kind-of: 6.0.3 - dev: false - - /shallowequal@1.1.0: - resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - dev: false - - /shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - dependencies: - shebang-regex: 1.0.0 - dev: false - - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - - /shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - dev: false - - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - /shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - dev: false - - /side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.1 - dev: false - - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - dev: false - - /simple-plist@1.3.1: - resolution: {integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==} - dependencies: - bplist-creator: 0.1.0 - bplist-parser: 0.3.1 - plist: 3.1.0 - dev: false - - /simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - dependencies: - is-arrayish: 0.3.2 - dev: false - - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: false - - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - /slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - dev: false - - /slice-ansi@2.1.0: - resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} - engines: {node: '>=6'} - dependencies: - ansi-styles: 3.2.1 - astral-regex: 1.0.0 - is-fullwidth-code-point: 2.0.0 - dev: false - - /slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: false - - /slugify@1.6.6: - resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} - engines: {node: '>=8.0.0'} - dev: false - - /smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - dev: true - - /snake-case@2.1.0: - resolution: {integrity: sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==} - dependencies: - no-case: 2.3.2 - dev: true - - /socks-proxy-agent@8.0.3: - resolution: {integrity: sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.1 - debug: 4.3.4 - socks: 2.8.3 - transitivePeerDependencies: - - supports-color - dev: true - - /socks@2.8.3: - resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - dependencies: - ip-address: 9.0.5 - smart-buffer: 4.2.0 - dev: true - - /sonner@0.3.5(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-yIwaQ4dftMvFApuruto2t7wGyyaPRpj5qYBWYJIz4Z7uGcVn0IfqI/hWN0JyJN4izNbZFuCYZISf3fOGnvSlNQ==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /sort-keys@2.0.0: - resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} - engines: {node: '>=4'} - dependencies: - is-plain-obj: 1.1.0 - dev: false - - /source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} - dev: false - - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: false - - /source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: false - - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - /source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - dev: false - - /split-on-first@1.1.0: - resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} - engines: {node: '>=6'} - dev: false - - /split@1.0.1: - resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} - dependencies: - through: 2.3.8 - dev: false - - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: false - - /sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - dev: true - - /srt-webvtt@2.0.0: - resolution: {integrity: sha512-G2Z7/Jf2NRKrmLYNSIhSYZZYE6OFlKXFp9Au2/zJBKgrioUzmrAys1x7GT01dwl6d2sEnqr5uahEIOd0JW/Rbw==} - dev: false - - /ssri@8.0.1: - resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 - dev: false - - /stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - dev: false - - /stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} - dependencies: - type-fest: 0.7.1 - dev: false - - /statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - dev: false - - /statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - dev: false - - /stream-browserify@3.0.0: - resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - dev: false - - /stream-buffers@2.2.0: - resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} - engines: {node: '>= 0.10.0'} - dev: false - - /stream-slice@0.1.2: - resolution: {integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==} - dev: false - - /strict-uri-encode@1.1.0: - resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} - engines: {node: '>=0.10.0'} - dev: false - - /strict-uri-encode@2.0.0: - resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} - engines: {node: '>=4'} - dev: false - - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - dev: false - - /string.prototype.matchall@4.0.11: - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.2 - set-function-name: 2.0.2 - side-channel: 1.0.6 - dev: false - - /string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - dev: false - - /string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: false - - /string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: false - - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: false - - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - - /strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - dependencies: - ansi-regex: 4.1.1 - dev: false - - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - dependencies: - ansi-regex: 6.0.1 - dev: false - - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: false - - /strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - dev: false - - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - dependencies: - min-indent: 1.0.1 - dev: false - - /strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - /strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: false - - /structured-headers@0.4.1: - resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} - dev: false - - /style-value-types@5.0.0: - resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} - dependencies: - hey-listen: 1.0.8 - tslib: 2.6.2 - dev: false - - /styleq@0.1.3: - resolution: {integrity: sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==} - dev: false - - /subsrt-ts@2.1.2: - resolution: {integrity: sha512-45yNlK42Z0pz4lAaNYbR5P60M2jmHl+gfAaiJxDIXsXXqoE7TkDCzl/00HgWyZXKkdIU6s8FiNtRvrlOZb+5Qg==} - hasBin: true - dev: false - - /sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} - hasBin: true - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 7.1.6 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - dev: false - - /sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 10.3.12 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - dev: false - - /sudo-prompt@8.2.5: - resolution: {integrity: sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==} - dev: false - - /sudo-prompt@9.1.1: - resolution: {integrity: sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==} - dev: false - - /sudo-prompt@9.2.1: - resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} - dev: false - - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - dev: false - - /supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - dev: false - - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - /swap-case@1.1.2: - resolution: {integrity: sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==} - dependencies: - lower-case: 1.1.4 - upper-case: 1.1.3 - dev: true - - /tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - dev: false - - /table@6.8.2: - resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} - engines: {node: '>=10.0.0'} - dependencies: - ajv: 8.13.0 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: false - - /tailwindcss@3.4.3: - resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.38 - postcss-import: 15.1.0(postcss@8.4.38) - postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38) - postcss-nested: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.16 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - dev: false - - /tamagui@1.96.0(@types/react@18.3.1)(immer@10.1.1)(react-dom@18.2.0)(react-native-web@0.19.11)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-MGkUbyKP1uWSrEW0waDYhF6z18dRaHzt6w3EHJRoL5w30D+5QrjP9a/BTOj6DUe1aJRe+FwmETfCAl4szgTMMg==} - peerDependencies: - react: '*' - react-native: '*' - react-native-web: '*' - dependencies: - '@tamagui/accordion': 1.96.0(react@18.2.0) - '@tamagui/adapt': 1.96.0(react@18.2.0) - '@tamagui/alert-dialog': 1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0) - '@tamagui/animate-presence': 1.96.0(react@18.2.0) - '@tamagui/avatar': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/button': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/card': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/checkbox': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/compose-refs': 1.96.0(react@18.2.0) - '@tamagui/constants': 1.96.0(react@18.2.0) - '@tamagui/core': 1.96.0(react@18.2.0) - '@tamagui/create-context': 1.96.0(react@18.2.0) - '@tamagui/dialog': 1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0) - '@tamagui/elements': 1.96.0(react-dom@18.2.0)(react@18.2.0) - '@tamagui/fake-react-native': 1.96.0 - '@tamagui/focusable': 1.96.0(react@18.2.0) - '@tamagui/font-size': 1.96.0(react@18.2.0) - '@tamagui/form': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/get-button-sized': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/get-font-sized': 1.96.0(react@18.2.0) - '@tamagui/get-token': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/group': 1.96.0(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0) - '@tamagui/helpers-tamagui': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/image': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/label': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/linear-gradient': 1.96.0(react@18.2.0) - '@tamagui/list-item': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/polyfill-dev': 1.96.0 - '@tamagui/popover': 1.96.0(@types/react@18.3.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) - '@tamagui/popper': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/portal': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/progress': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/radio-group': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/react-native-media-driver': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/scroll-view': 1.96.0(react@18.2.0) - '@tamagui/select': 1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0) - '@tamagui/separator': 1.96.0(react@18.2.0) - '@tamagui/shapes': 1.96.0(react@18.2.0) - '@tamagui/sheet': 1.96.0(@types/react@18.3.1)(react-native@0.73.6)(react@18.2.0) - '@tamagui/slider': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/stacks': 1.96.0(react@18.2.0) - '@tamagui/switch': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/tabs': 1.96.0(@types/react@18.3.1)(immer@10.1.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) - '@tamagui/text': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/theme': 1.96.0(react@18.2.0) - '@tamagui/toggle-group': 1.96.0(@types/react@18.3.1)(immer@10.1.1)(react-native@0.73.6)(react@18.2.0) - '@tamagui/tooltip': 1.96.0(@types/react@18.3.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) - '@tamagui/use-controllable-state': 1.96.0(react@18.2.0) - '@tamagui/use-debounce': 1.96.0(react@18.2.0) - '@tamagui/use-force-update': 1.96.0(react@18.2.0) - '@tamagui/use-window-dimensions': 1.96.0(react-native@0.73.6)(react@18.2.0) - '@tamagui/visually-hidden': 1.96.0(react@18.2.0) - react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(react@18.2.0) - react-native-web: 0.19.11(react-dom@18.2.0)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - immer - - react-dom - dev: false - - /tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - dev: false - - /temp-dir@1.0.0: - resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} - engines: {node: '>=4'} - dev: false - - /temp-dir@2.0.0: - resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} - engines: {node: '>=8'} - dev: false - - /temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} - dependencies: - rimraf: 2.6.3 - dev: false - - /tempy@0.3.0: - resolution: {integrity: sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==} - engines: {node: '>=8'} - dependencies: - temp-dir: 1.0.0 - type-fest: 0.3.1 - unique-string: 1.0.0 - dev: false - - /tempy@0.7.1: - resolution: {integrity: sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==} - engines: {node: '>=10'} - dependencies: - del: 6.1.1 - is-stream: 2.0.1 - temp-dir: 2.0.0 - type-fest: 0.16.0 - unique-string: 2.0.0 - dev: false - - /terminal-link@2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} - dependencies: - ansi-escapes: 4.3.2 - supports-hyperlinks: 2.3.0 - dev: false - - /terser@5.31.0: - resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.11.3 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: false - - /text-encoding-polyfill@0.6.7: - resolution: {integrity: sha512-/DZ1XJqhbqRkCop6s9ZFu8JrFRwmVuHg4quIRm+ziFkR3N3ec6ck6yBvJ1GYeEQZhLVwRW0rZE+C3SSJpy0RTg==} - dev: false - - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - dependencies: - thenify: 3.3.1 - dev: false - - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - dependencies: - any-promise: 1.3.0 - dev: false - - /throat@5.0.0: - resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} - dev: false - - /through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - dev: false - - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - /tinycolor2@1.6.0: - resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} - dev: true - - /tinygradient@1.1.5: - resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==} - dependencies: - '@types/tinycolor2': 1.4.6 - tinycolor2: 1.6.0 - dev: true - - /title-case@2.1.1: - resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==} - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 - dev: true - - /tmdb-ts@1.8.0: - resolution: {integrity: sha512-Y1M2gLrN9V0VA06fPQFtYOUpnMT0ySTOQM2gpysj2wXMMI8jUMeoctERt9F0C3lhJ38kwMXuOwZuyHiAtCAAvA==} - dependencies: - cross-fetch: 3.1.8 - transitivePeerDependencies: - - encoding - dev: false - - /tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - dependencies: - os-tmpdir: 1.0.2 - - /tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - dev: false - - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - - /toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - dev: false - - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false - - /traverse@0.6.9: - resolution: {integrity: sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==} - engines: {node: '>= 0.4'} - dependencies: - gopd: 1.0.1 - typedarray.prototype.slice: 1.0.3 - which-typed-array: 1.1.15 - dev: false - - /ts-api-utils@1.3.0(typescript@5.4.5): - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - dependencies: - typescript: 5.4.5 - - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: false - - /ts-node@10.9.2(@types/node@20.12.8)(typescript@5.4.5): - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.12.8 - acorn: 8.11.3 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.4.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - - /tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: false - - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true - - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - /turbo-darwin-64@1.13.3: - resolution: {integrity: sha512-glup8Qx1qEFB5jerAnXbS8WrL92OKyMmg5Hnd4PleLljAeYmx+cmmnsmLT7tpaVZIN58EAAwu8wHC6kIIqhbWA==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /turbo-darwin-arm64@1.13.3: - resolution: {integrity: sha512-/np2xD+f/+9qY8BVtuOQXRq5f9LehCFxamiQnwdqWm5iZmdjygC5T3uVSYuagVFsZKMvX3ycySwh8dylGTl6lg==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /turbo-linux-64@1.13.3: - resolution: {integrity: sha512-G+HGrau54iAnbXLfl+N/PynqpDwi/uDzb6iM9hXEDG+yJnSJxaHMShhOkXYJPk9offm9prH33Khx2scXrYVW1g==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /turbo-linux-arm64@1.13.3: - resolution: {integrity: sha512-qWwEl5VR02NqRyl68/3pwp3c/olZuSp+vwlwrunuoNTm6JXGLG5pTeme4zoHNnk0qn4cCX7DFrOboArlYxv0wQ==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /turbo-windows-64@1.13.3: - resolution: {integrity: sha512-Nudr4bRChfJzBPzEmpVV85VwUYRCGKecwkBFpbp2a4NtrJ3+UP1VZES653ckqCu2FRyRuS0n03v9euMbAvzH+Q==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /turbo-windows-arm64@1.13.3: - resolution: {integrity: sha512-ouJCgsVLd3icjRLmRvHQDDZnmGzT64GBupM1Y+TjtYn2LVaEBoV6hicFy8x5DUpnqdLy+YpCzRMkWlwhmkX7sQ==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /turbo@1.13.3: - resolution: {integrity: sha512-n17HJv4F4CpsYTvKzUJhLbyewbXjq1oLCi90i5tW1TiWDz16ML1eDG7wi5dHaKxzh5efIM56SITnuVbMq5dk4g==} - hasBin: true - optionalDependencies: - turbo-darwin-64: 1.13.3 - turbo-darwin-arm64: 1.13.3 - turbo-linux-64: 1.13.3 - turbo-linux-arm64: 1.13.3 - turbo-windows-64: 1.13.3 - turbo-windows-arm64: 1.13.3 - dev: true - - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: false - - /type-fest@0.16.0: - resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} - engines: {node: '>=10'} - dev: false - - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - /type-fest@0.3.1: - resolution: {integrity: sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==} - engines: {node: '>=6'} - dev: false - - /type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - dev: false - - /type-fest@3.13.1: - resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} - engines: {node: '>=14.16'} - dev: false - - /typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-typed-array: 1.1.13 - dev: false - - /typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - dev: false - - /typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - dev: false - - /typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 - dev: false - - /typedarray.prototype.slice@1.0.3: - resolution: {integrity: sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - typed-array-buffer: 1.0.2 - typed-array-byte-offset: 1.0.2 - dev: false - - /typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} - engines: {node: '>=14.17'} - hasBin: true - - /ua-parser-js@1.0.37: - resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} - dev: false - - /uc.micro@1.0.6: - resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - dev: false - - /uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} - engines: {node: '>=0.8.0'} - hasBin: true - requiresBuild: true - dev: true - optional: true - - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - dependencies: - call-bind: 1.0.7 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: false - - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - /unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} - - /unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.1.0 - - /unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} - - /unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - - /unique-filename@1.1.1: - resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} - dependencies: - unique-slug: 2.0.2 - dev: false - - /unique-slug@2.0.2: - resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} - dependencies: - imurmurhash: 0.1.4 - dev: false - - /unique-string@1.0.0: - resolution: {integrity: sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==} - engines: {node: '>=4'} - dependencies: - crypto-random-string: 1.0.0 - dev: false - - /unique-string@2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} - engines: {node: '>=8'} - dependencies: - crypto-random-string: 2.0.0 - dev: false - - /universal-user-agent@6.0.1: - resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} - dev: false - - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: false - - /universalify@1.0.0: - resolution: {integrity: sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==} - engines: {node: '>= 10.0.0'} - dev: false - - /universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - /unpacker@1.0.1: - resolution: {integrity: sha512-0HTljwp8+JBdITpoHcK1LWi7X9U2BspUmWv78UWZh7NshYhbh1nec8baY/iSbe2OQTZ2bhAtVdnr6/BTD0DKVg==} - dev: false - - /unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - dev: false - - /update-browserslist-db@1.0.14(browserslist@4.23.0): - resolution: {integrity: sha512-JixKH8GR2pWYshIPUg/NujK3JO7JiqEEUiNArE86NQyrgUuZeTlZQN3xuS/yiV5Kb48ev9K6RqNkaJjXsdg7Jw==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.0 - - /update-check@1.5.4: - resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} - dependencies: - registry-auth-token: 3.3.2 - registry-url: 3.1.0 - dev: true - - /upper-case-first@1.1.2: - resolution: {integrity: sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==} - dependencies: - upper-case: 1.1.3 - dev: true - - /upper-case@1.1.3: - resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} - dev: true - - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.1 - - /url-join@4.0.0: - resolution: {integrity: sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA==} - dev: false - - /url@0.11.3: - resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} - dependencies: - punycode: 1.4.1 - qs: 6.12.1 - dev: false - - /use-callback-ref@1.3.2(@types/react@18.3.1)(react@18.2.0): - resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.3.1 - react: 18.2.0 - tslib: 2.6.2 - dev: false - - /use-latest-callback@0.1.9(react@18.2.0): - resolution: {integrity: sha512-CL/29uS74AwreI/f2oz2hLTW7ZqVeV5+gxFeGudzQrgkCytrHw33G4KbnQOrRlAEzzAFXi7dDLMC9zhWcVpzmw==} - peerDependencies: - react: '>=16.8' - dependencies: - react: 18.2.0 - dev: false - - /use-sidecar@1.1.2(@types/react@18.3.1)(react@18.2.0): - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@types/react': 18.3.1 - detect-node-es: 1.1.0 - react: 18.2.0 - tslib: 2.6.2 - dev: false - - /use-sync-external-store@1.2.0(react@18.2.0): - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.2.0 - dev: false - - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - /util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.15 - dev: false - - /utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - dev: false - - /uuid@7.0.3: - resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==} - hasBin: true - dev: false - - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: false - - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true - - /valid-url@1.0.9: - resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==} - dev: false - - /validate-npm-package-name@3.0.0: - resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} - dependencies: - builtins: 1.0.3 - dev: false - - /validate-npm-package-name@5.0.0: - resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - builtins: 5.1.0 - dev: true - - /vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - dev: false - - /vlq@1.0.1: - resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} - dev: false - - /w-json@1.3.10: - resolution: {integrity: sha512-XadVyw0xE+oZ5FGApXsdswv96rOhStzKqL53uSe5UaTadABGkWIg1+DTx8kiZ/VqTZTBneoL0l65RcPe4W3ecw==} - dev: false - - /walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - dependencies: - makeerror: 1.0.12 - dev: false - - /warn-once@0.1.1: - resolution: {integrity: sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==} - dev: false - - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - dependencies: - defaults: 1.0.4 - - /web-encoding@1.1.5: - resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} - dependencies: - util: 0.12.5 - optionalDependencies: - '@zxing/text-encoding': 0.9.0 - dev: false - - /web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - dev: false - - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false - - /webidl-conversions@5.0.0: - resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} - engines: {node: '>=8'} - dev: false - - /whatwg-fetch@3.6.20: - resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - dev: false - - /whatwg-url-without-unicode@8.0.0-3: - resolution: {integrity: sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==} - engines: {node: '>=10'} - dependencies: - buffer: 5.7.1 - punycode: 2.3.1 - webidl-conversions: 5.0.0 - dev: false - - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: false - - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: false - - /which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} - engines: {node: '>= 0.4'} - dependencies: - function.prototype.name: 1.1.6 - has-tostringtag: 1.0.2 - is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 - is-generator-function: 1.0.10 - is-regex: 1.1.4 - is-weakref: 1.0.2 - isarray: 2.0.5 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.15 - dev: false - - /which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.3 - dev: false - - /which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - dev: false - - /which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - dev: false - - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - - /wonka@4.0.15: - resolution: {integrity: sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==} - dev: false - - /word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - /wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - dev: true - - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: false - - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - dev: false - - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - /write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - dependencies: - graceful-fs: 4.2.11 - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - dev: false - - /ws@6.2.2: - resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dependencies: - async-limiter: 1.0.1 - dev: false - - /ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false - - /ws@8.17.0: - resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false - - /xcode@3.0.1: - resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==} - engines: {node: '>=10.0.0'} - dependencies: - simple-plist: 1.3.1 - uuid: 7.0.3 - dev: false - - /xml2js@0.6.0: - resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==} - engines: {node: '>=4.0.0'} - dependencies: - sax: 1.3.0 - xmlbuilder: 11.0.1 - dev: false - - /xmlbuilder@11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} - dev: false - - /xmlbuilder@14.0.0: - resolution: {integrity: sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==} - engines: {node: '>=8.0'} - dev: false - - /xmlbuilder@15.1.1: - resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} - engines: {node: '>=8.0'} - dev: false - - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: false - - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: false - - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: false - - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - /yaml@2.4.2: - resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} - engines: {node: '>= 14'} - hasBin: true - dev: false - - /yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: false - - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: false - - /yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - dev: false - - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - dependencies: - cliui: 8.0.1 - escalade: 3.1.2 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: false - - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: true - - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - /zustand@4.5.2(@types/react@18.3.1)(immer@10.1.1)(react@18.2.0): - resolution: {integrity: sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==} - engines: {node: '>=12.7.0'} - peerDependencies: - '@types/react': '>=16.8' - immer: '>=9.0.6' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true - dependencies: - '@types/react': 18.3.1 - immer: 10.1.1 - react: 18.2.0 - use-sync-external-store: 1.2.0(react@18.2.0) - dev: false - - github.com/sussy-code/providers/ead928c5d09cad1c23aeab58687d3fae7f426dba: - resolution: {tarball: https://codeload.github.com/sussy-code/providers/tar.gz/ead928c5d09cad1c23aeab58687d3fae7f426dba} - name: '@movie-web/providers' - version: 2.3.0 - requiresBuild: true - dependencies: - cheerio: 1.0.0-rc.12 - cookie: 0.6.0 - crypto-js: 4.2.0 - form-data: 4.0.0 - iso-639-1: 3.1.2 - nanoid: 3.3.7 - node-fetch: 3.3.2 - set-cookie-parser: 2.6.0 - unpacker: 1.0.1 - dev: false diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml deleted file mode 100644 index 0528dd4..0000000 --- a/pnpm-workspace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -packages: - - apps/* - - packages/* - - tooling/* diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 6cf9d5e..a39cdeb 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -14,8 +14,8 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@typescript-eslint/eslint-plugin": "^6.19.1", - "@typescript-eslint/parser": "^6.19.1", + "@typescript-eslint/eslint-plugin": "^7.4.0", + "@typescript-eslint/parser": "^7.4.0", "eslint-config-prettier": "^9.1.0", "eslint-config-turbo": "^1.11.3", "eslint-plugin-import": "^2.29.1", diff --git a/tooling/github/setup/action.yml b/tooling/github/setup/action.yml index 66a4972..477e870 100644 --- a/tooling/github/setup/action.yml +++ b/tooling/github/setup/action.yml @@ -4,15 +4,9 @@ description: "Common setup steps for Actions" runs: using: composite steps: - - uses: pnpm/action-setup@v3 - name: Install pnpm - with: - version: 9 - run_install: false - - uses: actions/setup-node@v4 - with: - node-version: 21 - cache: "pnpm" + - uses: oven-sh/setup-bun@v1 + with: + bun-version: latest - shell: bash run: pnpm add -g turbo From 64c99a5de674aef8719cf6bb10b9d6ccacef298b Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Thu, 2 May 2024 17:34:22 +0200 Subject: [PATCH 11/49] fix: spacing in action --- tooling/github/setup/action.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tooling/github/setup/action.yml b/tooling/github/setup/action.yml index 477e870..5f4447c 100644 --- a/tooling/github/setup/action.yml +++ b/tooling/github/setup/action.yml @@ -4,9 +4,9 @@ description: "Common setup steps for Actions" runs: using: composite steps: - - uses: oven-sh/setup-bun@v1 - with: - bun-version: latest + - uses: oven-sh/setup-bun@v1 + with: + bun-version: latest - shell: bash run: pnpm add -g turbo From 988bd27dffac299e74d8b30be2aac7ea9cdb2dda Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Thu, 2 May 2024 17:35:23 +0200 Subject: [PATCH 12/49] fix: stupidity --- tooling/github/setup/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tooling/github/setup/action.yml b/tooling/github/setup/action.yml index 5f4447c..f1c2960 100644 --- a/tooling/github/setup/action.yml +++ b/tooling/github/setup/action.yml @@ -9,7 +9,7 @@ runs: bun-version: latest - shell: bash - run: pnpm add -g turbo + run: bun add -g turbo - shell: bash - run: pnpm install + run: bun install From 26524f997392a6318ac92cf545451932b8a76d29 Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Thu, 2 May 2024 18:38:52 +0200 Subject: [PATCH 13/49] feat: add providers to packages --- apps/expo/app.config.ts | 184 ++--- apps/expo/metro.config.js | 27 +- apps/expo/package.json | 4 +- bun.lockb | Bin 725404 -> 764088 bytes package.json | 2 +- packages/api/package.json | 4 +- packages/provider-utils/package.json | 9 +- packages/providers/LICENSE | 21 + packages/providers/lib/index.d.ts | 4 + packages/providers/lib/index.js | 4 + packages/providers/lib/index.umd.cjs | 8 + packages/providers/package.json | 83 +++ .../src/__test__/providers/embedUtils.ts | 90 +++ .../src/__test__/providers/embeds.test.ts | 118 +++ .../src/__test__/providers/providerUtils.ts | 92 +++ .../src/__test__/providers/providers.test.ts | 95 +++ .../src/__test__/providers/testMedia.ts | 30 + .../__test__/standard/fetchers/body.test.ts | 39 + .../__test__/standard/fetchers/common.test.ts | 62 ++ .../standard/fetchers/simpleProxy.test.ts | 148 ++++ .../standard/fetchers/standard.test.ts | 149 ++++ .../src/__test__/standard/providerTests.ts | 135 ++++ .../standard/providers/checks.test.ts | 105 +++ .../src/__test__/standard/runner/list.test.ts | 130 ++++ .../src/__test__/standard/runner/meta.test.ts | 54 ++ .../__test__/standard/utils/features.test.ts | 137 ++++ .../src/__test__/standard/utils/list.test.ts | 54 ++ .../src/__test__/standard/utils/valid.test.ts | 71 ++ packages/providers/src/__test__/tsconfig.json | 22 + .../providers/src/dev-cli/browser/.gitignore | 1 + .../providers/src/dev-cli/browser/index.html | 11 + .../providers/src/dev-cli/browser/index.ts | 20 + packages/providers/src/dev-cli/config.ts | 16 + packages/providers/src/dev-cli/index.ts | 188 +++++ packages/providers/src/dev-cli/logging.ts | 7 + packages/providers/src/dev-cli/scraper.ts | 141 ++++ packages/providers/src/dev-cli/tmdb.ts | 100 +++ packages/providers/src/dev-cli/validate.ts | 93 +++ packages/providers/src/entrypoint/builder.ts | 93 +++ packages/providers/src/entrypoint/controls.ts | 119 +++ packages/providers/src/entrypoint/declare.ts | 37 + .../providers/src/entrypoint/providers.ts | 10 + .../providers/src/entrypoint/utils/events.ts | 47 ++ .../providers/src/entrypoint/utils/media.ts | 26 + .../providers/src/entrypoint/utils/meta.ts | 55 ++ .../providers/src/entrypoint/utils/targets.ts | 68 ++ packages/providers/src/fetchers/body.ts | 34 + packages/providers/src/fetchers/common.ts | 43 ++ packages/providers/src/fetchers/fetch.ts | 27 + .../providers/src/fetchers/simpleProxy.ts | 55 ++ .../providers/src/fetchers/standardFetch.ts | 46 ++ packages/providers/src/fetchers/types.ts | 39 + packages/providers/src/index.ts | 1 + packages/providers/src/providers/all.ts | 114 +++ packages/providers/src/providers/base.ts | 70 ++ packages/providers/src/providers/captions.ts | 43 ++ .../providers/src/providers/embeds/bflix.ts | 42 ++ .../src/providers/embeds/closeload.ts | 71 ++ .../providers/src/providers/embeds/dood.ts | 69 ++ .../src/providers/embeds/dropload.ts | 52 ++ .../src/providers/embeds/febbox/common.ts | 24 + .../src/providers/embeds/febbox/fileList.ts | 69 ++ .../src/providers/embeds/febbox/hls.ts | 50 ++ .../src/providers/embeds/febbox/mp4.ts | 53 ++ .../src/providers/embeds/febbox/qualities.ts | 44 ++ .../src/providers/embeds/febbox/subtitles.ts | 75 ++ .../src/providers/embeds/filelions.ts | 47 ++ .../src/providers/embeds/filemoon/index.ts | 60 ++ .../src/providers/embeds/filemoon/mp4.ts | 37 + .../src/providers/embeds/filemoon/types.ts | 5 + .../providers/src/providers/embeds/mixdrop.ts | 67 ++ .../src/providers/embeds/mp4upload.ts | 34 + .../src/providers/embeds/nsbx/delta.ts | 17 + .../providers/src/providers/embeds/ridoo.ts | 34 + .../providers/embeds/smashystream/opstream.ts | 17 + .../providers/embeds/smashystream/video1.ts | 75 ++ .../src/providers/embeds/streambucket.ts | 101 +++ .../src/providers/embeds/streamsb.ts | 172 +++++ .../src/providers/embeds/streamtape.ts | 39 + .../src/providers/embeds/streamvid.ts | 36 + .../providers/src/providers/embeds/upcloud.ts | 141 ++++ .../src/providers/embeds/upstream.ts | 39 + .../src/providers/embeds/vidcloud.ts | 20 + .../src/providers/embeds/vidplay/common.ts | 57 ++ .../src/providers/embeds/vidplay/index.ts | 67 ++ .../src/providers/embeds/vidplay/types.ts | 24 + .../providers/src/providers/embeds/vidsrc.ts | 69 ++ .../providers/src/providers/embeds/voe.ts | 44 ++ .../providers/src/providers/embeds/vtube.ts | 51 ++ .../src/providers/embeds/warezcdn/common.ts | 58 ++ .../src/providers/embeds/warezcdn/hls.ts | 44 ++ .../src/providers/embeds/warezcdn/mp4.ts | 58 ++ .../providers/src/providers/embeds/wootly.ts | 83 +++ packages/providers/src/providers/get.ts | 27 + .../src/providers/sources/flixhq/common.ts | 1 + .../src/providers/sources/flixhq/index.ts | 66 ++ .../src/providers/sources/flixhq/scrape.ts | 92 +++ .../src/providers/sources/flixhq/search.ts | 44 ++ .../src/providers/sources/gomovies/index.ts | 225 ++++++ .../src/providers/sources/gomovies/source.ts | 30 + .../providers/sources/goojara/getEmbeds.ts | 69 ++ .../src/providers/sources/goojara/index.ts | 30 + .../src/providers/sources/goojara/type.ts | 14 + .../src/providers/sources/goojara/util.ts | 98 +++ .../src/providers/sources/hdrezka/index.ts | 127 ++++ .../src/providers/sources/hdrezka/types.ts | 20 + .../src/providers/sources/hdrezka/utils.ts | 75 ++ .../providers/sources/insertunit/captions.ts | 30 + .../src/providers/sources/insertunit/index.ts | 103 +++ .../src/providers/sources/insertunit/types.ts | 30 + .../src/providers/sources/kissasian/common.ts | 15 + .../providers/sources/kissasian/getEmbeds.ts | 55 ++ .../sources/kissasian/getEpisodes.ts | 14 + .../src/providers/sources/kissasian/index.ts | 76 ++ .../src/providers/sources/kissasian/search.ts | 27 + .../src/providers/sources/lookmovie/index.ts | 40 ++ .../src/providers/sources/lookmovie/type.ts | 69 ++ .../src/providers/sources/lookmovie/util.ts | 61 ++ .../src/providers/sources/lookmovie/video.ts | 67 ++ .../src/providers/sources/nepu/index.ts | 84 +++ .../src/providers/sources/nepu/types.ts | 8 + .../providers/src/providers/sources/nites.ts | 79 ++ .../providers/src/providers/sources/nsbx.ts | 46 ++ .../src/providers/sources/primewire/common.ts | 2 + .../sources/primewire/decryption/README.md | 7 + .../sources/primewire/decryption/blowfish.ts | 263 +++++++ .../sources/primewire/decryption/constants.ts | 116 +++ .../src/providers/sources/primewire/index.ts | 127 ++++ .../src/providers/sources/remotestream.ts | 83 +++ .../src/providers/sources/ridomovies/index.ts | 81 +++ .../src/providers/sources/ridomovies/types.ts | 78 ++ .../src/providers/sources/showbox/LICENSE | 680 ++++++++++++++++++ .../src/providers/sources/showbox/common.ts | 16 + .../src/providers/sources/showbox/crypto.ts | 16 + .../src/providers/sources/showbox/index.ts | 49 ++ .../providers/sources/showbox/sendRequest.ts | 57 ++ .../providers/sources/smashystream/index.ts | 37 + .../src/providers/sources/soapertv/index.ts | 120 ++++ .../src/providers/sources/soapertv/types.ts | 15 + .../src/providers/sources/tugaflix/common.ts | 21 + .../src/providers/sources/tugaflix/index.ts | 116 +++ .../src/providers/sources/vidsrc/common.ts | 2 + .../src/providers/sources/vidsrc/index.ts | 13 + .../providers/sources/vidsrc/scrape-movie.ts | 8 + .../providers/sources/vidsrc/scrape-show.ts | 8 + .../src/providers/sources/vidsrc/scrape.ts | 133 ++++ .../src/providers/sources/vidsrcto/common.ts | 49 ++ .../src/providers/sources/vidsrcto/index.ts | 88 +++ .../src/providers/sources/vidsrcto/types.ts | 15 + .../src/providers/sources/warezcdn/common.ts | 24 + .../src/providers/sources/warezcdn/index.ts | 114 +++ .../src/providers/sources/warezcdn/types.ts | 16 + .../src/providers/sources/zoechip/common.ts | 71 ++ .../src/providers/sources/zoechip/index.ts | 14 + .../providers/sources/zoechip/scrape-movie.ts | 13 + .../providers/sources/zoechip/scrape-show.ts | 24 + .../src/providers/sources/zoechip/scrape.ts | 126 ++++ .../src/providers/sources/zoechip/search.ts | 111 +++ packages/providers/src/providers/streams.ts | 35 + .../providers/src/runners/individualRunner.ts | 120 ++++ packages/providers/src/runners/runner.ts | 180 +++++ packages/providers/src/utils/compare.ts | 22 + packages/providers/src/utils/context.ts | 22 + packages/providers/src/utils/cookie.ts | 20 + packages/providers/src/utils/errors.ts | 6 + packages/providers/src/utils/list.ts | 20 + packages/providers/src/utils/native.ts | 9 + packages/providers/src/utils/predicates.ts | 3 + packages/providers/src/utils/quality.ts | 20 + packages/providers/src/utils/valid.ts | 79 ++ packages/providers/tests/README.md | 3 + packages/providers/tests/browser/.gitignore | 1 + packages/providers/tests/browser/index.html | 11 + packages/providers/tests/browser/index.ts | 8 + packages/providers/tests/browser/package.json | 3 + packages/providers/tests/browser/startup.mjs | 36 + packages/providers/tests/cjs/index.js | 2 + packages/providers/tests/cjs/package.json | 4 + packages/providers/tests/esm/index.mjs | 2 + packages/providers/tests/esm/package.json | 4 + packages/providers/tsconfig.json | 23 + packages/providers/vite.config.ts | 42 ++ packages/tmdb/package.json | 4 +- tooling/colors/package.json | 4 +- tooling/eslint/package.json | 4 +- tooling/prettier/package.json | 2 +- turbo/generators/templates/package.json.hbs | 4 +- 187 files changed, 10435 insertions(+), 123 deletions(-) create mode 100644 packages/providers/LICENSE create mode 100644 packages/providers/lib/index.d.ts create mode 100644 packages/providers/lib/index.js create mode 100644 packages/providers/lib/index.umd.cjs create mode 100644 packages/providers/package.json create mode 100644 packages/providers/src/__test__/providers/embedUtils.ts create mode 100644 packages/providers/src/__test__/providers/embeds.test.ts create mode 100644 packages/providers/src/__test__/providers/providerUtils.ts create mode 100644 packages/providers/src/__test__/providers/providers.test.ts create mode 100644 packages/providers/src/__test__/providers/testMedia.ts create mode 100644 packages/providers/src/__test__/standard/fetchers/body.test.ts create mode 100644 packages/providers/src/__test__/standard/fetchers/common.test.ts create mode 100644 packages/providers/src/__test__/standard/fetchers/simpleProxy.test.ts create mode 100644 packages/providers/src/__test__/standard/fetchers/standard.test.ts create mode 100644 packages/providers/src/__test__/standard/providerTests.ts create mode 100644 packages/providers/src/__test__/standard/providers/checks.test.ts create mode 100644 packages/providers/src/__test__/standard/runner/list.test.ts create mode 100644 packages/providers/src/__test__/standard/runner/meta.test.ts create mode 100644 packages/providers/src/__test__/standard/utils/features.test.ts create mode 100644 packages/providers/src/__test__/standard/utils/list.test.ts create mode 100644 packages/providers/src/__test__/standard/utils/valid.test.ts create mode 100644 packages/providers/src/__test__/tsconfig.json create mode 100644 packages/providers/src/dev-cli/browser/.gitignore create mode 100644 packages/providers/src/dev-cli/browser/index.html create mode 100644 packages/providers/src/dev-cli/browser/index.ts create mode 100644 packages/providers/src/dev-cli/config.ts create mode 100644 packages/providers/src/dev-cli/index.ts create mode 100644 packages/providers/src/dev-cli/logging.ts create mode 100644 packages/providers/src/dev-cli/scraper.ts create mode 100644 packages/providers/src/dev-cli/tmdb.ts create mode 100644 packages/providers/src/dev-cli/validate.ts create mode 100644 packages/providers/src/entrypoint/builder.ts create mode 100644 packages/providers/src/entrypoint/controls.ts create mode 100644 packages/providers/src/entrypoint/declare.ts create mode 100644 packages/providers/src/entrypoint/providers.ts create mode 100644 packages/providers/src/entrypoint/utils/events.ts create mode 100644 packages/providers/src/entrypoint/utils/media.ts create mode 100644 packages/providers/src/entrypoint/utils/meta.ts create mode 100644 packages/providers/src/entrypoint/utils/targets.ts create mode 100644 packages/providers/src/fetchers/body.ts create mode 100644 packages/providers/src/fetchers/common.ts create mode 100644 packages/providers/src/fetchers/fetch.ts create mode 100644 packages/providers/src/fetchers/simpleProxy.ts create mode 100644 packages/providers/src/fetchers/standardFetch.ts create mode 100644 packages/providers/src/fetchers/types.ts create mode 100644 packages/providers/src/index.ts create mode 100644 packages/providers/src/providers/all.ts create mode 100644 packages/providers/src/providers/base.ts create mode 100644 packages/providers/src/providers/captions.ts create mode 100644 packages/providers/src/providers/embeds/bflix.ts create mode 100644 packages/providers/src/providers/embeds/closeload.ts create mode 100644 packages/providers/src/providers/embeds/dood.ts create mode 100644 packages/providers/src/providers/embeds/dropload.ts create mode 100644 packages/providers/src/providers/embeds/febbox/common.ts create mode 100644 packages/providers/src/providers/embeds/febbox/fileList.ts create mode 100644 packages/providers/src/providers/embeds/febbox/hls.ts create mode 100644 packages/providers/src/providers/embeds/febbox/mp4.ts create mode 100644 packages/providers/src/providers/embeds/febbox/qualities.ts create mode 100644 packages/providers/src/providers/embeds/febbox/subtitles.ts create mode 100644 packages/providers/src/providers/embeds/filelions.ts create mode 100644 packages/providers/src/providers/embeds/filemoon/index.ts create mode 100644 packages/providers/src/providers/embeds/filemoon/mp4.ts create mode 100644 packages/providers/src/providers/embeds/filemoon/types.ts create mode 100644 packages/providers/src/providers/embeds/mixdrop.ts create mode 100644 packages/providers/src/providers/embeds/mp4upload.ts create mode 100644 packages/providers/src/providers/embeds/nsbx/delta.ts create mode 100644 packages/providers/src/providers/embeds/ridoo.ts create mode 100644 packages/providers/src/providers/embeds/smashystream/opstream.ts create mode 100644 packages/providers/src/providers/embeds/smashystream/video1.ts create mode 100644 packages/providers/src/providers/embeds/streambucket.ts create mode 100644 packages/providers/src/providers/embeds/streamsb.ts create mode 100644 packages/providers/src/providers/embeds/streamtape.ts create mode 100644 packages/providers/src/providers/embeds/streamvid.ts create mode 100644 packages/providers/src/providers/embeds/upcloud.ts create mode 100644 packages/providers/src/providers/embeds/upstream.ts create mode 100644 packages/providers/src/providers/embeds/vidcloud.ts create mode 100644 packages/providers/src/providers/embeds/vidplay/common.ts create mode 100644 packages/providers/src/providers/embeds/vidplay/index.ts create mode 100644 packages/providers/src/providers/embeds/vidplay/types.ts create mode 100644 packages/providers/src/providers/embeds/vidsrc.ts create mode 100644 packages/providers/src/providers/embeds/voe.ts create mode 100644 packages/providers/src/providers/embeds/vtube.ts create mode 100644 packages/providers/src/providers/embeds/warezcdn/common.ts create mode 100644 packages/providers/src/providers/embeds/warezcdn/hls.ts create mode 100644 packages/providers/src/providers/embeds/warezcdn/mp4.ts create mode 100644 packages/providers/src/providers/embeds/wootly.ts create mode 100644 packages/providers/src/providers/get.ts create mode 100644 packages/providers/src/providers/sources/flixhq/common.ts create mode 100644 packages/providers/src/providers/sources/flixhq/index.ts create mode 100644 packages/providers/src/providers/sources/flixhq/scrape.ts create mode 100644 packages/providers/src/providers/sources/flixhq/search.ts create mode 100644 packages/providers/src/providers/sources/gomovies/index.ts create mode 100644 packages/providers/src/providers/sources/gomovies/source.ts create mode 100644 packages/providers/src/providers/sources/goojara/getEmbeds.ts create mode 100644 packages/providers/src/providers/sources/goojara/index.ts create mode 100644 packages/providers/src/providers/sources/goojara/type.ts create mode 100644 packages/providers/src/providers/sources/goojara/util.ts create mode 100644 packages/providers/src/providers/sources/hdrezka/index.ts create mode 100644 packages/providers/src/providers/sources/hdrezka/types.ts create mode 100644 packages/providers/src/providers/sources/hdrezka/utils.ts create mode 100644 packages/providers/src/providers/sources/insertunit/captions.ts create mode 100644 packages/providers/src/providers/sources/insertunit/index.ts create mode 100644 packages/providers/src/providers/sources/insertunit/types.ts create mode 100644 packages/providers/src/providers/sources/kissasian/common.ts create mode 100644 packages/providers/src/providers/sources/kissasian/getEmbeds.ts create mode 100644 packages/providers/src/providers/sources/kissasian/getEpisodes.ts create mode 100644 packages/providers/src/providers/sources/kissasian/index.ts create mode 100644 packages/providers/src/providers/sources/kissasian/search.ts create mode 100644 packages/providers/src/providers/sources/lookmovie/index.ts create mode 100644 packages/providers/src/providers/sources/lookmovie/type.ts create mode 100644 packages/providers/src/providers/sources/lookmovie/util.ts create mode 100644 packages/providers/src/providers/sources/lookmovie/video.ts create mode 100644 packages/providers/src/providers/sources/nepu/index.ts create mode 100644 packages/providers/src/providers/sources/nepu/types.ts create mode 100644 packages/providers/src/providers/sources/nites.ts create mode 100644 packages/providers/src/providers/sources/nsbx.ts create mode 100644 packages/providers/src/providers/sources/primewire/common.ts create mode 100644 packages/providers/src/providers/sources/primewire/decryption/README.md create mode 100644 packages/providers/src/providers/sources/primewire/decryption/blowfish.ts create mode 100644 packages/providers/src/providers/sources/primewire/decryption/constants.ts create mode 100644 packages/providers/src/providers/sources/primewire/index.ts create mode 100644 packages/providers/src/providers/sources/remotestream.ts create mode 100644 packages/providers/src/providers/sources/ridomovies/index.ts create mode 100644 packages/providers/src/providers/sources/ridomovies/types.ts create mode 100644 packages/providers/src/providers/sources/showbox/LICENSE create mode 100644 packages/providers/src/providers/sources/showbox/common.ts create mode 100644 packages/providers/src/providers/sources/showbox/crypto.ts create mode 100644 packages/providers/src/providers/sources/showbox/index.ts create mode 100644 packages/providers/src/providers/sources/showbox/sendRequest.ts create mode 100644 packages/providers/src/providers/sources/smashystream/index.ts create mode 100644 packages/providers/src/providers/sources/soapertv/index.ts create mode 100644 packages/providers/src/providers/sources/soapertv/types.ts create mode 100644 packages/providers/src/providers/sources/tugaflix/common.ts create mode 100644 packages/providers/src/providers/sources/tugaflix/index.ts create mode 100644 packages/providers/src/providers/sources/vidsrc/common.ts create mode 100644 packages/providers/src/providers/sources/vidsrc/index.ts create mode 100644 packages/providers/src/providers/sources/vidsrc/scrape-movie.ts create mode 100644 packages/providers/src/providers/sources/vidsrc/scrape-show.ts create mode 100644 packages/providers/src/providers/sources/vidsrc/scrape.ts create mode 100644 packages/providers/src/providers/sources/vidsrcto/common.ts create mode 100644 packages/providers/src/providers/sources/vidsrcto/index.ts create mode 100644 packages/providers/src/providers/sources/vidsrcto/types.ts create mode 100644 packages/providers/src/providers/sources/warezcdn/common.ts create mode 100644 packages/providers/src/providers/sources/warezcdn/index.ts create mode 100644 packages/providers/src/providers/sources/warezcdn/types.ts create mode 100644 packages/providers/src/providers/sources/zoechip/common.ts create mode 100644 packages/providers/src/providers/sources/zoechip/index.ts create mode 100644 packages/providers/src/providers/sources/zoechip/scrape-movie.ts create mode 100644 packages/providers/src/providers/sources/zoechip/scrape-show.ts create mode 100644 packages/providers/src/providers/sources/zoechip/scrape.ts create mode 100644 packages/providers/src/providers/sources/zoechip/search.ts create mode 100644 packages/providers/src/providers/streams.ts create mode 100644 packages/providers/src/runners/individualRunner.ts create mode 100644 packages/providers/src/runners/runner.ts create mode 100644 packages/providers/src/utils/compare.ts create mode 100644 packages/providers/src/utils/context.ts create mode 100644 packages/providers/src/utils/cookie.ts create mode 100644 packages/providers/src/utils/errors.ts create mode 100644 packages/providers/src/utils/list.ts create mode 100644 packages/providers/src/utils/native.ts create mode 100644 packages/providers/src/utils/predicates.ts create mode 100644 packages/providers/src/utils/quality.ts create mode 100644 packages/providers/src/utils/valid.ts create mode 100644 packages/providers/tests/README.md create mode 100644 packages/providers/tests/browser/.gitignore create mode 100644 packages/providers/tests/browser/index.html create mode 100644 packages/providers/tests/browser/index.ts create mode 100644 packages/providers/tests/browser/package.json create mode 100644 packages/providers/tests/browser/startup.mjs create mode 100644 packages/providers/tests/cjs/index.js create mode 100644 packages/providers/tests/cjs/package.json create mode 100644 packages/providers/tests/esm/index.mjs create mode 100644 packages/providers/tests/esm/package.json create mode 100644 packages/providers/tsconfig.json create mode 100644 packages/providers/vite.config.ts diff --git a/apps/expo/app.config.ts b/apps/expo/app.config.ts index a3405f0..ccd194f 100644 --- a/apps/expo/app.config.ts +++ b/apps/expo/app.config.ts @@ -4,98 +4,98 @@ import { version } from "./package.json"; import withRemoveiOSNotificationEntitlement from "./src/plugins/withRemoveiOSNotificationEntitlement"; const defineConfig = (): ExpoConfig => ({ - name: "movie-web", - slug: "mw-mobile", - scheme: "movieweb", - version, - icon: "./assets/images/icon.png", - userInterfaceStyle: "automatic", - splash: { - image: "./assets/images/splash.png", - resizeMode: "contain", - backgroundColor: "#000000", - }, - updates: { - fallbackToCacheTimeout: 0, - }, - assetBundlePatterns: ["**/*"], - ios: { - bundleIdentifier: "dev.movieweb.mobile", - supportsTablet: true, - requireFullScreen: true, - infoPlist: { - CFBundleName: "movie-web", - NSPhotoLibraryUsageDescription: - "This app saves videos to the photo library.", - }, - }, - android: { - package: "dev.movieweb.mobile", - permissions: ["WRITE_SETTINGS"], - }, - web: { - favicon: "./assets/images/favicon.png", - bundler: "metro", - }, - experiments: { - tsconfigPaths: true, - typedRoutes: true, - }, - plugins: [ - "expo-router", - [withRemoveiOSNotificationEntitlement as unknown as string], - [ - "expo-screen-orientation", - { - initialOrientation: "PORTRAIT_UP", - }, - ], - [ - "expo-build-properties", - { - ios: { - newArchEnabled: false, - }, - android: { - newArchEnabled: false, - minSdkVersion: 24, - packagingOptions: { - pickFirst: [ - "lib/x86/libcrypto.so", - "lib/x86_64/libcrypto.so", - "lib/armeabi-v7a/libcrypto.so", - "lib/arm64-v8a/libcrypto.so", - ], - }, - }, - }, - ], - [ - "expo-alternate-app-icons", - [ - "./assets/images/main.png", - "./assets/images/blue.png", - "./assets/images/gray.png", - "./assets/images/red.png", - "./assets/images/teal.png", - ], - ], - [ - "expo-media-library", - { - photosPermission: "Allow $(PRODUCT_NAME) to access your photos.", - savePhotosPermission: "Allow $(PRODUCT_NAME) to save photos.", - isAccessMediaLocationEnabled: true, - }, - ], - [ - "expo-pod-pinner", - { - targetName: "movieweb", - pods: [{ "OpenSSL-Universal": "1.1.2200" }], - }, - ], - ], + name: "movie-web", + slug: "mw-mobile", + scheme: "movieweb", + version, + icon: "./assets/images/icon.png", + userInterfaceStyle: "automatic", + splash: { + image: "./assets/images/splash.png", + resizeMode: "contain", + backgroundColor: "#000000", + }, + updates: { + fallbackToCacheTimeout: 0, + }, + assetBundlePatterns: ["**/*"], + ios: { + bundleIdentifier: "dev.movieweb.mobile", + supportsTablet: true, + requireFullScreen: true, + infoPlist: { + CFBundleName: "movie-web", + NSPhotoLibraryUsageDescription: + "This app saves videos to the photo library.", + }, + }, + android: { + package: "dev.movieweb.mobile", + permissions: ["WRITE_SETTINGS"], + }, + web: { + favicon: "./assets/images/favicon.png", + bundler: "metro", + }, + experiments: { + tsconfigPaths: true, + typedRoutes: true, + }, + plugins: [ + "expo-router", + [withRemoveiOSNotificationEntitlement as unknown as string], + [ + "expo-screen-orientation", + { + initialOrientation: "PORTRAIT_UP", + }, + ], + [ + "expo-build-properties", + { + ios: { + newArchEnabled: false, + }, + android: { + newArchEnabled: false, + minSdkVersion: 24, + packagingOptions: { + pickFirst: [ + "lib/x86/libcrypto.so", + "lib/x86_64/libcrypto.so", + "lib/armeabi-v7a/libcrypto.so", + "lib/arm64-v8a/libcrypto.so", + ], + }, + }, + }, + ], + [ + "expo-alternate-app-icons", + [ + "./assets/images/main.png", + "./assets/images/blue.png", + "./assets/images/gray.png", + "./assets/images/red.png", + "./assets/images/teal.png", + ], + ], + [ + "expo-media-library", + { + photosPermission: "Allow $(PRODUCT_NAME) to access your photos.", + savePhotosPermission: "Allow $(PRODUCT_NAME) to save photos.", + isAccessMediaLocationEnabled: true, + }, + ], + [ + "expo-pod-pinner", + { + targetName: "movieweb", + pods: [{ "OpenSSL-Universal": "1.1.2200" }], + }, + ], + ], }); export default defineConfig; diff --git a/apps/expo/metro.config.js b/apps/expo/metro.config.js index 3445cb6..2e8b8a0 100644 --- a/apps/expo/metro.config.js +++ b/apps/expo/metro.config.js @@ -1,6 +1,6 @@ // Learn more: https://docs.expo.dev/guides/monorepos/ const { getDefaultConfig } = require("expo/metro-config"); -const { mergeConfig } = require('metro-config'); +const { mergeConfig } = require("metro-config"); const { FileStore } = require("metro-cache"); const { withTamagui } = require("@tamagui/metro-plugin"); @@ -9,17 +9,20 @@ const path = require("path"); module.exports = withTurborepoManagedCache( withMonorepoPaths( withTamagui( - mergeConfig(getDefaultConfig(__dirname, { - isCSSEnabled: true, - }), { - transformer: { - getTransformOptions: async () => ({ - transform: { - inlineRequires: true, - }, - }), - }, - }), + mergeConfig( + getDefaultConfig(__dirname, { + isCSSEnabled: true, + }), + { + transformer: { + getTransformOptions: async () => ({ + transform: { + inlineRequires: true, + }, + }), + }, + }, + ), { components: ["tamagui"], config: "./tamagui.config.ts", diff --git a/apps/expo/package.json b/apps/expo/package.json index 4edd09f..610a9bb 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -93,8 +93,8 @@ "@types/babel__core": "^7.20.5", "@types/react": "^18.2.48", "babel-plugin-module-resolver": "^5.0.0", - "eslint": "^8.56.0", - "prettier": "^3.1.1", + "eslint": "^8.57.0", + "prettier": "^3.2.5", "typescript": "^5.4.3" }, "eslintConfig": { diff --git a/bun.lockb b/bun.lockb index e57098eb53d4fa121acf51d63660baf6112137dc..f59d9a62dd12a59c34a6cb7f8ac9bca647065f19 100755 GIT binary patch delta 189381 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 BZoB{h delta 166511 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

_2Pb{i#Q7cjBpc3j@haCb<=-Il3w(F&M8AA#rT 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 { + ops.testSuite.forEach((test) => { + describe(`test ${test.title}`, async () => { + async function gatherEmbeds(providers: ProviderControls): Promise { + const results = await providers.runSourceScraper({ + id: ops.source.id, + media: test, + }); + if (results.embeds.length !== ops.expect.embeds) + throw new Error( + `Embeds don't match expected amount of embeds (${ops.source.id}, ${ops.embed.id}, got ${results.embeds.length} but expected ${ops.expect.embeds})`, + ); + return results.embeds; + } + + async function runTest(providers: ProviderControls, embedUrl: string) { + let hasError = false; + let streamCount = 0; + try { + const result = await providers.runEmbedScraper({ + id: ops.embed.id, + url: embedUrl, + }); + if (ops.debug) console.log(result); + streamCount = (result.stream ?? []).length; + } catch (err) { + if (ops.debug) console.log(err); + hasError = true; + } + expect(ops.expect.error ?? false).toBe(hasError); + expect(ops.expect.streams ?? 0).toBe(streamCount); + } + + for (const t of ops.types) { + const builder = makeBaseEmbedProviders().addSource(ops.source).addEmbed(ops.embed); + if (t === 'standard') { + } else if (t === 'ip:standard') builder.enableConsistentIpForRequests(); + else if (t === 'proxied') { + if (!process.env.MOVIE_WEB_PROXY_URL) + throw new Error('Cant use proxied test without setting MOVIE_WEB_PROXY_URL env'); + builder.setProxiedFetcher(makeSimpleProxyFetcher(process.env.MOVIE_WEB_PROXY_URL, fetch)); + } + const providers = builder.build(); + try { + const embeds = await gatherEmbeds(providers); + embeds.forEach((embed, i) => { + it(`${t} - embed ${i}`, async () => { + await runTest(providers, embed.url); + }); + }); + } catch (err) { + it(`${t} - embed ??`, () => { + throw new Error('Failed to get streams: ' + err); + }); + } + } + }); + }); + }); +} diff --git a/packages/providers/src/__test__/providers/embeds.test.ts b/packages/providers/src/__test__/providers/embeds.test.ts new file mode 100644 index 0000000..333d4cc --- /dev/null +++ b/packages/providers/src/__test__/providers/embeds.test.ts @@ -0,0 +1,118 @@ +import dotenv from 'dotenv'; +import { febboxMp4Scraper } from '@/providers/embeds/febbox/mp4'; +import { testEmbed } from './embedUtils'; +import { showboxScraper } from '@/providers/sources/showbox'; +import { testMedia } from './testMedia'; +import { flixhqScraper } from '@/providers/sources/flixhq'; +import { upcloudScraper } from '@/providers/embeds/upcloud'; +import { goMoviesScraper } from '@/providers/sources/gomovies'; +import { smashyStreamScraper } from '@/providers/sources/smashystream'; +import { smashyStreamDScraper } from '@/providers/embeds/smashystream/dued'; +import { vidsrcembedScraper } from '@/providers/embeds/vidsrc'; +import { vidsrcScraper } from '@/providers/sources/vidsrc'; +import { vidSrcToScraper } from '@/providers/sources/vidsrcto'; +import { vidplayScraper } from '@/providers/embeds/vidplay'; +import { fileMoonScraper } from '@/providers/embeds/filemoon'; +import { zoechipScraper } from '@/providers/sources/zoechip'; +import { mixdropScraper } from '@/providers/embeds/mixdrop'; + +dotenv.config(); + +testEmbed({ + embed: febboxMp4Scraper, + source: showboxScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + embeds: 1, + streams: 1, + }, +}); + +testEmbed({ + embed: upcloudScraper, + source: flixhqScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + embeds: 1, + streams: 1, + }, +}); + +testEmbed({ + embed: upcloudScraper, + source: goMoviesScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + embeds: 1, + streams: 1, + }, +}); + +testEmbed({ + embed: smashyStreamDScraper, + source: smashyStreamScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + embeds: 1, + streams: 1, + }, +}); + +testEmbed({ + embed: vidsrcembedScraper, + source: vidsrcScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + embeds: 1, + streams: 1, + }, +}); + +testEmbed({ + embed: vidplayScraper, + source: vidSrcToScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + embeds: 1, + streams: 1, + }, +}); + +testEmbed({ + embed: fileMoonScraper, + source: vidSrcToScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + embeds: 1, + streams: 1, + }, +}); + +testEmbed({ + embed: upcloudScraper, + source: zoechipScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + embeds: 2, + streams: 1, + }, +}); + +testEmbed({ + embed: mixdropScraper, + source: zoechipScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + embeds: 2, + streams: 1, + }, +}); diff --git a/packages/providers/src/__test__/providers/providerUtils.ts b/packages/providers/src/__test__/providers/providerUtils.ts new file mode 100644 index 0000000..d47b924 --- /dev/null +++ b/packages/providers/src/__test__/providers/providerUtils.ts @@ -0,0 +1,92 @@ +import { ScrapeMedia } from '@/entrypoint/utils/media'; +import { Embed, Sourcerer, SourcererEmbed } from '@/providers/base'; +import { buildProviders } from '@/entrypoint/builder'; +import { describe, expect, it } from 'vitest'; +import { makeStandardFetcher } from '@/fetchers/standardFetch'; +import { ProviderControls } from '@/entrypoint/controls'; +import { NotFoundError } from '@/utils/errors'; +import { targets } from '@/entrypoint/utils/targets'; +import { getBuiltinEmbeds } from '@/entrypoint/providers'; +import { makeSimpleProxyFetcher } from '@/fetchers/simpleProxy'; + +export type TestTypes = 'standard' | 'ip:standard' | 'proxied'; + +export interface TestSourceOptions { + source: Sourcerer; + testSuite: ScrapeMedia[]; + types: TestTypes[]; + debug?: boolean; + expect: { + embeds?: number; + streams?: number; + error?: boolean; + notfound?: boolean; + }; +} + +function makeBaseProviders() { + const builder = buildProviders().setTarget(targets.ANY).setFetcher(makeStandardFetcher(fetch)); + const embeds = getBuiltinEmbeds(); + embeds.forEach((embed) => builder.addEmbed(embed)); + return builder; +} + +export function testSource(ops: TestSourceOptions) { + if (ops.testSuite.length === 0) throw new Error('Test suite must have at least one test'); + describe(`source:${ops.source.id}`, () => { + ops.testSuite.forEach((test) => { + describe(`test ${test.title}`, () => { + async function runTest(providers: ProviderControls) { + let hasNotFound = false; + let hasError = false; + let streamCount = 0; + let embedCount = 0; + let embeds = []; + try { + const result = await providers.runSourceScraper({ + id: ops.source.id, + media: test, + }); + if (ops.debug) console.log(result); + streamCount = (result.stream ?? []).length; + embedCount = result.embeds.length; + } catch (err) { + if (ops.debug) console.log(err); + if (err instanceof NotFoundError) hasNotFound = true; + else hasError = true; + } + expect(ops.expect.error ?? false).toBe(hasError); + expect(ops.expect.notfound ?? false).toBe(hasNotFound); + expect(ops.expect.streams ?? 0).toBe(streamCount); + expect(ops.expect.embeds ?? 0).toBe(embedCount); + } + + if (ops.types.includes('standard')) { + it(`standard`, async () => { + const providers = makeBaseProviders().addSource(ops.source).build(); + await runTest(providers); + }); + } + + if (ops.types.includes('ip:standard')) { + it(`standard:ip`, async () => { + const providers = makeBaseProviders().addSource(ops.source).enableConsistentIpForRequests().build(); + await runTest(providers); + }); + } + + if (ops.types.includes('proxied')) { + it(`proxied`, async () => { + if (!process.env.MOVIE_WEB_PROXY_URL) + throw new Error('Cant use proxied test without setting MOVIE_WEB_PROXY_URL env'); + const providers = makeBaseProviders() + .addSource(ops.source) + .setProxiedFetcher(makeSimpleProxyFetcher(process.env.MOVIE_WEB_PROXY_URL, fetch)) + .build(); + await runTest(providers); + }); + } + }); + }); + }); +} diff --git a/packages/providers/src/__test__/providers/providers.test.ts b/packages/providers/src/__test__/providers/providers.test.ts new file mode 100644 index 0000000..c311729 --- /dev/null +++ b/packages/providers/src/__test__/providers/providers.test.ts @@ -0,0 +1,95 @@ +import { testSource } from './providerUtils'; +import { lookmovieScraper } from '@/providers/sources/lookmovie'; +import { testMedia } from './testMedia'; +import { showboxScraper } from '@/providers/sources/showbox'; +import dotenv from 'dotenv'; +import { flixhqScraper } from '@/providers/sources/flixhq'; +import { goMoviesScraper } from '@/providers/sources/gomovies'; +import { smashyStreamScraper } from '@/providers/sources/smashystream'; +import { vidsrcScraper } from '@/providers/sources/vidsrc'; +import { vidSrcToScraper } from '@/providers/sources/vidsrcto'; +import { zoechipScraper } from '@/providers/sources/zoechip'; +import { remotestreamScraper } from '@/providers/sources/remotestream'; + +dotenv.config(); + +testSource({ + source: lookmovieScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['ip:standard'], + expect: { + streams: 1, + }, +}); + +testSource({ + source: showboxScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + embeds: 1, + }, +}); + +testSource({ + source: flixhqScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + embeds: 1, + }, +}); + +testSource({ + source: goMoviesScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + embeds: 1, + }, +}); + +testSource({ + source: smashyStreamScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + embeds: 1, + }, +}); + +testSource({ + source: vidsrcScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + embeds: 1, + }, +}); + +testSource({ + source: vidSrcToScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + embeds: 2, + }, +}); + +testSource({ + source: zoechipScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + embeds: 3, + }, +}); + +testSource({ + source: remotestreamScraper, + testSuite: [testMedia.arcane, testMedia.hamilton], + types: ['standard', 'proxied'], + expect: { + streams: 1, + }, +}); diff --git a/packages/providers/src/__test__/providers/testMedia.ts b/packages/providers/src/__test__/providers/testMedia.ts new file mode 100644 index 0000000..1c2c3bd --- /dev/null +++ b/packages/providers/src/__test__/providers/testMedia.ts @@ -0,0 +1,30 @@ +import { ScrapeMedia } from '@/entrypoint/utils/media'; + +function makeMedia(media: ScrapeMedia): ScrapeMedia { + return media; +} + +export const testMedia = { + arcane: makeMedia({ + type: 'show', + title: 'Arcane', + tmdbId: '94605', + releaseYear: 2021, + episode: { + number: 1, + tmdbId: '1953812', + }, + season: { + number: 1, + tmdbId: '134187', + }, + imdbId: 'tt11126994', + }), + hamilton: makeMedia({ + type: 'movie', + tmdbId: '556574', + imdbId: 'tt8503618', + releaseYear: 2020, + title: 'Hamilton', + }), +}; diff --git a/packages/providers/src/__test__/standard/fetchers/body.test.ts b/packages/providers/src/__test__/standard/fetchers/body.test.ts new file mode 100644 index 0000000..9e517cc --- /dev/null +++ b/packages/providers/src/__test__/standard/fetchers/body.test.ts @@ -0,0 +1,39 @@ +import { serializeBody } from '@/fetchers/body'; +import FormData from 'form-data'; +import { describe, expect, it } from 'vitest'; + +describe('serializeBody()', () => { + it('should work with standard text', () => { + expect(serializeBody('hello world')).toEqual({ + headers: {}, + body: 'hello world', + }); + }); + + it('should work with objects', () => { + expect(serializeBody({ hello: 'world', a: 42 })).toEqual({ + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ hello: 'world', a: 42 }), + }); + }); + + it('should work x-www-form-urlencoded', () => { + const obj = new URLSearchParams(); + obj.set('a', 'b'); + expect(serializeBody(obj)).toEqual({ + headers: {}, + body: obj, + }); + }); + + it('should work multipart/form-data', () => { + const obj = new FormData(); + obj.append('a', 'b'); + expect(serializeBody(obj)).toEqual({ + headers: {}, + body: obj, + }); + }); +}); diff --git a/packages/providers/src/__test__/standard/fetchers/common.test.ts b/packages/providers/src/__test__/standard/fetchers/common.test.ts new file mode 100644 index 0000000..40fdd61 --- /dev/null +++ b/packages/providers/src/__test__/standard/fetchers/common.test.ts @@ -0,0 +1,62 @@ +import { makeFullUrl } from '@/fetchers/common'; +import { describe, expect, it } from 'vitest'; + +describe('makeFullUrl()', () => { + it('should pass normal url if no options', () => { + expect(makeFullUrl('https://example.com/hello/world')).toEqual('https://example.com/hello/world'); + expect(makeFullUrl('https://example.com/hello/world?a=b')).toEqual('https://example.com/hello/world?a=b'); + expect(makeFullUrl('https://example.com/hello/world?a=b#hello')).toEqual( + 'https://example.com/hello/world?a=b#hello', + ); + expect(makeFullUrl('https://example.com/hello/world#hello')).toEqual('https://example.com/hello/world#hello'); + }); + + it('should append baseurl correctly', () => { + const correctResult = 'https://example.com/hello/world'; + expect(makeFullUrl(correctResult, { baseUrl: '' })).toEqual(correctResult); + expect(makeFullUrl('/hello/world', { baseUrl: 'https://example.com' })).toEqual(correctResult); + expect(makeFullUrl('/hello/world', { baseUrl: 'https://example.com/' })).toEqual(correctResult); + expect(makeFullUrl('hello/world', { baseUrl: 'https://example.com/' })).toEqual(correctResult); + expect(makeFullUrl('hello/world', { baseUrl: 'https://example.com' })).toEqual(correctResult); + expect(makeFullUrl('/world', { baseUrl: 'https://example.com/hello' })).toEqual(correctResult); + expect(makeFullUrl('/world', { baseUrl: 'https://example.com/hello/' })).toEqual(correctResult); + expect(makeFullUrl('world', { baseUrl: 'https://example.com/hello/' })).toEqual(correctResult); + expect(makeFullUrl('world', { baseUrl: 'https://example.com/hello' })).toEqual(correctResult); + expect(makeFullUrl('world?a=b', { baseUrl: 'https://example.com/hello' })).toEqual( + 'https://example.com/hello/world?a=b', + ); + }); + + it('should throw with invalid baseurl combinations', () => { + expect(() => makeFullUrl('example.com/hello/world', { baseUrl: '' })).toThrowError(); + expect(() => makeFullUrl('/hello/world', { baseUrl: 'example.com' })).toThrowError(); + expect(() => makeFullUrl('/hello/world', { baseUrl: 'tcp://example.com' })).toThrowError(); + expect(() => makeFullUrl('/hello/world', { baseUrl: 'tcp://example.com' })).toThrowError(); + }); + + it('should add/merge query parameters', () => { + expect(makeFullUrl('https://example.com/hello/world', { query: { a: 'b' } })).toEqual( + 'https://example.com/hello/world?a=b', + ); + expect(makeFullUrl('https://example.com/hello/world/', { query: { a: 'b' } })).toEqual( + 'https://example.com/hello/world/?a=b', + ); + expect(makeFullUrl('https://example.com', { query: { a: 'b' } })).toEqual('https://example.com/?a=b'); + expect(makeFullUrl('https://example.com/', { query: { a: 'b' } })).toEqual('https://example.com/?a=b'); + + expect(makeFullUrl('https://example.com/hello/world?c=d', { query: { a: 'b' } })).toEqual( + 'https://example.com/hello/world?c=d&a=b', + ); + expect(makeFullUrl('https://example.com/hello/world?c=d', { query: {} })).toEqual( + 'https://example.com/hello/world?c=d', + ); + expect(makeFullUrl('https://example.com/hello/world?c=d')).toEqual('https://example.com/hello/world?c=d'); + expect(makeFullUrl('https://example.com/hello/world?c=d', {})).toEqual('https://example.com/hello/world?c=d'); + }); + + it('should work with a mix of multiple options', () => { + expect(makeFullUrl('/hello/world?c=d', { baseUrl: 'https://example.com/', query: { a: 'b' } })).toEqual( + 'https://example.com/hello/world?c=d&a=b', + ); + }); +}); diff --git a/packages/providers/src/__test__/standard/fetchers/simpleProxy.test.ts b/packages/providers/src/__test__/standard/fetchers/simpleProxy.test.ts new file mode 100644 index 0000000..cef585e --- /dev/null +++ b/packages/providers/src/__test__/standard/fetchers/simpleProxy.test.ts @@ -0,0 +1,148 @@ +import { makeSimpleProxyFetcher } from '@/fetchers/simpleProxy'; +import { DefaultedFetcherOptions, FetcherOptions } from '@/fetchers/types'; +import { Headers } from 'node-fetch'; +import { afterEach, describe, expect, it, vi } from 'vitest'; + +describe('makeSimpleProxyFetcher()', () => { + const fetch = vi.fn(); + const fetcher = makeSimpleProxyFetcher('https://example.com/proxy', fetch); + + afterEach(() => { + vi.clearAllMocks(); + }); + + function setResult(type: 'text' | 'json', value: any) { + if (type === 'text') + return fetch.mockResolvedValueOnce({ + headers: new Headers({ + 'content-type': 'text/plain', + }), + status: 204, + url: 'test123', + text() { + return Promise.resolve(value); + }, + }); + if (type === 'json') + return fetch.mockResolvedValueOnce({ + headers: new Headers({ + 'content-type': 'application/json', + }), + status: 204, + url: 'test123', + json() { + return Promise.resolve(value); + }, + }); + } + + function expectFetchCall(ops: { + inputUrl: string; + input: DefaultedFetcherOptions; + outputUrl?: string; + output: any; + outputBody: any; + }) { + const prom = fetcher(ops.inputUrl, ops.input); + expect((async () => (await prom).body)()).resolves.toEqual(ops.outputBody); + expect((async () => Array.from((await prom).headers.entries()))()).resolves.toEqual( + Array.from(new Headers().entries()), + ); + expect((async () => (await prom).statusCode)()).resolves.toEqual(204); + expect((async () => (await prom).finalUrl)()).resolves.toEqual('test123'); + expect(fetch).toBeCalledWith(ops.outputUrl ?? ops.inputUrl, ops.output); + vi.clearAllMocks(); + } + + it('should pass options through', () => { + setResult('text', 'hello world'); + expectFetchCall({ + inputUrl: 'https://google.com', + input: { + method: 'GET', + query: {}, + readHeaders: [], + headers: { + 'X-Hello': 'world', + }, + }, + outputUrl: `https://example.com/proxy?destination=${encodeURIComponent('https://google.com/')}`, + output: { + method: 'GET', + headers: { + 'X-Hello': 'world', + }, + }, + outputBody: 'hello world', + }); + setResult('text', 'hello world'); + expectFetchCall({ + inputUrl: 'https://google.com', + input: { + method: 'GET', + headers: {}, + readHeaders: [], + query: { + a: 'b', + }, + }, + outputUrl: `https://example.com/proxy?destination=${encodeURIComponent('https://google.com/?a=b')}`, + output: { + method: 'GET', + headers: {}, + }, + outputBody: 'hello world', + }); + setResult('text', 'hello world'); + expectFetchCall({ + inputUrl: 'https://google.com', + input: { + method: 'GET', + query: {}, + readHeaders: [], + headers: {}, + }, + outputUrl: `https://example.com/proxy?destination=${encodeURIComponent('https://google.com/')}`, + output: { + method: 'GET', + headers: {}, + }, + outputBody: 'hello world', + }); + }); + + it('should parse response correctly', () => { + setResult('text', 'hello world'); + expectFetchCall({ + inputUrl: 'https://google.com/', + input: { + method: 'POST', + query: {}, + readHeaders: [], + headers: {}, + }, + outputUrl: `https://example.com/proxy?destination=${encodeURIComponent('https://google.com/')}`, + output: { + method: 'POST', + headers: {}, + }, + outputBody: 'hello world', + }); + setResult('json', { hello: 42 }); + expectFetchCall({ + inputUrl: 'https://google.com/', + input: { + method: 'POST', + query: {}, + readHeaders: [], + headers: {}, + }, + outputUrl: `https://example.com/proxy?destination=${encodeURIComponent('https://google.com/')}`, + output: { + method: 'POST', + headers: {}, + }, + outputBody: { hello: 42 }, + }); + }); +}); diff --git a/packages/providers/src/__test__/standard/fetchers/standard.test.ts b/packages/providers/src/__test__/standard/fetchers/standard.test.ts new file mode 100644 index 0000000..8699136 --- /dev/null +++ b/packages/providers/src/__test__/standard/fetchers/standard.test.ts @@ -0,0 +1,149 @@ +import { makeStandardFetcher } from '@/fetchers/standardFetch'; +import { DefaultedFetcherOptions } from '@/fetchers/types'; +import { Headers } from 'node-fetch'; +import { afterEach, describe, expect, it, vi } from 'vitest'; + +describe('makeStandardFetcher()', () => { + const fetch = vi.fn(); + const fetcher = makeStandardFetcher(fetch); + + afterEach(() => { + vi.clearAllMocks(); + }); + + function setResult(type: 'text' | 'json', value: any) { + if (type === 'text') + return fetch.mockResolvedValueOnce({ + headers: new Headers({ + 'content-type': 'text/plain', + }), + status: 204, + url: 'test123', + text() { + return Promise.resolve(value); + }, + }); + if (type === 'json') + return fetch.mockResolvedValueOnce({ + headers: new Headers({ + 'content-type': 'application/json', + }), + status: 204, + url: 'test123', + json() { + return Promise.resolve(value); + }, + }); + } + + function expectFetchCall(ops: { + inputUrl: string; + input: DefaultedFetcherOptions; + outputUrl?: string; + output: any; + outputBody: any; + }) { + const prom = fetcher(ops.inputUrl, ops.input); + expect((async () => (await prom).body)()).resolves.toEqual(ops.outputBody); + expect((async () => Array.from((await prom).headers.entries()))()).resolves.toEqual( + Array.from(new Headers().entries()), + ); + expect((async () => (await prom).statusCode)()).resolves.toEqual(204); + expect((async () => (await prom).finalUrl)()).resolves.toEqual('test123'); + expect(fetch).toBeCalledWith(ops.outputUrl ?? ops.inputUrl, ops.output); + vi.clearAllMocks(); + } + + it('should pass options through', () => { + setResult('text', 'hello world'); + expectFetchCall({ + inputUrl: 'https://google.com', + input: { + method: 'GET', + query: {}, + readHeaders: [], + headers: { + 'X-Hello': 'world', + }, + }, + outputUrl: 'https://google.com/', + output: { + method: 'GET', + headers: { + 'X-Hello': 'world', + }, + body: undefined, + }, + outputBody: 'hello world', + }); + setResult('text', 'hello world'); + expectFetchCall({ + inputUrl: 'https://google.com', + input: { + method: 'GET', + headers: {}, + readHeaders: [], + query: { + a: 'b', + }, + }, + outputUrl: 'https://google.com/?a=b', + output: { + method: 'GET', + headers: {}, + }, + outputBody: 'hello world', + }); + setResult('text', 'hello world'); + expectFetchCall({ + inputUrl: 'https://google.com', + input: { + query: {}, + headers: {}, + readHeaders: [], + method: 'GET', + }, + outputUrl: 'https://google.com/', + output: { + method: 'GET', + headers: {}, + }, + outputBody: 'hello world', + }); + }); + + it('should parse response correctly', () => { + setResult('text', 'hello world'); + expectFetchCall({ + inputUrl: 'https://google.com/', + input: { + query: {}, + headers: {}, + readHeaders: [], + method: 'POST', + }, + outputUrl: 'https://google.com/', + output: { + method: 'POST', + headers: {}, + }, + outputBody: 'hello world', + }); + setResult('json', { hello: 42 }); + expectFetchCall({ + inputUrl: 'https://google.com/', + input: { + query: {}, + headers: {}, + readHeaders: [], + method: 'POST', + }, + outputUrl: 'https://google.com/', + output: { + method: 'POST', + headers: {}, + }, + outputBody: { hello: 42 }, + }); + }); +}); diff --git a/packages/providers/src/__test__/standard/providerTests.ts b/packages/providers/src/__test__/standard/providerTests.ts new file mode 100644 index 0000000..f5c87b7 --- /dev/null +++ b/packages/providers/src/__test__/standard/providerTests.ts @@ -0,0 +1,135 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import { vi } from 'vitest'; + +import { gatherAllEmbeds, gatherAllSources } from '@/providers/all'; +import { makeEmbed, makeSourcerer } from '@/providers/base'; + +export function makeProviderMocks() { + const embedsMock = vi.fn, ReturnType>(); + const sourcesMock = vi.fn, ReturnType>(); + return { + gatherAllEmbeds: embedsMock, + gatherAllSources: sourcesMock, + }; +} + +const sourceA = makeSourcerer({ + id: 'a', + name: 'A', + rank: 1, + disabled: false, + flags: [], +}); +const sourceB = makeSourcerer({ + id: 'b', + name: 'B', + rank: 2, + disabled: false, + flags: [], +}); +const sourceCDisabled = makeSourcerer({ + id: 'c', + name: 'C', + rank: 3, + disabled: true, + flags: [], +}); +const sourceAHigherRank = makeSourcerer({ + id: 'a', + name: 'A', + rank: 100, + disabled: false, + flags: [], +}); +const sourceGSameRankAsA = makeSourcerer({ + id: 'g', + name: 'G', + rank: 1, + disabled: false, + flags: [], +}); +const fullSourceYMovie = makeSourcerer({ + id: 'y', + name: 'Y', + rank: 105, + scrapeMovie: vi.fn(), + flags: [], +}); +const fullSourceYShow = makeSourcerer({ + id: 'y', + name: 'Y', + rank: 105, + scrapeShow: vi.fn(), + flags: [], +}); +const fullSourceZBoth = makeSourcerer({ + id: 'z', + name: 'Z', + rank: 106, + scrapeMovie: vi.fn(), + scrapeShow: vi.fn(), + flags: [], +}); + +const embedD = makeEmbed({ + id: 'd', + rank: 4, + disabled: false, +} as any); +const embedA = makeEmbed({ + id: 'a', + rank: 5, + disabled: false, +} as any); +const embedEDisabled = makeEmbed({ + id: 'e', + rank: 6, + disabled: true, +} as any); +const embedDHigherRank = makeEmbed({ + id: 'd', + rank: 4000, + disabled: false, +} as any); +const embedFSameRankAsA = makeEmbed({ + id: 'f', + rank: 5, + disabled: false, +} as any); +const embedHSameRankAsSourceA = makeEmbed({ + id: 'h', + rank: 1, + disabled: false, +} as any); +const fullEmbedX = makeEmbed({ + id: 'x', + name: 'X', + rank: 104, +} as any); +const fullEmbedZ = makeEmbed({ + id: 'z', + name: 'Z', + rank: 109, +} as any); + +export const mockSources = { + sourceA, + sourceB, + sourceCDisabled, + sourceAHigherRank, + sourceGSameRankAsA, + fullSourceYMovie, + fullSourceYShow, + fullSourceZBoth, +}; + +export const mockEmbeds = { + embedA, + embedD, + embedDHigherRank, + embedEDisabled, + embedFSameRankAsA, + embedHSameRankAsSourceA, + fullEmbedX, + fullEmbedZ, +}; diff --git a/packages/providers/src/__test__/standard/providers/checks.test.ts b/packages/providers/src/__test__/standard/providers/checks.test.ts new file mode 100644 index 0000000..56e1c39 --- /dev/null +++ b/packages/providers/src/__test__/standard/providers/checks.test.ts @@ -0,0 +1,105 @@ +import { mockEmbeds, mockSources } from '../providerTests'; +import { getBuiltinEmbeds, getBuiltinSources } from '@/entrypoint/providers'; +import { FeatureMap } from '@/entrypoint/utils/targets'; +import { getProviders } from '@/providers/get'; +import { vi, describe, it, expect, afterEach } from 'vitest'; + +const mocks = await vi.hoisted(async () => (await import('../providerTests')).makeProviderMocks()); +vi.mock('@/providers/all', () => mocks); + +const features: FeatureMap = { + requires: [], + disallowed: [], +}; + +describe('getProviders()', () => { + afterEach(() => { + vi.clearAllMocks(); + }); + + it('should return providers', () => { + mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.embedD]); + mocks.gatherAllSources.mockReturnValue([mockSources.sourceA, mockSources.sourceB]); + expect( + getProviders(features, { + embeds: getBuiltinEmbeds(), + sources: getBuiltinSources(), + }), + ).toEqual({ + sources: [mockSources.sourceA, mockSources.sourceB], + embeds: [mockEmbeds.embedD], + }); + }); + + it('should filter out disabled providers', () => { + mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.embedD, mockEmbeds.embedEDisabled]); + mocks.gatherAllSources.mockReturnValue([mockSources.sourceA, mockSources.sourceCDisabled, mockSources.sourceB]); + expect( + getProviders(features, { + embeds: getBuiltinEmbeds(), + sources: getBuiltinSources(), + }), + ).toEqual({ + sources: [mockSources.sourceA, mockSources.sourceB], + embeds: [mockEmbeds.embedD], + }); + }); + + it('should throw on duplicate ids in sources', () => { + mocks.gatherAllEmbeds.mockReturnValue([]); + mocks.gatherAllSources.mockReturnValue([mockSources.sourceAHigherRank, mockSources.sourceA, mockSources.sourceB]); + expect(() => + getProviders(features, { + embeds: getBuiltinEmbeds(), + sources: getBuiltinSources(), + }), + ).toThrowError(); + }); + + it('should throw on duplicate ids in embeds', () => { + mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.embedD, mockEmbeds.embedDHigherRank, mockEmbeds.embedA]); + mocks.gatherAllSources.mockReturnValue([]); + expect(() => + getProviders(features, { + embeds: getBuiltinEmbeds(), + sources: getBuiltinSources(), + }), + ).toThrowError(); + }); + + it('should throw on duplicate ids between sources and embeds', () => { + mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.embedD, mockEmbeds.embedA]); + mocks.gatherAllSources.mockReturnValue([mockSources.sourceA, mockSources.sourceB]); + expect(() => + getProviders(features, { + embeds: getBuiltinEmbeds(), + sources: getBuiltinSources(), + }), + ).toThrowError(); + }); + + it('should throw on duplicate rank between sources and embeds', () => { + mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.embedD, mockEmbeds.embedA]); + mocks.gatherAllSources.mockReturnValue([mockSources.sourceA, mockSources.sourceB]); + expect(() => + getProviders(features, { + embeds: getBuiltinEmbeds(), + sources: getBuiltinSources(), + }), + ).toThrowError(); + }); + + it('should not throw with same rank between sources and embeds', () => { + mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.embedD, mockEmbeds.embedHSameRankAsSourceA]); + mocks.gatherAllSources.mockReturnValue([mockSources.sourceA, mockSources.sourceB]); + expect( + getProviders(features, { + embeds: getBuiltinEmbeds(), + sources: getBuiltinSources(), + }), + ).toEqual({ + sources: [mockSources.sourceA, mockSources.sourceB], + embeds: [mockEmbeds.embedD, mockEmbeds.embedHSameRankAsSourceA], + }); + }); +}); diff --git a/packages/providers/src/__test__/standard/runner/list.test.ts b/packages/providers/src/__test__/standard/runner/list.test.ts new file mode 100644 index 0000000..b615457 --- /dev/null +++ b/packages/providers/src/__test__/standard/runner/list.test.ts @@ -0,0 +1,130 @@ +import { mockEmbeds, mockSources } from '../providerTests.ts'; +import { makeProviders } from '@/entrypoint/declare'; +import { targets } from '@/entrypoint/utils/targets'; +import { afterEach, describe, expect, it, vi } from 'vitest'; + +const mocks = await vi.hoisted(async () => (await import('../providerTests.ts')).makeProviderMocks()); +vi.mock('@/providers/all', () => mocks); + +describe('ProviderControls.listSources()', () => { + afterEach(() => { + vi.clearAllMocks(); + }); + + it('should return the source with movie type', () => { + mocks.gatherAllSources.mockReturnValue([mockSources.fullSourceYMovie]); + mocks.gatherAllEmbeds.mockReturnValue([]); + const p = makeProviders({ + fetcher: null as any, + target: targets.NATIVE, + }); + expect(p.listSources()).toEqual([ + { + type: 'source', + id: 'y', + rank: mockSources.fullSourceYMovie.rank, + name: 'Y', + mediaTypes: ['movie'], + }, + ]); + }); + + it('should return the source with show type', () => { + mocks.gatherAllSources.mockReturnValue([mockSources.fullSourceYShow]); + mocks.gatherAllEmbeds.mockReturnValue([]); + const p = makeProviders({ + fetcher: null as any, + target: targets.NATIVE, + }); + expect(p.listSources()).toEqual([ + { + type: 'source', + id: 'y', + rank: mockSources.fullSourceYShow.rank, + name: 'Y', + mediaTypes: ['show'], + }, + ]); + }); + + it('should return the source with both types', () => { + mocks.gatherAllSources.mockReturnValue([mockSources.fullSourceZBoth]); + mocks.gatherAllEmbeds.mockReturnValue([]); + const p = makeProviders({ + fetcher: null as any, + target: targets.NATIVE, + }); + expect(p.listSources()).toEqual([ + { + type: 'source', + id: 'z', + rank: mockSources.fullSourceZBoth.rank, + name: 'Z', + mediaTypes: ['movie', 'show'], + }, + ]); + }); + + it('should return the sources in correct order', () => { + mocks.gatherAllSources.mockReturnValue([mockSources.fullSourceYMovie, mockSources.fullSourceZBoth]); + mocks.gatherAllEmbeds.mockReturnValue([]); + const p1 = makeProviders({ + fetcher: null as any, + target: targets.NATIVE, + }); + const l1 = p1.listSources(); + expect(l1.map((v) => v.id).join(',')).toEqual('z,y'); + + mocks.gatherAllSources.mockReturnValue([mockSources.fullSourceZBoth, mockSources.fullSourceYMovie]); + mocks.gatherAllEmbeds.mockReturnValue([]); + const p2 = makeProviders({ + fetcher: null as any, + target: targets.NATIVE, + }); + const l2 = p2.listSources(); + expect(l2.map((v) => v.id).join(',')).toEqual('z,y'); + }); +}); + +describe('ProviderControls.getAllEmbedMetaSorted()', () => { + afterEach(() => { + vi.clearAllMocks(); + }); + + it('should return the correct embed format', () => { + mocks.gatherAllSources.mockReturnValue([]); + mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.fullEmbedX]); + const p = makeProviders({ + fetcher: null as any, + target: targets.NATIVE, + }); + expect(p.listEmbeds()).toEqual([ + { + type: 'embed', + id: 'x', + rank: mockEmbeds.fullEmbedX.rank, + name: 'X', + }, + ]); + }); + + it('should return the embeds in correct order', () => { + mocks.gatherAllSources.mockReturnValue([]); + mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.fullEmbedX, mockEmbeds.fullEmbedZ]); + const p1 = makeProviders({ + fetcher: null as any, + target: targets.NATIVE, + }); + const l1 = p1.listEmbeds(); + expect(l1.map((v) => v.id).join(',')).toEqual('z,x'); + + mocks.gatherAllSources.mockReturnValue([]); + mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.fullEmbedZ, mockEmbeds.fullEmbedX]); + const p2 = makeProviders({ + fetcher: null as any, + target: targets.NATIVE, + }); + const l2 = p2.listEmbeds(); + expect(l2.map((v) => v.id).join(',')).toEqual('z,x'); + }); +}); diff --git a/packages/providers/src/__test__/standard/runner/meta.test.ts b/packages/providers/src/__test__/standard/runner/meta.test.ts new file mode 100644 index 0000000..ac2fab6 --- /dev/null +++ b/packages/providers/src/__test__/standard/runner/meta.test.ts @@ -0,0 +1,54 @@ +import { mockEmbeds, mockSources } from '../providerTests.ts'; +import { makeProviders } from '@/entrypoint/declare'; +import { targets } from '@/entrypoint/utils/targets'; +import { afterEach, describe, expect, it, vi } from 'vitest'; + +const mocks = await vi.hoisted(async () => (await import('../providerTests.ts')).makeProviderMocks()); +vi.mock('@/providers/all', () => mocks); + +describe('ProviderControls.getMetadata()', () => { + afterEach(() => { + vi.clearAllMocks(); + }); + + it('should return null if not found', () => { + mocks.gatherAllSources.mockReturnValue([]); + mocks.gatherAllEmbeds.mockReturnValue([]); + const p = makeProviders({ + fetcher: null as any, + target: targets.NATIVE, + }); + expect(p.getMetadata(':)')).toEqual(null); + }); + + it('should return correct source meta', () => { + mocks.gatherAllSources.mockReturnValue([mockSources.fullSourceZBoth]); + mocks.gatherAllEmbeds.mockReturnValue([]); + const p = makeProviders({ + fetcher: null as any, + target: targets.NATIVE, + }); + expect(p.getMetadata(mockSources.fullSourceZBoth.id)).toEqual({ + type: 'source', + id: 'z', + name: 'Z', + rank: mockSources.fullSourceZBoth.rank, + mediaTypes: ['movie', 'show'], + }); + }); + + it('should return correct embed meta', () => { + mocks.gatherAllSources.mockReturnValue([]); + mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.fullEmbedX]); + const p = makeProviders({ + fetcher: null as any, + target: targets.NATIVE, + }); + expect(p.getMetadata(mockEmbeds.fullEmbedX.id)).toEqual({ + type: 'embed', + id: 'x', + name: 'X', + rank: mockEmbeds.fullEmbedX.rank, + }); + }); +}); diff --git a/packages/providers/src/__test__/standard/utils/features.test.ts b/packages/providers/src/__test__/standard/utils/features.test.ts new file mode 100644 index 0000000..75a855c --- /dev/null +++ b/packages/providers/src/__test__/standard/utils/features.test.ts @@ -0,0 +1,137 @@ +import { FeatureMap, Flags, flags, flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; +import { describe, it, expect } from 'vitest'; + +describe('flagsAllowedInFeatures()', () => { + function checkFeatures(featureMap: FeatureMap, flags: Flags[], output: boolean) { + expect(flagsAllowedInFeatures(featureMap, flags)).toEqual(output); + } + + it('should check required correctly', () => { + checkFeatures( + { + requires: [], + disallowed: [], + }, + [], + true, + ); + checkFeatures( + { + requires: [flags.CORS_ALLOWED], + disallowed: [], + }, + [flags.CORS_ALLOWED], + true, + ); + checkFeatures( + { + requires: [flags.CORS_ALLOWED], + disallowed: [], + }, + [], + false, + ); + checkFeatures( + { + requires: [flags.CORS_ALLOWED, flags.IP_LOCKED], + disallowed: [], + }, + [flags.CORS_ALLOWED, flags.IP_LOCKED], + true, + ); + checkFeatures( + { + requires: [flags.IP_LOCKED], + disallowed: [], + }, + [flags.CORS_ALLOWED], + false, + ); + checkFeatures( + { + requires: [flags.IP_LOCKED], + disallowed: [], + }, + [], + false, + ); + }); + + it('should check disallowed correctly', () => { + checkFeatures( + { + requires: [], + disallowed: [], + }, + [], + true, + ); + checkFeatures( + { + requires: [], + disallowed: [flags.CORS_ALLOWED], + }, + [], + true, + ); + checkFeatures( + { + requires: [], + disallowed: [flags.CORS_ALLOWED], + }, + [flags.CORS_ALLOWED], + false, + ); + checkFeatures( + { + requires: [], + disallowed: [flags.CORS_ALLOWED], + }, + [flags.IP_LOCKED], + true, + ); + checkFeatures( + { + requires: [], + disallowed: [flags.CORS_ALLOWED, flags.IP_LOCKED], + }, + [flags.CORS_ALLOWED], + false, + ); + }); + + it('should pass mixed tests', () => { + checkFeatures( + { + requires: [flags.CORS_ALLOWED], + disallowed: [flags.IP_LOCKED], + }, + [], + false, + ); + checkFeatures( + { + requires: [flags.CORS_ALLOWED], + disallowed: [flags.IP_LOCKED], + }, + [flags.CORS_ALLOWED], + true, + ); + checkFeatures( + { + requires: [flags.CORS_ALLOWED], + disallowed: [flags.IP_LOCKED], + }, + [flags.IP_LOCKED], + false, + ); + checkFeatures( + { + requires: [flags.CORS_ALLOWED], + disallowed: [flags.IP_LOCKED], + }, + [flags.IP_LOCKED, flags.CORS_ALLOWED], + false, + ); + }); +}); diff --git a/packages/providers/src/__test__/standard/utils/list.test.ts b/packages/providers/src/__test__/standard/utils/list.test.ts new file mode 100644 index 0000000..35437c7 --- /dev/null +++ b/packages/providers/src/__test__/standard/utils/list.test.ts @@ -0,0 +1,54 @@ +import { reorderOnIdList } from '@/utils/list'; +import { describe, it, expect } from 'vitest'; + +function list(def: string) { + return def.split(',').map((v) => ({ + rank: parseInt(v), + id: v, + })); +} + +function expectListToEqual(l1: ReturnType, l2: ReturnType) { + function flatten(l: ReturnType) { + return l.map((v) => v.id).join(','); + } + expect(flatten(l1)).toEqual(flatten(l2)); +} + +describe('reorderOnIdList()', () => { + it('should reorder based on rank', () => { + const l = list('2,1,4,3'); + const sortedList = list('4,3,2,1'); + expectListToEqual(reorderOnIdList([], l), sortedList); + }); + + it('should work with empty input', () => { + expectListToEqual(reorderOnIdList([], []), []); + }); + + it('should reorder based on id list', () => { + const l = list('4,2,1,3'); + const sortedList = list('4,3,2,1'); + expectListToEqual(reorderOnIdList(['4', '3', '2', '1'], l), sortedList); + }); + + it('should reorder based on id list and rank second', () => { + const l = list('4,2,1,3'); + const sortedList = list('4,3,2,1'); + expectListToEqual(reorderOnIdList(['4', '3'], l), sortedList); + }); + + it('should work with only one item', () => { + const l = list('1'); + const sortedList = list('1'); + expectListToEqual(reorderOnIdList(['1'], l), sortedList); + expectListToEqual(reorderOnIdList([], l), sortedList); + }); + + it('should not affect original list', () => { + const l = list('4,3,2,1'); + const unsortedList = list('4,3,2,1'); + reorderOnIdList([], l); + expectListToEqual(l, unsortedList); + }); +}); diff --git a/packages/providers/src/__test__/standard/utils/valid.test.ts b/packages/providers/src/__test__/standard/utils/valid.test.ts new file mode 100644 index 0000000..26837e3 --- /dev/null +++ b/packages/providers/src/__test__/standard/utils/valid.test.ts @@ -0,0 +1,71 @@ +import { isValidStream } from '@/utils/valid'; +import { describe, it, expect } from 'vitest'; + +describe('isValidStream()', () => { + it('should pass valid streams', () => { + expect( + isValidStream({ + type: 'file', + id: 'a', + flags: [], + captions: [], + qualities: { + '1080': { + type: 'mp4', + url: 'hello-world', + }, + }, + }), + ).toBe(true); + expect( + isValidStream({ + type: 'hls', + id: 'a', + flags: [], + captions: [], + playlist: 'hello-world', + }), + ).toBe(true); + }); + + it('should detect empty qualities', () => { + expect( + isValidStream({ + type: 'file', + id: 'a', + flags: [], + captions: [], + qualities: {}, + }), + ).toBe(false); + }); + + it('should detect empty stream urls', () => { + expect( + isValidStream({ + type: 'file', + id: 'a', + flags: [], + captions: [], + qualities: { + '1080': { + type: 'mp4', + url: '', + }, + }, + }), + ).toBe(false); + }); + + it('should detect emtpy HLS playlists', () => { + expect( + isValidStream({ + type: 'hls', + id: 'a', + flags: [], + captions: [], + playlist: '', + }), + ).toBe(false); + }); +}); diff --git a/packages/providers/src/__test__/tsconfig.json b/packages/providers/src/__test__/tsconfig.json new file mode 100644 index 0000000..238d5f2 --- /dev/null +++ b/packages/providers/src/__test__/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "esnext", + "lib": ["esnext"], + "module": "esnext", + "moduleResolution": "node", + "declaration": true, + "outDir": "./lib", + "strict": true, + "esModuleInterop": true, + "allowImportingTsExtensions": true, + "noEmit": true, + "experimentalDecorators": true, + "isolatedModules": false, + "skipLibCheck": true, + "paths": { + "@/*": ["../*"], + "@entrypoint": ["../index.ts"] + } + }, + "include": ["./"] +} diff --git a/packages/providers/src/dev-cli/browser/.gitignore b/packages/providers/src/dev-cli/browser/.gitignore new file mode 100644 index 0000000..1521c8b --- /dev/null +++ b/packages/providers/src/dev-cli/browser/.gitignore @@ -0,0 +1 @@ +dist diff --git a/packages/providers/src/dev-cli/browser/index.html b/packages/providers/src/dev-cli/browser/index.html new file mode 100644 index 0000000..7709f4b --- /dev/null +++ b/packages/providers/src/dev-cli/browser/index.html @@ -0,0 +1,11 @@ + + + + + + Scraper CLI + + + + + diff --git a/packages/providers/src/dev-cli/browser/index.ts b/packages/providers/src/dev-cli/browser/index.ts new file mode 100644 index 0000000..c753201 --- /dev/null +++ b/packages/providers/src/dev-cli/browser/index.ts @@ -0,0 +1,20 @@ +import { makeProviders } from "@/entrypoint/declare"; +import { targets } from "@/entrypoint/utils/targets"; +import { makeSimpleProxyFetcher } from "@/fetchers/simpleProxy"; +import { makeStandardFetcher } from "@/fetchers/standardFetch"; + +(window as any).scrape = (proxyUrl: string, type: 'source' | 'embed', input: any) => { + const providers = makeProviders({ + fetcher: makeStandardFetcher(fetch), + target: targets.BROWSER, + proxiedFetcher: makeSimpleProxyFetcher(proxyUrl, fetch), + }); + if (type === 'source') { + return providers.runSourceScraper(input); + } + if (type === 'embed') { + return providers.runEmbedScraper(input); + } + + throw new Error('Input input type'); +}; diff --git a/packages/providers/src/dev-cli/config.ts b/packages/providers/src/dev-cli/config.ts new file mode 100644 index 0000000..38f8039 --- /dev/null +++ b/packages/providers/src/dev-cli/config.ts @@ -0,0 +1,16 @@ +export function getConfig() { + let tmdbApiKey = process.env.MOVIE_WEB_TMDB_API_KEY ?? ''; + tmdbApiKey = tmdbApiKey.trim(); + + if (!tmdbApiKey) { + throw new Error('Missing MOVIE_WEB_TMDB_API_KEY environment variable'); + } + + let proxyUrl: undefined | string = process.env.MOVIE_WEB_PROXY_URL; + proxyUrl = !proxyUrl ? undefined : proxyUrl; + + return { + tmdbApiKey, + proxyUrl, + }; +} diff --git a/packages/providers/src/dev-cli/index.ts b/packages/providers/src/dev-cli/index.ts new file mode 100644 index 0000000..fef501a --- /dev/null +++ b/packages/providers/src/dev-cli/index.ts @@ -0,0 +1,188 @@ +/* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": true}] */ + +import { program } from 'commander'; +import dotenv from 'dotenv'; +import { prompt } from 'enquirer'; + +import { runScraper } from '@/dev-cli/scraper'; +import { processOptions } from '@/dev-cli/validate'; +import { getBuiltinEmbeds, getBuiltinSources } from '@/entrypoint/providers'; + +dotenv.config(); + +type ProviderSourceAnswers = { + id: string; + type: string; +}; + +type EmbedSourceAnswers = { + url: string; +}; + +type CommonAnswers = { + fetcher: string; + source: string; +}; + +type ShowAnswers = { + season: string; + episode: string; +}; + +const sourceScrapers = getBuiltinSources().sort((a, b) => b.rank - a.rank); +const embedScrapers = getBuiltinEmbeds().sort((a, b) => b.rank - a.rank); +const sources = [...sourceScrapers, ...embedScrapers]; + +function joinMediaTypes(mediaTypes: string[] | undefined) { + if (mediaTypes) { + const formatted = mediaTypes + .map((type: string) => { + return `${type[0].toUpperCase() + type.substring(1).toLowerCase()}s`; + }) + .join(' / '); + + return `(${formatted})`; + } + return ''; // * Embed sources pass through here too +} + +async function runQuestions() { + const options = { + fetcher: 'node-fetch', + sourceId: '', + tmdbId: '', + type: 'movie', + season: '0', + episode: '0', + url: '', + }; + + const answers = await prompt([ + { + type: 'select', + name: 'fetcher', + message: 'Select a fetcher mode', + choices: [ + { + message: 'Native', + name: 'native', + }, + { + message: 'Node fetch', + name: 'node-fetch', + }, + { + message: 'Browser', + name: 'browser', + }, + ], + }, + { + type: 'select', + name: 'source', + message: 'Select a source', + choices: sources.map((source) => ({ + message: `[${source.type.toLocaleUpperCase()}] ${source.name} ${joinMediaTypes(source.mediaTypes)}`.trim(), + name: source.id, + })), + }, + ]); + + options.fetcher = answers.fetcher; + options.sourceId = answers.source; + + const source = sources.find(({ id }) => id === answers.source); + + if (!source) { + throw new Error(`No source with ID ${answers.source} found`); + } + + if (source.type === 'embed') { + const sourceAnswers = await prompt([ + { + type: 'input', + name: 'url', + message: 'Embed URL', + }, + ]); + + options.url = sourceAnswers.url; + } else { + const sourceAnswers = await prompt([ + { + type: 'input', + name: 'id', + message: 'TMDB ID', + }, + { + type: 'select', + name: 'type', + message: 'Media type', + choices: [ + { + message: 'Movie', + name: 'movie', + }, + { + message: 'TV Show', + name: 'show', + }, + ], + }, + ]); + + options.tmdbId = sourceAnswers.id; + options.type = sourceAnswers.type; + + if (sourceAnswers.type === 'show') { + const seriesAnswers = await prompt([ + { + type: 'input', + name: 'season', + message: 'Season', + }, + { + type: 'input', + name: 'episode', + message: 'Episode', + }, + ]); + + options.season = seriesAnswers.season; + options.episode = seriesAnswers.episode; + } + } + + const { providerOptions, source: validatedSource, options: validatedOps } = await processOptions(sources, options); + await runScraper(providerOptions, validatedSource, validatedOps); +} + +async function runCommandLine() { + program + .option('-f, --fetcher ', "Fetcher to use. Either 'native' or 'node-fetch'", 'node-fetch') + .option('-sid, --source-id ', 'ID for the source to use. Either an embed or provider', '') + .option('-tid, --tmdb-id ', 'TMDB ID for the media to scrape. Only used if source is a provider', '') + .option('-t, --type ', "Media type. Either 'movie' or 'show'. Only used if source is a provider", 'movie') + .option('-s, --season ', "Season number. Only used if type is 'show'", '0') + .option('-e, --episode ', "Episode number. Only used if type is 'show'", '0') + .option('-u, --url ', 'URL to a video embed. Only used if source is an embed', ''); + + program.parse(); + + const { + providerOptions, + source: validatedSource, + options: validatedOps, + } = await processOptions(sources, program.opts()); + await runScraper(providerOptions, validatedSource, validatedOps); +} + +if (process.argv.length === 2) { + runQuestions() + .catch(() => console.error('Exited.')) + .finally(() => process.exit(0)); +} else { + runCommandLine() + .catch(() => console.error('Exited.')) + .finally(() => process.exit(0)); +} diff --git a/packages/providers/src/dev-cli/logging.ts b/packages/providers/src/dev-cli/logging.ts new file mode 100644 index 0000000..5495f1d --- /dev/null +++ b/packages/providers/src/dev-cli/logging.ts @@ -0,0 +1,7 @@ +import { inspect } from 'node:util'; + +export function logDeepObject(object: Record) { + // This is the dev cli, so we can use console.log + // eslint-disable-next-line no-console + console.log(inspect(object, { showHidden: false, depth: null, colors: true })); +} diff --git a/packages/providers/src/dev-cli/scraper.ts b/packages/providers/src/dev-cli/scraper.ts new file mode 100644 index 0000000..5afb582 --- /dev/null +++ b/packages/providers/src/dev-cli/scraper.ts @@ -0,0 +1,141 @@ +/* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": true}] */ + +import { existsSync } from 'fs'; +import { join } from 'path'; + +import puppeteer, { Browser } from 'puppeteer'; +import Spinnies from 'spinnies'; +import { PreviewServer, build, preview } from 'vite'; + +import { getConfig } from '@/dev-cli/config'; +import { logDeepObject } from '@/dev-cli/logging'; +import { getMovieMediaDetails, getShowMediaDetails } from '@/dev-cli/tmdb'; +import { CommandLineArguments } from '@/dev-cli/validate'; +import { ProviderMakerOptions, makeProviders } from '@/entrypoint/declare'; +import { MetaOutput } from '@/entrypoint/utils/meta'; + +async function runBrowserScraping( + providerOptions: ProviderMakerOptions, + source: MetaOutput, + options: CommandLineArguments, +) { + if (!existsSync(join(__dirname, '../../lib/index.js'))) + throw new Error('Please compile before running cli in browser mode'); + const config = getConfig(); + if (!config.proxyUrl) + throw new Error('Simple proxy url must be set in the environment (MOVIE_WEB_PROXY_URL) for browser mode to work'); + + const root = join(__dirname, 'browser'); + let server: PreviewServer | undefined; + let browser: Browser | undefined; + try { + // setup browser + await build({ + root, + }); + server = await preview({ + root, + }); + browser = await puppeteer.launch({ + headless: true, + args: ['--no-sandbox', '--disable-setuid-sandbox'], + }); + const page = await browser.newPage(); + // This is the dev cli, so we can use console.log + // eslint-disable-next-line no-console + page.on('console', (message) => console.log(`${message.type().slice(0, 3).toUpperCase()} ${message.text()}`)); + + if (!server.resolvedUrls?.local.length) throw new Error('Server did not start'); + await page.goto(server.resolvedUrls.local[0]); + await page.waitForFunction('!!window.scrape', { timeout: 5000 }); + + // get input media + let input: any; + if (source.type === 'embed') { + input = { + url: options.url, + id: source.id, + }; + } else if (source.type === 'source') { + let media; + if (options.type === 'movie') { + media = await getMovieMediaDetails(options.tmdbId); + } else { + media = await getShowMediaDetails(options.tmdbId, options.season, options.episode); + } + input = { + media, + id: source.id, + }; + } else { + throw new Error('Wrong source input type'); + } + + return await page.evaluate( + async (proxy, type, inp) => { + return (window as any).scrape(proxy, type, inp); + }, + config.proxyUrl, + source.type, + input, + ); + } finally { + server?.httpServer.close(); + await browser?.close(); + } +} + +async function runActualScraping( + providerOptions: ProviderMakerOptions, + source: MetaOutput, + options: CommandLineArguments, +): Promise { + if (options.fetcher === 'browser') return runBrowserScraping(providerOptions, source, options); + const providers = makeProviders(providerOptions); + + if (source.type === 'embed') { + return providers.runEmbedScraper({ + url: options.url, + id: source.id, + }); + } + + if (source.type === 'source') { + let media; + + if (options.type === 'movie') { + media = await getMovieMediaDetails(options.tmdbId); + } else { + media = await getShowMediaDetails(options.tmdbId, options.season, options.episode); + } + + return providers.runSourceScraper({ + media, + id: source.id, + }); + } + + throw new Error('Invalid source type'); +} + +export async function runScraper( + providerOptions: ProviderMakerOptions, + source: MetaOutput, + options: CommandLineArguments, +) { + const spinnies = new Spinnies(); + + spinnies.add('scrape', { text: `Running ${source.name} scraper` }); + try { + const result = await runActualScraping(providerOptions, source, options); + spinnies.succeed('scrape', { text: 'Done!' }); + logDeepObject(result); + } catch (error) { + let message = 'Unknown error'; + if (error instanceof Error) { + message = error.message; + } + spinnies.fail('scrape', { text: `ERROR: ${message}` }); + console.error(error); + } +} diff --git a/packages/providers/src/dev-cli/tmdb.ts b/packages/providers/src/dev-cli/tmdb.ts new file mode 100644 index 0000000..f18aed1 --- /dev/null +++ b/packages/providers/src/dev-cli/tmdb.ts @@ -0,0 +1,100 @@ +import { getConfig } from '@/dev-cli/config'; +import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; + +export async function makeTMDBRequest(url: string, appendToResponse?: string): Promise { + const headers: { + accept: 'application/json'; + authorization?: string; + } = { + accept: 'application/json', + }; + + const requestURL = new URL(url); + const key = getConfig().tmdbApiKey; + + // * JWT keys always start with ey and are ONLY valid as a header. + // * All other keys are ONLY valid as a query param. + // * Thanks TMDB. + if (key.startsWith('ey')) { + headers.authorization = `Bearer ${key}`; + } else { + requestURL.searchParams.append('api_key', key); + } + + if (appendToResponse) { + requestURL.searchParams.append('append_to_response', appendToResponse); + } + + return fetch(requestURL, { + method: 'GET', + headers, + }); +} + +export async function getMovieMediaDetails(id: string): Promise { + const response = await makeTMDBRequest(`https://api.themoviedb.org/3/movie/${id}`, 'external_ids'); + const movie = await response.json(); + + if (movie.success === false) { + throw new Error(movie.status_message); + } + + if (!movie.release_date) { + throw new Error(`${movie.title} has no release_date. Assuming unreleased`); + } + + return { + type: 'movie', + title: movie.title, + releaseYear: Number(movie.release_date.split('-')[0]), + tmdbId: id, + imdbId: movie.imdb_id, + }; +} + +export async function getShowMediaDetails(id: string, seasonNumber: string, episodeNumber: string): Promise { + // * TV shows require the TMDB ID for the series, season, and episode + // * and the name of the series. Needs multiple requests + let response = await makeTMDBRequest(`https://api.themoviedb.org/3/tv/${id}`, 'external_ids'); + const series = await response.json(); + + if (series.success === false) { + throw new Error(series.status_message); + } + + if (!series.first_air_date) { + throw new Error(`${series.name} has no first_air_date. Assuming unaired`); + } + + response = await makeTMDBRequest(`https://api.themoviedb.org/3/tv/${id}/season/${seasonNumber}`); + const season = await response.json(); + + if (season.success === false) { + throw new Error(season.status_message); + } + + response = await makeTMDBRequest( + `https://api.themoviedb.org/3/tv/${id}/season/${seasonNumber}/episode/${episodeNumber}`, + ); + const episode = await response.json(); + + if (episode.success === false) { + throw new Error(episode.status_message); + } + + return { + type: 'show', + title: series.name, + releaseYear: Number(series.first_air_date.split('-')[0]), + tmdbId: id, + episode: { + number: episode.episode_number, + tmdbId: episode.id, + }, + season: { + number: season.season_number, + tmdbId: season.id, + }, + imdbId: series.external_ids.imdb_id, + }; +} diff --git a/packages/providers/src/dev-cli/validate.ts b/packages/providers/src/dev-cli/validate.ts new file mode 100644 index 0000000..033b51c --- /dev/null +++ b/packages/providers/src/dev-cli/validate.ts @@ -0,0 +1,93 @@ +import nodeFetch from 'node-fetch'; + +import { Embed, Sourcerer } from '@/providers/base'; +import { ProviderMakerOptions } from '@/entrypoint/declare'; +import { targets } from '@/entrypoint/utils/targets'; +import { makeStandardFetcher } from '@/fetchers/standardFetch'; + +export type CommandLineArguments = { + fetcher: string; + sourceId: string; + tmdbId: string; + type: string; + season: string; + episode: string; + url: string; +}; + +export async function processOptions(sources: Array, options: CommandLineArguments) { + const fetcherOptions = ['node-fetch', 'native', 'browser']; + if (!fetcherOptions.includes(options.fetcher)) { + throw new Error(`Fetcher must be any of: ${fetcherOptions.join()}`); + } + + if (!options.sourceId.trim()) { + throw new Error('Source ID must be provided'); + } + + const source = sources.find(({ id }) => id === options.sourceId); + + if (!source) { + throw new Error('Invalid source ID. No source found'); + } + + if (source.type === 'embed' && !options.url.trim()) { + throw new Error('Must provide an embed URL for embed sources'); + } + + if (source.type === 'source') { + if (!options.tmdbId.trim()) { + throw new Error('Must provide a TMDB ID for provider sources'); + } + + if (Number.isNaN(Number(options.tmdbId)) || Number(options.tmdbId) < 0) { + throw new Error('TMDB ID must be a number greater than 0'); + } + + if (!options.type.trim()) { + throw new Error('Must provide a type for provider sources'); + } + + if (options.type !== 'movie' && options.type !== 'show') { + throw new Error("Invalid media type. Must be either 'movie' or 'show'"); + } + + if (options.type === 'show') { + if (!options.season.trim()) { + throw new Error('Must provide a season number for TV shows'); + } + + if (!options.episode.trim()) { + throw new Error('Must provide an episode number for TV shows'); + } + + if (Number.isNaN(Number(options.season)) || Number(options.season) <= 0) { + throw new Error('Season number must be a number greater than 0'); + } + + if (Number.isNaN(Number(options.episode)) || Number(options.episode) <= 0) { + throw new Error('Episode number must be a number greater than 0'); + } + } + } + + let fetcher; + + if (options.fetcher === 'native') { + fetcher = makeStandardFetcher(fetch); + } else { + fetcher = makeStandardFetcher(nodeFetch); + } + + const providerOptions: ProviderMakerOptions = { + fetcher, + target: targets.ANY, + consistentIpForRequests: true, + }; + + return { + providerOptions, + options, + source, + }; +} diff --git a/packages/providers/src/entrypoint/builder.ts b/packages/providers/src/entrypoint/builder.ts new file mode 100644 index 0000000..abf8288 --- /dev/null +++ b/packages/providers/src/entrypoint/builder.ts @@ -0,0 +1,93 @@ +import { ProviderControls, makeControls } from '@/entrypoint/controls'; +import { getBuiltinEmbeds, getBuiltinSources } from '@/entrypoint/providers'; +import { Targets, getTargetFeatures } from '@/entrypoint/utils/targets'; +import { Fetcher } from '@/fetchers/types'; +import { Embed, Sourcerer } from '@/providers/base'; +import { getProviders } from '@/providers/get'; + +export type ProviderBuilder = { + setTarget(target: Targets): ProviderBuilder; + setFetcher(fetcher: Fetcher): ProviderBuilder; + setProxiedFetcher(fetcher: Fetcher): ProviderBuilder; + addSource(scraper: Sourcerer): ProviderBuilder; + addSource(name: string): ProviderBuilder; + addEmbed(scraper: Embed): ProviderBuilder; + addEmbed(name: string): ProviderBuilder; + addBuiltinProviders(): ProviderBuilder; + enableConsistentIpForRequests(): ProviderBuilder; + build(): ProviderControls; +}; + +export function buildProviders(): ProviderBuilder { + let consistentIpForRequests = false; + let target: Targets | null = null; + let fetcher: Fetcher | null = null; + let proxiedFetcher: Fetcher | null = null; + const embeds: Embed[] = []; + const sources: Sourcerer[] = []; + const builtinSources = getBuiltinSources(); + const builtinEmbeds = getBuiltinEmbeds(); + + return { + enableConsistentIpForRequests() { + consistentIpForRequests = true; + return this; + }, + setFetcher(f) { + fetcher = f; + return this; + }, + setProxiedFetcher(f) { + proxiedFetcher = f; + return this; + }, + setTarget(t) { + target = t; + return this; + }, + addSource(input) { + if (typeof input !== 'string') { + sources.push(input); + return this; + } + + const matchingSource = builtinSources.find((v) => v.id === input); + if (!matchingSource) throw new Error('Source not found'); + sources.push(matchingSource); + return this; + }, + addEmbed(input) { + if (typeof input !== 'string') { + embeds.push(input); + return this; + } + + const matchingEmbed = builtinEmbeds.find((v) => v.id === input); + if (!matchingEmbed) throw new Error('Embed not found'); + embeds.push(matchingEmbed); + return this; + }, + addBuiltinProviders() { + sources.push(...builtinSources); + embeds.push(...builtinEmbeds); + return this; + }, + build() { + if (!target) throw new Error('Target not set'); + if (!fetcher) throw new Error('Fetcher not set'); + const features = getTargetFeatures(target, consistentIpForRequests); + const list = getProviders(features, { + embeds, + sources, + }); + + return makeControls({ + fetcher, + proxiedFetcher: proxiedFetcher ?? undefined, + embeds: list.embeds, + sources: list.sources, + features, + }); + }, + }; +} diff --git a/packages/providers/src/entrypoint/controls.ts b/packages/providers/src/entrypoint/controls.ts new file mode 100644 index 0000000..5ff400b --- /dev/null +++ b/packages/providers/src/entrypoint/controls.ts @@ -0,0 +1,119 @@ +import { FullScraperEvents, IndividualScraperEvents } from '@/entrypoint/utils/events'; +import { ScrapeMedia } from '@/entrypoint/utils/media'; +import { MetaOutput, getAllEmbedMetaSorted, getAllSourceMetaSorted, getSpecificId } from '@/entrypoint/utils/meta'; +import { FeatureMap } from '@/entrypoint/utils/targets'; +import { makeFetcher } from '@/fetchers/common'; +import { Fetcher } from '@/fetchers/types'; +import { Embed, EmbedOutput, Sourcerer, SourcererOutput } from '@/providers/base'; +import { scrapeIndividualEmbed, scrapeInvidualSource } from '@/runners/individualRunner'; +import { RunOutput, runAllProviders } from '@/runners/runner'; + +export interface ProviderControlsInput { + fetcher: Fetcher; + proxiedFetcher?: Fetcher; + features: FeatureMap; + sources: Sourcerer[]; + embeds: Embed[]; +} + +export interface RunnerOptions { + // overwrite the order of sources to run. list of ids + // any omitted ids are in added to the end in order of rank (highest first) + sourceOrder?: string[]; + + // overwrite the order of embeds to run. list of ids + // any omitted ids are in added to the end in order of rank (highest first) + embedOrder?: string[]; + + // object of event functions + events?: FullScraperEvents; + + // the media you want to see sources from + media: ScrapeMedia; +} + +export interface SourceRunnerOptions { + // object of event functions + events?: IndividualScraperEvents; + + // the media you want to see sources from + media: ScrapeMedia; + + // id of the source scraper you want to scrape from + id: string; +} + +export interface EmbedRunnerOptions { + // object of event functions + events?: IndividualScraperEvents; + + // the embed url + url: string; + + // id of the embed scraper you want to scrape from + id: string; +} + +export interface ProviderControls { + // Run all providers one by one. in order of rank (highest first) + // returns the stream, or null if none found + runAll(runnerOps: RunnerOptions): Promise; + + // Run a specific source scraper + runSourceScraper(runnerOps: SourceRunnerOptions): Promise; + + // Run a specific embed scraper + runEmbedScraper(runnerOps: EmbedRunnerOptions): Promise; + + // get meta data about a source or embed. + getMetadata(id: string): MetaOutput | null; + + // return all sources. sorted by rank (highest first) + listSources(): MetaOutput[]; + + // return all embed scrapers. sorted by rank (highest first) + listEmbeds(): MetaOutput[]; +} + +export function makeControls(ops: ProviderControlsInput): ProviderControls { + const list = { + embeds: ops.embeds, + sources: ops.sources, + }; + + const providerRunnerOps = { + features: ops.features, + fetcher: makeFetcher(ops.fetcher), + proxiedFetcher: makeFetcher(ops.proxiedFetcher ?? ops.fetcher), + }; + + return { + runAll(runnerOps) { + return runAllProviders(list, { + ...providerRunnerOps, + ...runnerOps, + }); + }, + runSourceScraper(runnerOps) { + return scrapeInvidualSource(list, { + ...providerRunnerOps, + ...runnerOps, + }); + }, + runEmbedScraper(runnerOps) { + return scrapeIndividualEmbed(list, { + ...providerRunnerOps, + ...runnerOps, + }); + }, + getMetadata(id) { + return getSpecificId(list, id); + }, + listSources() { + return getAllSourceMetaSorted(list); + }, + listEmbeds() { + return getAllEmbedMetaSorted(list); + }, + }; +} diff --git a/packages/providers/src/entrypoint/declare.ts b/packages/providers/src/entrypoint/declare.ts new file mode 100644 index 0000000..152ee87 --- /dev/null +++ b/packages/providers/src/entrypoint/declare.ts @@ -0,0 +1,37 @@ +import { makeControls } from '@/entrypoint/controls'; +import { getBuiltinEmbeds, getBuiltinSources } from '@/entrypoint/providers'; +import { Targets, getTargetFeatures } from '@/entrypoint/utils/targets'; +import { Fetcher } from '@/fetchers/types'; +import { getProviders } from '@/providers/get'; + +export interface ProviderMakerOptions { + // fetcher, every web request gets called through here + fetcher: Fetcher; + + // proxied fetcher, if the scraper needs to access a CORS proxy. this fetcher will be called instead + // of the normal fetcher. Defaults to the normal fetcher. + proxiedFetcher?: Fetcher; + + // target of where the streams will be used + target: Targets; + + // Set this to true, if the requests will have the same IP as + // the device that the stream will be played on + consistentIpForRequests?: boolean; +} + +export function makeProviders(ops: ProviderMakerOptions) { + const features = getTargetFeatures(ops.target, ops.consistentIpForRequests ?? false); + const list = getProviders(features, { + embeds: getBuiltinEmbeds(), + sources: getBuiltinSources(), + }); + + return makeControls({ + embeds: list.embeds, + sources: list.sources, + features, + fetcher: ops.fetcher, + proxiedFetcher: ops.proxiedFetcher, + }); +} diff --git a/packages/providers/src/entrypoint/providers.ts b/packages/providers/src/entrypoint/providers.ts new file mode 100644 index 0000000..e456eb0 --- /dev/null +++ b/packages/providers/src/entrypoint/providers.ts @@ -0,0 +1,10 @@ +import { gatherAllEmbeds, gatherAllSources } from '@/providers/all'; +import { Embed, Sourcerer } from '@/providers/base'; + +export function getBuiltinSources(): Sourcerer[] { + return gatherAllSources().filter((v) => !v.disabled); +} + +export function getBuiltinEmbeds(): Embed[] { + return gatherAllEmbeds().filter((v) => !v.disabled); +} diff --git a/packages/providers/src/entrypoint/utils/events.ts b/packages/providers/src/entrypoint/utils/events.ts new file mode 100644 index 0000000..50a8c2a --- /dev/null +++ b/packages/providers/src/entrypoint/utils/events.ts @@ -0,0 +1,47 @@ +export type UpdateEventStatus = 'success' | 'failure' | 'notfound' | 'pending'; + +export type UpdateEvent = { + id: string; // id presented in start event + percentage: number; + status: UpdateEventStatus; + error?: unknown; // set when status is failure + reason?: string; // set when status is not-found +}; + +export type InitEvent = { + sourceIds: string[]; // list of source ids +}; + +export type DiscoverEmbedsEvent = { + sourceId: string; + + // list of embeds that will be scraped in order + embeds: Array<{ + id: string; + embedScraperId: string; + }>; +}; + +export type SingleScraperEvents = { + update?: (evt: UpdateEvent) => void; +}; + +export type FullScraperEvents = { + // update progress percentage and status of the currently scraping item + update?: (evt: UpdateEvent) => void; + + // initial list of scrapers its running, only triggers once per run. + init?: (evt: InitEvent) => void; + + // list of embeds are discovered for the currently running source scraper + // triggers once per source scraper + discoverEmbeds?: (evt: DiscoverEmbedsEvent) => void; + + // start scraping an item. + start?: (id: string) => void; +}; + +export type IndividualScraperEvents = { + // update progress percentage and status of the currently scraping item + update?: (evt: UpdateEvent) => void; +}; diff --git a/packages/providers/src/entrypoint/utils/media.ts b/packages/providers/src/entrypoint/utils/media.ts new file mode 100644 index 0000000..c137063 --- /dev/null +++ b/packages/providers/src/entrypoint/utils/media.ts @@ -0,0 +1,26 @@ +export type CommonMedia = { + title: string; + releaseYear: number; + imdbId?: string; + tmdbId: string; +}; + +export type MediaTypes = 'show' | 'movie'; + +export type ShowMedia = CommonMedia & { + type: 'show'; + episode: { + number: number; + tmdbId: string; + }; + season: { + number: number; + tmdbId: string; + }; +}; + +export type MovieMedia = CommonMedia & { + type: 'movie'; +}; + +export type ScrapeMedia = ShowMedia | MovieMedia; diff --git a/packages/providers/src/entrypoint/utils/meta.ts b/packages/providers/src/entrypoint/utils/meta.ts new file mode 100644 index 0000000..5e54b2a --- /dev/null +++ b/packages/providers/src/entrypoint/utils/meta.ts @@ -0,0 +1,55 @@ +import { MediaTypes } from '@/entrypoint/utils/media'; +import { Embed, Sourcerer } from '@/providers/base'; +import { ProviderList } from '@/providers/get'; + +export type MetaOutput = { + type: 'embed' | 'source'; + id: string; + rank: number; + name: string; + mediaTypes?: Array; +}; + +function formatSourceMeta(v: Sourcerer): MetaOutput { + const types: Array = []; + if (v.scrapeMovie) types.push('movie'); + if (v.scrapeShow) types.push('show'); + return { + type: 'source', + id: v.id, + rank: v.rank, + name: v.name, + mediaTypes: types, + }; +} + +function formatEmbedMeta(v: Embed): MetaOutput { + return { + type: 'embed', + id: v.id, + rank: v.rank, + name: v.name, + }; +} + +export function getAllSourceMetaSorted(list: ProviderList): MetaOutput[] { + return list.sources.sort((a, b) => b.rank - a.rank).map(formatSourceMeta); +} + +export function getAllEmbedMetaSorted(list: ProviderList): MetaOutput[] { + return list.embeds.sort((a, b) => b.rank - a.rank).map(formatEmbedMeta); +} + +export function getSpecificId(list: ProviderList, id: string): MetaOutput | null { + const foundSource = list.sources.find((v) => v.id === id); + if (foundSource) { + return formatSourceMeta(foundSource); + } + + const foundEmbed = list.embeds.find((v) => v.id === id); + if (foundEmbed) { + return formatEmbedMeta(foundEmbed); + } + + return null; +} diff --git a/packages/providers/src/entrypoint/utils/targets.ts b/packages/providers/src/entrypoint/utils/targets.ts new file mode 100644 index 0000000..80988a4 --- /dev/null +++ b/packages/providers/src/entrypoint/utils/targets.ts @@ -0,0 +1,68 @@ +export const flags = { + // CORS are set to allow any origin + CORS_ALLOWED: 'cors-allowed', + + // the stream is locked on IP, so only works if + // request maker is same as player (not compatible with proxies) + IP_LOCKED: 'ip-locked', + + // The source/embed is blocking cloudflare ip's + // This flag is not compatible with a proxy hosted on cloudflare + CF_BLOCKED: 'cf-blocked', +} as const; + +export type Flags = (typeof flags)[keyof typeof flags]; + +export const targets = { + // browser with CORS restrictions + BROWSER: 'browser', + + // browser, but no CORS restrictions through a browser extension + BROWSER_EXTENSION: 'browser-extension', + + // native app, so no restrictions in what can be played + NATIVE: 'native', + + // any target, no target restrictions + ANY: 'any', +} as const; + +export type Targets = (typeof targets)[keyof typeof targets]; + +export type FeatureMap = { + requires: Flags[]; + disallowed: Flags[]; +}; + +export const targetToFeatures: Record = { + browser: { + requires: [flags.CORS_ALLOWED], + disallowed: [], + }, + 'browser-extension': { + requires: [], + disallowed: [], + }, + native: { + requires: [], + disallowed: [], + }, + any: { + requires: [], + disallowed: [], + }, +}; + +export function getTargetFeatures(target: Targets, consistentIpForRequests: boolean): FeatureMap { + const features = targetToFeatures[target]; + if (!consistentIpForRequests) features.disallowed.push(flags.IP_LOCKED); + return features; +} + +export function flagsAllowedInFeatures(features: FeatureMap, inputFlags: Flags[]): boolean { + const hasAllFlags = features.requires.every((v) => inputFlags.includes(v)); + if (!hasAllFlags) return false; + const hasDisallowedFlag = features.disallowed.some((v) => inputFlags.includes(v)); + if (hasDisallowedFlag) return false; + return true; +} diff --git a/packages/providers/src/fetchers/body.ts b/packages/providers/src/fetchers/body.ts new file mode 100644 index 0000000..c859a2a --- /dev/null +++ b/packages/providers/src/fetchers/body.ts @@ -0,0 +1,34 @@ +import FormData from 'form-data'; + +import { FetcherOptions } from '@/fetchers/types'; +import { isReactNative } from '@/utils/native'; + +export interface SeralizedBody { + headers: Record; + body: FormData | URLSearchParams | string | undefined; +} + +export function serializeBody(body: FetcherOptions['body']): SeralizedBody { + if (body === undefined || typeof body === 'string' || body instanceof URLSearchParams || body instanceof FormData) { + if (body instanceof URLSearchParams && isReactNative()) { + return { + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: body.toString(), + }; + } + return { + headers: {}, + body, + }; + } + + // serialize as JSON + return { + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(body), + }; +} diff --git a/packages/providers/src/fetchers/common.ts b/packages/providers/src/fetchers/common.ts new file mode 100644 index 0000000..71956ba --- /dev/null +++ b/packages/providers/src/fetchers/common.ts @@ -0,0 +1,43 @@ +import { Fetcher, FetcherOptions, UseableFetcher } from '@/fetchers/types'; + +export type FullUrlOptions = Pick; + +// make url with query params and base url used correctly +export function makeFullUrl(url: string, ops?: FullUrlOptions): string { + // glue baseUrl and rest of url together + let leftSide = ops?.baseUrl ?? ''; + let rightSide = url; + + // left side should always end with slash, if its set + if (leftSide.length > 0 && !leftSide.endsWith('/')) leftSide += '/'; + + // right side should never start with slash + if (rightSide.startsWith('/')) rightSide = rightSide.slice(1); + + const fullUrl = leftSide + rightSide; + if (!fullUrl.startsWith('http://') && !fullUrl.startsWith('https://')) + throw new Error(`Invald URL -- URL doesn't start with a http scheme: '${fullUrl}'`); + + const parsedUrl = new URL(fullUrl); + Object.entries(ops?.query ?? {}).forEach(([k, v]) => { + parsedUrl.searchParams.set(k, v); + }); + + return parsedUrl.toString(); +} + +export function makeFetcher(fetcher: Fetcher): UseableFetcher { + const newFetcher = (url: string, ops?: FetcherOptions) => { + return fetcher(url, { + headers: ops?.headers ?? {}, + method: ops?.method ?? 'GET', + query: ops?.query ?? {}, + baseUrl: ops?.baseUrl ?? '', + readHeaders: ops?.readHeaders ?? [], + body: ops?.body, + }); + }; + const output: UseableFetcher = async (url, ops) => (await newFetcher(url, ops)).body; + output.full = newFetcher; + return output; +} diff --git a/packages/providers/src/fetchers/fetch.ts b/packages/providers/src/fetchers/fetch.ts new file mode 100644 index 0000000..d2156d0 --- /dev/null +++ b/packages/providers/src/fetchers/fetch.ts @@ -0,0 +1,27 @@ +/** + * This file is a very relaxed definition of the fetch api + * Only containing what we need for it to function. + */ + +export type FetchOps = { + headers: Record; + method: string; + body: any; +}; + +export type FetchHeaders = { + get(key: string): string | null; + set(key: string, value: string): void; +}; + +export type FetchReply = { + text(): Promise; + json(): Promise; + extraHeaders?: FetchHeaders; + extraUrl?: string; + headers: FetchHeaders; + url: string; + status: number; +}; + +export type FetchLike = (url: string, ops?: FetchOps | undefined) => Promise; diff --git a/packages/providers/src/fetchers/simpleProxy.ts b/packages/providers/src/fetchers/simpleProxy.ts new file mode 100644 index 0000000..360a149 --- /dev/null +++ b/packages/providers/src/fetchers/simpleProxy.ts @@ -0,0 +1,55 @@ +import { makeFullUrl } from '@/fetchers/common'; +import { FetchLike } from '@/fetchers/fetch'; +import { makeStandardFetcher } from '@/fetchers/standardFetch'; +import { Fetcher } from '@/fetchers/types'; + +const headerMap: Record = { + cookie: 'X-Cookie', + referer: 'X-Referer', + origin: 'X-Origin', + 'user-agent': 'X-User-Agent', + 'x-real-ip': 'X-X-Real-Ip', +}; + +const responseHeaderMap: Record = { + 'x-set-cookie': 'Set-Cookie', +}; + +export function makeSimpleProxyFetcher(proxyUrl: string, f: FetchLike): Fetcher { + const proxiedFetch: Fetcher = async (url, ops) => { + const fetcher = makeStandardFetcher(async (a, b) => { + const res = await f(a, b); + + // set extra headers that cant normally be accessed + res.extraHeaders = new Headers(); + Object.entries(responseHeaderMap).forEach((entry) => { + const value = res.headers.get(entry[0]); + if (!value) return; + res.extraHeaders?.set(entry[0].toLowerCase(), value); + }); + + // set correct final url + res.extraUrl = res.headers.get('X-Final-Destination') ?? res.url; + return res; + }); + + const fullUrl = makeFullUrl(url, ops); + + const headerEntries = Object.entries(ops.headers).map((entry) => { + const key = entry[0].toLowerCase(); + if (headerMap[key]) return [headerMap[key], entry[1]]; + return entry; + }); + + return fetcher(proxyUrl, { + ...ops, + query: { + destination: fullUrl, + }, + headers: Object.fromEntries(headerEntries), + baseUrl: undefined, + }); + }; + + return proxiedFetch; +} diff --git a/packages/providers/src/fetchers/standardFetch.ts b/packages/providers/src/fetchers/standardFetch.ts new file mode 100644 index 0000000..9fb6afa --- /dev/null +++ b/packages/providers/src/fetchers/standardFetch.ts @@ -0,0 +1,46 @@ +import { serializeBody } from '@/fetchers/body'; +import { makeFullUrl } from '@/fetchers/common'; +import { FetchLike, FetchReply } from '@/fetchers/fetch'; +import { Fetcher } from '@/fetchers/types'; + +function getHeaders(list: string[], res: FetchReply): Headers { + const output = new Headers(); + list.forEach((header) => { + const realHeader = header.toLowerCase(); + const value = res.headers.get(realHeader); + const extraValue = res.extraHeaders?.get(realHeader); + if (!value) return; + output.set(realHeader, extraValue ?? value); + }); + return output; +} + +export function makeStandardFetcher(f: FetchLike): Fetcher { + const normalFetch: Fetcher = async (url, ops) => { + const fullUrl = makeFullUrl(url, ops); + const seralizedBody = serializeBody(ops.body); + + const res = await f(fullUrl, { + method: ops.method, + headers: { + ...seralizedBody.headers, + ...ops.headers, + }, + body: seralizedBody.body, + }); + + let body: any; + const isJson = res.headers.get('content-type')?.includes('application/json'); + if (isJson) body = await res.json(); + else body = await res.text(); + + return { + body, + finalUrl: res.extraUrl ?? res.url, + headers: getHeaders(ops.readHeaders, res), + statusCode: res.status, + }; + }; + + return normalFetch; +} diff --git a/packages/providers/src/fetchers/types.ts b/packages/providers/src/fetchers/types.ts new file mode 100644 index 0000000..f5dbe06 --- /dev/null +++ b/packages/providers/src/fetchers/types.ts @@ -0,0 +1,39 @@ +import * as FormData from 'form-data'; + +export type FetcherOptions = { + baseUrl?: string; + headers?: Record; + query?: Record; + method?: 'HEAD' | 'GET' | 'POST'; + readHeaders?: string[]; + body?: Record | string | FormData | URLSearchParams; +}; + +// Version of the options that always has the defaults set +// This is to make making fetchers yourself easier +export type DefaultedFetcherOptions = { + baseUrl?: string; + body?: Record | string | FormData; + headers: Record; + query: Record; + readHeaders: string[]; + method: 'HEAD' | 'GET' | 'POST'; +}; + +export type FetcherResponse = { + statusCode: number; + headers: Headers; + finalUrl: string; + body: T; +}; + +// This is the version that will be inputted by library users +export type Fetcher = { + (url: string, ops: DefaultedFetcherOptions): Promise>; +}; + +// This is the version that scrapers will be interacting with +export type UseableFetcher = { + (url: string, ops?: FetcherOptions): Promise; + full: (url: string, ops?: FetcherOptions) => Promise>; +}; diff --git a/packages/providers/src/index.ts b/packages/providers/src/index.ts new file mode 100644 index 0000000..46f8d6a --- /dev/null +++ b/packages/providers/src/index.ts @@ -0,0 +1 @@ +export const name = 'providers'; \ No newline at end of file diff --git a/packages/providers/src/providers/all.ts b/packages/providers/src/providers/all.ts new file mode 100644 index 0000000..6652bfd --- /dev/null +++ b/packages/providers/src/providers/all.ts @@ -0,0 +1,114 @@ +import { Embed, Sourcerer } from '@/providers/base'; +import { doodScraper } from '@/providers/embeds/dood'; +import { droploadScraper } from '@/providers/embeds/dropload'; +import { febboxHlsScraper } from '@/providers/embeds/febbox/hls'; +import { febboxMp4Scraper } from '@/providers/embeds/febbox/mp4'; +import { filelionsScraper } from '@/providers/embeds/filelions'; +import { mixdropScraper } from '@/providers/embeds/mixdrop'; +import { mp4uploadScraper } from '@/providers/embeds/mp4upload'; +import { streambucketScraper } from '@/providers/embeds/streambucket'; +import { streamsbScraper } from '@/providers/embeds/streamsb'; +import { upcloudScraper } from '@/providers/embeds/upcloud'; +import { upstreamScraper } from '@/providers/embeds/upstream'; +import { vidsrcembedScraper } from '@/providers/embeds/vidsrc'; +import { vTubeScraper } from '@/providers/embeds/vtube'; +import { flixhqScraper } from '@/providers/sources/flixhq/index'; +import { goMoviesScraper } from '@/providers/sources/gomovies/index'; +import { insertunitScraper } from '@/providers/sources/insertunit'; +import { kissAsianScraper } from '@/providers/sources/kissasian/index'; +import { lookmovieScraper } from '@/providers/sources/lookmovie'; +import { nsbxScraper } from '@/providers/sources/nsbx'; +import { remotestreamScraper } from '@/providers/sources/remotestream'; +import { showboxScraper } from '@/providers/sources/showbox/index'; +import { tugaflixScraper } from '@/providers/sources/tugaflix'; +import { vidsrcScraper } from '@/providers/sources/vidsrc/index'; +import { zoechipScraper } from '@/providers/sources/zoechip'; + +import { bflixScraper } from './embeds/bflix'; +import { closeLoadScraper } from './embeds/closeload'; +import { fileMoonScraper } from './embeds/filemoon'; +import { fileMoonMp4Scraper } from './embeds/filemoon/mp4'; +import { deltaScraper } from './embeds/nsbx/delta'; +import { ridooScraper } from './embeds/ridoo'; +import { smashyStreamOScraper } from './embeds/smashystream/opstream'; +import { smashyStreamFScraper } from './embeds/smashystream/video1'; +import { streamtapeScraper } from './embeds/streamtape'; +import { streamvidScraper } from './embeds/streamvid'; +import { vidCloudScraper } from './embeds/vidcloud'; +import { vidplayScraper } from './embeds/vidplay'; +import { voeScraper } from './embeds/voe'; +import { warezcdnembedHlsScraper } from './embeds/warezcdn/hls'; +import { warezcdnembedMp4Scraper } from './embeds/warezcdn/mp4'; +import { wootlyScraper } from './embeds/wootly'; +import { goojaraScraper } from './sources/goojara'; +import { hdRezkaScraper } from './sources/hdrezka'; +import { nepuScraper } from './sources/nepu'; +import { nitesScraper } from './sources/nites'; +import { primewireScraper } from './sources/primewire'; +import { ridooMoviesScraper } from './sources/ridomovies'; +import { smashyStreamScraper } from './sources/smashystream'; +import { soaperTvScraper } from './sources/soapertv'; +import { vidSrcToScraper } from './sources/vidsrcto'; +import { warezcdnScraper } from './sources/warezcdn'; + +export function gatherAllSources(): Array { + // all sources are gathered here + return [ + flixhqScraper, + remotestreamScraper, + kissAsianScraper, + showboxScraper, + goMoviesScraper, + zoechipScraper, + vidsrcScraper, + lookmovieScraper, + nsbxScraper, + smashyStreamScraper, + ridooMoviesScraper, + vidSrcToScraper, + nepuScraper, + goojaraScraper, + hdRezkaScraper, + primewireScraper, + warezcdnScraper, + insertunitScraper, + nitesScraper, + soaperTvScraper, + tugaflixScraper, + ]; +} + +export function gatherAllEmbeds(): Array { + // all embeds are gathered here + return [ + upcloudScraper, + vidCloudScraper, + mp4uploadScraper, + streamsbScraper, + upstreamScraper, + febboxMp4Scraper, + febboxHlsScraper, + mixdropScraper, + vidsrcembedScraper, + streambucketScraper, + smashyStreamFScraper, + smashyStreamOScraper, + ridooScraper, + closeLoadScraper, + fileMoonScraper, + fileMoonMp4Scraper, + deltaScraper, + vidplayScraper, + wootlyScraper, + doodScraper, + streamvidScraper, + voeScraper, + streamtapeScraper, + droploadScraper, + filelionsScraper, + vTubeScraper, + warezcdnembedHlsScraper, + warezcdnembedMp4Scraper, + bflixScraper, + ]; +} diff --git a/packages/providers/src/providers/base.ts b/packages/providers/src/providers/base.ts new file mode 100644 index 0000000..0d43895 --- /dev/null +++ b/packages/providers/src/providers/base.ts @@ -0,0 +1,70 @@ +import { Flags } from '@/entrypoint/utils/targets'; +import { Stream } from '@/providers/streams'; +import { EmbedScrapeContext, MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; + +export type MediaScraperTypes = 'show' | 'movie'; + +export type SourcererEmbed = { + embedId: string; + url: string; +}; + +export type SourcererOutput = { + embeds: SourcererEmbed[]; + stream?: Stream[]; +}; + +export type SourcererOptions = { + id: string; + name: string; // displayed in the UI + rank: number; // the higher the number, the earlier it gets put on the queue + disabled?: boolean; + flags: Flags[]; + scrapeMovie?: (input: MovieScrapeContext) => Promise; + scrapeShow?: (input: ShowScrapeContext) => Promise; +}; + +export type Sourcerer = SourcererOptions & { + type: 'source'; + disabled: boolean; + mediaTypes: MediaScraperTypes[]; +}; + +export function makeSourcerer(state: SourcererOptions): Sourcerer { + const mediaTypes: MediaScraperTypes[] = []; + if (state.scrapeMovie) mediaTypes.push('movie'); + if (state.scrapeShow) mediaTypes.push('show'); + return { + ...state, + type: 'source', + disabled: state.disabled ?? false, + mediaTypes, + }; +} + +export type EmbedOutput = { + stream: Stream[]; +}; + +export type EmbedOptions = { + id: string; + name: string; // displayed in the UI + rank: number; // the higher the number, the earlier it gets put on the queue + disabled?: boolean; + scrape: (input: EmbedScrapeContext) => Promise; +}; + +export type Embed = EmbedOptions & { + type: 'embed'; + disabled: boolean; + mediaTypes: undefined; +}; + +export function makeEmbed(state: EmbedOptions): Embed { + return { + ...state, + type: 'embed', + disabled: state.disabled ?? false, + mediaTypes: undefined, + }; +} diff --git a/packages/providers/src/providers/captions.ts b/packages/providers/src/providers/captions.ts new file mode 100644 index 0000000..92e5db3 --- /dev/null +++ b/packages/providers/src/providers/captions.ts @@ -0,0 +1,43 @@ +import ISO6391 from 'iso-639-1'; + +export const captionTypes = { + srt: 'srt', + vtt: 'vtt', +}; +export type CaptionType = keyof typeof captionTypes; + +export type Caption = { + type: CaptionType; + id: string; // only unique per stream + url: string; + hasCorsRestrictions: boolean; + language: string; +}; + +export function getCaptionTypeFromUrl(url: string): CaptionType | null { + const extensions = Object.keys(captionTypes) as CaptionType[]; + const type = extensions.find((v) => url.endsWith(`.${v}`)); + if (!type) return null; + return type; +} + +export function labelToLanguageCode(label: string): string | null { + const code = ISO6391.getCode(label); + if (code.length === 0) return null; + return code; +} + +export function isValidLanguageCode(code: string | null): boolean { + if (!code) return false; + return ISO6391.validate(code); +} + +export function removeDuplicatedLanguages(list: Caption[]) { + const beenSeen: Record = {}; + + return list.filter((sub) => { + if (beenSeen[sub.language]) return false; + beenSeen[sub.language] = true; + return true; + }); +} diff --git a/packages/providers/src/providers/embeds/bflix.ts b/packages/providers/src/providers/embeds/bflix.ts new file mode 100644 index 0000000..092bc2a --- /dev/null +++ b/packages/providers/src/providers/embeds/bflix.ts @@ -0,0 +1,42 @@ +import { unpack } from 'unpacker'; + +import { makeEmbed } from '@/providers/base'; + +const evalCodeRegex = /eval\((.*)\)/g; +const mp4Regex = /https?:\/\/.*\.mp4/; + +export const bflixScraper = makeEmbed({ + id: 'bflix', + name: 'bFlix', + rank: 113, + scrape: async (ctx) => { + const mainPage = await ctx.proxiedFetcher(ctx.url); + + const evalCode = mainPage.match(evalCodeRegex); + if (!evalCode) throw new Error('Failed to find eval code'); + const unpacked = unpack(evalCode[0]); + + const file = unpacked.match(mp4Regex); + if (!file?.[0]) throw new Error('Failed to find file'); + + return { + stream: [ + { + id: 'primary', + type: 'file', + flags: [], + captions: [], + qualities: { + unknown: { + type: 'mp4', + url: file[0], + }, + }, + headers: { + Referer: 'https://bflix.gs/', + }, + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/closeload.ts b/packages/providers/src/providers/embeds/closeload.ts new file mode 100644 index 0000000..811323a --- /dev/null +++ b/packages/providers/src/providers/embeds/closeload.ts @@ -0,0 +1,71 @@ +import { load } from 'cheerio'; +import { unpack } from 'unpacker'; + +import { flags } from '@/entrypoint/utils/targets'; +import { NotFoundError } from '@/utils/errors'; + +import { makeEmbed } from '../base'; +import { Caption, getCaptionTypeFromUrl, labelToLanguageCode } from '../captions'; + +const referer = 'https://ridomovies.tv/'; + +export const closeLoadScraper = makeEmbed({ + id: 'closeload', + name: 'CloseLoad', + rank: 106, + async scrape(ctx) { + const baseUrl = new URL(ctx.url).origin; + + const iframeRes = await ctx.proxiedFetcher(ctx.url, { + headers: { referer }, + }); + const iframeRes$ = load(iframeRes); + const captions: Caption[] = iframeRes$('track') + .map((_, el) => { + const track = iframeRes$(el); + const url = `${baseUrl}${track.attr('src')}`; + const label = track.attr('label') ?? ''; + const language = labelToLanguageCode(label); + const captionType = getCaptionTypeFromUrl(url); + + if (!language || !captionType) return null; + return { + id: url, + language, + hasCorsRestrictions: true, + type: captionType, + url, + }; + }) + .get() + .filter((x) => x !== null); + + const evalCode = iframeRes$('script') + .filter((_, el) => { + const script = iframeRes$(el); + return (script.attr('type') === 'text/javascript' && script.html()?.includes('p,a,c,k,e,d')) ?? false; + }) + .html(); + if (!evalCode) throw new Error("Couldn't find eval code"); + const decoded = unpack(evalCode); + const regexPattern = /var\s+(\w+)\s*=\s*"([^"]+)";/g; + const base64EncodedUrl = regexPattern.exec(decoded)?.[2]; + if (!base64EncodedUrl) throw new NotFoundError('Unable to find source url'); + const url = atob(base64EncodedUrl); + return { + stream: [ + { + id: 'primary', + type: 'hls', + playlist: url, + captions, + flags: [flags.IP_LOCKED], + headers: { + Referer: 'https://closeload.top/', + Origin: 'https://closeload.top', + }, + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/dood.ts b/packages/providers/src/providers/embeds/dood.ts new file mode 100644 index 0000000..453588b --- /dev/null +++ b/packages/providers/src/providers/embeds/dood.ts @@ -0,0 +1,69 @@ +import { customAlphabet } from 'nanoid'; + +import { makeEmbed } from '@/providers/base'; + +const nanoid = customAlphabet('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 10); +const baseUrl = 'https://d000d.com'; + +export const doodScraper = makeEmbed({ + id: 'dood', + name: 'dood', + rank: 173, + async scrape(ctx) { + let url = ctx.url; + if (ctx.url.includes('primewire')) { + const request = await ctx.proxiedFetcher.full(ctx.url); + url = request.finalUrl; + } + + const id = url.split('/d/')[1] || url.split('/e/')[1]; + + const doodData = await ctx.proxiedFetcher(`/e/${id}`, { + method: 'GET', + baseUrl, + }); + + const dataForLater = doodData.match(/\?token=([^&]+)&expiry=/)?.[1]; + const path = doodData.match(/\$\.get\('\/pass_md5([^']+)/)?.[1]; + const thumbnailTrack = doodData.match(/thumbnails:\s\{\s*vtt:\s'([^']*)'/); + + const doodPage = await ctx.proxiedFetcher(`/pass_md5${path}`, { + headers: { + Referer: `${baseUrl}/e/${id}`, + }, + method: 'GET', + baseUrl, + }); + const downloadURL = `${doodPage}${nanoid()}?token=${dataForLater}&expiry=${Date.now()}`; + + if (!downloadURL.startsWith('http')) throw new Error('Invalid URL'); + + return { + stream: [ + { + id: 'primary', + type: 'file', + flags: [], + captions: [], + qualities: { + unknown: { + type: 'mp4', + url: downloadURL, + }, + }, + headers: { + Referer: baseUrl, + }, + ...(thumbnailTrack + ? { + thumbnailTrack: { + type: 'vtt', + url: `https:${thumbnailTrack[1]}`, + }, + } + : {}), + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/dropload.ts b/packages/providers/src/providers/embeds/dropload.ts new file mode 100644 index 0000000..983035c --- /dev/null +++ b/packages/providers/src/providers/embeds/dropload.ts @@ -0,0 +1,52 @@ +import { unpack } from 'unpacker'; + +import { flags } from '@/entrypoint/utils/targets'; + +import { makeEmbed } from '../base'; + +const evalCodeRegex = /eval\((.*)\)/g; +const fileRegex = /file:"(.*?)"/g; +const tracksRegex = /\{file:"([^"]+)",kind:"thumbnails"\}/g; + +export const droploadScraper = makeEmbed({ + id: 'dropload', + name: 'Dropload', + rank: 120, + scrape: async (ctx) => { + const mainPageRes = await ctx.proxiedFetcher.full(ctx.url, { + headers: { + referer: ctx.url, + }, + }); + const mainPageUrl = new URL(mainPageRes.finalUrl); + const mainPage = mainPageRes.body; + + const evalCode = mainPage.match(evalCodeRegex); + if (!evalCode) throw new Error('Failed to find eval code'); + const unpacked = unpack(evalCode[1]); + + const file = fileRegex.exec(unpacked); + const thumbnailTrack = tracksRegex.exec(unpacked); + if (!file?.[1]) throw new Error('Failed to find file'); + + return { + stream: [ + { + id: 'primary', + type: 'hls', + playlist: file[1], + flags: [flags.IP_LOCKED, flags.CORS_ALLOWED], + captions: [], + ...(thumbnailTrack + ? { + thumbnailTrack: { + type: 'vtt', + url: mainPageUrl.origin + thumbnailTrack[1], + }, + } + : {}), + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/febbox/common.ts b/packages/providers/src/providers/embeds/febbox/common.ts new file mode 100644 index 0000000..5d902db --- /dev/null +++ b/packages/providers/src/providers/embeds/febbox/common.ts @@ -0,0 +1,24 @@ +import { MediaTypes } from '@/entrypoint/utils/media'; + +export const febBoxBase = `https://www.febbox.com`; + +export interface FebboxFileList { + file_name: string; + ext: string; + fid: number; + oss_fid: number; + is_dir: 0 | 1; +} + +export function parseInputUrl(url: string) { + const [type, id, seasonId, episodeId] = url.slice(1).split('/'); + const season = seasonId ? parseInt(seasonId, 10) : undefined; + const episode = episodeId ? parseInt(episodeId, 10) : undefined; + + return { + type: type as MediaTypes, + id, + season, + episode, + }; +} diff --git a/packages/providers/src/providers/embeds/febbox/fileList.ts b/packages/providers/src/providers/embeds/febbox/fileList.ts new file mode 100644 index 0000000..593fc77 --- /dev/null +++ b/packages/providers/src/providers/embeds/febbox/fileList.ts @@ -0,0 +1,69 @@ +import { MediaTypes } from '@/entrypoint/utils/media'; +import { FebboxFileList, febBoxBase } from '@/providers/embeds/febbox/common'; +import { EmbedScrapeContext } from '@/utils/context'; + +export async function getFileList( + ctx: EmbedScrapeContext, + shareKey: string, + parentId?: number, +): Promise { + const query: Record = { + share_key: shareKey, + pwd: '', + }; + if (parentId) { + query.parent_id = parentId.toString(); + query.page = '1'; + } + + const streams = await ctx.proxiedFetcher<{ + data?: { + file_list?: FebboxFileList[]; + }; + }>('/file/file_share_list', { + headers: { + 'accept-language': 'en', // without this header, the request is marked as a webscraper + }, + baseUrl: febBoxBase, + query, + }); + + return streams.data?.file_list ?? []; +} + +function isValidStream(file: FebboxFileList): boolean { + return file.ext === 'mp4' || file.ext === 'mkv'; +} + +export async function getStreams( + ctx: EmbedScrapeContext, + shareKey: string, + type: MediaTypes, + season?: number, + episode?: number, +): Promise { + const streams = await getFileList(ctx, shareKey); + + if (type === 'show') { + const seasonFolder = streams.find((v) => { + if (!v.is_dir) return false; + return v.file_name.toLowerCase() === `season ${season}`; + }); + if (!seasonFolder) return []; + + const episodes = await getFileList(ctx, shareKey, seasonFolder.fid); + const s = season?.toString() ?? '0'; + const e = episode?.toString() ?? '0'; + const episodeRegex = new RegExp(`[Ss]0*${s}[Ee]0*${e}`); + return episodes + .filter((file) => { + if (file.is_dir) return false; + const match = file.file_name.match(episodeRegex); + if (!match) return false; + return true; + }) + .filter(isValidStream); + } + + return streams.filter((v) => !v.is_dir).filter(isValidStream); +} diff --git a/packages/providers/src/providers/embeds/febbox/hls.ts b/packages/providers/src/providers/embeds/febbox/hls.ts new file mode 100644 index 0000000..792c112 --- /dev/null +++ b/packages/providers/src/providers/embeds/febbox/hls.ts @@ -0,0 +1,50 @@ +import { MediaTypes } from '@/entrypoint/utils/media'; +import { makeEmbed } from '@/providers/base'; +import { parseInputUrl } from '@/providers/embeds/febbox/common'; +import { getStreams } from '@/providers/embeds/febbox/fileList'; +import { getSubtitles } from '@/providers/embeds/febbox/subtitles'; +import { showboxBase } from '@/providers/sources/showbox/common'; + +// structure: https://www.febbox.com/share/ +export function extractShareKey(url: string): string { + const parsedUrl = new URL(url); + const shareKey = parsedUrl.pathname.split('/')[2]; + return shareKey; +} +export const febboxHlsScraper = makeEmbed({ + id: 'febbox-hls', + name: 'Febbox (HLS)', + rank: 160, + disabled: true, + async scrape(ctx) { + const { type, id, season, episode } = parseInputUrl(ctx.url); + const sharelinkResult = await ctx.proxiedFetcher<{ + data?: { link?: string }; + }>('/index/share_link', { + baseUrl: showboxBase, + query: { + id, + type: type === 'movie' ? '1' : '2', + }, + }); + if (!sharelinkResult?.data?.link) throw new Error('No embed url found'); + ctx.progress(30); + const shareKey = extractShareKey(sharelinkResult.data.link); + const fileList = await getStreams(ctx, shareKey, type, season, episode); + const firstStream = fileList[0]; + if (!firstStream) throw new Error('No playable mp4 stream found'); + ctx.progress(70); + + return { + stream: [ + { + id: 'primary', + type: 'hls', + flags: [], + captions: await getSubtitles(ctx, id, firstStream.fid, type as MediaTypes, season, episode), + playlist: `https://www.febbox.com/hls/main/${firstStream.oss_fid}.m3u8`, + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/febbox/mp4.ts b/packages/providers/src/providers/embeds/febbox/mp4.ts new file mode 100644 index 0000000..1122e53 --- /dev/null +++ b/packages/providers/src/providers/embeds/febbox/mp4.ts @@ -0,0 +1,53 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { makeEmbed } from '@/providers/base'; +import { parseInputUrl } from '@/providers/embeds/febbox/common'; +import { getStreamQualities } from '@/providers/embeds/febbox/qualities'; +import { getSubtitles } from '@/providers/embeds/febbox/subtitles'; + +export const febboxMp4Scraper = makeEmbed({ + id: 'febbox-mp4', + name: 'Febbox (MP4)', + rank: 190, + async scrape(ctx) { + const { type, id, season, episode } = parseInputUrl(ctx.url); + let apiQuery: object | null = null; + + if (type === 'movie') { + apiQuery = { + uid: '', + module: 'Movie_downloadurl_v3', + mid: id, + oss: '1', + group: '', + }; + } else if (type === 'show') { + apiQuery = { + uid: '', + module: 'TV_downloadurl_v3', + tid: id, + season, + episode, + oss: '1', + group: '', + }; + } + + if (!apiQuery) throw Error('Incorrect type'); + + const { qualities, fid } = await getStreamQualities(ctx, apiQuery); + if (fid === undefined) throw new Error('No streamable file found'); + ctx.progress(70); + + return { + stream: [ + { + id: 'primary', + captions: await getSubtitles(ctx, id, fid, type, episode, season), + qualities, + type: 'file', + flags: [flags.CORS_ALLOWED], + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/febbox/qualities.ts b/packages/providers/src/providers/embeds/febbox/qualities.ts new file mode 100644 index 0000000..b55dd72 --- /dev/null +++ b/packages/providers/src/providers/embeds/febbox/qualities.ts @@ -0,0 +1,44 @@ +import { sendRequest } from '@/providers/sources/showbox/sendRequest'; +import { StreamFile } from '@/providers/streams'; +import { ScrapeContext } from '@/utils/context'; + +const allowedQualities = ['360', '480', '720', '1080', '4k']; + +interface FebboxQuality { + path: string; + real_quality: string; + fid?: number; +} + +function mapToQuality(quality: FebboxQuality): FebboxQuality | null { + const q = quality.real_quality.replace('p', '').toLowerCase(); + if (!allowedQualities.includes(q)) return null; + return { + real_quality: q, + path: quality.path, + fid: quality.fid, + }; +} + +export async function getStreamQualities(ctx: ScrapeContext, apiQuery: object) { + const mediaRes: { list: FebboxQuality[] } = (await sendRequest(ctx, apiQuery)).data; + + const qualityMap = mediaRes.list.map((v) => mapToQuality(v)).filter((v): v is FebboxQuality => !!v); + + const qualities: Record = {}; + + allowedQualities.forEach((quality) => { + const foundQuality = qualityMap.find((q) => q.real_quality === quality && q.path); + if (foundQuality) { + qualities[quality] = { + type: 'mp4', + url: foundQuality.path, + }; + } + }); + + return { + qualities, + fid: mediaRes.list[0]?.fid, + }; +} diff --git a/packages/providers/src/providers/embeds/febbox/subtitles.ts b/packages/providers/src/providers/embeds/febbox/subtitles.ts new file mode 100644 index 0000000..fbb2e85 --- /dev/null +++ b/packages/providers/src/providers/embeds/febbox/subtitles.ts @@ -0,0 +1,75 @@ +import { + Caption, + getCaptionTypeFromUrl, + isValidLanguageCode, + removeDuplicatedLanguages as removeDuplicateLanguages, +} from '@/providers/captions'; +import { captionsDomains } from '@/providers/sources/showbox/common'; +import { sendRequest } from '@/providers/sources/showbox/sendRequest'; +import { ScrapeContext } from '@/utils/context'; + +interface CaptionApiResponse { + data: { + list: { + subtitles: { + order: number; + lang: string; + file_path: string; + }[]; + }[]; + }; +} + +export async function getSubtitles( + ctx: ScrapeContext, + id: string, + fid: number | undefined, + type: 'show' | 'movie', + episodeId?: number, + seasonId?: number, +): Promise { + const module = type === 'movie' ? 'Movie_srt_list_v2' : 'TV_srt_list_v2'; + const subtitleApiQuery = { + fid, + uid: '', + module, + mid: type === 'movie' ? id : undefined, + tid: type !== 'movie' ? id : undefined, + episode: episodeId?.toString(), + season: seasonId?.toString(), + }; + + const subResult = (await sendRequest(ctx, subtitleApiQuery)) as CaptionApiResponse; + const subtitleList = subResult.data.list; + let output: Caption[] = []; + + subtitleList.forEach((sub) => { + const subtitle = sub.subtitles.sort((a, b) => b.order - a.order)[0]; + if (!subtitle) return; + + const subtitleFilePath = subtitle.file_path + .replace(captionsDomains[0], captionsDomains[1]) + .replace(/\s/g, '+') + .replace(/[()]/g, (c) => { + return `%${c.charCodeAt(0).toString(16)}`; + }); + + const subtitleType = getCaptionTypeFromUrl(subtitleFilePath); + if (!subtitleType) return; + + const validCode = isValidLanguageCode(subtitle.lang); + if (!validCode) return; + + output.push({ + id: subtitleFilePath, + language: subtitle.lang, + hasCorsRestrictions: true, + type: subtitleType, + url: subtitleFilePath, + }); + }); + + output = removeDuplicateLanguages(output); + + return output; +} diff --git a/packages/providers/src/providers/embeds/filelions.ts b/packages/providers/src/providers/embeds/filelions.ts new file mode 100644 index 0000000..c41c354 --- /dev/null +++ b/packages/providers/src/providers/embeds/filelions.ts @@ -0,0 +1,47 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { makeEmbed } from '@/providers/base'; + +const linkRegex = /file: ?"(http.*?)"/; +// the white space charecters may seem useless, but without them it breaks +const tracksRegex = /\{file:\s"([^"]+)",\skind:\s"thumbnails"\}/g; + +export const filelionsScraper = makeEmbed({ + id: 'filelions', + name: 'filelions', + rank: 115, + async scrape(ctx) { + const mainPageRes = await ctx.proxiedFetcher.full(ctx.url, { + headers: { + referer: ctx.url, + }, + }); + const mainPage = mainPageRes.body; + const mainPageUrl = new URL(mainPageRes.finalUrl); + + const streamUrl = mainPage.match(linkRegex) ?? []; + const thumbnailTrack = tracksRegex.exec(mainPage); + + const playlist = streamUrl[1]; + if (!playlist) throw new Error('Stream url not found'); + + return { + stream: [ + { + id: 'primary', + type: 'hls', + playlist, + flags: [flags.IP_LOCKED, flags.CORS_ALLOWED], + captions: [], + ...(thumbnailTrack + ? { + thumbnailTrack: { + type: 'vtt', + url: mainPageUrl.origin + thumbnailTrack[1], + }, + } + : {}), + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/filemoon/index.ts b/packages/providers/src/providers/embeds/filemoon/index.ts new file mode 100644 index 0000000..be1d9d3 --- /dev/null +++ b/packages/providers/src/providers/embeds/filemoon/index.ts @@ -0,0 +1,60 @@ +import { load } from 'cheerio'; +import { unpack } from 'unpacker'; + +import { SubtitleResult } from './types'; +import { makeEmbed } from '../../base'; +import { Caption, getCaptionTypeFromUrl, labelToLanguageCode } from '../../captions'; + +const evalCodeRegex = /eval\((.*)\)/g; +const fileRegex = /file:"(.*?)"/g; + +export const fileMoonScraper = makeEmbed({ + id: 'filemoon', + name: 'Filemoon', + rank: 300, + scrape: async (ctx) => { + const embedRes = await ctx.proxiedFetcher(ctx.url, { + headers: { + referer: ctx.url, + }, + }); + const embedHtml = load(embedRes); + const evalCode = embedHtml('script').text().match(evalCodeRegex); + if (!evalCode) throw new Error('Failed to find eval code'); + const unpacked = unpack(evalCode[0]); + const file = fileRegex.exec(unpacked); + if (!file?.[1]) throw new Error('Failed to find file'); + + const url = new URL(ctx.url); + const subtitlesLink = url.searchParams.get('sub.info'); + const captions: Caption[] = []; + if (subtitlesLink) { + const captionsResult = await ctx.proxiedFetcher(subtitlesLink); + + for (const caption of captionsResult) { + const language = labelToLanguageCode(caption.label); + const captionType = getCaptionTypeFromUrl(caption.file); + if (!language || !captionType) continue; + captions.push({ + id: caption.file, + url: caption.file, + type: captionType, + language, + hasCorsRestrictions: false, + }); + } + } + + return { + stream: [ + { + id: 'primary', + type: 'hls', + playlist: file[1], + flags: [], + captions, + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/filemoon/mp4.ts b/packages/providers/src/providers/embeds/filemoon/mp4.ts new file mode 100644 index 0000000..181453b --- /dev/null +++ b/packages/providers/src/providers/embeds/filemoon/mp4.ts @@ -0,0 +1,37 @@ +import { NotFoundError } from '@/utils/errors'; + +import { makeEmbed } from '../../base'; + +import { fileMoonScraper } from './index'; + +export const fileMoonMp4Scraper = makeEmbed({ + id: 'filemoon-mp4', + name: 'Filemoon MP4', + rank: 400, + scrape: async (ctx) => { + const result = await fileMoonScraper.scrape(ctx); + + if (!result.stream) throw new NotFoundError('Failed to find result'); + + if (result.stream[0].type !== 'hls') throw new NotFoundError('Failed to find hls stream'); + + const url = result.stream[0].playlist.replace(/\/hls2\//, '/download/').replace(/\.m3u8/, '.mp4'); + + return { + stream: [ + { + id: 'primary', + type: 'file', + qualities: { + unknown: { + type: 'mp4', + url, + }, + }, + flags: [], + captions: result.stream[0].captions, + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/filemoon/types.ts b/packages/providers/src/providers/embeds/filemoon/types.ts new file mode 100644 index 0000000..caa27af --- /dev/null +++ b/packages/providers/src/providers/embeds/filemoon/types.ts @@ -0,0 +1,5 @@ +export type SubtitleResult = { + file: string; + label: string; + kind: string; +}[]; diff --git a/packages/providers/src/providers/embeds/mixdrop.ts b/packages/providers/src/providers/embeds/mixdrop.ts new file mode 100644 index 0000000..ba9ebd0 --- /dev/null +++ b/packages/providers/src/providers/embeds/mixdrop.ts @@ -0,0 +1,67 @@ +import * as unpacker from 'unpacker'; + +import { flags } from '@/entrypoint/utils/targets'; +import { makeEmbed } from '@/providers/base'; + +const mixdropBase = 'https://mixdrop.ag'; +const packedRegex = /(eval\(function\(p,a,c,k,e,d\){.*{}\)\))/; +const linkRegex = /MDCore\.wurl="(.*?)";/; + +export const mixdropScraper = makeEmbed({ + id: 'mixdrop', + name: 'MixDrop', + rank: 198, + async scrape(ctx) { + // Example url: https://mixdrop.co/e/pkwrgp0pizgod0 + // Example url: https://mixdrop.vc/e/pkwrgp0pizgod0 + let embedUrl = ctx.url; + if (ctx.url.includes('primewire')) embedUrl = (await ctx.fetcher.full(ctx.url)).finalUrl; + const embedId = new URL(embedUrl).pathname.split('/')[2]; + // constructing the url because many times mixdrop.co is returned which does not work + // this also handels the case where preview page urls are returned + // Example: https://mixdrop.vc/f/pkwrgp0pizgod0 + // these don't have the packed code + const streamRes = await ctx.proxiedFetcher(`/e/${embedId}`, { + baseUrl: mixdropBase, + }); + const packed = streamRes.match(packedRegex); + + // MixDrop uses a queue system for embeds + // If an embed is too new, the queue will + // not be completed and thus the packed + // JavaScript not present + if (!packed) { + throw new Error('failed to find packed mixdrop JavaScript'); + } + + const unpacked = unpacker.unpack(packed[1]); + const link = unpacked.match(linkRegex); + + if (!link) { + throw new Error('failed to find packed mixdrop source link'); + } + + const url = link[1]; + + return { + stream: [ + { + id: 'primary', + type: 'file', + flags: [flags.IP_LOCKED], + captions: [], + qualities: { + unknown: { + type: 'mp4', + url: url.startsWith('http') ? url : `https:${url}`, // URLs don't always start with the protocol + headers: { + // MixDrop requires this header on all streams + Referer: mixdropBase, + }, + }, + }, + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/mp4upload.ts b/packages/providers/src/providers/embeds/mp4upload.ts new file mode 100644 index 0000000..5bc8576 --- /dev/null +++ b/packages/providers/src/providers/embeds/mp4upload.ts @@ -0,0 +1,34 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { makeEmbed } from '@/providers/base'; + +export const mp4uploadScraper = makeEmbed({ + id: 'mp4upload', + name: 'mp4upload', + rank: 170, + async scrape(ctx) { + const embed = await ctx.proxiedFetcher(ctx.url); + + const playerSrcRegex = /(?<=player\.src\()\s*{\s*type:\s*"[^"]+",\s*src:\s*"([^"]+)"\s*}\s*(?=\);)/s; + const playerSrc = embed.match(playerSrcRegex) ?? []; + + const streamUrl = playerSrc[1]; + if (!streamUrl) throw new Error('Stream url not found in embed code'); + + return { + stream: [ + { + id: 'primary', + type: 'file', + flags: [flags.CORS_ALLOWED], + captions: [], + qualities: { + '1080': { + type: 'mp4', + url: streamUrl, + }, + }, + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/nsbx/delta.ts b/packages/providers/src/providers/embeds/nsbx/delta.ts new file mode 100644 index 0000000..95f354f --- /dev/null +++ b/packages/providers/src/providers/embeds/nsbx/delta.ts @@ -0,0 +1,17 @@ +import { EmbedOutput, makeEmbed } from '@/providers/base'; +import { headers } from '@/providers/sources/nsbx'; + +export const deltaScraper = makeEmbed({ + id: 'delta', + name: 'Delta', + rank: 200, + disabled: false, + async scrape(ctx) { + const url = `https://api.nsbx.ru/provider?resourceId=${encodeURIComponent(ctx.url)}&provider=delta`; + const result = await ctx.fetcher(url, { + headers, + }); + + return result as EmbedOutput; + }, +}); diff --git a/packages/providers/src/providers/embeds/ridoo.ts b/packages/providers/src/providers/embeds/ridoo.ts new file mode 100644 index 0000000..d7f5df5 --- /dev/null +++ b/packages/providers/src/providers/embeds/ridoo.ts @@ -0,0 +1,34 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { NotFoundError } from '@/utils/errors'; + +import { makeEmbed } from '../base'; + +const referer = 'https://ridomovies.tv/'; + +export const ridooScraper = makeEmbed({ + id: 'ridoo', + name: 'Ridoo', + rank: 105, + async scrape(ctx) { + const res = await ctx.proxiedFetcher(ctx.url, { + headers: { + referer, + }, + }); + const regexPattern = /file:"([^"]+)"/g; + const url = regexPattern.exec(res)?.[1]; + if (!url) throw new NotFoundError('Unable to find source url'); + + return { + stream: [ + { + id: 'primary', + type: 'hls', + playlist: url, + captions: [], + flags: [flags.CORS_ALLOWED], + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/smashystream/opstream.ts b/packages/providers/src/providers/embeds/smashystream/opstream.ts new file mode 100644 index 0000000..7e01c27 --- /dev/null +++ b/packages/providers/src/providers/embeds/smashystream/opstream.ts @@ -0,0 +1,17 @@ +import { makeEmbed } from '@/providers/base'; + +import { smashyStreamFScraper } from './video1'; + +export const smashyStreamOScraper = makeEmbed({ + // the scraping logic for all smashystream embeds is the same + // all the embeds can be added in the same way + id: 'smashystream-o', + name: 'SmashyStream (O)', + rank: 70, + async scrape(ctx) { + const result = await smashyStreamFScraper.scrape(ctx); + return { + stream: result.stream, + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/smashystream/video1.ts b/packages/providers/src/providers/embeds/smashystream/video1.ts new file mode 100644 index 0000000..19af888 --- /dev/null +++ b/packages/providers/src/providers/embeds/smashystream/video1.ts @@ -0,0 +1,75 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { makeEmbed } from '@/providers/base'; +import { Caption, getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; +import { NotFoundError } from '@/utils/errors'; + +type FPlayerResponse = { + sourceUrls: string[]; + subtitles: string | null; +}; + +// if you don't understand how this is reversed +// check https://discord.com/channels/871713465100816424/1186646348137775164/1225644477188935770 +// feel free to reach out atpn or ciaran_ds on discord if you've any problems +function decode(str: string): string { + const b = ['U0ZML2RVN0IvRGx4', 'MGNhL0JWb0kvTlM5', 'Ym94LzJTSS9aU0Zj', 'SGJ0L1dGakIvN0dX', 'eE52L1QwOC96N0Yz']; + let formatedB64 = str.slice(2); + for (let i = 4; i > -1; i--) { + formatedB64 = formatedB64.replace(`//${b[i]}`, ''); + } + return atob(formatedB64); +} + +export const smashyStreamFScraper = makeEmbed({ + id: 'smashystream-f', + name: 'SmashyStream (F)', + rank: 71, + async scrape(ctx) { + const res = await ctx.proxiedFetcher(ctx.url, { + headers: { + Referer: ctx.url, + }, + }); + + if (!res.sourceUrls[0]) throw new NotFoundError('No watchable item found'); + + const playlist = decode(res.sourceUrls[0]); + if (!playlist.includes('.m3u8')) throw new Error('Failed to decode'); + + const captions: Caption[] = + res.subtitles + ?.match(/\[([^\]]+)\](https?:\/\/\S+?)(?=,\[|$)/g) + ?.map((entry: string) => { + const match = entry.match(/\[([^\]]+)\](https?:\/\/\S+?)(?=,\[|$)/); + if (match) { + const [, language, url] = match; + if (language && url) { + const languageCode = labelToLanguageCode(language.replace(/ - .*/, '')); + const captionType = getCaptionTypeFromUrl(url); + if (!languageCode || !captionType) return null; + return { + id: url, + url: url.replace(',', ''), + language: languageCode, + type: captionType, + hasCorsRestrictions: false, + }; + } + } + return null; + }) + .filter((x): x is Caption => x !== null) ?? []; + + return { + stream: [ + { + id: 'primary', + playlist, + type: 'hls', + flags: [flags.CORS_ALLOWED], + captions, + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/streambucket.ts b/packages/providers/src/providers/embeds/streambucket.ts new file mode 100644 index 0000000..9e21a93 --- /dev/null +++ b/packages/providers/src/providers/embeds/streambucket.ts @@ -0,0 +1,101 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { makeEmbed } from '@/providers/base'; + +// StreamBucket makes use of https://github.com/nicxlau/hunter-php-javascript-obfuscator + +const hunterRegex = /eval\(function\(h,u,n,t,e,r\).*?\("(.*?)",\d*?,"(.*?)",(\d*?),(\d*?),\d*?\)\)/; +const linkRegex = /file:"(.*?)"/; + +// This is a much more simple and optimized version of the "h,u,n,t,e,r" +// obfuscation algorithm. It's just basic chunked+mask encoding. +// I have seen this same encoding used on some sites under the name +// "p,l,a,y,e,r" as well +function decodeHunter(encoded: string, mask: string, charCodeOffset: number, delimiterOffset: number) { + // The encoded string is made up of 'n' number of chunks. + // Each chunk is separated by a delimiter inside the mask. + // This offset is also used as the exponentiation base in + // the charCode calculations + const delimiter = mask[delimiterOffset]; + + // Split the 'encoded' string into chunks using the delimiter, + // and filter out any empty chunks. + const chunks = encoded.split(delimiter).filter((chunk) => chunk); + + // Decode each chunk and concatenate the results to form the final 'decoded' string. + const decoded = chunks + .map((chunk) => { + // Chunks are in reverse order. 'reduceRight' removes the + // need to 'reverse' the array first + const charCode = chunk.split('').reduceRight((c, value, index) => { + // Calculate the character code for each character in the chunk. + // This involves finding the index of 'value' in the 'mask' and + // multiplying it by (delimiterOffset^position). + return c + mask.indexOf(value) * delimiterOffset ** (chunk.length - 1 - index); + }, 0); + + // The actual character code is offset by the given amount + return String.fromCharCode(charCode - charCodeOffset); + }) + .join(''); + + return decoded; +} + +export const streambucketScraper = makeEmbed({ + id: 'streambucket', + name: 'StreamBucket', + rank: 196, + // TODO - Disabled until ctx.fetcher and ctx.proxiedFetcher don't trigger bot detection + disabled: true, + async scrape(ctx) { + // Using the context fetchers make the site return just the string "No bots please!"? + // TODO - Fix this. Native fetch does not trigger this. No idea why right now + const response = await fetch(ctx.url); + const html = await response.text(); + + // This is different than the above mentioned bot detection + if (html.includes('captcha-checkbox')) { + // TODO - This doesn't use recaptcha, just really basic "image match". Maybe could automate? + throw new Error('StreamBucket got captchaed'); + } + + let regexResult = html.match(hunterRegex); + + if (!regexResult) { + throw new Error('Failed to find StreamBucket hunter JavaScript'); + } + + const encoded = regexResult[1]; + const mask = regexResult[2]; + const charCodeOffset = Number(regexResult[3]); + const delimiterOffset = Number(regexResult[4]); + + if (Number.isNaN(charCodeOffset)) { + throw new Error('StreamBucket hunter JavaScript charCodeOffset is not a valid number'); + } + + if (Number.isNaN(delimiterOffset)) { + throw new Error('StreamBucket hunter JavaScript delimiterOffset is not a valid number'); + } + + const decoded = decodeHunter(encoded, mask, charCodeOffset, delimiterOffset); + + regexResult = decoded.match(linkRegex); + + if (!regexResult) { + throw new Error('Failed to find StreamBucket HLS link'); + } + + return { + stream: [ + { + id: 'primary', + type: 'hls', + playlist: regexResult[1], + flags: [flags.CORS_ALLOWED], + captions: [], + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/streamsb.ts b/packages/providers/src/providers/embeds/streamsb.ts new file mode 100644 index 0000000..7e5c5ad --- /dev/null +++ b/packages/providers/src/providers/embeds/streamsb.ts @@ -0,0 +1,172 @@ +import { load } from 'cheerio'; +import Base64 from 'crypto-js/enc-base64'; +import Utf8 from 'crypto-js/enc-utf8'; +import FormData from 'form-data'; + +import { flags } from '@/entrypoint/utils/targets'; +import { makeEmbed } from '@/providers/base'; +import { StreamFile } from '@/providers/streams'; +import { EmbedScrapeContext } from '@/utils/context'; + +async function fetchCaptchaToken(ctx: EmbedScrapeContext, domain: string, recaptchaKey: string) { + const domainHash = Base64.stringify(Utf8.parse(domain)).replace(/=/g, '.'); + + const recaptchaRender = await ctx.proxiedFetcher(`https://www.google.com/recaptcha/api.js`, { + query: { + render: recaptchaKey, + }, + }); + + const vToken = recaptchaRender.substring( + recaptchaRender.indexOf('/releases/') + 10, + recaptchaRender.indexOf('/recaptcha__en.js'), + ); + + const recaptchaAnchor = await ctx.proxiedFetcher( + `https://www.google.com/recaptcha/api2/anchor?cb=1&hl=en&size=invisible&cb=flicklax`, + { + query: { + k: recaptchaKey, + co: domainHash, + v: vToken, + }, + }, + ); + + const cToken = load(recaptchaAnchor)('#recaptcha-token').attr('value'); + if (!cToken) throw new Error('Unable to find cToken'); + + const tokenData = await ctx.proxiedFetcher(`https://www.google.com/recaptcha/api2/reload`, { + query: { + v: vToken, + reason: 'q', + k: recaptchaKey, + c: cToken, + sa: '', + co: domain, + }, + headers: { referer: 'https://www.google.com/recaptcha/api2/' }, + method: 'POST', + }); + + const token = tokenData.match('rresp","(.+?)"'); + return token ? token[1] : null; +} + +/* Url variations + - domain.com/{id}?.html + - domain.com/{id} + - domain.com/embed-{id} + - domain.com/d/{id} + - domain.com/e/{id} + - domain.com/e/{id}-embed + */ +export const streamsbScraper = makeEmbed({ + id: 'streamsb', + name: 'StreamSB', + rank: 150, + async scrape(ctx) { + const streamsbUrl = ctx.url.replace('.html', '').replace('embed-', '').replace('e/', '').replace('d/', ''); + const parsedUrl = new URL(streamsbUrl); + const base = await ctx.proxiedFetcher(`${parsedUrl.origin}/d${parsedUrl.pathname}`); + ctx.progress(20); + + const pageDoc = load(base); + + const dlDetails: any[] = []; + pageDoc('[onclick^=download_video]').each((i, el) => { + const $el = pageDoc(el); + + const funcContents = $el.attr('onclick'); + const regExpFunc = /download_video\('(.+?)','(.+?)','(.+?)'\)/; + const matchesFunc = regExpFunc.exec(funcContents ?? ''); + if (!matchesFunc) return; + + const quality = $el.find('span').text(); + const regExpQuality = /(.+?) \((.+?)\)/; + const matchesQuality = regExpQuality.exec(quality ?? ''); + if (!matchesQuality) return; + + dlDetails.push({ + parameters: [matchesFunc[1], matchesFunc[2], matchesFunc[3]], + quality: { + label: matchesQuality[1].trim(), + size: matchesQuality[2], + }, + }); + }); + + ctx.progress(40); + + let dls = await Promise.all( + dlDetails.map(async (dl) => { + const query = { + op: 'download_orig', + id: dl.parameters[0], + mode: dl.parameters[1], + hash: dl.parameters[2], + }; + + const getDownload = await ctx.proxiedFetcher(`/dl`, { + query, + baseUrl: parsedUrl.origin, + }); + + const downloadDoc = load(getDownload); + + const recaptchaKey = downloadDoc('.g-recaptcha').attr('data-sitekey'); + if (!recaptchaKey) throw new Error('Unable to get captcha key'); + + const captchaToken = await fetchCaptchaToken(ctx, parsedUrl.origin, recaptchaKey); + if (!captchaToken) throw new Error('Unable to get captcha token'); + + const dlForm = new FormData(); + dlForm.append('op', 'download_orig'); + dlForm.append('id', dl.parameters[0]); + dlForm.append('mode', dl.parameters[1]); + dlForm.append('hash', dl.parameters[2]); + dlForm.append('g-recaptcha-response', captchaToken); + + const download = await ctx.proxiedFetcher(`/dl`, { + method: 'POST', + baseUrl: parsedUrl.origin, + body: dlForm, + query, + }); + + const dlLink = load(download)('.btn.btn-light.btn-lg').attr('href'); + + return { + quality: dl.quality.label, + url: dlLink, + }; + }), + ); + dls = dls.filter((d) => !!d.url); + + ctx.progress(80); + + const qualities = dls.reduce( + (a, v) => { + a[v.quality] = { + type: 'mp4', + url: v.url as string, + }; + return a; + }, + {} as Record, + ); + + return { + stream: [ + { + id: 'primary', + type: 'file', + flags: [flags.CORS_ALLOWED], + qualities, + captions: [], + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/streamtape.ts b/packages/providers/src/providers/embeds/streamtape.ts new file mode 100644 index 0000000..db345b0 --- /dev/null +++ b/packages/providers/src/providers/embeds/streamtape.ts @@ -0,0 +1,39 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { makeEmbed } from '@/providers/base'; + +export const streamtapeScraper = makeEmbed({ + id: 'streamtape', + name: 'Streamtape', + rank: 160, + async scrape(ctx) { + const embed = await ctx.proxiedFetcher(ctx.url); + + const match = embed.match(/robotlink'\).innerHTML = (.*)'/); + if (!match) throw new Error('No match found'); + + const [fh, sh] = match?.[1]?.split("+ ('") ?? []; + if (!fh || !sh) throw new Error('No match found'); + + const url = `https:${fh?.replace(/'/g, '').trim()}${sh?.substring(3).trim()}`; + + return { + stream: [ + { + id: 'primary', + type: 'file', + flags: [flags.CORS_ALLOWED, flags.IP_LOCKED], + captions: [], + qualities: { + unknown: { + type: 'mp4', + url, + }, + }, + headers: { + Referer: 'https://streamtape.com', + }, + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/streamvid.ts b/packages/providers/src/providers/embeds/streamvid.ts new file mode 100644 index 0000000..ceb8810 --- /dev/null +++ b/packages/providers/src/providers/embeds/streamvid.ts @@ -0,0 +1,36 @@ +import * as unpacker from 'unpacker'; + +import { flags } from '@/entrypoint/utils/targets'; +import { makeEmbed } from '@/providers/base'; + +const packedRegex = /(eval\(function\(p,a,c,k,e,d\).*\)\)\))/; +const linkRegex = /src:"(https:\/\/[^"]+)"/; + +export const streamvidScraper = makeEmbed({ + id: 'streamvid', + name: 'Streamvid', + rank: 215, + async scrape(ctx) { + // Example url: https://streamvid.net/fu1jaf96vofx + const streamRes = await ctx.proxiedFetcher(ctx.url); + const packed = streamRes.match(packedRegex); + + if (!packed) throw new Error('streamvid packed not found'); + + const unpacked = unpacker.unpack(packed[1]); + const link = unpacked.match(linkRegex); + + if (!link) throw new Error('streamvid link not found'); + return { + stream: [ + { + type: 'hls', + id: 'primary', + playlist: link[1], + flags: [flags.CORS_ALLOWED], + captions: [], + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/upcloud.ts b/packages/providers/src/providers/embeds/upcloud.ts new file mode 100644 index 0000000..63d8407 --- /dev/null +++ b/packages/providers/src/providers/embeds/upcloud.ts @@ -0,0 +1,141 @@ +import crypto from 'crypto-js'; + +import { flags } from '@/entrypoint/utils/targets'; +import { makeEmbed } from '@/providers/base'; +import { Caption, getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; + +const origin = 'https://rabbitstream.net'; +const referer = 'https://rabbitstream.net/'; + +const { AES, enc } = crypto; + +interface StreamRes { + server: number; + sources: string; + tracks: { + file: string; + kind: 'captions' | 'thumbnails'; + label: string; + }[]; +} + +function isJSON(json: string) { + try { + JSON.parse(json); + return true; + } catch { + return false; + } +} + +/* +example script segment: +switch(I9){case 0x0:II=X,IM=t;break;case 0x1:II=b,IM=D;break;case 0x2:II=x,IM=f;break;case 0x3:II=S,IM=j;break;case 0x4:II=U,IM=G;break;case 0x5:II=partKeyStartPosition_5,IM=partKeyLength_5;} +*/ +function extractKey(script: string): [number, number][] | null { + const startOfSwitch = script.lastIndexOf('switch'); + const endOfCases = script.indexOf('partKeyStartPosition'); + const switchBody = script.slice(startOfSwitch, endOfCases); + + const nums: [number, number][] = []; + const matches = switchBody.matchAll(/:[a-zA-Z0-9]+=([a-zA-Z0-9]+),[a-zA-Z0-9]+=([a-zA-Z0-9]+);/g); + for (const match of matches) { + const innerNumbers: number[] = []; + for (const varMatch of [match[1], match[2]]) { + const regex = new RegExp(`${varMatch}=0x([a-zA-Z0-9]+)`, 'g'); + const varMatches = [...script.matchAll(regex)]; + const lastMatch = varMatches[varMatches.length - 1]; + if (!lastMatch) return null; + const number = parseInt(lastMatch[1], 16); + innerNumbers.push(number); + } + + nums.push([innerNumbers[0], innerNumbers[1]]); + } + + return nums; +} + +export const upcloudScraper = makeEmbed({ + id: 'upcloud', + name: 'UpCloud', + rank: 200, + disabled: true, + async scrape(ctx) { + // Example url: https://dokicloud.one/embed-4/{id}?z= + const parsedUrl = new URL(ctx.url.replace('embed-5', 'embed-4')); + + const dataPath = parsedUrl.pathname.split('/'); + const dataId = dataPath[dataPath.length - 1]; + + const streamRes = await ctx.proxiedFetcher(`${parsedUrl.origin}/ajax/embed-4/getSources?id=${dataId}`, { + headers: { + Referer: parsedUrl.origin, + 'X-Requested-With': 'XMLHttpRequest', + }, + }); + + let sources: { file: string; type: string } | null = null; + + if (!isJSON(streamRes.sources)) { + const scriptJs = await ctx.proxiedFetcher(`https://rabbitstream.net/js/player/prod/e4-player.min.js`, { + query: { + // browser side caching on this endpoint is quite extreme. Add version query paramter to circumvent any caching + v: Date.now().toString(), + }, + }); + const decryptionKey = extractKey(scriptJs); + if (!decryptionKey) throw new Error('Key extraction failed'); + + let extractedKey = ''; + let strippedSources = streamRes.sources; + let totalledOffset = 0; + decryptionKey.forEach(([a, b]) => { + const start = a + totalledOffset; + const end = start + b; + extractedKey += streamRes.sources.slice(start, end); + strippedSources = strippedSources.replace(streamRes.sources.substring(start, end), ''); + totalledOffset += b; + }); + + const decryptedStream = AES.decrypt(strippedSources, extractedKey).toString(enc.Utf8); + const parsedStream = JSON.parse(decryptedStream)[0]; + if (!parsedStream) throw new Error('No stream found'); + sources = parsedStream; + } + + if (!sources) throw new Error('upcloud source not found'); + + const captions: Caption[] = []; + streamRes.tracks.forEach((track) => { + if (track.kind !== 'captions') return; + const type = getCaptionTypeFromUrl(track.file); + if (!type) return; + const language = labelToLanguageCode(track.label.split(' ')[0]); + if (!language) return; + captions.push({ + id: track.file, + language, + hasCorsRestrictions: false, + type, + url: track.file, + }); + }); + + return { + stream: [ + { + id: 'primary', + type: 'hls', + playlist: sources.file, + flags: [flags.CORS_ALLOWED], + captions, + preferredHeaders: { + Referer: referer, + Origin: origin, + }, + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/upstream.ts b/packages/providers/src/providers/embeds/upstream.ts new file mode 100644 index 0000000..8becf22 --- /dev/null +++ b/packages/providers/src/providers/embeds/upstream.ts @@ -0,0 +1,39 @@ +import * as unpacker from 'unpacker'; + +import { flags } from '@/entrypoint/utils/targets'; +import { makeEmbed } from '@/providers/base'; + +const packedRegex = /(eval\(function\(p,a,c,k,e,d\).*\)\)\))/; +const linkRegex = /sources:\[{file:"(.*?)"/; + +export const upstreamScraper = makeEmbed({ + id: 'upstream', + name: 'UpStream', + rank: 199, + async scrape(ctx) { + // Example url: https://upstream.to/embed-omscqgn6jc8r.html + const streamRes = await ctx.proxiedFetcher(ctx.url); + const packed = streamRes.match(packedRegex); + + if (packed) { + const unpacked = unpacker.unpack(packed[1]); + const link = unpacked.match(linkRegex); + + if (link) { + return { + stream: [ + { + id: 'primary', + type: 'hls', + playlist: link[1], + flags: [flags.CORS_ALLOWED], + captions: [], + }, + ], + }; + } + } + + throw new Error('upstream source not found'); + }, +}); diff --git a/packages/providers/src/providers/embeds/vidcloud.ts b/packages/providers/src/providers/embeds/vidcloud.ts new file mode 100644 index 0000000..d5c50d4 --- /dev/null +++ b/packages/providers/src/providers/embeds/vidcloud.ts @@ -0,0 +1,20 @@ +import { makeEmbed } from '@/providers/base'; + +import { upcloudScraper } from './upcloud'; + +export const vidCloudScraper = makeEmbed({ + id: 'vidcloud', + name: 'VidCloud', + rank: 201, + disabled: true, + async scrape(ctx) { + // Both vidcloud and upcloud have the same embed domain (rabbitstream.net) + const result = await upcloudScraper.scrape(ctx); + return { + stream: result.stream.map((s) => ({ + ...s, + flags: [], + })), + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/vidplay/common.ts b/packages/providers/src/providers/embeds/vidplay/common.ts new file mode 100644 index 0000000..f10681a --- /dev/null +++ b/packages/providers/src/providers/embeds/vidplay/common.ts @@ -0,0 +1,57 @@ +import { makeFullUrl } from '@/fetchers/common'; +import { decodeData } from '@/providers/sources/vidsrcto/common'; +import { EmbedScrapeContext } from '@/utils/context'; + +export const vidplayBase = 'https://vidplay.online'; +export const referer = `${vidplayBase}/`; + +// This file is based on https://github.com/Ciarands/vidsrc-to-resolver/blob/dffa45e726a4b944cb9af0c9e7630476c93c0213/vidsrc.py#L16 +// Full credits to @Ciarands! + +export const getDecryptionKeys = async (ctx: EmbedScrapeContext): Promise => { + const res = await ctx.proxiedFetcher('https://github.com/Ciarands/vidsrc-keys/blob/main/keys.json'); + const regex = /"rawLines":\s*\[([\s\S]*?)\]/; + const rawLines = res.match(regex)?.[1]; + if (!rawLines) throw new Error('No keys found'); + const keys = JSON.parse(`${rawLines.substring(1).replace(/\\"/g, '"')}]`); + return keys; +}; + +export const getEncodedId = async (ctx: EmbedScrapeContext) => { + const url = new URL(ctx.url); + const id = url.pathname.replace('/e/', ''); + const keyList = await getDecryptionKeys(ctx); + + const decodedId = decodeData(keyList[0], id); + const encodedResult = decodeData(keyList[1], decodedId); + const b64encoded = btoa(encodedResult); + return b64encoded.replace('/', '_'); +}; + +export const getFuTokenKey = async (ctx: EmbedScrapeContext) => { + const id = await getEncodedId(ctx); + const fuTokenRes = await ctx.proxiedFetcher('/futoken', { + baseUrl: vidplayBase, + headers: { + referer: ctx.url, + }, + }); + const fuKey = fuTokenRes.match(/var\s+k\s*=\s*'([^']+)'/)?.[1]; + if (!fuKey) throw new Error('No fuKey found'); + const tokens = []; + for (let i = 0; i < id.length; i += 1) { + tokens.push(fuKey.charCodeAt(i % fuKey.length) + id.charCodeAt(i)); + } + return `${fuKey},${tokens.join(',')}`; +}; + +export const getFileUrl = async (ctx: EmbedScrapeContext) => { + const fuToken = await getFuTokenKey(ctx); + return makeFullUrl(`/mediainfo/${fuToken}`, { + baseUrl: vidplayBase, + query: { + ...Object.fromEntries(new URL(ctx.url).searchParams.entries()), + autostart: 'true', + }, + }); +}; diff --git a/packages/providers/src/providers/embeds/vidplay/index.ts b/packages/providers/src/providers/embeds/vidplay/index.ts new file mode 100644 index 0000000..781909c --- /dev/null +++ b/packages/providers/src/providers/embeds/vidplay/index.ts @@ -0,0 +1,67 @@ +import { makeEmbed } from '@/providers/base'; +import { Caption, getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; + +import { getFileUrl } from './common'; +import { SubtitleResult, ThumbnailTrack, VidplaySourceResponse } from './types'; + +export const vidplayScraper = makeEmbed({ + id: 'vidplay', + name: 'VidPlay', + rank: 401, + scrape: async (ctx) => { + const fileUrl = await getFileUrl(ctx); + const fileUrlRes = await ctx.proxiedFetcher(fileUrl, { + headers: { + referer: ctx.url, + }, + }); + if (typeof fileUrlRes.result === 'number') throw new Error('File not found'); + const source = fileUrlRes.result.sources[0].file; + const thumbnailSource = fileUrlRes.result.tracks.find((track) => track.kind === 'thumbnails'); + + let thumbnailTrack: ThumbnailTrack | undefined; + if (thumbnailSource) { + thumbnailTrack = { + type: 'vtt', + url: thumbnailSource.file, + }; + } + + const url = new URL(ctx.url); + const subtitlesLink = url.searchParams.get('sub.info'); + const captions: Caption[] = []; + if (subtitlesLink) { + const captionsResult = await ctx.proxiedFetcher(subtitlesLink); + + for (const caption of captionsResult) { + const language = labelToLanguageCode(caption.label); + const captionType = getCaptionTypeFromUrl(caption.file); + if (!language || !captionType) continue; + captions.push({ + id: caption.file, + url: caption.file, + type: captionType, + language, + hasCorsRestrictions: false, + }); + } + } + + return { + stream: [ + { + id: 'primary', + type: 'hls', + playlist: source, + flags: [], + headers: { + Referer: url.origin, + Origin: url.origin, + }, + captions, + thumbnailTrack, + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/vidplay/types.ts b/packages/providers/src/providers/embeds/vidplay/types.ts new file mode 100644 index 0000000..8810647 --- /dev/null +++ b/packages/providers/src/providers/embeds/vidplay/types.ts @@ -0,0 +1,24 @@ +export type VidplaySourceResponse = { + result: + | { + sources: { + file: string; + }[]; + tracks: { + file: string; + kind: string; + }[]; + } + | number; +}; + +export type SubtitleResult = { + file: string; + label: string; + kind: string; +}[]; + +export type ThumbnailTrack = { + type: 'vtt'; + url: string; +}; diff --git a/packages/providers/src/providers/embeds/vidsrc.ts b/packages/providers/src/providers/embeds/vidsrc.ts new file mode 100644 index 0000000..716c82c --- /dev/null +++ b/packages/providers/src/providers/embeds/vidsrc.ts @@ -0,0 +1,69 @@ +import { makeEmbed } from '@/providers/base'; +import { vidsrcRCPBase } from '@/providers/sources/vidsrc/common'; + +const hlsURLRegex = /file:"(.*?)"/; +const setPassRegex = /var pass_path = "(.*set_pass\.php.*)";/; + +function formatHlsB64(data: string): string { + const encodedB64 = data.replace(/\/@#@\/[^=/]+==/g, ''); + if (encodedB64.match(/\/@#@\/[^=/]+==/)) { + return formatHlsB64(encodedB64); + } + return encodedB64; +} + +export const vidsrcembedScraper = makeEmbed({ + id: 'vidsrcembed', // VidSrc is both a source and an embed host + name: 'VidSrc', + rank: 197, + async scrape(ctx) { + const html = await ctx.proxiedFetcher(ctx.url, { + headers: { + referer: ctx.url, + }, + }); + + // When this eventually breaks see the player js @ pjs_main.js + // If you know what youre doing and are slightly confused about how to reverse this feel free to reach out to ciaran_ds on discord with any queries + let hlsMatch = html.match(hlsURLRegex)?.[1]?.slice(2); + if (!hlsMatch) throw new Error('Unable to find HLS playlist'); + hlsMatch = formatHlsB64(hlsMatch); + const finalUrl = atob(hlsMatch); + if (!finalUrl.includes('.m3u8')) throw new Error('Unable to find HLS playlist'); + + let setPassLink = html.match(setPassRegex)?.[1]; + + // isn't neeeded, the stream works without it anyway + // shouldn't fail if the setpass link is not found + if (setPassLink) { + if (setPassLink.startsWith('//')) { + setPassLink = `https:${setPassLink}`; + } + + // VidSrc uses a password endpoint to temporarily whitelist the user's IP. This is called in an interval by the player. + // It currently has no effect on the player itself, the content plays fine without it. + // In the future we might have to introduce hooks for the frontend to call this endpoint. + await ctx.proxiedFetcher(setPassLink, { + headers: { + referer: ctx.url, + }, + }); + } + + return { + stream: [ + { + id: 'primary', + type: 'hls', + playlist: finalUrl, + headers: { + Referer: vidsrcRCPBase, + Origin: vidsrcRCPBase, + }, + flags: [], + captions: [], + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/voe.ts b/packages/providers/src/providers/embeds/voe.ts new file mode 100644 index 0000000..759d8f7 --- /dev/null +++ b/packages/providers/src/providers/embeds/voe.ts @@ -0,0 +1,44 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { makeEmbed } from '@/providers/base'; + +const linkRegex = /'hls': ?'(http.*?)',/; +const tracksRegex = /previewThumbnails:\s{.*src:\["([^"]+)"]/; + +export const voeScraper = makeEmbed({ + id: 'voe', + name: 'voe.sx', + rank: 180, + async scrape(ctx) { + const embedRes = await ctx.proxiedFetcher.full(ctx.url); + const embed = embedRes.body; + + const playerSrc = embed.match(linkRegex) ?? []; + const thumbnailTrack = embed.match(tracksRegex); + + const streamUrl = playerSrc[1]; + if (!streamUrl) throw new Error('Stream url not found in embed code'); + + return { + stream: [ + { + type: 'hls', + id: 'primary', + playlist: streamUrl, + flags: [flags.CORS_ALLOWED, flags.IP_LOCKED], + captions: [], + headers: { + Referer: 'https://voe.sx', + }, + ...(thumbnailTrack + ? { + thumbnailTrack: { + type: 'vtt', + url: new URL(embedRes.finalUrl).origin + thumbnailTrack[1], + }, + } + : {}), + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/vtube.ts b/packages/providers/src/providers/embeds/vtube.ts new file mode 100644 index 0000000..4558f38 --- /dev/null +++ b/packages/providers/src/providers/embeds/vtube.ts @@ -0,0 +1,51 @@ +import { load } from 'cheerio'; +import { unpack } from 'unpacker'; + +import { flags } from '@/entrypoint/utils/targets'; + +import { makeEmbed } from '../base'; + +const evalCodeRegex = /eval\((.*)\)/g; +const fileRegex = /file:"(.*?)"/g; +const tracksRegex = /\{file:"([^"]+)",kind:"thumbnails"\}/g; + +export const vTubeScraper = makeEmbed({ + id: 'vtube', + name: 'vTube', + rank: 145, + scrape: async (ctx) => { + const mainPageRes = await ctx.proxiedFetcher.full(ctx.url, { + headers: { + referer: ctx.url, + }, + }); + const mainPage = mainPageRes.body; + const html = load(mainPage); + const evalCode = html('script').text().match(evalCodeRegex); + if (!evalCode) throw new Error('Failed to find eval code'); + const unpacked = unpack(evalCode?.toString()); + const file = fileRegex.exec(unpacked); + const thumbnailTrack = tracksRegex.exec(unpacked); + if (!file?.[1]) throw new Error('Failed to find file'); + + return { + stream: [ + { + id: 'primary', + type: 'hls', + playlist: file[1], + flags: [flags.CORS_ALLOWED], + captions: [], + ...(thumbnailTrack + ? { + thumbnailTrack: { + type: 'vtt', + url: new URL(mainPageRes.finalUrl).origin + thumbnailTrack[1], + }, + } + : {}), + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/warezcdn/common.ts b/packages/providers/src/providers/embeds/warezcdn/common.ts new file mode 100644 index 0000000..2762ed8 --- /dev/null +++ b/packages/providers/src/providers/embeds/warezcdn/common.ts @@ -0,0 +1,58 @@ +import { warezcdnPlayerBase } from '@/providers/sources/warezcdn/common'; +import { EmbedScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +function decrypt(input: string) { + let output = atob(input); + + // Remove leading and trailing whitespaces + output = output.trim(); + + // Reverse the string + output = output.split('').reverse().join(''); + + // Get the last 5 characters and reverse them + let last = output.slice(-5); + last = last.split('').reverse().join(''); + + // Remove the last 5 characters from the original string + output = output.slice(0, -5); + + // Return the original string concatenated with the reversed last 5 characters + return `${output}${last}`; +} + +export async function getDecryptedId(ctx: EmbedScrapeContext) { + const page = await ctx.proxiedFetcher(`/player.php`, { + baseUrl: warezcdnPlayerBase, + headers: { + Referer: `${warezcdnPlayerBase}/getEmbed.php?${new URLSearchParams({ + id: ctx.url, + sv: 'warezcdn', + })}`, + }, + query: { + id: ctx.url, + }, + }); + const allowanceKey = page.match(/let allowanceKey = "(.*?)";/)?.[1]; + if (!allowanceKey) throw new NotFoundError('Failed to get allowanceKey'); + + const streamData = await ctx.proxiedFetcher('/functions.php', { + baseUrl: warezcdnPlayerBase, + method: 'POST', + body: new URLSearchParams({ + getVideo: ctx.url, + key: allowanceKey, + }), + }); + const stream = JSON.parse(streamData); + + if (!stream.id) throw new NotFoundError("can't get stream id"); + + const decryptedId = decrypt(stream.id); + + if (!decryptedId) throw new NotFoundError("can't get file id"); + + return decryptedId; +} diff --git a/packages/providers/src/providers/embeds/warezcdn/hls.ts b/packages/providers/src/providers/embeds/warezcdn/hls.ts new file mode 100644 index 0000000..2e49852 --- /dev/null +++ b/packages/providers/src/providers/embeds/warezcdn/hls.ts @@ -0,0 +1,44 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { makeEmbed } from '@/providers/base'; +import { EmbedScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +import { getDecryptedId } from './common'; + +// Method found by atpn +async function getVideowlUrlStream(ctx: EmbedScrapeContext, decryptedId: string) { + const sharePage = await ctx.proxiedFetcher('https://cloud.mail.ru/public/uaRH/2PYWcJRpH'); + const regex = /"videowl_view":\{"count":"(\d+)","url":"([^"]+)"\}/g; + const videowlUrl = regex.exec(sharePage)?.[2]; + + if (!videowlUrl) throw new NotFoundError('Failed to get videoOwlUrl'); + + return `${videowlUrl}/0p/${btoa(decryptedId)}.m3u8?${new URLSearchParams({ + double_encode: '1', + })}`; +} + +export const warezcdnembedHlsScraper = makeEmbed({ + id: 'warezcdnembedhls', // WarezCDN is both a source and an embed host + name: 'WarezCDN HLS', + rank: 83, + async scrape(ctx) { + const decryptedId = await getDecryptedId(ctx); + + if (!decryptedId) throw new NotFoundError("can't get file id"); + + const streamUrl = await getVideowlUrlStream(ctx, decryptedId); + + return { + stream: [ + { + id: 'primary', + type: 'hls', + flags: [flags.IP_LOCKED], + captions: [], + playlist: streamUrl, + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/warezcdn/mp4.ts b/packages/providers/src/providers/embeds/warezcdn/mp4.ts new file mode 100644 index 0000000..ada781d --- /dev/null +++ b/packages/providers/src/providers/embeds/warezcdn/mp4.ts @@ -0,0 +1,58 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { makeEmbed } from '@/providers/base'; +import { warezcdnWorkerProxy } from '@/providers/sources/warezcdn/common'; +import { EmbedScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +import { getDecryptedId } from './common'; + +const cdnListing = [50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64]; + +async function checkUrls(ctx: EmbedScrapeContext, fileId: string) { + for (const id of cdnListing) { + const url = `https://cloclo${id}.cloud.mail.ru/weblink/view/${fileId}`; + const response = await ctx.proxiedFetcher.full(url, { + method: 'GET', + headers: { + Range: 'bytes=0-1', + }, + }); + if (response.statusCode === 206) return url; + } + return null; +} + +export const warezcdnembedMp4Scraper = makeEmbed({ + id: 'warezcdnembedmp4', // WarezCDN is both a source and an embed host + name: 'WarezCDN MP4', + rank: 82, + disabled: false, + async scrape(ctx) { + const decryptedId = await getDecryptedId(ctx); + + if (!decryptedId) throw new NotFoundError("can't get file id"); + + const streamUrl = await checkUrls(ctx, decryptedId); + + if (!streamUrl) throw new NotFoundError("can't get stream id"); + + return { + stream: [ + { + id: 'primary', + captions: [], + qualities: { + unknown: { + type: 'mp4', + url: `${warezcdnWorkerProxy}/?${new URLSearchParams({ + url: streamUrl, + })}`, + }, + }, + type: 'file', + flags: [flags.CORS_ALLOWED], + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/wootly.ts b/packages/providers/src/providers/embeds/wootly.ts new file mode 100644 index 0000000..0119926 --- /dev/null +++ b/packages/providers/src/providers/embeds/wootly.ts @@ -0,0 +1,83 @@ +import { load } from 'cheerio'; + +import { flags } from '@/entrypoint/utils/targets'; +import { makeEmbed } from '@/providers/base'; +import { makeCookieHeader, parseSetCookie } from '@/utils/cookie'; + +export const wootlyScraper = makeEmbed({ + id: 'wootly', + name: 'wootly', + rank: 172, + async scrape(ctx) { + const baseUrl = 'https://www.wootly.ch'; + + const wootlyData = await ctx.proxiedFetcher.full(ctx.url, { + method: 'GET', + readHeaders: ['Set-Cookie'], + }); + + const cookies = parseSetCookie(wootlyData.headers.get('Set-Cookie') || ''); + const wootssesCookie = cookies.wootsses.value; + + let $ = load(wootlyData.body); // load the html data + const iframeSrc = $('iframe').attr('src') ?? ''; + + const woozCookieRequest = await ctx.proxiedFetcher.full(iframeSrc, { + method: 'GET', + readHeaders: ['Set-Cookie'], + headers: { + cookie: makeCookieHeader({ wootsses: wootssesCookie }), + }, + }); + + const woozCookies = parseSetCookie(woozCookieRequest.headers.get('Set-Cookie') || ''); + const woozCookie = woozCookies.wooz.value; + + const iframeData = await ctx.proxiedFetcher(iframeSrc, { + method: 'POST', + body: new URLSearchParams({ qdf: '1' }), + headers: { + cookie: makeCookieHeader({ wooz: woozCookie }), + Referer: iframeSrc, + }, + }); + + $ = load(iframeData); + + const scriptText = $('script').html() ?? ''; + + // Regular expressions to match the variables + const tk = scriptText.match(/tk=([^;]+)/)?.[0].replace(/tk=|["\s]/g, ''); + const vd = scriptText.match(/vd=([^,]+)/)?.[0].replace(/vd=|["\s]/g, ''); + + if (!tk || !vd) throw new Error('wootly source not found'); + + const url = await ctx.proxiedFetcher(`/grabd`, { + baseUrl, + query: { t: tk, id: vd }, + method: 'GET', + headers: { + cookie: makeCookieHeader({ wooz: woozCookie, wootsses: wootssesCookie }), + }, + }); + + if (!url) throw new Error('wootly source not found'); + + return { + stream: [ + { + id: 'primary', + type: 'file', + flags: [flags.IP_LOCKED], + captions: [], + qualities: { + unknown: { + type: 'mp4', + url, + }, + }, + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/get.ts b/packages/providers/src/providers/get.ts new file mode 100644 index 0000000..900bbd1 --- /dev/null +++ b/packages/providers/src/providers/get.ts @@ -0,0 +1,27 @@ +import { FeatureMap, flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; +import { Embed, Sourcerer } from '@/providers/base'; +import { hasDuplicates } from '@/utils/predicates'; + +export interface ProviderList { + sources: Sourcerer[]; + embeds: Embed[]; +} + +export function getProviders(features: FeatureMap, list: ProviderList): ProviderList { + const sources = list.sources.filter((v) => !v?.disabled); + const embeds = list.embeds.filter((v) => !v?.disabled); + const combined = [...sources, ...embeds]; + + const anyDuplicateId = hasDuplicates(combined.map((v) => v.id)); + const anyDuplicateSourceRank = hasDuplicates(sources.map((v) => v.rank)); + const anyDuplicateEmbedRank = hasDuplicates(embeds.map((v) => v.rank)); + + if (anyDuplicateId) throw new Error('Duplicate id found in sources/embeds'); + if (anyDuplicateSourceRank) throw new Error('Duplicate rank found in sources'); + if (anyDuplicateEmbedRank) throw new Error('Duplicate rank found in embeds'); + + return { + sources: sources.filter((s) => flagsAllowedInFeatures(features, s.flags)), + embeds, + }; +} diff --git a/packages/providers/src/providers/sources/flixhq/common.ts b/packages/providers/src/providers/sources/flixhq/common.ts new file mode 100644 index 0000000..d1ce6a0 --- /dev/null +++ b/packages/providers/src/providers/sources/flixhq/common.ts @@ -0,0 +1 @@ +export const flixHqBase = 'https://flixhq.to'; diff --git a/packages/providers/src/providers/sources/flixhq/index.ts b/packages/providers/src/providers/sources/flixhq/index.ts new file mode 100644 index 0000000..d0a2898 --- /dev/null +++ b/packages/providers/src/providers/sources/flixhq/index.ts @@ -0,0 +1,66 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { SourcererEmbed, makeSourcerer } from '@/providers/base'; +import { upcloudScraper } from '@/providers/embeds/upcloud'; +import { vidCloudScraper } from '@/providers/embeds/vidcloud'; +import { getFlixhqMovieSources, getFlixhqShowSources, getFlixhqSourceDetails } from '@/providers/sources/flixhq/scrape'; +import { getFlixhqId } from '@/providers/sources/flixhq/search'; +import { NotFoundError } from '@/utils/errors'; + +export const flixhqScraper = makeSourcerer({ + id: 'flixhq', + name: 'FlixHQ', + rank: 61, + flags: [flags.CORS_ALLOWED], + disabled: true, + async scrapeMovie(ctx) { + const id = await getFlixhqId(ctx, ctx.media); + if (!id) throw new NotFoundError('no search results match'); + + const sources = await getFlixhqMovieSources(ctx, ctx.media, id); + + const embeds: SourcererEmbed[] = []; + + for (const source of sources) { + if (source.embed.toLowerCase() === 'upcloud') { + embeds.push({ + embedId: upcloudScraper.id, + url: await getFlixhqSourceDetails(ctx, source.episodeId), + }); + } else if (source.embed.toLowerCase() === 'vidcloud') { + embeds.push({ + embedId: vidCloudScraper.id, + url: await getFlixhqSourceDetails(ctx, source.episodeId), + }); + } + } + + return { + embeds, + }; + }, + async scrapeShow(ctx) { + const id = await getFlixhqId(ctx, ctx.media); + if (!id) throw new NotFoundError('no search results match'); + + const sources = await getFlixhqShowSources(ctx, ctx.media, id); + + const embeds: SourcererEmbed[] = []; + for (const source of sources) { + if (source.embed.toLowerCase() === 'server upcloud') { + embeds.push({ + embedId: upcloudScraper.id, + url: await getFlixhqSourceDetails(ctx, source.episodeId), + }); + } else if (source.embed.toLowerCase() === 'server vidcloud') { + embeds.push({ + embedId: vidCloudScraper.id, + url: await getFlixhqSourceDetails(ctx, source.episodeId), + }); + } + } + + return { + embeds, + }; + }, +}); diff --git a/packages/providers/src/providers/sources/flixhq/scrape.ts b/packages/providers/src/providers/sources/flixhq/scrape.ts new file mode 100644 index 0000000..3f42e9a --- /dev/null +++ b/packages/providers/src/providers/sources/flixhq/scrape.ts @@ -0,0 +1,92 @@ +import { load } from 'cheerio'; + +import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import { flixHqBase } from '@/providers/sources/flixhq/common'; +import { ScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +export async function getFlixhqSourceDetails(ctx: ScrapeContext, sourceId: string): Promise { + const jsonData = await ctx.proxiedFetcher>(`/ajax/sources/${sourceId}`, { + baseUrl: flixHqBase, + }); + + return jsonData.link; +} + +export async function getFlixhqMovieSources(ctx: ScrapeContext, media: MovieMedia, id: string) { + const episodeParts = id.split('-'); + const episodeId = episodeParts[episodeParts.length - 1]; + + const data = await ctx.proxiedFetcher(`/ajax/movie/episodes/${episodeId}`, { + baseUrl: flixHqBase, + }); + + const doc = load(data); + const sourceLinks = doc('.nav-item > a') + .toArray() + .map((el) => { + const query = doc(el); + const embedTitle = query.attr('title'); + const linkId = query.attr('data-linkid'); + if (!embedTitle || !linkId) throw new Error('invalid sources'); + return { + embed: embedTitle, + episodeId: linkId, + }; + }); + + return sourceLinks; +} + +export async function getFlixhqShowSources(ctx: ScrapeContext, media: ShowMedia, id: string) { + const episodeParts = id.split('-'); + const episodeId = episodeParts[episodeParts.length - 1]; + + const seasonsListData = await ctx.proxiedFetcher(`/ajax/season/list/${episodeId}`, { + baseUrl: flixHqBase, + }); + + const seasonsDoc = load(seasonsListData); + const season = seasonsDoc('.dropdown-item') + .toArray() + .find((el) => seasonsDoc(el).text() === `Season ${media.season.number}`)?.attribs['data-id']; + + if (!season) throw new NotFoundError('season not found'); + + const seasonData = await ctx.proxiedFetcher(`/ajax/season/episodes/${season}`, { + baseUrl: flixHqBase, + }); + const seasonDoc = load(seasonData); + const episode = seasonDoc('.nav-item > a') + .toArray() + .map((el) => { + return { + id: seasonDoc(el).attr('data-id'), + title: seasonDoc(el).attr('title'), + }; + }) + .find((e) => e.title?.startsWith(`Eps ${media.episode.number}`))?.id; + + if (!episode) throw new NotFoundError('episode not found'); + + const data = await ctx.proxiedFetcher(`/ajax/episode/servers/${episode}`, { + baseUrl: flixHqBase, + }); + + const doc = load(data); + + const sourceLinks = doc('.nav-item > a') + .toArray() + .map((el) => { + const query = doc(el); + const embedTitle = query.attr('title'); + const linkId = query.attr('data-id'); + if (!embedTitle || !linkId) throw new Error('invalid sources'); + return { + embed: embedTitle, + episodeId: linkId, + }; + }); + + return sourceLinks; +} diff --git a/packages/providers/src/providers/sources/flixhq/search.ts b/packages/providers/src/providers/sources/flixhq/search.ts new file mode 100644 index 0000000..bcab033 --- /dev/null +++ b/packages/providers/src/providers/sources/flixhq/search.ts @@ -0,0 +1,44 @@ +import { load } from 'cheerio'; + +import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import { flixHqBase } from '@/providers/sources/flixhq/common'; +import { compareMedia, compareTitle } from '@/utils/compare'; +import { ScrapeContext } from '@/utils/context'; + +export async function getFlixhqId(ctx: ScrapeContext, media: MovieMedia | ShowMedia): Promise { + const searchResults = await ctx.proxiedFetcher(`/search/${media.title.replaceAll(/[^a-z0-9A-Z]/g, '-')}`, { + baseUrl: flixHqBase, + }); + + const doc = load(searchResults); + const items = doc('.film_list-wrap > div.flw-item') + .toArray() + .map((el) => { + const query = doc(el); + const id = query.find('div.film-poster > a').attr('href')?.slice(1); + const title = query.find('div.film-detail > h2 > a').attr('title'); + const year = query.find('div.film-detail > div.fd-infor > span:nth-child(1)').text(); + const seasons = year.includes('SS') ? year.split('SS')[1] : '0'; + + if (!id || !title || !year) return null; + return { + id, + title, + year: parseInt(year, 10), + seasons: parseInt(seasons, 10), + }; + }); + + const matchingItem = items.find((v) => { + if (!v) return false; + + if (media.type === 'movie') { + return compareMedia(media, v.title, v.year); + } + + return compareTitle(media.title, v.title) && media.season.number < v.seasons + 1; + }); + + if (!matchingItem) return null; + return matchingItem.id; +} diff --git a/packages/providers/src/providers/sources/gomovies/index.ts b/packages/providers/src/providers/sources/gomovies/index.ts new file mode 100644 index 0000000..419efba --- /dev/null +++ b/packages/providers/src/providers/sources/gomovies/index.ts @@ -0,0 +1,225 @@ +import { load } from 'cheerio'; + +import { flags } from '@/entrypoint/utils/targets'; +import { makeSourcerer } from '@/providers/base'; +import { doodScraper } from '@/providers/embeds/dood'; +import { mixdropScraper } from '@/providers/embeds/mixdrop'; +import { upcloudScraper } from '@/providers/embeds/upcloud'; +import { upstreamScraper } from '@/providers/embeds/upstream'; +import { vidCloudScraper } from '@/providers/embeds/vidcloud'; +import { voeScraper } from '@/providers/embeds/voe'; +import { NotFoundError } from '@/utils/errors'; + +import { getSource } from './source'; + +export const gomoviesBase = `https://gomovies.sx`; + +export const goMoviesScraper = makeSourcerer({ + id: 'gomovies', + name: 'GOmovies', + rank: 60, + disabled: true, + flags: [flags.CORS_ALLOWED], + async scrapeShow(ctx) { + const search = await ctx.proxiedFetcher(`/search/${ctx.media.title.replaceAll(/[^a-z0-9A-Z]/g, '-')}`, { + method: 'GET', + headers: { + 'X-Requested-With': 'XMLHttpRequest', + }, + baseUrl: gomoviesBase, + }); + + const searchPage = load(search); + const mediaElements = searchPage('div.film-detail'); + + const mediaData = mediaElements.toArray().map((movieEl) => { + const name = searchPage(movieEl).find('h2.film-name a')?.text(); + const year = searchPage(movieEl).find('span.fdi-item:first')?.text(); + const path = searchPage(movieEl).find('h2.film-name a').attr('href'); + return { name, year, path }; + }); + + const targetMedia = mediaData.find((m) => m.name === ctx.media.title); + if (!targetMedia?.path) throw new NotFoundError('Media not found'); + + // Example movie path: /movie/watch-{slug}-{id} + // Example series path: /tv/watch-{slug}-{id} + let mediaId = targetMedia.path.split('-').pop()?.replace('/', ''); + + const seasons = await ctx.proxiedFetcher(`/ajax/v2/tv/seasons/${mediaId}`, { + headers: { + 'X-Requested-With': 'XMLHttpRequest', + }, + baseUrl: gomoviesBase, + }); + + const seasonsEl = load(seasons)('.ss-item'); + + const seasonsData = seasonsEl.toArray().map((season) => ({ + number: load(season).text().replace('Season ', ''), + dataId: season.attribs['data-id'], + })); + + const seasonNumber = ctx.media.season.number; + const targetSeason = seasonsData.find((season) => +season.number === seasonNumber); + + if (!targetSeason) throw new NotFoundError('Season not found'); + + const episodes = await ctx.proxiedFetcher(`/ajax/v2/season/episodes/${targetSeason.dataId}`, { + headers: { + 'X-Requested-With': 'XMLHttpRequest', + }, + baseUrl: gomoviesBase, + }); + + const episodesPage = load(episodes); + const episodesEl = episodesPage('.eps-item'); + + const episodesData = episodesEl.toArray().map((ep) => ({ + dataId: ep.attribs['data-id'], + number: episodesPage(ep).find('strong').text().replace('Eps', '').replace(':', '').trim(), + })); + + const episodeNumber = ctx.media.episode.number; + const targetEpisode = episodesData.find((ep) => (ep.number ? +ep.number === episodeNumber : false)); + if (!targetEpisode?.dataId) throw new NotFoundError('Episode not found'); + + mediaId = targetEpisode.dataId; + + const sources = await ctx.proxiedFetcher(`ajax/v2/episode/servers/${mediaId}`, { + baseUrl: gomoviesBase, + headers: { + 'X-Requested-With': 'XMLHttpRequest', + }, + }); + + const upcloudSource = await getSource(ctx, sources, 'upcloud'); + const vidcloudSource = await getSource(ctx, sources, 'vidcloud'); + const voeSource = await getSource(ctx, sources, 'voe'); + const doodSource = await getSource(ctx, sources, 'doodstream'); + const upstreamSource = await getSource(ctx, sources, 'upstream'); + const mixdropSource = await getSource(ctx, sources, 'mixdrop'); + + const embeds = [ + { + embedId: upcloudScraper.id, + url: upcloudSource?.link, + }, + { + embedId: vidCloudScraper.id, + url: vidcloudSource?.link, + }, + { + embedId: voeScraper.id, + url: voeSource?.link, + }, + { + embedId: doodScraper.id, + url: doodSource?.link, + }, + { + embedId: upstreamScraper.id, + url: upstreamSource?.link, + }, + { + embedId: mixdropScraper.id, + url: mixdropSource?.link, + }, + ]; + + const filteredEmbeds = embeds + .filter((embed) => embed.url) + .map((embed) => ({ + embedId: embed.embedId, + url: embed.url as string, + })); + + if (filteredEmbeds.length === 0) throw new Error('No valid embeds found.'); + + return { + embeds: filteredEmbeds, + }; + }, + async scrapeMovie(ctx) { + const search = await ctx.proxiedFetcher(`/search/${ctx.media.title.replaceAll(/[^a-z0-9A-Z]/g, '-')}`, { + method: 'GET', + headers: { + 'X-Requested-With': 'XMLHttpRequest', + }, + baseUrl: gomoviesBase, + }); + + const searchPage = load(search); + const mediaElements = searchPage('div.film-detail'); + + const mediaData = mediaElements.toArray().map((movieEl) => { + const name = searchPage(movieEl).find('h2.film-name a')?.text(); + const year = searchPage(movieEl).find('span.fdi-item:first')?.text(); + const path = searchPage(movieEl).find('h2.film-name a').attr('href'); + return { name, year, path }; + }); + + const targetMedia = mediaData.find( + (m) => m.name === ctx.media.title && m.year === ctx.media.releaseYear.toString(), + ); + if (!targetMedia?.path) throw new NotFoundError('Media not found'); + + // Example movie path: /movie/watch-{slug}-{id} + // Example series path: /tv/watch-{slug}-{id} + const mediaId = targetMedia.path.split('-').pop()?.replace('/', ''); + + const sources = await ctx.proxiedFetcher(`ajax/movie/episodes/${mediaId}`, { + headers: { + 'X-Requested-With': 'XMLHttpRequest', + }, + baseUrl: gomoviesBase, + }); + + const upcloudSource = await getSource(ctx, sources, 'upcloud'); + const vidcloudSource = await getSource(ctx, sources, 'vidcloud'); + const voeSource = await getSource(ctx, sources, 'voe'); + const doodSource = await getSource(ctx, sources, 'doodstream'); + const upstreamSource = await getSource(ctx, sources, 'upstream'); + const mixdropSource = await getSource(ctx, sources, 'mixdrop'); + + const embeds = [ + { + embedId: upcloudScraper.id, + url: upcloudSource?.link, + }, + { + embedId: vidCloudScraper.id, + url: vidcloudSource?.link, + }, + { + embedId: voeScraper.id, + url: voeSource?.link, + }, + { + embedId: doodScraper.id, + url: doodSource?.link, + }, + { + embedId: upstreamScraper.id, + url: upstreamSource?.link, + }, + { + embedId: mixdropScraper.id, + url: mixdropSource?.link, + }, + ]; + + const filteredEmbeds = embeds + .filter((embed) => embed.url) + .map((embed) => ({ + embedId: embed.embedId, + url: embed.url as string, + })); + + if (filteredEmbeds.length === 0) throw new Error('No valid embeds found.'); + + return { + embeds: filteredEmbeds, + }; + }, +}); diff --git a/packages/providers/src/providers/sources/gomovies/source.ts b/packages/providers/src/providers/sources/gomovies/source.ts new file mode 100644 index 0000000..4ef93bc --- /dev/null +++ b/packages/providers/src/providers/sources/gomovies/source.ts @@ -0,0 +1,30 @@ +import { load } from 'cheerio'; + +import { ScrapeContext } from '@/utils/context'; + +import { gomoviesBase } from '.'; + +export async function getSource(ctx: ScrapeContext, sources: any, title: string) { + const source = load(sources)(`a[title*=${title} i]`); + + const sourceDataId = source?.attr('data-id') ?? source?.attr('data-linkid'); + + if (!sourceDataId) return undefined; + + const sourceData = await ctx.proxiedFetcher<{ + type: 'iframe' | string; + link: string; + sources: []; + title: string; + tracks: []; + }>(`/ajax/sources/${sourceDataId}`, { + headers: { + 'X-Requested-With': 'XMLHttpRequest', + }, + baseUrl: gomoviesBase, + }); + + if (!sourceData.link || sourceData.type !== 'iframe') return undefined; + + return sourceData; +} diff --git a/packages/providers/src/providers/sources/goojara/getEmbeds.ts b/packages/providers/src/providers/sources/goojara/getEmbeds.ts new file mode 100644 index 0000000..7b26d6c --- /dev/null +++ b/packages/providers/src/providers/sources/goojara/getEmbeds.ts @@ -0,0 +1,69 @@ +import { load } from 'cheerio'; + +import { ScrapeContext } from '@/utils/context'; +import { makeCookieHeader, parseSetCookie } from '@/utils/cookie'; + +import { EmbedsResult, baseUrl, baseUrl2 } from './type'; + +export async function getEmbeds(ctx: ScrapeContext, id: string): Promise { + const data = await ctx.fetcher.full(`/${id}`, { + baseUrl: baseUrl2, + headers: { + Referer: baseUrl, + cookie: '', + }, + readHeaders: ['Set-Cookie'], + method: 'GET', + }); + + const cookies = parseSetCookie(data.headers.get('Set-Cookie') || ''); + const RandomCookieName = data.body.split(`_3chk('`)[1].split(`'`)[0]; + const RandomCookieValue = data.body.split(`_3chk('`)[1].split(`'`)[2]; + + let aGoozCookie = ''; + let cookie = ''; + if (cookies && cookies.aGooz && RandomCookieName && RandomCookieValue) { + aGoozCookie = cookies.aGooz.value; + cookie = makeCookieHeader({ + aGooz: aGoozCookie, + [RandomCookieName]: RandomCookieValue, + }); + } + + const $ = load(data.body); + + const embedRedirectURLs = $('a') + .map((index, element) => $(element).attr('href')) + .get() + .filter((href) => href && href.includes(`${baseUrl2}/go.php`)); + + const embedPages = await Promise.all( + embedRedirectURLs.map( + (url) => + ctx.fetcher + .full(url, { + headers: { + cookie, + Referer: baseUrl2, + }, + method: 'GET', + }) + .catch(() => null), // Handle errors gracefully + ), + ); + + // Initialize an array to hold the results + const results: EmbedsResult = []; + + // Process each page result + for (const result of embedPages) { + if (result) { + const embedId = ['wootly', 'upstream', 'mixdrop', 'dood'].find((a) => result.finalUrl.includes(a)); + if (embedId) { + results.push({ embedId, url: result.finalUrl }); + } + } + } + + return results; +} diff --git a/packages/providers/src/providers/sources/goojara/index.ts b/packages/providers/src/providers/sources/goojara/index.ts new file mode 100644 index 0000000..7e2955a --- /dev/null +++ b/packages/providers/src/providers/sources/goojara/index.ts @@ -0,0 +1,30 @@ +import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +import { scrapeIds, searchAndFindMedia } from './util'; + +async function universalScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promise { + const goojaraData = await searchAndFindMedia(ctx, ctx.media); + if (!goojaraData) throw new NotFoundError('Media not found'); + + ctx.progress(30); + const embeds = await scrapeIds(ctx, ctx.media, goojaraData); + if (embeds?.length === 0) throw new NotFoundError('No embeds found'); + + ctx.progress(60); + + return { + embeds, + }; +} + +export const goojaraScraper = makeSourcerer({ + id: 'goojara', + name: 'Goojara', + rank: 70, + flags: [], + disabled: true, + scrapeShow: universalScraper, + scrapeMovie: universalScraper, +}); diff --git a/packages/providers/src/providers/sources/goojara/type.ts b/packages/providers/src/providers/sources/goojara/type.ts new file mode 100644 index 0000000..ff1923f --- /dev/null +++ b/packages/providers/src/providers/sources/goojara/type.ts @@ -0,0 +1,14 @@ +export const baseUrl = 'https://www.goojara.to'; + +export const baseUrl2 = 'https://ww1.goojara.to'; + +export type EmbedsResult = { embedId: string; url: string }[]; + +export interface Result { + title: string; + slug: string; + year: string; + type: string; + id_movie?: string; + id_show?: string; +} diff --git a/packages/providers/src/providers/sources/goojara/util.ts b/packages/providers/src/providers/sources/goojara/util.ts new file mode 100644 index 0000000..f94550c --- /dev/null +++ b/packages/providers/src/providers/sources/goojara/util.ts @@ -0,0 +1,98 @@ +import { load } from 'cheerio'; + +import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import { compareMedia } from '@/utils/compare'; +import { ScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +import { getEmbeds } from './getEmbeds'; +import { EmbedsResult, Result, baseUrl } from './type'; + +let data; + +// The cookie for this headerData doesn't matter, Goojara just checks it's there. +const headersData = { + cookie: `aGooz=t9pmkdtef1b3lg3pmo1u2re816; bd9aa48e=0d7b89e8c79844e9df07a2; _b414=2151C6B12E2A88379AFF2C0DD65AC8298DEC2BF4; 9d287aaa=8f32ad589e1c4288fe152f`, + Referer: 'https://www.goojara.to/', +}; + +export async function searchAndFindMedia( + ctx: ScrapeContext, + media: MovieMedia | ShowMedia, +): Promise { + data = await ctx.fetcher(`/xhrr.php`, { + baseUrl, + headers: headersData, + method: 'POST', + body: new URLSearchParams({ q: media.title }), + }); + + const $ = load(data); + + const results: Result[] = []; + + $('.mfeed > li').each((index, element) => { + const title = $(element).find('strong').text(); + const yearMatch = $(element) + .text() + .match(/\((\d{4})\)/); + const typeDiv = $(element).find('div').attr('class'); + const type = typeDiv === 'it' ? 'show' : typeDiv === 'im' ? 'movie' : ''; + const year = yearMatch ? yearMatch[1] : ''; + const slug = $(element).find('a').attr('href')?.split('/')[3]; + + if (!slug) throw new NotFoundError('Not found'); + + if (media.type === type) { + results.push({ title, year, slug, type }); + } + }); + + const result = results.find((res: Result) => compareMedia(media, res.title, Number(res.year))); + return result; +} + +export async function scrapeIds( + ctx: ScrapeContext, + media: MovieMedia | ShowMedia, + result: Result, +): Promise { + // Find the relevant id + let id = null; + if (media.type === 'movie') { + id = result.slug; + } else if (media.type === 'show') { + data = await ctx.fetcher(`/${result.slug}`, { + baseUrl, + headers: headersData, + method: 'GET', + query: { s: media.season.number.toString() }, + }); + + let episodeId = ''; + + const $2 = load(data); + + $2('.seho').each((index, element) => { + // Extracting the episode number as a string + const episodeNumber = $2(element).find('.seep .sea').text().trim(); + // Comparing with the desired episode number as a string + if (parseInt(episodeNumber, 10) === media.episode.number) { + const href = $2(element).find('.snfo h1 a').attr('href'); + const idMatch = href?.match(/\/([a-zA-Z0-9]+)$/); + if (idMatch && idMatch[1]) { + episodeId = idMatch[1]; + return false; // Break out of the loop once the episode is found + } + } + }); + + id = episodeId; + } + + // Check ID + if (id === null) throw new NotFoundError('Not found'); + + const embeds = await getEmbeds(ctx, id); + return embeds; +} diff --git a/packages/providers/src/providers/sources/hdrezka/index.ts b/packages/providers/src/providers/sources/hdrezka/index.ts new file mode 100644 index 0000000..2628589 --- /dev/null +++ b/packages/providers/src/providers/sources/hdrezka/index.ts @@ -0,0 +1,127 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +import { MovieData, VideoLinks } from './types'; +import { extractTitleAndYear, generateRandomFavs, parseSubtitleLinks, parseVideoLinks } from './utils'; + +const rezkaBase = 'https://hdrzk.org'; +const baseHeaders = { + 'X-Hdrezka-Android-App': '1', + 'X-Hdrezka-Android-App-Version': '2.2.0', +}; + +async function searchAndFindMediaId(ctx: ShowScrapeContext | MovieScrapeContext): Promise { + const itemRegexPattern = /([^<]+)<\/span> \(([^)]+)\)/g; + const idRegexPattern = /\/(\d+)-[^/]+\.html$/; + + const searchData = await ctx.proxiedFetcher(`/engine/ajax/search.php`, { + baseUrl: rezkaBase, + headers: baseHeaders, + query: { q: ctx.media.title }, + }); + + const movieData: MovieData[] = []; + + for (const match of searchData.matchAll(itemRegexPattern)) { + const url = match[1]; + const titleAndYear = match[3]; + + const result = extractTitleAndYear(titleAndYear); + if (result !== null) { + const id = url.match(idRegexPattern)?.[1] || null; + + movieData.push({ id: id ?? '', year: result.year ?? 0, type: ctx.media.type, url }); + } + } + + const filteredItems = movieData.filter((item) => item.type === ctx.media.type && item.year === ctx.media.releaseYear); + + return filteredItems[0] || null; +} + +async function getStream( + id: string, + translatorId: string, + ctx: ShowScrapeContext | MovieScrapeContext, +): Promise { + const searchParams = new URLSearchParams(); + searchParams.append('id', id); + searchParams.append('translator_id', translatorId); + if (ctx.media.type === 'show') { + searchParams.append('season', ctx.media.season.number.toString()); + searchParams.append('episode', ctx.media.episode.number.toString()); + } + if (ctx.media.type === 'movie') { + searchParams.append('is_camprip', '0'); + searchParams.append('is_ads', '0'); + searchParams.append('is_director', '0'); + } + searchParams.append('favs', generateRandomFavs()); + searchParams.append('action', ctx.media.type === 'show' ? 'get_stream' : 'get_movie'); + + const response = await ctx.proxiedFetcher('/ajax/get_cdn_series/', { + baseUrl: rezkaBase, + method: 'POST', + body: searchParams, + headers: baseHeaders, + }); + + // Response content-type is text/html, but it's actually JSON + return JSON.parse(response); +} + +async function getTranslatorId( + url: string, + id: string, + ctx: ShowScrapeContext | MovieScrapeContext, +): Promise { + const response = await ctx.proxiedFetcher(url, { + headers: baseHeaders, + }); + + // Translator ID 238 represents the Original + subtitles player. + if (response.includes(`data-translator_id="238"`)) return '238'; + + const functionName = ctx.media.type === 'movie' ? 'initCDNMoviesEvents' : 'initCDNSeriesEvents'; + const regexPattern = new RegExp(`sof\\.tv\\.${functionName}\\(${id}, ([^,]+)`, 'i'); + const match = response.match(regexPattern); + const translatorId = match ? match[1] : null; + + return translatorId; +} + +const universalScraper = async (ctx: ShowScrapeContext | MovieScrapeContext): Promise => { + const result = await searchAndFindMediaId(ctx); + if (!result || !result.id) throw new NotFoundError('No result found'); + + const translatorId = await getTranslatorId(result.url, result.id, ctx); + if (!translatorId) throw new NotFoundError('No translator id found'); + + const { url: streamUrl, subtitle: streamSubtitle } = await getStream(result.id, translatorId, ctx); + const parsedVideos = parseVideoLinks(streamUrl); + const parsedSubtitles = parseSubtitleLinks(streamSubtitle); + + return { + embeds: [], + stream: [ + { + id: 'primary', + type: 'file', + flags: [flags.CORS_ALLOWED, flags.IP_LOCKED], + captions: parsedSubtitles, + qualities: parsedVideos, + }, + ], + }; +}; + +export const hdRezkaScraper = makeSourcerer({ + id: 'hdrezka', + name: 'HDRezka', + rank: 120, + flags: [flags.CORS_ALLOWED, flags.IP_LOCKED], + scrapeShow: universalScraper, + scrapeMovie: universalScraper, +}); diff --git a/packages/providers/src/providers/sources/hdrezka/types.ts b/packages/providers/src/providers/sources/hdrezka/types.ts new file mode 100644 index 0000000..3a3a6d0 --- /dev/null +++ b/packages/providers/src/providers/sources/hdrezka/types.ts @@ -0,0 +1,20 @@ +import { ScrapeMedia } from "@/entrypoint/utils/media"; + +export type VideoLinks = { + success: boolean; + message: string; + premium_content: number; + url: string; + quality: string; + subtitle: boolean | string; + subtitle_lns: boolean; + subtitle_def: boolean; + thumbnails: string; +}; + +export interface MovieData { + id: string | null; + year: number; + type: ScrapeMedia['type']; + url: string; +} diff --git a/packages/providers/src/providers/sources/hdrezka/utils.ts b/packages/providers/src/providers/sources/hdrezka/utils.ts new file mode 100644 index 0000000..a88c5a3 --- /dev/null +++ b/packages/providers/src/providers/sources/hdrezka/utils.ts @@ -0,0 +1,75 @@ +import { getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; +import { FileBasedStream } from '@/providers/streams'; +import { NotFoundError } from '@/utils/errors'; +import { getValidQualityFromString } from '@/utils/quality'; + +function generateRandomFavs(): string { + const randomHex = () => Math.floor(Math.random() * 16).toString(16); + const generateSegment = (length: number) => Array.from({ length }, randomHex).join(''); + + return `${generateSegment(8)}-${generateSegment(4)}-${generateSegment(4)}-${generateSegment(4)}-${generateSegment( + 12, + )}`; +} + +function parseSubtitleLinks(inputString?: string | boolean): FileBasedStream['captions'] { + if (!inputString || typeof inputString === 'boolean') return []; + const linksArray = inputString.split(','); + const captions: FileBasedStream['captions'] = []; + + linksArray.forEach((link) => { + const match = link.match(/\[([^\]]+)\](https?:\/\/\S+?)(?=,\[|$)/); + + if (match) { + const type = getCaptionTypeFromUrl(match[2]); + const language = labelToLanguageCode(match[1]); + if (!type || !language) return; + + captions.push({ + id: match[2], + language, + hasCorsRestrictions: false, + type, + url: match[2], + }); + } + }); + + return captions; +} + +function parseVideoLinks(inputString?: string): FileBasedStream['qualities'] { + if (!inputString) throw new NotFoundError('No video links found'); + const linksArray = inputString.split(','); + const result: FileBasedStream['qualities'] = {}; + + linksArray.forEach((link) => { + const match = link.match(/\[([^]+)](https?:\/\/[^\s,]+\.mp4)/); + if (match) { + const qualityText = match[1]; + const mp4Url = match[2]; + + const numericQualityMatch = qualityText.match(/(\d+p)/); + const quality = numericQualityMatch ? numericQualityMatch[1] : 'Unknown'; + + const validQuality = getValidQualityFromString(quality); + result[validQuality] = { type: 'mp4', url: mp4Url }; + } + }); + + return result; +} + +function extractTitleAndYear(input: string) { + const regex = /^(.*?),.*?(\d{4})/; + const match = input.match(regex); + + if (match) { + const title = match[1]; + const year = match[2]; + return { title: title.trim(), year: year ? parseInt(year, 10) : null }; + } + return null; +} + +export { extractTitleAndYear, parseSubtitleLinks, parseVideoLinks, generateRandomFavs }; diff --git a/packages/providers/src/providers/sources/insertunit/captions.ts b/packages/providers/src/providers/sources/insertunit/captions.ts new file mode 100644 index 0000000..881c9c2 --- /dev/null +++ b/packages/providers/src/providers/sources/insertunit/captions.ts @@ -0,0 +1,30 @@ +import { Caption, removeDuplicatedLanguages } from '@/providers/captions'; + +import { Subtitle } from './types'; + +export async function getCaptions(data: Subtitle[]) { + let captions: Caption[] = []; + for (const subtitle of data) { + let language = ''; + + if (subtitle.name.includes('Рус')) { + language = 'ru'; + } else if (subtitle.name.includes('Укр')) { + language = 'uk'; + } else if (subtitle.name.includes('Eng')) { + language = 'en'; + } else { + continue; + } + + captions.push({ + id: subtitle.url, + url: subtitle.url, + language, + type: 'vtt', + hasCorsRestrictions: false, + }); + } + captions = removeDuplicatedLanguages(captions); + return captions; +} diff --git a/packages/providers/src/providers/sources/insertunit/index.ts b/packages/providers/src/providers/sources/insertunit/index.ts new file mode 100644 index 0000000..9a54866 --- /dev/null +++ b/packages/providers/src/providers/sources/insertunit/index.ts @@ -0,0 +1,103 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { makeSourcerer } from '@/providers/base'; +import { Caption } from '@/providers/captions'; +import { NotFoundError } from '@/utils/errors'; + +import { getCaptions } from './captions'; +import { Season } from './types'; + +const insertUnitBase = 'https://api.insertunit.ws/'; + +export const insertunitScraper = makeSourcerer({ + id: 'insertunit', + name: 'Insertunit', + disabled: false, + rank: 60, + flags: [flags.CORS_ALLOWED], + async scrapeShow(ctx) { + const playerData = await ctx.fetcher(`/embed/imdb/${ctx.media.imdbId}`, { + baseUrl: insertUnitBase, + }); + ctx.progress(30); + + const seasonDataJSONregex = /seasons:(.*)/; + const seasonData = seasonDataJSONregex.exec(playerData); + + if (seasonData === null || seasonData[1] === null) { + throw new NotFoundError('No result found'); + } + ctx.progress(60); + + const seasonTable: Season[] = JSON.parse(seasonData[1]) as Season[]; + + const currentSeason = seasonTable.find( + (seasonElement) => seasonElement.season === ctx.media.season.number && !seasonElement.blocked, + ); + + const currentEpisode = currentSeason?.episodes.find((episodeElement) => + episodeElement.episode.includes(ctx.media.episode.number.toString()), + ); + + if (!currentEpisode?.hls) throw new NotFoundError('No result found'); + + let captions: Caption[] = []; + + if (currentEpisode.cc != null) { + captions = await getCaptions(currentEpisode.cc); + } + + ctx.progress(95); + + return { + embeds: [], + stream: [ + { + id: 'primary', + playlist: currentEpisode.hls, + type: 'hls', + flags: [flags.CORS_ALLOWED], + captions, + }, + ], + }; + }, + async scrapeMovie(ctx) { + const playerData = await ctx.fetcher(`/embed/imdb/${ctx.media.imdbId}`, { + baseUrl: insertUnitBase, + }); + ctx.progress(35); + + const streamRegex = /hls: "([^"]*)/; + const streamData = streamRegex.exec(playerData); + + if (streamData === null || streamData[1] === null) { + throw new NotFoundError('No result found'); + } + ctx.progress(75); + + const subtitleRegex = /cc: (.*)/; + const subtitleJSONData = subtitleRegex.exec(playerData); + + let captions: Caption[] = []; + + if (subtitleJSONData != null && subtitleJSONData[1] != null) { + const subtitleData = JSON.parse(subtitleJSONData[1]); + captions = await getCaptions(subtitleData); + } + + ctx.progress(90); + + return { + embeds: [], + stream: [ + { + id: 'primary', + type: 'hls', + playlist: streamData[1], + flags: [flags.CORS_ALLOWED], + captions, + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/sources/insertunit/types.ts b/packages/providers/src/providers/sources/insertunit/types.ts new file mode 100644 index 0000000..587ae36 --- /dev/null +++ b/packages/providers/src/providers/sources/insertunit/types.ts @@ -0,0 +1,30 @@ +export interface Subtitle { + url: string; + name: string; +} + +export interface Episode { + episode: string; + id: number; + videoKey: string; + hls: string; + audio: { + names: string[]; + order: number[]; + }; + cc: Subtitle[]; + duration: number; + title: string; + download: string; + sections: string[]; + poster: string; + preview: { + src: string; + }; +} + +export interface Season { + season: number; + blocked: boolean; + episodes: Episode[]; +} diff --git a/packages/providers/src/providers/sources/kissasian/common.ts b/packages/providers/src/providers/sources/kissasian/common.ts new file mode 100644 index 0000000..fc284af --- /dev/null +++ b/packages/providers/src/providers/sources/kissasian/common.ts @@ -0,0 +1,15 @@ +import { mp4uploadScraper } from '@/providers/embeds/mp4upload'; +import { streamsbScraper } from '@/providers/embeds/streamsb'; + +export const kissasianBase = 'https://kissasian.sh'; + +export const embedProviders = [ + { + type: mp4uploadScraper.id, + id: 'mp', + }, + { + type: streamsbScraper.id, + id: 'sb', + }, +]; diff --git a/packages/providers/src/providers/sources/kissasian/getEmbeds.ts b/packages/providers/src/providers/sources/kissasian/getEmbeds.ts new file mode 100644 index 0000000..30c5e7e --- /dev/null +++ b/packages/providers/src/providers/sources/kissasian/getEmbeds.ts @@ -0,0 +1,55 @@ +import { load } from 'cheerio'; + +import type { ScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +import { embedProviders, kissasianBase } from './common'; + +export async function getEmbeds( + ctx: ScrapeContext, + targetEpisode: { + number: string; + url?: string; + }, +) { + let embeds = await Promise.all( + embedProviders.map(async (provider) => { + if (!targetEpisode.url) throw new NotFoundError('Episode not found'); + const watch = await ctx.proxiedFetcher(`${targetEpisode.url}&s=${provider.id}`, { + baseUrl: kissasianBase, + headers: { + accept: + 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', + 'accept-language': 'en-US,en;q=0.9', + 'cache-control': 'no-cache', + pragma: 'no-cache', + 'sec-ch-ua': '"Not)A;Brand";v="24", "Chromium";v="116"', + 'sec-ch-ua-mobile': '?0', + 'sec-ch-ua-platform': '"macOS"', + 'sec-fetch-dest': 'document', + 'sec-fetch-mode': 'navigate', + 'sec-fetch-site': 'cross-site', + 'sec-fetch-user': '?1', + 'upgrade-insecure-requests': '1', + cookie: + '__rd=; ASP.NET_SessionId=jwnl2kmlw5h4mfdaxvpk30q0; k_token=OKbJDFNx3rUtaw7iAA6UxMKSJb79lgZ2X2rVC9aupJhycYQKVSLaW1y2B4K%2f%2fo3i6BuzhXgfkJGmKlKH6LpNlKPPpZUk31n9DapfMdJgjlLExgrPS3jpSKwGnNUI%2bOpNpZu9%2fFnkLZRxvVKCa8APMxrck1tYkKXWqfyJJh8%2b7hQTI1wfAOU%2fLEouHhtQGL%2fReTzElw2LQ0XSL1pjs%2fkWW3rM3of2je7Oo13I%2f7olLFuiJUVWyNbn%2fYKSgNrm%2bQ3p', + }, + }); + + const watchPage = load(watch); + + const embedUrl = watchPage('#my_video_1').attr('src'); + + if (!embedUrl) throw new Error('Embed not found'); + + return { + embedId: provider.id, + url: embedUrl, + }; + }), + ); + + embeds = embeds.filter((e) => !!e.url); + + return embeds; +} diff --git a/packages/providers/src/providers/sources/kissasian/getEpisodes.ts b/packages/providers/src/providers/sources/kissasian/getEpisodes.ts new file mode 100644 index 0000000..7ea4466 --- /dev/null +++ b/packages/providers/src/providers/sources/kissasian/getEpisodes.ts @@ -0,0 +1,14 @@ +import type { CheerioAPI } from 'cheerio'; + +export function getEpisodes(dramaPage: CheerioAPI) { + const episodesEl = dramaPage('.episodeSub'); + + return episodesEl + .toArray() + .map((ep) => { + const number = dramaPage(ep).find('.episodeSub a').text().split('Episode')[1]?.trim(); + const url = dramaPage(ep).find('.episodeSub a').attr('href'); + return { number, url }; + }) + .filter((e) => !!e.url); +} diff --git a/packages/providers/src/providers/sources/kissasian/index.ts b/packages/providers/src/providers/sources/kissasian/index.ts new file mode 100644 index 0000000..1474bcc --- /dev/null +++ b/packages/providers/src/providers/sources/kissasian/index.ts @@ -0,0 +1,76 @@ +import { load } from 'cheerio'; + +import { flags } from '@/entrypoint/utils/targets'; +import { makeSourcerer } from '@/providers/base'; +import { NotFoundError } from '@/utils/errors'; + +import { kissasianBase } from './common'; +import { getEmbeds } from './getEmbeds'; +import { getEpisodes } from './getEpisodes'; +import { search } from './search'; + +export const kissAsianScraper = makeSourcerer({ + id: 'kissasian', + name: 'KissAsian', + rank: 40, + flags: [flags.CORS_ALLOWED], + disabled: true, + + async scrapeShow(ctx) { + const seasonNumber = ctx.media.season.number; + const episodeNumber = ctx.media.episode.number; + + const dramas = await search(ctx, ctx.media.title, seasonNumber); + + const targetDrama = dramas.find((d) => d.name?.toLowerCase() === ctx.media.title.toLowerCase()) ?? dramas[0]; + if (!targetDrama) throw new NotFoundError('Drama not found'); + + ctx.progress(30); + + const drama = await ctx.proxiedFetcher(targetDrama.url, { + baseUrl: kissasianBase, + }); + + const dramaPage = load(drama); + + const episodes = await getEpisodes(dramaPage); + + const targetEpisode = episodes.find((e) => e.number === `${episodeNumber}`); + if (!targetEpisode?.url) throw new NotFoundError('Episode not found'); + + ctx.progress(70); + + const embeds = await getEmbeds(ctx, targetEpisode); + + return { + embeds, + }; + }, + async scrapeMovie(ctx) { + const dramas = await search(ctx, ctx.media.title, undefined); + + const targetDrama = dramas.find((d) => d.name?.toLowerCase() === ctx.media.title.toLowerCase()) ?? dramas[0]; + if (!targetDrama) throw new NotFoundError('Drama not found'); + + ctx.progress(30); + + const drama = await ctx.proxiedFetcher(targetDrama.url, { + baseUrl: kissasianBase, + }); + + const dramaPage = load(drama); + + const episodes = getEpisodes(dramaPage); + + const targetEpisode = episodes[0]; + if (!targetEpisode?.url) throw new NotFoundError('Episode not found'); + + ctx.progress(70); + + const embeds = await getEmbeds(ctx, targetEpisode); + + return { + embeds, + }; + }, +}); diff --git a/packages/providers/src/providers/sources/kissasian/search.ts b/packages/providers/src/providers/sources/kissasian/search.ts new file mode 100644 index 0000000..3fc9cd9 --- /dev/null +++ b/packages/providers/src/providers/sources/kissasian/search.ts @@ -0,0 +1,27 @@ +import { load } from 'cheerio'; +import FormData from 'form-data'; + +import { ScrapeContext } from '@/utils/context'; + +import { kissasianBase } from './common'; + +export async function search(ctx: ScrapeContext, title: string, seasonNumber?: number) { + const searchForm = new FormData(); + searchForm.append('keyword', `${title} ${seasonNumber ?? ''}`.trim()); + searchForm.append('type', 'Drama'); + + const searchResults = await ctx.proxiedFetcher('/Search/SearchSuggest', { + baseUrl: kissasianBase, + method: 'POST', + body: searchForm, + }); + + const searchPage = load(searchResults); + + return Array.from(searchPage('a')).map((drama) => { + return { + name: searchPage(drama).text(), + url: drama.attribs.href, + }; + }); +} diff --git a/packages/providers/src/providers/sources/lookmovie/index.ts b/packages/providers/src/providers/sources/lookmovie/index.ts new file mode 100644 index 0000000..80f816d --- /dev/null +++ b/packages/providers/src/providers/sources/lookmovie/index.ts @@ -0,0 +1,40 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +import { scrape, searchAndFindMedia } from './util'; + +async function universalScraper(ctx: MovieScrapeContext | ShowScrapeContext): Promise { + const lookmovieData = await searchAndFindMedia(ctx, ctx.media); + if (!lookmovieData) throw new NotFoundError('Media not found'); + + ctx.progress(30); + const video = await scrape(ctx, ctx.media, lookmovieData); + if (!video.playlist) throw new NotFoundError('No video found'); + + ctx.progress(60); + + return { + embeds: [], + stream: [ + { + id: 'primary', + playlist: video.playlist, + type: 'hls', + flags: [flags.IP_LOCKED], + captions: video.captions, + }, + ], + }; +} + +export const lookmovieScraper = makeSourcerer({ + id: 'lookmovie', + name: 'LookMovie', + disabled: true, + rank: 50, + flags: [flags.IP_LOCKED], + scrapeShow: universalScraper, + scrapeMovie: universalScraper, +}); diff --git a/packages/providers/src/providers/sources/lookmovie/type.ts b/packages/providers/src/providers/sources/lookmovie/type.ts new file mode 100644 index 0000000..47ccc55 --- /dev/null +++ b/packages/providers/src/providers/sources/lookmovie/type.ts @@ -0,0 +1,69 @@ +import { MovieMedia } from '@/entrypoint/utils/media'; + +// ! Types +interface BaseConfig { + /** The website's slug. Formatted as `1839578-person-of-interest-2011` */ + slug: string; + /** Type of request */ + type: 'show' | 'movie'; + /** Hash */ + hash: string; + /** Hash expiry */ + expires: number; +} +interface TvConfig extends BaseConfig { + /** Type of request */ + type: 'show'; + /** The episode ID for a TV show. Given in search and URL */ + episodeId: string; +} +interface MovieConfig extends BaseConfig { + /** Type of request */ + type: 'movie'; + /** Movie's id */ + id_movie: string; +} +export type Config = MovieConfig | TvConfig; + +export interface episodeObj { + season: string; + episode: string; + id: string; +} + +export interface ShowDataResult { + episodes: episodeObj[]; +} + +interface VideoSources { + [key: string]: string; +} + +interface VideoSubtitles { + id?: number; + id_movie?: number; + url: string; + language: string; + shard?: string; +} + +export interface StreamsDataResult { + streams: VideoSources; + subtitles: VideoSubtitles[]; +} + +export interface ResultItem { + title: string; + slug: string; + year: string; + id_movie: string; + id_show: string; +} + +export interface Result { + title(media: MovieMedia, title: any, arg2: number): boolean; + year(year: any): number | undefined; + id_movie: any; + id_show: string; + items: ResultItem[]; +} diff --git a/packages/providers/src/providers/sources/lookmovie/util.ts b/packages/providers/src/providers/sources/lookmovie/util.ts new file mode 100644 index 0000000..6057f76 --- /dev/null +++ b/packages/providers/src/providers/sources/lookmovie/util.ts @@ -0,0 +1,61 @@ +import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import { compareMedia } from '@/utils/compare'; +import { ScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +import { Result, ResultItem, ShowDataResult, episodeObj } from './type'; +import { getVideo } from './video'; + +export const baseUrl = 'https://lmscript.xyz'; + +export async function searchAndFindMedia( + ctx: ScrapeContext, + media: MovieMedia | ShowMedia, +): Promise { + if (media.type === 'show') { + const searchRes = await ctx.fetcher(`/v1/shows`, { + baseUrl, + query: { 'filters[q]': media.title }, + }); + + const results = searchRes.items; + + const result = results.find((res: ResultItem) => compareMedia(media, res.title, Number(res.year))); + return result; + } + if (media.type === 'movie') { + const searchRes = await ctx.fetcher(`/v1/movies`, { + baseUrl, + query: { 'filters[q]': media.title }, + }); + + const results = searchRes.items; + const result = results.find((res: ResultItem) => compareMedia(media, res.title, Number(res.year))); + return result; + } +} + +export async function scrape(ctx: ScrapeContext, media: MovieMedia | ShowMedia, result: ResultItem) { + // Find the relevant id + let id = null; + if (media.type === 'movie') { + id = result.id_movie; + } else if (media.type === 'show') { + const data = await ctx.fetcher(`/v1/shows`, { + baseUrl, + query: { expand: 'episodes', id: result.id_show }, + }); + + const episode = data.episodes?.find((v: episodeObj) => { + return Number(v.season) === Number(media.season.number) && Number(v.episode) === Number(media.episode.number); + }); + + if (episode) id = episode.id; + } + + // Check ID + if (id === null) throw new NotFoundError('Not found'); + + const video = await getVideo(ctx, id, media); + return video; +} diff --git a/packages/providers/src/providers/sources/lookmovie/video.ts b/packages/providers/src/providers/sources/lookmovie/video.ts new file mode 100644 index 0000000..8e8e3c4 --- /dev/null +++ b/packages/providers/src/providers/sources/lookmovie/video.ts @@ -0,0 +1,67 @@ +import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import { Caption, labelToLanguageCode, removeDuplicatedLanguages } from '@/providers/captions'; +import { ScrapeContext } from '@/utils/context'; + +import { StreamsDataResult } from './type'; +import { baseUrl } from './util'; + +export async function getVideoSources( + ctx: ScrapeContext, + id: string, + media: MovieMedia | ShowMedia, +): Promise { + // Fetch video sources + + let path = ''; + if (media.type === 'show') { + path = `/v1/episodes/view`; + } else if (media.type === 'movie') { + path = `/v1/movies/view`; + } + const data = await ctx.fetcher(path, { + baseUrl, + query: { expand: 'streams,subtitles', id }, + }); + return data; +} + +export async function getVideo( + ctx: ScrapeContext, + id: string, + media: MovieMedia | ShowMedia, +): Promise<{ playlist: string | null; captions: Caption[] }> { + // Get sources + const data = await getVideoSources(ctx, id, media); + const videoSources = data.streams; + + // Find video URL and return it + const opts = ['auto', '1080p', '1080', '720p', '720', '480p', '480', '240p', '240', '360p', '360', '144', '144p']; + + let videoUrl: string | null = null; + for (const res of opts) { + if (videoSources[res] && !videoUrl) { + videoUrl = videoSources[res]; + } + } + + let captions: Caption[] = []; + + for (const sub of data.subtitles) { + const language = labelToLanguageCode(sub.language); + if (!language) continue; + captions.push({ + id: sub.url, + type: 'vtt', + url: `${baseUrl}${sub.url}`, + hasCorsRestrictions: false, + language, + }); + } + + captions = removeDuplicatedLanguages(captions); + + return { + playlist: videoUrl, + captions, + }; +} diff --git a/packages/providers/src/providers/sources/nepu/index.ts b/packages/providers/src/providers/sources/nepu/index.ts new file mode 100644 index 0000000..0e19721 --- /dev/null +++ b/packages/providers/src/providers/sources/nepu/index.ts @@ -0,0 +1,84 @@ +import { load } from 'cheerio'; + +import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import { compareTitle } from '@/utils/compare'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +import { SearchResults } from './types'; + +const nepuBase = 'https://nepu.to'; +const nepuReferer = `${nepuBase}/`; + +const universalScraper = async (ctx: MovieScrapeContext | ShowScrapeContext) => { + const searchResultRequest = await ctx.proxiedFetcher('/ajax/posts', { + baseUrl: nepuBase, + query: { + q: ctx.media.title, + }, + }); + + // json isn't parsed by proxiedFetcher due to content-type being text/html. + const searchResult = JSON.parse(searchResultRequest) as SearchResults; + + const show = searchResult.data.find((item) => { + if (!item) return false; + if (ctx.media.type === 'movie' && item.type !== 'Movie') return false; + if (ctx.media.type === 'show' && item.type !== 'Serie') return false; + + return compareTitle(ctx.media.title, item.name); + }); + + if (!show) throw new NotFoundError('No watchable item found'); + + let videoUrl = show.url; + + if (ctx.media.type === 'show') { + videoUrl = `${show.url}/season/${ctx.media.season.number}/episode/${ctx.media.episode.number}`; + } + + const videoPage = await ctx.proxiedFetcher(videoUrl, { + baseUrl: nepuBase, + }); + const videoPage$ = load(videoPage); + const embedId = videoPage$('a[data-embed]').attr('data-embed'); + + if (!embedId) throw new NotFoundError('No embed found.'); + + const playerPage = await ctx.proxiedFetcher('/ajax/embed', { + method: 'POST', + baseUrl: nepuBase, + body: new URLSearchParams({ id: embedId }), + }); + + const streamUrl = playerPage.match(/"file":"(http[^"]+)"/); + + if (!streamUrl) throw new NotFoundError('No stream found.'); + + return { + embeds: [], + stream: [ + { + id: 'primary', + captions: [], + playlist: streamUrl[1], + type: 'hls', + flags: [], + headers: { + Origin: nepuBase, + Referer: nepuReferer, + }, + }, + ], + } as SourcererOutput; +}; + +export const nepuScraper = makeSourcerer({ + id: 'nepu', + name: 'Nepu', + rank: 80, + flags: [], + disabled: true, + scrapeMovie: universalScraper, + scrapeShow: universalScraper, +}); diff --git a/packages/providers/src/providers/sources/nepu/types.ts b/packages/providers/src/providers/sources/nepu/types.ts new file mode 100644 index 0000000..200995a --- /dev/null +++ b/packages/providers/src/providers/sources/nepu/types.ts @@ -0,0 +1,8 @@ +export type SearchResults = { + data: { + id: number; + name: string; + url: string; + type: 'Movie' | 'Serie'; + }[]; +}; diff --git a/packages/providers/src/providers/sources/nites.ts b/packages/providers/src/providers/sources/nites.ts new file mode 100644 index 0000000..4a3570a --- /dev/null +++ b/packages/providers/src/providers/sources/nites.ts @@ -0,0 +1,79 @@ +import { load } from 'cheerio'; + +import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import { compareMedia } from '@/utils/compare'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +const baseUrl = 'https://w1.nites.is'; + +async function comboScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promise { + const searchPage = await ctx.proxiedFetcher('/wp-admin/admin-ajax.php', { + baseUrl, + method: 'POST', + body: new URLSearchParams({ + action: 'ajax_pagination', + query_vars: 'mixed', + search: ctx.media.title, + }), + }); + + const $search = load(searchPage); + const searchResults: { title: string; year: number; url: string }[] = []; + + $search('li').each((_, element) => { + const title = $search(element).find('.entry-title').first().text().trim(); + const year = parseInt($search(element).find('.year').first().text().trim(), 10); + const url = $search(element).find('.lnk-blk').attr('href'); + if (!title || !year || !url) return; + + searchResults.push({ title, year, url }); + }); + + let watchPageUrl = searchResults.find((x) => x && compareMedia(ctx.media, x.title, x.year))?.url; + if (!watchPageUrl) throw new NotFoundError('No watchable item found'); + + if (ctx.media.type === 'show') { + const match = watchPageUrl.match(/\/series\/([^/]+)\/?/); + if (!match) throw new Error('Failed to parse watch page url'); + watchPageUrl = watchPageUrl.replace( + `/series/${match[1]}`, + `/episode/${match[1]}-${ctx.media.season.number}x${ctx.media.episode.number}`, + ); + } + + const watchPage = load(await ctx.proxiedFetcher(watchPageUrl)); + + // it embeds vidsrc when it bflix does not has the stream + // i think all shows embed vidsrc, not sure + const embedUrl = watchPage('ul.bx-lst li a:contains("- Bflix")') + .closest('aside') + .next('div.video-options') + .find('iframe') + .attr('data-lazy-src'); + + if (!embedUrl) throw new Error('Failed to find embed url'); + + const embedPage = load(await ctx.proxiedFetcher(embedUrl)); + + const url = embedPage('iframe').attr('src'); + if (!url) throw new Error('Failed to find embed url'); + + return { + embeds: [ + { + embedId: 'bflix', + url, + }, + ], + }; +} + +export const nitesScraper = makeSourcerer({ + id: 'nites', + name: 'Nites', + rank: 90, + flags: [], + scrapeMovie: comboScraper, + scrapeShow: comboScraper, +}); diff --git a/packages/providers/src/providers/sources/nsbx.ts b/packages/providers/src/providers/sources/nsbx.ts new file mode 100644 index 0000000..6082e96 --- /dev/null +++ b/packages/providers/src/providers/sources/nsbx.ts @@ -0,0 +1,46 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { SourcererEmbed, SourcererOutput, makeSourcerer } from '@/providers/base'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +export const headers = { + Origin: 'https://extension.works.again.with.nsbx', + Referer: 'https://extension.works.again.with.nsbx', +}; + +async function comboScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promise { + const query = { + title: ctx.media.title, + releaseYear: ctx.media.releaseYear, + tmdbId: ctx.media.tmdbId, + imdbId: ctx.media.imdbId, + type: ctx.media.type, + season: '', + episode: '', + }; + + if (ctx.media.type === 'show') { + query.season = ctx.media.season.number.toString(); + query.episode = ctx.media.episode.number.toString(); + } + + const result = await ctx.fetcher(`https://api.nsbx.ru/search?query=${encodeURIComponent(JSON.stringify(query))}`, { + headers, + }); + + if (result.embeds.length === 0) throw new NotFoundError('No watchable item found'); + + return { + embeds: result.embeds as SourcererEmbed[], + }; +} + +export const nsbxScraper = makeSourcerer({ + id: 'nsbx', + name: 'NSBX', + rank: 150, + flags: [flags.CORS_ALLOWED], + disabled: false, + scrapeMovie: comboScraper, + scrapeShow: comboScraper, +}); diff --git a/packages/providers/src/providers/sources/primewire/common.ts b/packages/providers/src/providers/sources/primewire/common.ts new file mode 100644 index 0000000..20d4c59 --- /dev/null +++ b/packages/providers/src/providers/sources/primewire/common.ts @@ -0,0 +1,2 @@ +export const primewireBase = 'https://www.primewire.tf'; +export const primewireApiKey = atob('bHpRUHNYU0tjRw=='); diff --git a/packages/providers/src/providers/sources/primewire/decryption/README.md b/packages/providers/src/providers/sources/primewire/decryption/README.md new file mode 100644 index 0000000..1d6ba2f --- /dev/null +++ b/packages/providers/src/providers/sources/primewire/decryption/README.md @@ -0,0 +1,7 @@ +# Maintaining decryption + +This folder contains the decryption logic for the primewire provider + +The code in `blowfish.ts` is a de-obfuscated version of the original code that is used to decrypt the video links. You can find original the code [in this JavaScript file](https://www.primewire.tf/js/app-21205005105979fb964d17bf03570023.js?vsn=d]) by searching for the keyword "sBox0". + +The code is minified, so use prettier to deobfuscate it. In the case that the URL changes, you can find it used in the [primewire homepage](https://www.primewire.tf/). diff --git a/packages/providers/src/providers/sources/primewire/decryption/blowfish.ts b/packages/providers/src/providers/sources/primewire/decryption/blowfish.ts new file mode 100644 index 0000000..cae97f4 --- /dev/null +++ b/packages/providers/src/providers/sources/primewire/decryption/blowfish.ts @@ -0,0 +1,263 @@ +import { pArray, sBox0, sBox1, sBox2, sBox3 } from './constants'; + +class Blowfish { + sBox0: number[]; + + sBox1: number[]; + + sBox2: number[]; + + sBox3: number[]; + + pArray: number[]; + + keyStr: string; + + iv: string; + + constructor(t: string) { + this.sBox0 = sBox0.slice(); + this.sBox1 = sBox1.slice(); + this.sBox2 = sBox2.slice(); + this.sBox3 = sBox3.slice(); + this.pArray = pArray.slice(); + this.keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + this.iv = 'abc12345'; + this.generateSubkeys(t); + } + + encrypt(e: string) { + const root = this.utf8Decode(e); + let encrypted = ''; + const blockSize = 8; + const paddingChar = '\0'; + const numBlocks = Math.ceil(e.length / blockSize); + + for (let i = 0; i < numBlocks; i++) { + let block = root.substr(blockSize * i, blockSize); + + if (block.length < blockSize) { + block += paddingChar.repeat(blockSize - block.length); + } + + let [left, right] = this.split64by32(block); + [left, right] = this.encipher(left, right); + + encrypted += this.num2block32(left) + this.num2block32(right); + } + + return encrypted; + } + + decrypt(input: string) { + const numBlocks = Math.ceil(input.length / 8); + let decrypted = ''; + for (let i = 0; i < numBlocks; i++) { + const block = input.substr(8 * i, 8); + if (block.length < 8) { + throw new Error('Invalid block size'); + } + const [left, right] = this.split64by32(block); + const [decipheredLeft, decipheredRight] = this.decipher(left, right); + decrypted += this.num2block32(decipheredLeft) + this.num2block32(decipheredRight); + } + return this.utf8Encode(decrypted); + } + + substitute(value: number) { + const t = value >>> 24; + const n = (value << 8) >>> 24; + const r = (value << 16) >>> 24; + const i = (value << 24) >>> 24; + let result = this.addMod32(this.sBox0[t], this.sBox1[n]); + result = this.xor(result, this.sBox2[r]); + result = this.addMod32(result, this.sBox3[i]); + return result; + } + + /* eslint-disable */ + encipher(plaintext: number, key: number) { + for (var temp, round = 0; round < 16; round++) { + temp = plaintext = this.xor(plaintext, this.pArray[round]); + plaintext = key = this.xor(this.substitute(plaintext), key); + key = temp; + } + temp = plaintext; + plaintext = key; + key = temp; + key = this.xor(key, this.pArray[16]); + + return [(plaintext = this.xor(plaintext, this.pArray[17])), key]; + } + /* eslint-enable */ + + decipher(left: number, right: number) { + let n; + let e = left; + let t = right; + n = this.xor(e, this.pArray[17]); + e = this.xor(t, this.pArray[16]); + t = n; + for (let r = 15; r >= 0; r--) { + n = e; + e = t; + t = n; + t = this.xor(this.substitute(e), t); + e = this.xor(e, this.pArray[r]); + } + return [e, t]; + } + + generateSubkeys(key: string) { + let temp; + let keyIndex = 0; + let pIndex = 0; + for (let i = 0; i < 18; i++) { + temp = 0; + for (let j = 0; j < 4; j++) { + temp = this.fixNegative((temp << 8) | key.charCodeAt(keyIndex)); + keyIndex = (keyIndex + 1) % key.length; + } + this.pArray[pIndex] = this.xor(this.pArray[pIndex], temp); + pIndex++; + } + let tempSubkey = [0, 0]; + for (let i = 0; i < 18; i += 2) { + tempSubkey = this.encipher(tempSubkey[0], tempSubkey[1]); + this.pArray[i] = tempSubkey[0]; + this.pArray[i + 1] = tempSubkey[1]; + } + for (let i = 0; i < 256; i += 2) { + tempSubkey = this.encipher(tempSubkey[0], tempSubkey[1]); + this.sBox0[i] = tempSubkey[0]; + this.sBox0[i + 1] = tempSubkey[1]; + } + for (let i = 0; i < 256; i += 2) { + tempSubkey = this.encipher(tempSubkey[0], tempSubkey[1]); + this.sBox1[i] = tempSubkey[0]; + this.sBox1[i + 1] = tempSubkey[1]; + } + for (let i = 0; i < 256; i += 2) { + tempSubkey = this.encipher(tempSubkey[0], tempSubkey[1]); + this.sBox2[i] = tempSubkey[0]; + this.sBox2[i + 1] = tempSubkey[1]; + } + for (let i = 0; i < 256; i += 2) { + tempSubkey = this.encipher(tempSubkey[0], tempSubkey[1]); + this.sBox3[i] = tempSubkey[0]; + this.sBox3[i + 1] = tempSubkey[1]; + } + } + + block32toNum(e: string) { + return this.fixNegative( + (e.charCodeAt(0) << 24) | (e.charCodeAt(1) << 16) | (e.charCodeAt(2) << 8) | e.charCodeAt(3), + ); + } + + num2block32(e: number) { + return ( + String.fromCharCode(e >>> 24) + + String.fromCharCode((e << 8) >>> 24) + + String.fromCharCode((e << 16) >>> 24) + + String.fromCharCode((e << 24) >>> 24) + ); + } + + xor(e: number, t: number) { + return this.fixNegative(e ^ t); + } + + addMod32(e: number, t: number) { + return this.fixNegative((e + t) | 0); + } + + fixNegative(e: number) { + return e >>> 0; + } + + split64by32(e: string) { + const t = e.substring(0, 4); + const n = e.substring(4, 8); + return [this.block32toNum(t), this.block32toNum(n)]; + } + + utf8Decode(input: string) { + let decoded = ''; + for (let i = 0; i < input.length; i++) { + const charCode = input.charCodeAt(i); + if (charCode < 128) { + decoded += String.fromCharCode(charCode); + } else if (charCode > 127 && charCode < 2048) { + const firstCharCode = (charCode >> 6) | 192; + const secondCharCode = (63 & charCode) | 128; + decoded += String.fromCharCode(firstCharCode, secondCharCode); + } else { + const firstCharCode = (charCode >> 12) | 224; + const secondCharCode = ((charCode >> 6) & 63) | 128; + const thirdCharCode = (63 & charCode) | 128; + decoded += String.fromCharCode(firstCharCode, secondCharCode, thirdCharCode); + } + } + return decoded; + } + + utf8Encode(input: string) { + let encoded = ''; + let charCode; + for (let i = 0; i < input.length; i++) { + charCode = input.charCodeAt(i); + if (charCode < 128) { + encoded += String.fromCharCode(charCode); + } else if (charCode > 191 && charCode < 224) { + const secondCharCode = input.charCodeAt(i + 1); + encoded += String.fromCharCode(((31 & charCode) << 6) | (63 & secondCharCode)); + i += 1; + } else { + const secondCharCode = input.charCodeAt(i + 1); + const thirdCharCode = input.charCodeAt(i + 2); + encoded += String.fromCharCode(((15 & charCode) << 12) | ((63 & secondCharCode) << 6) | (63 & thirdCharCode)); + i += 2; + } + } + return encoded; + } + + base64(e: string) { + let t; + let n; + let r; + let i; + let o; + let a; + let s = ''; + let l = 0; + const root = e.replace(/[^A-Za-z0-9\\+\\/=]/g, ''); + while (l < root.length) { + t = (this.keyStr.indexOf(root.charAt(l++)) << 2) | ((i = this.keyStr.indexOf(root.charAt(l++))) >> 4); + n = ((15 & i) << 4) | ((o = this.keyStr.indexOf(root.charAt(l++))) >> 2); + r = ((3 & o) << 6) | (a = this.keyStr.indexOf(root.charAt(l++))); + s += String.fromCharCode(t); + if (o !== 64) { + s += String.fromCharCode(n); + } + if (a !== 64) { + s += String.fromCharCode(r); + } + } + return s; + } +} + +export function getLinks(encryptedInput: string) { + const key = encryptedInput.slice(-10); + const data = encryptedInput.slice(0, -10); + const cipher = new Blowfish(key); + const decryptedData = cipher.decrypt(cipher.base64(data)).match(/.{1,5}/g); + + if (!decryptedData) { + throw new Error('No links found'); + } else { + return decryptedData; + } +} diff --git a/packages/providers/src/providers/sources/primewire/decryption/constants.ts b/packages/providers/src/providers/sources/primewire/decryption/constants.ts new file mode 100644 index 0000000..91ab2c5 --- /dev/null +++ b/packages/providers/src/providers/sources/primewire/decryption/constants.ts @@ -0,0 +1,116 @@ +export const pArray = [ + 608135816, 2242054355, 320440878, 57701188, 2752067618, 698298832, 137296536, 3964562569, 1160258022, 953160567, + 3193202383, 887688300, 3232508343, 3380367581, 1065670069, 3041331479, 2450970073, 2306472731, +]; +export const sBox0 = [ + 3509652390, 2564797868, 805139163, 3491422135, 3101798381, 1780907670, 3128725573, 4046225305, 614570311, 3012652279, + 134345442, 2240740374, 1667834072, 1901547113, 2757295779, 4103290238, 227898511, 1921955416, 1904987480, 2182433518, + 2069144605, 3260701109, 2620446009, 720527379, 3318853667, 677414384, 3393288472, 3101374703, 2390351024, 1614419982, + 1822297739, 2954791486, 3608508353, 3174124327, 2024746970, 1432378464, 3864339955, 2857741204, 1464375394, + 1676153920, 1439316330, 715854006, 3033291828, 289532110, 2706671279, 2087905683, 3018724369, 1668267050, 732546397, + 1947742710, 3462151702, 2609353502, 2950085171, 1814351708, 2050118529, 680887927, 999245976, 1800124847, 3300911131, + 1713906067, 1641548236, 4213287313, 1216130144, 1575780402, 4018429277, 3917837745, 3693486850, 3949271944, 596196993, + 3549867205, 258830323, 2213823033, 772490370, 2760122372, 1774776394, 2652871518, 566650946, 4142492826, 1728879713, + 2882767088, 1783734482, 3629395816, 2517608232, 2874225571, 1861159788, 326777828, 3124490320, 2130389656, 2716951837, + 967770486, 1724537150, 2185432712, 2364442137, 1164943284, 2105845187, 998989502, 3765401048, 2244026483, 1075463327, + 1455516326, 1322494562, 910128902, 469688178, 1117454909, 936433444, 3490320968, 3675253459, 1240580251, 122909385, + 2157517691, 634681816, 4142456567, 3825094682, 3061402683, 2540495037, 79693498, 3249098678, 1084186820, 1583128258, + 426386531, 1761308591, 1047286709, 322548459, 995290223, 1845252383, 2603652396, 3431023940, 2942221577, 3202600964, + 3727903485, 1712269319, 422464435, 3234572375, 1170764815, 3523960633, 3117677531, 1434042557, 442511882, 3600875718, + 1076654713, 1738483198, 4213154764, 2393238008, 3677496056, 1014306527, 4251020053, 793779912, 2902807211, 842905082, + 4246964064, 1395751752, 1040244610, 2656851899, 3396308128, 445077038, 3742853595, 3577915638, 679411651, 2892444358, + 2354009459, 1767581616, 3150600392, 3791627101, 3102740896, 284835224, 4246832056, 1258075500, 768725851, 2589189241, + 3069724005, 3532540348, 1274779536, 3789419226, 2764799539, 1660621633, 3471099624, 4011903706, 913787905, 3497959166, + 737222580, 2514213453, 2928710040, 3937242737, 1804850592, 3499020752, 2949064160, 2386320175, 2390070455, 2415321851, + 4061277028, 2290661394, 2416832540, 1336762016, 1754252060, 3520065937, 3014181293, 791618072, 3188594551, 3933548030, + 2332172193, 3852520463, 3043980520, 413987798, 3465142937, 3030929376, 4245938359, 2093235073, 3534596313, 375366246, + 2157278981, 2479649556, 555357303, 3870105701, 2008414854, 3344188149, 4221384143, 3956125452, 2067696032, 3594591187, + 2921233993, 2428461, 544322398, 577241275, 1471733935, 610547355, 4027169054, 1432588573, 1507829418, 2025931657, + 3646575487, 545086370, 48609733, 2200306550, 1653985193, 298326376, 1316178497, 3007786442, 2064951626, 458293330, + 2589141269, 3591329599, 3164325604, 727753846, 2179363840, 146436021, 1461446943, 4069977195, 705550613, 3059967265, + 3887724982, 4281599278, 3313849956, 1404054877, 2845806497, 146425753, 1854211946, +]; +export const sBox1 = [ + 1266315497, 3048417604, 3681880366, 3289982499, 290971e4, 1235738493, 2632868024, 2414719590, 3970600049, 1771706367, + 1449415276, 3266420449, 422970021, 1963543593, 2690192192, 3826793022, 1062508698, 1531092325, 1804592342, 2583117782, + 2714934279, 4024971509, 1294809318, 4028980673, 1289560198, 2221992742, 1669523910, 35572830, 157838143, 1052438473, + 1016535060, 1802137761, 1753167236, 1386275462, 3080475397, 2857371447, 1040679964, 2145300060, 2390574316, + 1461121720, 2956646967, 4031777805, 4028374788, 33600511, 2920084762, 1018524850, 629373528, 3691585981, 3515945977, + 2091462646, 2486323059, 586499841, 988145025, 935516892, 3367335476, 2599673255, 2839830854, 265290510, 3972581182, + 2759138881, 3795373465, 1005194799, 847297441, 406762289, 1314163512, 1332590856, 1866599683, 4127851711, 750260880, + 613907577, 1450815602, 3165620655, 3734664991, 3650291728, 3012275730, 3704569646, 1427272223, 778793252, 1343938022, + 2676280711, 2052605720, 1946737175, 3164576444, 3914038668, 3967478842, 3682934266, 1661551462, 3294938066, + 4011595847, 840292616, 3712170807, 616741398, 312560963, 711312465, 1351876610, 322626781, 1910503582, 271666773, + 2175563734, 1594956187, 70604529, 3617834859, 1007753275, 1495573769, 4069517037, 2549218298, 2663038764, 504708206, + 2263041392, 3941167025, 2249088522, 1514023603, 1998579484, 1312622330, 694541497, 2582060303, 2151582166, 1382467621, + 776784248, 2618340202, 3323268794, 2497899128, 2784771155, 503983604, 4076293799, 907881277, 423175695, 432175456, + 1378068232, 4145222326, 3954048622, 3938656102, 3820766613, 2793130115, 2977904593, 26017576, 3274890735, 3194772133, + 1700274565, 1756076034, 4006520079, 3677328699, 720338349, 1533947780, 354530856, 688349552, 3973924725, 1637815568, + 332179504, 3949051286, 53804574, 2852348879, 3044236432, 1282449977, 3583942155, 3416972820, 4006381244, 1617046695, + 2628476075, 3002303598, 1686838959, 431878346, 2686675385, 1700445008, 1080580658, 1009431731, 832498133, 3223435511, + 2605976345, 2271191193, 2516031870, 1648197032, 4164389018, 2548247927, 300782431, 375919233, 238389289, 3353747414, + 2531188641, 2019080857, 1475708069, 455242339, 2609103871, 448939670, 3451063019, 1395535956, 2413381860, 1841049896, + 1491858159, 885456874, 4264095073, 4001119347, 1565136089, 3898914787, 1108368660, 540939232, 1173283510, 2745871338, + 3681308437, 4207628240, 3343053890, 4016749493, 1699691293, 1103962373, 3625875870, 2256883143, 3830138730, + 1031889488, 3479347698, 1535977030, 4236805024, 3251091107, 2132092099, 1774941330, 1199868427, 1452454533, 157007616, + 2904115357, 342012276, 595725824, 1480756522, 206960106, 497939518, 591360097, 863170706, 2375253569, 3596610801, + 1814182875, 2094937945, 3421402208, 1082520231, 3463918190, 2785509508, 435703966, 3908032597, 1641649973, 2842273706, + 3305899714, 1510255612, 2148256476, 2655287854, 3276092548, 4258621189, 236887753, 3681803219, 274041037, 1734335097, + 3815195456, 3317970021, 1899903192, 1026095262, 4050517792, 356393447, 2410691914, 3873677099, 3682840055, +]; +export const sBox2 = [ + 3913112168, 2491498743, 4132185628, 2489919796, 1091903735, 1979897079, 3170134830, 3567386728, 3557303409, 857797738, + 1136121015, 1342202287, 507115054, 2535736646, 337727348, 3213592640, 1301675037, 2528481711, 1895095763, 1721773893, + 3216771564, 62756741, 2142006736, 835421444, 2531993523, 1442658625, 3659876326, 2882144922, 676362277, 1392781812, + 170690266, 3921047035, 1759253602, 3611846912, 1745797284, 664899054, 1329594018, 3901205900, 3045908486, 2062866102, + 2865634940, 3543621612, 3464012697, 1080764994, 553557557, 3656615353, 3996768171, 991055499, 499776247, 1265440854, + 648242737, 3940784050, 980351604, 3713745714, 1749149687, 3396870395, 4211799374, 3640570775, 1161844396, 3125318951, + 1431517754, 545492359, 4268468663, 3499529547, 1437099964, 2702547544, 3433638243, 2581715763, 2787789398, 1060185593, + 1593081372, 2418618748, 4260947970, 69676912, 2159744348, 86519011, 2512459080, 3838209314, 1220612927, 3339683548, + 133810670, 1090789135, 1078426020, 1569222167, 845107691, 3583754449, 4072456591, 1091646820, 628848692, 1613405280, + 3757631651, 526609435, 236106946, 48312990, 2942717905, 3402727701, 1797494240, 859738849, 992217954, 4005476642, + 2243076622, 3870952857, 3732016268, 765654824, 3490871365, 2511836413, 1685915746, 3888969200, 1414112111, 2273134842, + 3281911079, 4080962846, 172450625, 2569994100, 980381355, 4109958455, 2819808352, 2716589560, 2568741196, 3681446669, + 3329971472, 1835478071, 660984891, 3704678404, 4045999559, 3422617507, 3040415634, 1762651403, 1719377915, 3470491036, + 2693910283, 3642056355, 3138596744, 1364962596, 2073328063, 1983633131, 926494387, 3423689081, 2150032023, 4096667949, + 1749200295, 3328846651, 309677260, 2016342300, 1779581495, 3079819751, 111262694, 1274766160, 443224088, 298511866, + 1025883608, 3806446537, 1145181785, 168956806, 3641502830, 3584813610, 1689216846, 3666258015, 3200248200, 1692713982, + 2646376535, 4042768518, 1618508792, 1610833997, 3523052358, 4130873264, 2001055236, 3610705100, 2202168115, + 4028541809, 2961195399, 1006657119, 2006996926, 3186142756, 1430667929, 3210227297, 1314452623, 4074634658, + 4101304120, 2273951170, 1399257539, 3367210612, 3027628629, 1190975929, 2062231137, 2333990788, 2221543033, + 2438960610, 1181637006, 548689776, 2362791313, 3372408396, 3104550113, 3145860560, 296247880, 1970579870, 3078560182, + 3769228297, 1714227617, 3291629107, 3898220290, 166772364, 1251581989, 493813264, 448347421, 195405023, 2709975567, + 677966185, 3703036547, 1463355134, 2715995803, 1338867538, 1343315457, 2802222074, 2684532164, 233230375, 2599980071, + 2000651841, 3277868038, 1638401717, 4028070440, 3237316320, 6314154, 819756386, 300326615, 590932579, 1405279636, + 3267499572, 3150704214, 2428286686, 3959192993, 3461946742, 1862657033, 1266418056, 963775037, 2089974820, 2263052895, + 1917689273, 448879540, 3550394620, 3981727096, 150775221, 3627908307, 1303187396, 508620638, 2975983352, 2726630617, + 1817252668, 1876281319, 1457606340, 908771278, 3720792119, 3617206836, 2455994898, 1729034894, 1080033504, +]; +export const sBox3 = [ + 976866871, 3556439503, 2881648439, 1522871579, 1555064734, 1336096578, 3548522304, 2579274686, 3574697629, 3205460757, + 3593280638, 3338716283, 3079412587, 564236357, 2993598910, 1781952180, 1464380207, 3163844217, 3332601554, 1699332808, + 1393555694, 1183702653, 3581086237, 1288719814, 691649499, 2847557200, 2895455976, 3193889540, 2717570544, 1781354906, + 1676643554, 2592534050, 3230253752, 1126444790, 2770207658, 2633158820, 2210423226, 2615765581, 2414155088, + 3127139286, 673620729, 2805611233, 1269405062, 4015350505, 3341807571, 4149409754, 1057255273, 2012875353, 2162469141, + 2276492801, 2601117357, 993977747, 3918593370, 2654263191, 753973209, 36408145, 2530585658, 25011837, 3520020182, + 2088578344, 530523599, 2918365339, 1524020338, 1518925132, 3760827505, 3759777254, 1202760957, 3985898139, 3906192525, + 674977740, 4174734889, 2031300136, 2019492241, 3983892565, 4153806404, 3822280332, 352677332, 2297720250, 60907813, + 90501309, 3286998549, 1016092578, 2535922412, 2839152426, 457141659, 509813237, 4120667899, 652014361, 1966332200, + 2975202805, 55981186, 2327461051, 676427537, 3255491064, 2882294119, 3433927263, 1307055953, 942726286, 933058658, + 2468411793, 3933900994, 4215176142, 1361170020, 2001714738, 2830558078, 3274259782, 1222529897, 1679025792, + 2729314320, 3714953764, 1770335741, 151462246, 3013232138, 1682292957, 1483529935, 471910574, 1539241949, 458788160, + 3436315007, 1807016891, 3718408830, 978976581, 1043663428, 3165965781, 1927990952, 4200891579, 2372276910, 3208408903, + 3533431907, 1412390302, 2931980059, 4132332400, 1947078029, 3881505623, 4168226417, 2941484381, 1077988104, + 1320477388, 886195818, 18198404, 3786409e3, 2509781533, 112762804, 3463356488, 1866414978, 891333506, 18488651, + 661792760, 1628790961, 3885187036, 3141171499, 876946877, 2693282273, 1372485963, 791857591, 2686433993, 3759982718, + 3167212022, 3472953795, 2716379847, 445679433, 3561995674, 3504004811, 3574258232, 54117162, 3331405415, 2381918588, + 3769707343, 4154350007, 1140177722, 4074052095, 668550556, 3214352940, 367459370, 261225585, 2610173221, 4209349473, + 3468074219, 3265815641, 314222801, 3066103646, 3808782860, 282218597, 3406013506, 3773591054, 379116347, 1285071038, + 846784868, 2669647154, 3771962079, 3550491691, 2305946142, 453669953, 1268987020, 3317592352, 3279303384, 3744833421, + 2610507566, 3859509063, 266596637, 3847019092, 517658769, 3462560207, 3443424879, 370717030, 4247526661, 2224018117, + 4143653529, 4112773975, 2788324899, 2477274417, 1456262402, 2901442914, 1517677493, 1846949527, 2295493580, + 3734397586, 2176403920, 1280348187, 1908823572, 3871786941, 846861322, 1172426758, 3287448474, 3383383037, 1655181056, + 3139813346, 901632758, 1897031941, 2986607138, 3066810236, 3447102507, 1393639104, 373351379, 950779232, 625454576, + 3124240540, 4148612726, 2007998917, 544563296, 2244738638, 2330496472, 2058025392, 1291430526, 424198748, 50039436, + 29584100, 3605783033, 2429876329, 2791104160, 1057563949, 3255363231, 3075367218, 3463963227, 1469046755, 985887462, +]; diff --git a/packages/providers/src/providers/sources/primewire/index.ts b/packages/providers/src/providers/sources/primewire/index.ts new file mode 100644 index 0000000..b83594c --- /dev/null +++ b/packages/providers/src/providers/sources/primewire/index.ts @@ -0,0 +1,127 @@ +import { load } from 'cheerio'; + +import { flags } from '@/entrypoint/utils/targets'; +import { makeSourcerer } from '@/providers/base'; +import { ScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +import { primewireApiKey, primewireBase } from './common'; +import { getLinks } from './decryption/blowfish'; + +async function search(ctx: ScrapeContext, imdbId: string) { + const searchResult = await ctx.proxiedFetcher<{ + id: string; + }>('/api/v1/show/', { + baseUrl: primewireBase, + query: { + key: primewireApiKey, + imdb_id: imdbId, + }, + }); + + return searchResult.id; +} + +async function getStreams(title: string) { + const titlePage = load(title); + const userData = titlePage('#user-data').attr('v'); + if (!userData) throw new NotFoundError('No user data found'); + + const links = getLinks(userData); + + const embeds = []; + + if (!links) throw new NotFoundError('No links found'); + + for (const link in links) { + if (link.includes(link)) { + const element = titlePage(`.propper-link[link_version='${link}']`); + const sourceName = element.parent().parent().parent().find('.version-host').text().trim(); + let embedId; + switch (sourceName) { + case 'mixdrop.co': + embedId = 'mixdrop'; + break; + case 'voe.sx': + embedId = 'voe'; + break; + case 'upstream.to': + embedId = 'upstream'; + break; + case 'streamvid.net': + embedId = 'streamvid'; + break; + case 'dood.watch': + embedId = 'dood'; + break; + case 'dropload.io': + embedId = 'dropload'; + break; + case 'filelions.to': + embedId = 'filelions'; + break; + case 'vtube.to': + embedId = 'vtube'; + break; + default: + embedId = null; + } + if (!embedId) continue; + embeds.push({ + url: `${primewireBase}/links/go/${links[link]}`, + embedId, + }); + } + } + + return embeds; +} + +export const primewireScraper = makeSourcerer({ + id: 'primewire', + name: 'Primewire', + rank: 110, + flags: [flags.CORS_ALLOWED], + async scrapeMovie(ctx) { + if (!ctx.media.imdbId) throw new Error('No imdbId provided'); + const searchResult = await search(ctx, ctx.media.imdbId); + + const title = await ctx.proxiedFetcher(`movie/${searchResult}`, { + baseUrl: primewireBase, + }); + + const embeds = await getStreams(title); + + return { + embeds, + }; + }, + async scrapeShow(ctx) { + if (!ctx.media.imdbId) throw new Error('No imdbId provided'); + const searchResult = await search(ctx, ctx.media.imdbId); + + const season = await ctx.proxiedFetcher(`tv/${searchResult}`, { + baseUrl: primewireBase, + }); + + const seasonPage = load(season); + + const episodeLink = seasonPage(`.show_season[data-id='${ctx.media.season.number}'] > div > a`) + .toArray() + .find((link) => { + return link.attribs.href.includes(`-episode-${ctx.media.episode.number}`); + })?.attribs.href; + + if (!episodeLink) throw new NotFoundError('No episode links found'); + + const title = await ctx.proxiedFetcher(episodeLink, { + baseUrl: primewireBase, + }); + + const embeds = await getStreams(title); + + return { + embeds, + }; + }, +}); diff --git a/packages/providers/src/providers/sources/remotestream.ts b/packages/providers/src/providers/sources/remotestream.ts new file mode 100644 index 0000000..15b07df --- /dev/null +++ b/packages/providers/src/providers/sources/remotestream.ts @@ -0,0 +1,83 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { makeSourcerer } from '@/providers/base'; +import { NotFoundError } from '@/utils/errors'; + +const remotestreamBase = atob('aHR0cHM6Ly9mc2IuOG1ldDNkdGpmcmNxY2hjb25xcGtsd3hzeGIyb2N1bWMuc3RyZWFt'); + +const origin = 'https://remotestre.am'; +const referer = 'https://remotestre.am/'; + +export const remotestreamScraper = makeSourcerer({ + id: 'remotestream', + name: 'Remote Stream', + disabled: true, + rank: 20, + flags: [flags.CORS_ALLOWED], + async scrapeShow(ctx) { + const seasonNumber = ctx.media.season.number; + const episodeNumber = ctx.media.episode.number; + + const playlistLink = `${remotestreamBase}/Shows/${ctx.media.tmdbId}/${seasonNumber}/${episodeNumber}/${episodeNumber}.m3u8`; + + ctx.progress(30); + const streamRes = await ctx.proxiedFetcher.full(playlistLink, { + method: 'GET', + readHeaders: ['content-type'], + headers: { + Referer: referer, + }, + }); + if (!streamRes.headers.get('content-type')?.toLowerCase().includes('application/x-mpegurl')) + throw new NotFoundError('No watchable item found'); + ctx.progress(90); + + return { + embeds: [], + stream: [ + { + id: 'primary', + captions: [], + playlist: playlistLink, + type: 'hls', + flags: [flags.CORS_ALLOWED], + preferredHeaders: { + Referer: referer, + Origin: origin, + }, + }, + ], + }; + }, + async scrapeMovie(ctx) { + const playlistLink = `${remotestreamBase}/Movies/${ctx.media.tmdbId}/${ctx.media.tmdbId}.m3u8`; + + ctx.progress(30); + const streamRes = await ctx.proxiedFetcher.full(playlistLink, { + method: 'GET', + readHeaders: ['content-type'], + headers: { + Referer: referer, + }, + }); + if (!streamRes.headers.get('content-type')?.toLowerCase().includes('application/x-mpegurl')) + throw new NotFoundError('No watchable item found'); + ctx.progress(90); + + return { + embeds: [], + stream: [ + { + id: 'primary', + captions: [], + playlist: playlistLink, + type: 'hls', + flags: [flags.CORS_ALLOWED], + preferredHeaders: { + Referer: referer, + Origin: origin, + }, + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/sources/ridomovies/index.ts b/packages/providers/src/providers/sources/ridomovies/index.ts new file mode 100644 index 0000000..638ea13 --- /dev/null +++ b/packages/providers/src/providers/sources/ridomovies/index.ts @@ -0,0 +1,81 @@ +import { load } from 'cheerio'; + +import { flags } from '@/entrypoint/utils/targets'; +import { SourcererEmbed, makeSourcerer } from '@/providers/base'; +import { closeLoadScraper } from '@/providers/embeds/closeload'; +import { ridooScraper } from '@/providers/embeds/ridoo'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +import { IframeSourceResult, SearchResult } from './types'; + +const ridoMoviesBase = `https://ridomovies.tv`; +const ridoMoviesApiBase = `${ridoMoviesBase}/core/api`; + +const universalScraper = async (ctx: MovieScrapeContext | ShowScrapeContext) => { + const searchResult = await ctx.proxiedFetcher('/search', { + baseUrl: ridoMoviesApiBase, + query: { + q: ctx.media.title, + }, + }); + const mediaData = searchResult.data.items.map((movieEl) => { + const name = movieEl.title; + const year = movieEl.contentable.releaseYear; + const fullSlug = movieEl.fullSlug; + return { name, year, fullSlug }; + }); + const targetMedia = mediaData.find((m) => m.name === ctx.media.title && m.year === ctx.media.releaseYear.toString()); + if (!targetMedia?.fullSlug) throw new NotFoundError('No watchable item found'); + + let iframeSourceUrl = `/${targetMedia.fullSlug}/videos`; + + if (ctx.media.type === 'show') { + const showPageResult = await ctx.proxiedFetcher(`/${targetMedia.fullSlug}`, { + baseUrl: ridoMoviesBase, + }); + const fullEpisodeSlug = `season-${ctx.media.season.number}/episode-${ctx.media.episode.number}`; + const regexPattern = new RegExp( + `\\\\"id\\\\":\\\\"(\\d+)\\\\"(?=.*?\\\\\\"fullSlug\\\\\\":\\\\\\"[^"]*${fullEpisodeSlug}[^"]*\\\\\\")`, + 'g', + ); + const matches = [...showPageResult.matchAll(regexPattern)]; + const episodeIds = matches.map((match) => match[1]); + if (episodeIds.length === 0) throw new NotFoundError('No watchable item found'); + const episodeId = episodeIds.at(-1); + iframeSourceUrl = `/episodes/${episodeId}/videos`; + } + + const iframeSource = await ctx.proxiedFetcher(iframeSourceUrl, { + baseUrl: ridoMoviesApiBase, + }); + const iframeSource$ = load(iframeSource.data[0].url); + const iframeUrl = iframeSource$('iframe').attr('data-src'); + if (!iframeUrl) throw new NotFoundError('No watchable item found'); + + const embeds: SourcererEmbed[] = []; + if (iframeUrl.includes('closeload')) { + embeds.push({ + embedId: closeLoadScraper.id, + url: iframeUrl, + }); + } + if (iframeUrl.includes('ridoo')) { + embeds.push({ + embedId: ridooScraper.id, + url: iframeUrl, + }); + } + return { + embeds, + }; +}; + +export const ridooMoviesScraper = makeSourcerer({ + id: 'ridomovies', + name: 'RidoMovies', + rank: 100, + flags: [flags.CORS_ALLOWED], + scrapeMovie: universalScraper, + scrapeShow: universalScraper, +}); diff --git a/packages/providers/src/providers/sources/ridomovies/types.ts b/packages/providers/src/providers/sources/ridomovies/types.ts new file mode 100644 index 0000000..a030738 --- /dev/null +++ b/packages/providers/src/providers/sources/ridomovies/types.ts @@ -0,0 +1,78 @@ +export interface Content { + id: string; + type: string; + slug: string; + title: string; + metaTitle: any; + metaDescription: any; + usersOnly: boolean; + userLevel: number; + vipOnly: boolean; + copyrighted: boolean; + status: string; + publishedAt: string; + createdAt: string; + updatedAt: string; + fullSlug: string; +} + +export interface Contentable { + id: string; + contentId: string; + revisionId: any; + originalTitle: string; + overview: string; + releaseDate: string; + releaseYear: string; + videoNote: any; + posterNote: any; + userRating: number; + imdbRating: number; + imdbVotes: number; + imdbId: string; + duration: number; + countryCode: string; + posterPath: string; + backdropPath: string; + apiPosterPath: string; + apiBackdropPath: string; + trailerUrl: string; + mpaaRating: string; + tmdbId: number; + manual: number; + directorId: number; + createdAt: string; + updatedAt: string; + content: Content; +} + +export interface SearchResultItem { + id: string; + type: string; + slug: string; + title: string; + metaTitle: any; + metaDescription: any; + usersOnly: boolean; + userLevel: number; + vipOnly: boolean; + copyrighted: boolean; + status: string; + publishedAt: string; + createdAt: string; + updatedAt: string; + fullSlug: string; + contentable: Contentable; +} + +export type SearchResult = { + data: { + items: SearchResultItem[]; + }; +}; + +export type IframeSourceResult = { + data: { + url: string; + }[]; +}; diff --git a/packages/providers/src/providers/sources/showbox/LICENSE b/packages/providers/src/providers/sources/showbox/LICENSE new file mode 100644 index 0000000..3f5347b --- /dev/null +++ b/packages/providers/src/providers/sources/showbox/LICENSE @@ -0,0 +1,680 @@ +Credit goes to @ImZaw and @Blatzar from https://github.com/recloudstream/cloudstream +All files in the current directory (src/providers/list/superstream) are derived from https://github.com/recloudstream/cloudstream-extensions/blob/master/SuperStream/src/main/kotlin/com/lagradost/SuperStream.kt +Below is the license associated with the source of the derived work. + + + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/packages/providers/src/providers/sources/showbox/common.ts b/packages/providers/src/providers/sources/showbox/common.ts new file mode 100644 index 0000000..b2cf855 --- /dev/null +++ b/packages/providers/src/providers/sources/showbox/common.ts @@ -0,0 +1,16 @@ +// We do not want content scanners to notice this scraping going on so we've hidden all constants +// The source has its origins in China so I added some extra security with banned words +// Mayhaps a tiny bit unethical, but this source is just too good :) +// If you are copying this code please use precautions so they do not change their api. + +export const iv = atob('d0VpcGhUbiE='); +export const key = atob('MTIzZDZjZWRmNjI2ZHk1NDIzM2FhMXc2'); +export const apiUrls = [ + atob('aHR0cHM6Ly9zaG93Ym94LnNoZWd1Lm5ldC9hcGkvYXBpX2NsaWVudC9pbmRleC8='), + atob('aHR0cHM6Ly9tYnBhcGkuc2hlZ3UubmV0L2FwaS9hcGlfY2xpZW50L2luZGV4Lw=='), +]; +export const appKey = atob('bW92aWVib3g='); +export const appId = atob('Y29tLnRkby5zaG93Ym94'); +export const captionsDomains = [atob('bWJwaW1hZ2VzLmNodWF4aW4uY29t'), atob('aW1hZ2VzLnNoZWd1Lm5ldA==')]; + +export const showboxBase = 'https://www.showbox.media'; diff --git a/packages/providers/src/providers/sources/showbox/crypto.ts b/packages/providers/src/providers/sources/showbox/crypto.ts new file mode 100644 index 0000000..49adaac --- /dev/null +++ b/packages/providers/src/providers/sources/showbox/crypto.ts @@ -0,0 +1,16 @@ +import CryptoJS from 'crypto-js'; + +import { iv, key } from './common'; + +export function encrypt(str: string) { + return CryptoJS.TripleDES.encrypt(str, CryptoJS.enc.Utf8.parse(key), { + iv: CryptoJS.enc.Utf8.parse(iv), + }).toString(); +} + +export function getVerify(str: string, str2: string, str3: string) { + if (str) { + return CryptoJS.MD5(CryptoJS.MD5(str2).toString() + str3 + str).toString(); + } + return null; +} diff --git a/packages/providers/src/providers/sources/showbox/index.ts b/packages/providers/src/providers/sources/showbox/index.ts new file mode 100644 index 0000000..9901a52 --- /dev/null +++ b/packages/providers/src/providers/sources/showbox/index.ts @@ -0,0 +1,49 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import { febboxMp4Scraper } from '@/providers/embeds/febbox/mp4'; +import { compareTitle } from '@/utils/compare'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +import { sendRequest } from './sendRequest'; + +async function comboScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promise { + const searchQuery = { + module: 'Search4', + page: '1', + type: 'all', + keyword: ctx.media.title, + pagelimit: '20', + }; + + const searchRes = (await sendRequest(ctx, searchQuery, true)).data.list; + ctx.progress(50); + + const showboxEntry = searchRes.find( + (res: any) => compareTitle(res.title, ctx.media.title) && res.year === Number(ctx.media.releaseYear), + ); + if (!showboxEntry) throw new NotFoundError('No entry found'); + + const id = showboxEntry.id; + const season = ctx.media.type === 'show' ? ctx.media.season.number : ''; + const episode = ctx.media.type === 'show' ? ctx.media.episode.number : ''; + + return { + embeds: [ + { + embedId: febboxMp4Scraper.id, + url: `/${ctx.media.type}/${id}/${season}/${episode}`, + }, + ], + }; +} + +export const showboxScraper = makeSourcerer({ + id: 'showbox', + name: 'Showbox', + rank: 150, + disabled: true, + flags: [flags.CORS_ALLOWED, flags.CF_BLOCKED], + scrapeShow: comboScraper, + scrapeMovie: comboScraper, +}); diff --git a/packages/providers/src/providers/sources/showbox/sendRequest.ts b/packages/providers/src/providers/sources/showbox/sendRequest.ts new file mode 100644 index 0000000..7ea9024 --- /dev/null +++ b/packages/providers/src/providers/sources/showbox/sendRequest.ts @@ -0,0 +1,57 @@ +import CryptoJS from 'crypto-js'; +import { customAlphabet } from 'nanoid'; + +import type { ScrapeContext } from '@/utils/context'; + +import { apiUrls, appId, appKey, key } from './common'; +import { encrypt, getVerify } from './crypto'; + +const randomId = customAlphabet('1234567890abcdef'); +const expiry = () => Math.floor(Date.now() / 1000 + 60 * 60 * 12); + +export const sendRequest = async (ctx: ScrapeContext, data: object, altApi = false) => { + const defaultData = { + childmode: '0', + app_version: '11.5', + appid: appId, + lang: 'en', + expired_date: `${expiry()}`, + platform: 'android', + channel: 'Website', + }; + const encryptedData = encrypt( + JSON.stringify({ + ...defaultData, + ...data, + }), + ); + const appKeyHash = CryptoJS.MD5(appKey).toString(); + const verify = getVerify(encryptedData, appKey, key); + const body = JSON.stringify({ + app_key: appKeyHash, + verify, + encrypt_data: encryptedData, + }); + const base64body = btoa(body); + + const formatted = new URLSearchParams(); + formatted.append('data', base64body); + formatted.append('appid', '27'); + formatted.append('platform', 'android'); + formatted.append('version', '129'); + formatted.append('medium', 'Website'); + formatted.append('token', randomId(32)); + + const requestUrl = altApi ? apiUrls[1] : apiUrls[0]; + + const response = await ctx.proxiedFetcher(requestUrl, { + method: 'POST', + headers: { + Platform: 'android', + 'Content-Type': 'application/x-www-form-urlencoded', + 'User-Agent': 'okhttp/3.2.0', + }, + body: formatted, + }); + return JSON.parse(response); +}; diff --git a/packages/providers/src/providers/sources/smashystream/index.ts b/packages/providers/src/providers/sources/smashystream/index.ts new file mode 100644 index 0000000..0937e6a --- /dev/null +++ b/packages/providers/src/providers/sources/smashystream/index.ts @@ -0,0 +1,37 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import { smashyStreamOScraper } from '@/providers/embeds/smashystream/opstream'; +import { smashyStreamFScraper } from '@/providers/embeds/smashystream/video1'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; + +const universalScraper = async (ctx: ShowScrapeContext | MovieScrapeContext): Promise => { + // theres no point in fetching the player page + // because it too just calls the api with the tmdb id + // thats the only way to find out if the embed has any streams + const query = + ctx.media.type === 'movie' + ? `?tmdb=${ctx.media.tmdbId}` + : `?tmdbId=${ctx.media.tmdbId}&season=${ctx.media.season.number}&episode=${ctx.media.episode.number}`; + + return { + embeds: [ + { + embedId: smashyStreamFScraper.id, + url: `https://embed.smashystream.com/video1dn.php${query}`, + }, + { + embedId: smashyStreamOScraper.id, + url: `https://embed.smashystream.com/videoop.php${query}`, + }, + ], + }; +}; + +export const smashyStreamScraper = makeSourcerer({ + id: 'smashystream', + name: 'SmashyStream', + rank: 30, + flags: [flags.CORS_ALLOWED], + scrapeMovie: universalScraper, + scrapeShow: universalScraper, +}); diff --git a/packages/providers/src/providers/sources/soapertv/index.ts b/packages/providers/src/providers/sources/soapertv/index.ts new file mode 100644 index 0000000..feee555 --- /dev/null +++ b/packages/providers/src/providers/sources/soapertv/index.ts @@ -0,0 +1,120 @@ +import { load } from 'cheerio'; + +import { flags } from '@/entrypoint/utils/targets'; +import { Caption, labelToLanguageCode } from '@/providers/captions'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +import { InfoResponse } from './types'; +import { SourcererOutput, makeSourcerer } from '../../base'; + +const baseUrl = 'https://soaper.tv'; + +const universalScraper = async (ctx: MovieScrapeContext | ShowScrapeContext): Promise => { + const searchResult = await ctx.proxiedFetcher('/search.html', { + baseUrl, + query: { + keyword: ctx.media.title, + }, + }); + const searchResult$ = load(searchResult); + let showLink = searchResult$('a') + .filter((_, el) => searchResult$(el).text() === ctx.media.title) + .attr('href'); + if (!showLink) throw new NotFoundError('Content not found'); + + if (ctx.media.type === 'show') { + const seasonNumber = ctx.media.season.number; + const episodeNumber = ctx.media.episode.number; + const showPage = await ctx.proxiedFetcher(showLink, { baseUrl }); + const showPage$ = load(showPage); + const seasonBlock = showPage$('h4') + .filter((_, el) => showPage$(el).text().trim().split(':')[0].trim() === `Season${seasonNumber}`) + .parent(); + const episodes = seasonBlock.find('a').toArray(); + showLink = showPage$( + episodes.find((el) => parseInt(showPage$(el).text().split('.')[0], 10) === episodeNumber), + ).attr('href'); + } + if (!showLink) throw new NotFoundError('Content not found'); + const contentPage = await ctx.proxiedFetcher(showLink, { baseUrl }); + const contentPage$ = load(contentPage); + + const pass = contentPage$('#hId').attr('value'); + const param = contentPage$('#divU').text(); + + if (!pass || !param) throw new NotFoundError('Content not found'); + + const formData = new URLSearchParams(); + formData.append('pass', pass); + formData.append('param', param); + formData.append('e2', '0'); + formData.append('server', '0'); + + const infoEndpoint = ctx.media.type === 'show' ? '/home/index/getEInfoAjax' : '/home/index/getMInfoAjax'; + const streamRes = await ctx.proxiedFetcher(infoEndpoint, { + baseUrl, + method: 'POST', + body: formData, + headers: { + referer: `${baseUrl}${showLink}`, + }, + }); + + const streamResJson: InfoResponse = JSON.parse(streamRes); + + const captions: Caption[] = []; + for (const sub of streamResJson.subs) { + // Some subtitles are named .srt, some are named :hi, or just + let language: string | null = ''; + if (sub.name.includes('.srt')) { + language = labelToLanguageCode(sub.name.split('.srt')[0]); + } else if (sub.name.includes(':')) { + language = sub.name.split(':')[0]; + } else { + language = sub.name; + } + if (!language) continue; + + captions.push({ + id: sub.path, + url: sub.path, + type: 'srt', + hasCorsRestrictions: false, + language, + }); + } + + return { + embeds: [], + stream: [ + { + id: 'primary', + playlist: streamResJson.val, + type: 'hls', + flags: [flags.IP_LOCKED], + captions, + }, + ...(streamResJson.val_bak + ? [ + { + id: 'backup', + playlist: streamResJson.val_bak, + type: 'hls' as const, + flags: [flags.IP_LOCKED], + captions, + }, + ] + : []), + ], + }; +}; + +export const soaperTvScraper = makeSourcerer({ + id: 'soapertv', + name: 'SoaperTV', + rank: 115, + flags: [flags.IP_LOCKED], + scrapeMovie: universalScraper, + scrapeShow: universalScraper, +}); diff --git a/packages/providers/src/providers/sources/soapertv/types.ts b/packages/providers/src/providers/sources/soapertv/types.ts new file mode 100644 index 0000000..70fb602 --- /dev/null +++ b/packages/providers/src/providers/sources/soapertv/types.ts @@ -0,0 +1,15 @@ +export interface Subtitle { + path: string; + name: string; +} + +export interface InfoResponse { + key: boolean; + val: string; + vtt: string; + val_bak: string; + pos: number; + type: string; + subs: Subtitle[]; + ip: string; +} diff --git a/packages/providers/src/providers/sources/tugaflix/common.ts b/packages/providers/src/providers/sources/tugaflix/common.ts new file mode 100644 index 0000000..b20063b --- /dev/null +++ b/packages/providers/src/providers/sources/tugaflix/common.ts @@ -0,0 +1,21 @@ +import { load } from 'cheerio'; + +export const baseUrl = 'https://tugaflix.best/'; + +export function parseSearch(page: string): { title: string; year?: number; url: string }[] { + const results: { title: string; year?: number; url: string }[] = []; + const $ = load(page); + + $('.items .poster').each((_, element) => { + const $link = $(element).find('a'); + const url = $link.attr('href'); + // ex title: Home Alone (1990) + const [, title, year] = $link.attr('title')?.match(/^(.*?)\s*(?:\((\d{4})\))?\s*$/) || []; + if (!title || !url) return; + + // tiles dont always have the year + results.push({ title, year: year ? parseInt(year, 10) : undefined, url }); + }); + + return results; +} diff --git a/packages/providers/src/providers/sources/tugaflix/index.ts b/packages/providers/src/providers/sources/tugaflix/index.ts new file mode 100644 index 0000000..eda8042 --- /dev/null +++ b/packages/providers/src/providers/sources/tugaflix/index.ts @@ -0,0 +1,116 @@ +import { load } from 'cheerio'; + +import { flags } from '@/entrypoint/utils/targets'; +import { SourcererEmbed, makeSourcerer } from '@/providers/base'; +import { compareMedia } from '@/utils/compare'; +import { NotFoundError } from '@/utils/errors'; + +import { baseUrl, parseSearch } from './common'; + +export const tugaflixScraper = makeSourcerer({ + id: 'tugaflix', + name: 'Tugaflix', + rank: 73, + flags: [flags.IP_LOCKED], + scrapeMovie: async (ctx) => { + const searchResults = parseSearch( + await ctx.proxiedFetcher('/filmes/', { + baseUrl, + query: { + s: ctx.media.title, + }, + }), + ); + if (searchResults.length === 0) throw new NotFoundError('No watchable item found'); + + const url = searchResults.find((x) => x && compareMedia(ctx.media, x.title, x.year))?.url; + if (!url) throw new NotFoundError('No watchable item found'); + + const videoPage = await ctx.proxiedFetcher(url, { + method: 'POST', + body: new URLSearchParams({ play: '' }), + }); + const $ = load(videoPage); + + const embeds: SourcererEmbed[] = []; + + for (const element of $('.play a')) { + const embedUrl = $(element).attr('href'); + if (!embedUrl) continue; + + const embedPage = await ctx.proxiedFetcher.full( + embedUrl.startsWith('https://') ? embedUrl : `https://${embedUrl}`, + ); + + const finalUrl = load(embedPage.body)('a:contains("Download Filme")').attr('href'); + if (!finalUrl) continue; + + if (finalUrl.includes('streamtape')) { + embeds.push({ + embedId: 'streamtape', + url: finalUrl, + }); + // found doodstream on a few shows, maybe movies use it too? + // the player 2 is just streamtape in a custom player + } else if (finalUrl.includes('dood')) { + embeds.push({ + embedId: 'dood', + url: finalUrl, + }); + } + } + + return { + embeds, + }; + }, + scrapeShow: async (ctx) => { + const searchResults = parseSearch( + await ctx.proxiedFetcher('/series/', { + baseUrl, + query: { + s: ctx.media.title, + }, + }), + ); + if (searchResults.length === 0) throw new NotFoundError('No watchable item found'); + + const url = searchResults.find((x) => x && compareMedia(ctx.media, x.title, x.year))?.url; + if (!url) throw new NotFoundError('No watchable item found'); + + const s = ctx.media.season.number < 10 ? `0${ctx.media.season.number}` : ctx.media.season.number.toString(); + const e = ctx.media.episode.number < 10 ? `0${ctx.media.episode.number}` : ctx.media.episode.number.toString(); + const videoPage = await ctx.proxiedFetcher(url, { + method: 'POST', + body: new URLSearchParams({ [`S${s}E${e}`]: '' }), + }); + + const embedUrl = load(videoPage)('iframe[name="player"]').attr('src'); + if (!embedUrl) throw new Error('Failed to find iframe'); + + const playerPage = await ctx.proxiedFetcher(embedUrl.startsWith('https:') ? embedUrl : `https:${embedUrl}`, { + method: 'POST', + body: new URLSearchParams({ submit: '' }), + }); + + const embeds: SourcererEmbed[] = []; + + const finalUrl = load(playerPage)('a:contains("Download Episodio")').attr('href'); + + if (finalUrl?.includes('streamtape')) { + embeds.push({ + embedId: 'streamtape', + url: finalUrl, + }); + } else if (finalUrl?.includes('dood')) { + embeds.push({ + embedId: 'dood', + url: finalUrl, + }); + } + + return { + embeds, + }; + }, +}); diff --git a/packages/providers/src/providers/sources/vidsrc/common.ts b/packages/providers/src/providers/sources/vidsrc/common.ts new file mode 100644 index 0000000..6f6fd71 --- /dev/null +++ b/packages/providers/src/providers/sources/vidsrc/common.ts @@ -0,0 +1,2 @@ +export const vidsrcBase = 'https://vidsrc.me'; +export const vidsrcRCPBase = 'https://vidsrc.stream'; diff --git a/packages/providers/src/providers/sources/vidsrc/index.ts b/packages/providers/src/providers/sources/vidsrc/index.ts new file mode 100644 index 0000000..d4df2f7 --- /dev/null +++ b/packages/providers/src/providers/sources/vidsrc/index.ts @@ -0,0 +1,13 @@ +import { makeSourcerer } from '@/providers/base'; +import { scrapeMovie } from '@/providers/sources/vidsrc/scrape-movie'; +import { scrapeShow } from '@/providers/sources/vidsrc/scrape-show'; + +export const vidsrcScraper = makeSourcerer({ + id: 'vidsrc', + name: 'VidSrc', + rank: 90, + disabled: true, + flags: [], + scrapeMovie, + scrapeShow, +}); diff --git a/packages/providers/src/providers/sources/vidsrc/scrape-movie.ts b/packages/providers/src/providers/sources/vidsrc/scrape-movie.ts new file mode 100644 index 0000000..585eb31 --- /dev/null +++ b/packages/providers/src/providers/sources/vidsrc/scrape-movie.ts @@ -0,0 +1,8 @@ +import { getVidSrcMovieSources } from '@/providers/sources/vidsrc/scrape'; +import { MovieScrapeContext } from '@/utils/context'; + +export async function scrapeMovie(ctx: MovieScrapeContext) { + return { + embeds: await getVidSrcMovieSources(ctx), + }; +} diff --git a/packages/providers/src/providers/sources/vidsrc/scrape-show.ts b/packages/providers/src/providers/sources/vidsrc/scrape-show.ts new file mode 100644 index 0000000..ff5d2a4 --- /dev/null +++ b/packages/providers/src/providers/sources/vidsrc/scrape-show.ts @@ -0,0 +1,8 @@ +import { getVidSrcShowSources } from '@/providers/sources/vidsrc/scrape'; +import { ShowScrapeContext } from '@/utils/context'; + +export async function scrapeShow(ctx: ShowScrapeContext) { + return { + embeds: await getVidSrcShowSources(ctx), + }; +} diff --git a/packages/providers/src/providers/sources/vidsrc/scrape.ts b/packages/providers/src/providers/sources/vidsrc/scrape.ts new file mode 100644 index 0000000..81dceff --- /dev/null +++ b/packages/providers/src/providers/sources/vidsrc/scrape.ts @@ -0,0 +1,133 @@ +import { load } from 'cheerio'; + +import { SourcererEmbed } from '@/providers/base'; +import { streambucketScraper } from '@/providers/embeds/streambucket'; +import { vidsrcembedScraper } from '@/providers/embeds/vidsrc'; +import { vidsrcBase, vidsrcRCPBase } from '@/providers/sources/vidsrc/common'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; + +function decodeSrc(encoded: string, seed: string) { + let decoded = ''; + const seedLength = seed.length; + + for (let i = 0; i < encoded.length; i += 2) { + const byte = parseInt(encoded.substr(i, 2), 16); + const seedChar = seed.charCodeAt((i / 2) % seedLength); + decoded += String.fromCharCode(byte ^ seedChar); + } + + return decoded; +} + +async function getVidSrcEmbeds(ctx: MovieScrapeContext | ShowScrapeContext, startingURL: string) { + // VidSrc works by using hashes and a redirect system. + // The hashes are stored in the html, and VidSrc will + // make requests to their servers with the hash. This + // will trigger a 302 response with a Location header + // sending the user to the correct embed. To get the + // real embed links, we must do the same. Slow, but + // required + + const embeds: SourcererEmbed[] = []; + + let html = await ctx.proxiedFetcher(startingURL, { + baseUrl: vidsrcBase, + }); + + let $ = load(html); + + const sourceHashes = $('.server[data-hash]') + .toArray() + .map((el) => $(el).attr('data-hash')) + .filter((hash) => hash !== undefined); + + for (const hash of sourceHashes) { + html = await ctx.proxiedFetcher(`/rcp/${hash}`, { + baseUrl: vidsrcRCPBase, + headers: { + referer: vidsrcBase, + }, + }); + + $ = load(html); + const encoded = $('#hidden').attr('data-h'); + const seed = $('body').attr('data-i'); + + if (!encoded || !seed) { + throw new Error('Failed to find encoded iframe src'); + } + + let redirectURL = decodeSrc(encoded, seed); + if (redirectURL.startsWith('//')) { + redirectURL = `https:${redirectURL}`; + } + + const { finalUrl } = await ctx.proxiedFetcher.full(redirectURL, { + method: 'HEAD', + headers: { + referer: vidsrcBase, + }, + }); + + const embed: SourcererEmbed = { + embedId: '', + url: finalUrl, + }; + + const parsedUrl = new URL(finalUrl); + + switch (parsedUrl.host) { + case 'vidsrc.stream': + embed.embedId = vidsrcembedScraper.id; + break; + case 'streambucket.net': + embed.embedId = streambucketScraper.id; + break; + case '2embed.cc': + case 'www.2embed.cc': + // Just ignore this. This embed just sources from other embeds we can scrape as a 'source' + break; + case 'player-cdn.com': + // Just ignore this. This embed streams video over a custom WebSocket connection + break; + default: + throw new Error(`Failed to find VidSrc embed source for ${finalUrl}`); + } + + // Since some embeds are ignored on purpose, check if a valid one was found + if (embed.embedId !== '') { + embeds.push(embed); + } + } + + return embeds; +} + +export async function getVidSrcMovieSources(ctx: MovieScrapeContext) { + return getVidSrcEmbeds(ctx, `/embed/${ctx.media.tmdbId}`); +} + +export async function getVidSrcShowSources(ctx: ShowScrapeContext) { + // VidSrc will always default to season 1 episode 1 + // no matter what embed URL is used. It sends back + // a list of ALL the shows episodes, in order, for + // all seasons. To get the real embed URL, have to + // parse this from the response + const html = await ctx.proxiedFetcher(`/embed/${ctx.media.tmdbId}`, { + baseUrl: vidsrcBase, + }); + + const $ = load(html); + + const episodeElement = $(`.ep[data-s="${ctx.media.season.number}"][data-e="${ctx.media.episode.number}"]`).first(); + if (episodeElement.length === 0) { + throw new Error('failed to find episode element'); + } + + const startingURL = episodeElement.attr('data-iframe'); + if (!startingURL) { + throw new Error('failed to find episode starting URL'); + } + + return getVidSrcEmbeds(ctx, startingURL); +} diff --git a/packages/providers/src/providers/sources/vidsrcto/common.ts b/packages/providers/src/providers/sources/vidsrcto/common.ts new file mode 100644 index 0000000..33c436e --- /dev/null +++ b/packages/providers/src/providers/sources/vidsrcto/common.ts @@ -0,0 +1,49 @@ +// This file is based on https://github.com/Ciarands/vidsrc-to-resolver/blob/dffa45e726a4b944cb9af0c9e7630476c93c0213/vidsrc.py#L16 +// Full credits to @Ciarands! + +const DECRYPTION_KEY = 'WXrUARXb1aDLaZjI'; + +export const decodeBase64UrlSafe = (str: string) => { + const standardizedInput = str.replace(/_/g, '/').replace(/-/g, '+'); + const decodedData = atob(standardizedInput); + + const bytes = new Uint8Array(decodedData.length); + for (let i = 0; i < bytes.length; i += 1) { + bytes[i] = decodedData.charCodeAt(i); + } + + return bytes; +}; + +export const decodeData = (key: string, data: any) => { + const state = Array.from(Array(256).keys()); + let index1 = 0; + for (let i = 0; i < 256; i += 1) { + index1 = (index1 + state[i] + key.charCodeAt(i % key.length)) % 256; + const temp = state[i]; + state[i] = state[index1]; + state[index1] = temp; + } + index1 = 0; + let index2 = 0; + let finalKey = ''; + for (let char = 0; char < data.length; char += 1) { + index1 = (index1 + 1) % 256; + index2 = (index2 + state[index1]) % 256; + const temp = state[index1]; + state[index1] = state[index2]; + state[index2] = temp; + if (typeof data[char] === 'string') { + finalKey += String.fromCharCode(data[char].charCodeAt(0) ^ state[(state[index1] + state[index2]) % 256]); + } else if (typeof data[char] === 'number') { + finalKey += String.fromCharCode(data[char] ^ state[(state[index1] + state[index2]) % 256]); + } + } + return finalKey; +}; + +export const decryptSourceUrl = (sourceUrl: string) => { + const encoded = decodeBase64UrlSafe(sourceUrl); + const decoded = decodeData(DECRYPTION_KEY, encoded); + return decodeURIComponent(decodeURIComponent(decoded)); +}; diff --git a/packages/providers/src/providers/sources/vidsrcto/index.ts b/packages/providers/src/providers/sources/vidsrcto/index.ts new file mode 100644 index 0000000..3bb7b92 --- /dev/null +++ b/packages/providers/src/providers/sources/vidsrcto/index.ts @@ -0,0 +1,88 @@ +import { load } from 'cheerio'; + +import { SourcererEmbed, SourcererOutput, makeSourcerer } from '@/providers/base'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; + +import { decryptSourceUrl } from './common'; +import { SourceResult, SourcesResult } from './types'; + +const vidSrcToBase = 'https://vidsrc.to'; +const referer = `${vidSrcToBase}/`; + +const universalScraper = async (ctx: ShowScrapeContext | MovieScrapeContext): Promise => { + const mediaId = ctx.media.imdbId ?? ctx.media.tmdbId; + const url = + ctx.media.type === 'movie' + ? `/embed/movie/${mediaId}` + : `/embed/tv/${mediaId}/${ctx.media.season.number}/${ctx.media.episode.number}`; + const mainPage = await ctx.proxiedFetcher(url, { + baseUrl: vidSrcToBase, + headers: { + referer, + }, + }); + const mainPage$ = load(mainPage); + const dataId = mainPage$('a[data-id]').attr('data-id'); + if (!dataId) throw new Error('No data-id found'); + const sources = await ctx.proxiedFetcher(`/ajax/embed/episode/${dataId}/sources`, { + baseUrl: vidSrcToBase, + headers: { + referer, + }, + }); + if (sources.status !== 200) throw new Error('No sources found'); + + const embeds: SourcererEmbed[] = []; + const embedArr = []; + for (const source of sources.result) { + const sourceRes = await ctx.proxiedFetcher(`/ajax/embed/source/${source.id}`, { + baseUrl: vidSrcToBase, + headers: { + referer, + }, + }); + const decryptedUrl = decryptSourceUrl(sourceRes.result.url); + embedArr.push({ source: source.title, url: decryptedUrl }); + } + + for (const embedObj of embedArr) { + if (embedObj.source === 'Vidplay') { + const fullUrl = new URL(embedObj.url); + embeds.push({ + embedId: 'vidplay', + url: fullUrl.toString(), + }); + } + + if (embedObj.source === 'Filemoon') { + const fullUrl = new URL(embedObj.url); + // Originally Filemoon does not have subtitles. But we can use the ones from Vidplay. + const urlWithSubtitles = embedArr.find((v) => v.source === 'Vidplay' && v.url.includes('sub.info'))?.url; + const subtitleUrl = urlWithSubtitles ? new URL(urlWithSubtitles).searchParams.get('sub.info') : null; + if (subtitleUrl) fullUrl.searchParams.set('sub.info', subtitleUrl); + embeds.push( + { + embedId: 'filemoon', + url: fullUrl.toString(), + }, + { + embedId: 'filemoon-mp4', + url: fullUrl.toString(), + }, + ); + } + } + + return { + embeds, + }; +}; + +export const vidSrcToScraper = makeSourcerer({ + id: 'vidsrcto', + name: 'VidSrcTo', + scrapeMovie: universalScraper, + scrapeShow: universalScraper, + flags: [], + rank: 130, +}); diff --git a/packages/providers/src/providers/sources/vidsrcto/types.ts b/packages/providers/src/providers/sources/vidsrcto/types.ts new file mode 100644 index 0000000..0694b15 --- /dev/null +++ b/packages/providers/src/providers/sources/vidsrcto/types.ts @@ -0,0 +1,15 @@ +export type VidSrcToResponse = { + status: number; + result: T; +}; + +export type SourcesResult = VidSrcToResponse< + { + id: string; + title: 'Filemoon' | 'Vidplay'; + }[] +>; + +export type SourceResult = VidSrcToResponse<{ + url: string; +}>; diff --git a/packages/providers/src/providers/sources/warezcdn/common.ts b/packages/providers/src/providers/sources/warezcdn/common.ts new file mode 100644 index 0000000..182b2b6 --- /dev/null +++ b/packages/providers/src/providers/sources/warezcdn/common.ts @@ -0,0 +1,24 @@ +import { ScrapeContext } from '@/utils/context'; + +export const warezcdnBase = 'https://embed.warezcdn.com'; +export const warezcdnApiBase = 'https://warezcdn.com/embed'; +export const warezcdnPlayerBase = 'https://warezcdn.com/player'; +export const warezcdnWorkerProxy = 'https://workerproxy.warezcdn.workers.dev'; + +export async function getExternalPlayerUrl(ctx: ScrapeContext, embedId: string, embedUrl: string) { + const params = { + id: embedUrl, + sv: embedId, + }; + const realUrl = await ctx.proxiedFetcher(`/getPlay.php`, { + baseUrl: warezcdnApiBase, + headers: { + Referer: `${warezcdnApiBase}/getEmbed.php?${new URLSearchParams(params)}`, + }, + query: params, + }); + + const realEmbedUrl = realUrl.match(/window\.location\.href="([^"]*)";/); + if (!realEmbedUrl) throw new Error('Could not find embed url'); + return realEmbedUrl[1]; +} diff --git a/packages/providers/src/providers/sources/warezcdn/index.ts b/packages/providers/src/providers/sources/warezcdn/index.ts new file mode 100644 index 0000000..f27b052 --- /dev/null +++ b/packages/providers/src/providers/sources/warezcdn/index.ts @@ -0,0 +1,114 @@ +import { load } from 'cheerio'; + +import { flags } from '@/entrypoint/utils/targets'; +import { SourcererEmbed, makeSourcerer } from '@/providers/base'; +import { mixdropScraper } from '@/providers/embeds/mixdrop'; +import { warezcdnembedHlsScraper } from '@/providers/embeds/warezcdn/hls'; +import { warezcdnembedMp4Scraper } from '@/providers/embeds/warezcdn/mp4'; +import { NotFoundError } from '@/utils/errors'; + +import { getExternalPlayerUrl, warezcdnBase } from './common'; +import { SerieAjaxResponse } from './types'; + +export const warezcdnScraper = makeSourcerer({ + id: 'warezcdn', + name: 'WarezCDN', + rank: 81, + flags: [flags.CORS_ALLOWED], + scrapeMovie: async (ctx) => { + if (!ctx.media.imdbId) throw new NotFoundError('This source requires IMDB id.'); + + const serversPage = await ctx.proxiedFetcher(`/filme/${ctx.media.imdbId}`, { + baseUrl: warezcdnBase, + }); + const $ = load(serversPage); + + const embedsHost = $('.hostList.active [data-load-embed]').get(); + + const embeds: SourcererEmbed[] = []; + + embedsHost.forEach(async (element) => { + const embedHost = $(element).attr('data-load-embed-host')!; + const embedUrl = $(element).attr('data-load-embed')!; + + if (embedHost === 'mixdrop') { + const realEmbedUrl = await getExternalPlayerUrl(ctx, 'mixdrop', embedUrl); + if (!realEmbedUrl) throw new Error('Could not find embed url'); + embeds.push({ + embedId: mixdropScraper.id, + url: realEmbedUrl, + }); + } else if (embedHost === 'warezcdn') { + embeds.push( + { + embedId: warezcdnembedHlsScraper.id, + url: embedUrl, + }, + { + embedId: warezcdnembedMp4Scraper.id, + url: embedUrl, + }, + ); + } + }); + + return { + embeds, + }; + }, + scrapeShow: async (ctx) => { + if (!ctx.media.imdbId) throw new NotFoundError('This source requires IMDB id.'); + + const url = `${warezcdnBase}/serie/${ctx.media.imdbId}/${ctx.media.season.number}/${ctx.media.episode.number}`; + + const serversPage = await ctx.proxiedFetcher(url); + + const episodeId = serversPage.match(/\$\('\[data-load-episode-content="(\d+)"\]'\)/)?.[1]; + + if (!episodeId) throw new NotFoundError('Failed to find episode id'); + + const streamsData = await ctx.proxiedFetcher(`/serieAjax.php`, { + method: 'POST', + baseUrl: warezcdnBase, + body: new URLSearchParams({ + getAudios: episodeId, + }), + headers: { + Origin: warezcdnBase, + Referer: url, + 'X-Requested-With': 'XMLHttpRequest', + }, + }); + + const streams: SerieAjaxResponse = JSON.parse(streamsData); + const list = streams.list['0']; + const embeds: SourcererEmbed[] = []; + + // 3 means ok + if (list.mixdropStatus === '3') { + const realEmbedUrl = await getExternalPlayerUrl(ctx, 'mixdrop', list.id); + if (!realEmbedUrl) throw new Error('Could not find embed url'); + embeds.push({ + embedId: mixdropScraper.id, + url: realEmbedUrl, + }); + } + + if (list.warezcdnStatus === '3') { + embeds.push( + { + embedId: warezcdnembedHlsScraper.id, + url: list.id, + }, + { + embedId: warezcdnembedMp4Scraper.id, + url: list.id, + }, + ); + } + + return { + embeds, + }; + }, +}); diff --git a/packages/providers/src/providers/sources/warezcdn/types.ts b/packages/providers/src/providers/sources/warezcdn/types.ts new file mode 100644 index 0000000..38711ff --- /dev/null +++ b/packages/providers/src/providers/sources/warezcdn/types.ts @@ -0,0 +1,16 @@ +interface Data { + id: string; + audio: string; + mixdropStatus: string; + fembedStatus: string; + streamtapeStatus: string; + warezcdnStatus: string; +} + +type List = { + [key: string]: Data; +}; + +export interface SerieAjaxResponse { + list: List; +} diff --git a/packages/providers/src/providers/sources/zoechip/common.ts b/packages/providers/src/providers/sources/zoechip/common.ts new file mode 100644 index 0000000..55b37ac --- /dev/null +++ b/packages/providers/src/providers/sources/zoechip/common.ts @@ -0,0 +1,71 @@ +import { mixdropScraper } from '@/providers/embeds/mixdrop'; +import { upcloudScraper } from '@/providers/embeds/upcloud'; +import { upstreamScraper } from '@/providers/embeds/upstream'; +import { vidCloudScraper } from '@/providers/embeds/vidcloud'; +import { getZoeChipSourceURL, getZoeChipSources } from '@/providers/sources/zoechip/scrape'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; + +export const zoeBase = 'https://zoechip.cc'; + +export type ZoeChipSourceDetails = { + type: string; // Only seen "iframe" so far + link: string; + sources: string[]; // Never seen this populated, assuming it's a string array + tracks: string[]; // Never seen this populated, assuming it's a string array + title: string; +}; + +export async function formatSource( + ctx: MovieScrapeContext | ShowScrapeContext, + source: { embed: string; episodeId: string }, +) { + const link = await getZoeChipSourceURL(ctx, source.episodeId); + if (link) { + const embed = { + embedId: '', + url: link, + }; + + const parsedUrl = new URL(link); + + switch (parsedUrl.host) { + case 'rabbitstream.net': + embed.embedId = upcloudScraper.id; + break; + case 'upstream.to': + embed.embedId = upstreamScraper.id; + break; + case 'mixdrop.co': + embed.embedId = mixdropScraper.id; + break; + default: + return null; + } + + return embed; + } +} + +export async function createZoeChipStreamData(ctx: MovieScrapeContext | ShowScrapeContext, id: string) { + const sources = await getZoeChipSources(ctx, id); + const embeds: { + embedId: string; + url: string; + }[] = []; + + for (const source of sources) { + const formatted = await formatSource(ctx, source); + if (formatted) { + // Zoechip does not return titles for their sources, so we can not check if a source is upcloud or vidcloud because the domain is the same. + const upCloudAlreadyExists = embeds.find((e) => e.embedId === upcloudScraper.id); + if (formatted.embedId === upcloudScraper.id && upCloudAlreadyExists) { + formatted.embedId = vidCloudScraper.id; + } + embeds.push(formatted); + } + } + + return { + embeds, + }; +} diff --git a/packages/providers/src/providers/sources/zoechip/index.ts b/packages/providers/src/providers/sources/zoechip/index.ts new file mode 100644 index 0000000..6a991a0 --- /dev/null +++ b/packages/providers/src/providers/sources/zoechip/index.ts @@ -0,0 +1,14 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { makeSourcerer } from '@/providers/base'; +import { scrapeMovie } from '@/providers/sources/zoechip/scrape-movie'; +import { scrapeShow } from '@/providers/sources/zoechip/scrape-show'; + +export const zoechipScraper = makeSourcerer({ + id: 'zoechip', + name: 'ZoeChip', + rank: 62, + flags: [flags.CORS_ALLOWED], + disabled: true, + scrapeMovie, + scrapeShow, +}); diff --git a/packages/providers/src/providers/sources/zoechip/scrape-movie.ts b/packages/providers/src/providers/sources/zoechip/scrape-movie.ts new file mode 100644 index 0000000..86161fc --- /dev/null +++ b/packages/providers/src/providers/sources/zoechip/scrape-movie.ts @@ -0,0 +1,13 @@ +import { createZoeChipStreamData } from '@/providers/sources/zoechip/common'; +import { getZoeChipMovieID } from '@/providers/sources/zoechip/search'; +import { MovieScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +export async function scrapeMovie(ctx: MovieScrapeContext) { + const movieID = await getZoeChipMovieID(ctx, ctx.media); + if (!movieID) { + throw new NotFoundError('no search results match'); + } + + return createZoeChipStreamData(ctx, movieID); +} diff --git a/packages/providers/src/providers/sources/zoechip/scrape-show.ts b/packages/providers/src/providers/sources/zoechip/scrape-show.ts new file mode 100644 index 0000000..fe9f4eb --- /dev/null +++ b/packages/providers/src/providers/sources/zoechip/scrape-show.ts @@ -0,0 +1,24 @@ +import { createZoeChipStreamData } from '@/providers/sources/zoechip/common'; +import { getZoeChipEpisodeID, getZoeChipSeasonID } from '@/providers/sources/zoechip/scrape'; +import { getZoeChipShowID } from '@/providers/sources/zoechip/search'; +import { ShowScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +export async function scrapeShow(ctx: ShowScrapeContext) { + const showID = await getZoeChipShowID(ctx, ctx.media); + if (!showID) { + throw new NotFoundError('no search results match'); + } + + const seasonID = await getZoeChipSeasonID(ctx, ctx.media, showID); + if (!seasonID) { + throw new NotFoundError('no season found'); + } + + const episodeID = await getZoeChipEpisodeID(ctx, ctx.media, seasonID); + if (!episodeID) { + throw new NotFoundError('no episode found'); + } + + return createZoeChipStreamData(ctx, episodeID); +} diff --git a/packages/providers/src/providers/sources/zoechip/scrape.ts b/packages/providers/src/providers/sources/zoechip/scrape.ts new file mode 100644 index 0000000..d3eb183 --- /dev/null +++ b/packages/providers/src/providers/sources/zoechip/scrape.ts @@ -0,0 +1,126 @@ +import { load } from 'cheerio'; + +import { ShowMedia } from '@/entrypoint/utils/media'; +import { ZoeChipSourceDetails, zoeBase } from '@/providers/sources/zoechip/common'; +import { MovieScrapeContext, ScrapeContext, ShowScrapeContext } from '@/utils/context'; + +export async function getZoeChipSources(ctx: MovieScrapeContext | ShowScrapeContext, id: string) { + // Movies use /ajax/episode/list/ID + // Shows use /ajax/episode/servers/ID + const endpoint = ctx.media.type === 'movie' ? 'list' : 'servers'; + const html = await ctx.proxiedFetcher(`/ajax/episode/${endpoint}/${id}`, { + baseUrl: zoeBase, + }); + const $ = load(html); + + return $('.nav-item a') + .toArray() + .map((el) => { + // Movies use data-linkid + // Shows use data-id + const idAttribute = ctx.media.type === 'movie' ? 'data-linkid' : 'data-id'; + const element = $(el); + const embedTitle = element.attr('title'); + const linkId = element.attr(idAttribute); + + if (!embedTitle || !linkId) { + throw new Error('invalid sources'); + } + + return { + embed: embedTitle, + episodeId: linkId, + }; + }); +} + +export async function getZoeChipSourceURL(ctx: ScrapeContext, sourceID: string): Promise { + const details = await ctx.proxiedFetcher(`/ajax/sources/${sourceID}`, { + baseUrl: zoeBase, + }); + + // TODO - Support non-iframe sources + if (details.type !== 'iframe') { + return null; + } + + // TODO - Extract the other data from the source + + return details.link; +} + +export async function getZoeChipSeasonID(ctx: ScrapeContext, media: ShowMedia, showID: string): Promise { + const html = await ctx.proxiedFetcher(`/ajax/season/list/${showID}`, { + baseUrl: zoeBase, + }); + + const $ = load(html); + + const seasons = $('.dropdown-menu a') + .toArray() + .map((el) => { + const element = $(el); + const seasonID = element.attr('data-id'); + const seasonNumber = element.html()?.split(' ')[1]; + + if (!seasonID || !seasonNumber || Number.isNaN(Number(seasonNumber))) { + throw new Error('invalid season'); + } + + return { + id: seasonID, + season: Number(seasonNumber), + }; + }); + + const foundSeason = seasons.find((season) => season.season === media.season.number); + + if (!foundSeason) { + return null; + } + + return foundSeason.id; +} + +export async function getZoeChipEpisodeID( + ctx: ScrapeContext, + media: ShowMedia, + seasonID: string, +): Promise { + const episodeNumberRegex = /Eps (\d*):/; + const html = await ctx.proxiedFetcher(`/ajax/season/episodes/${seasonID}`, { + baseUrl: zoeBase, + }); + + const $ = load(html); + + const episodes = $('.eps-item') + .toArray() + .map((el) => { + const element = $(el); + const episodeID = element.attr('data-id'); + const title = element.attr('title'); + + if (!episodeID || !title) { + throw new Error('invalid episode'); + } + + const regexResult = title.match(episodeNumberRegex); + if (!regexResult || Number.isNaN(Number(regexResult[1]))) { + throw new Error('invalid episode'); + } + + return { + id: episodeID, + episode: Number(regexResult[1]), + }; + }); + + const foundEpisode = episodes.find((episode) => episode.episode === media.episode.number); + + if (!foundEpisode) { + return null; + } + + return foundEpisode.id; +} diff --git a/packages/providers/src/providers/sources/zoechip/search.ts b/packages/providers/src/providers/sources/zoechip/search.ts new file mode 100644 index 0000000..f3a838d --- /dev/null +++ b/packages/providers/src/providers/sources/zoechip/search.ts @@ -0,0 +1,111 @@ +import { load } from 'cheerio'; + +import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import { zoeBase } from '@/providers/sources/zoechip/common'; +import { compareMedia } from '@/utils/compare'; +import { ScrapeContext } from '@/utils/context'; + +export async function getZoeChipSearchResults(ctx: ScrapeContext, media: MovieMedia | ShowMedia) { + const titleCleaned = media.title.toLocaleLowerCase().replace(/ /g, '-'); + + const html = await ctx.proxiedFetcher(`/search/${titleCleaned}`, { + baseUrl: zoeBase, + }); + + const $ = load(html); + return $('.film_list-wrap .flw-item .film-detail') + .toArray() + .map((element) => { + const movie = $(element); + const anchor = movie.find('.film-name a'); + const info = movie.find('.fd-infor'); + + const title = anchor.attr('title'); + const href = anchor.attr('href'); + const type = info.find('.fdi-type').html(); + let year = info.find('.fdi-item').html(); + const id = href?.split('-').pop(); + + if (!title) { + return null; + } + + if (!href) { + return null; + } + + if (!type) { + return null; + } + + // TV shows on ZoeChip do not have a year in their search results + // Allow TV shows to pass this failure + if (!year || Number.isNaN(Number(year))) { + if (type === 'TV') { + year = '0'; + } else { + return null; + } + } + + if (!id) { + return null; + } + + return { + title, + year: Number(year), + id, + type, + href, + }; + }); +} + +export async function getZoeChipMovieID(ctx: ScrapeContext, media: MovieMedia): Promise { + const searchResults = await getZoeChipSearchResults(ctx, media); + + const matchingItem = searchResults.find((v) => v && v.type === 'Movie' && compareMedia(media, v.title, v.year)); + + if (!matchingItem) { + return null; + } + + return matchingItem.id; +} + +export async function getZoeChipShowID(ctx: ScrapeContext, media: ShowMedia): Promise { + // ZoeChip TV shows don't have a year on their search results + // This makes it hard to filter between shows with the same name + // To find the year, we must query each shows details page + // This is slower, but more reliable + + const releasedRegex = /<\/strong><\/span> (\d.*)-\d.*-\d.*/; + const searchResults = await getZoeChipSearchResults(ctx, media); + + const filtered = searchResults.filter((v) => v && v.type === 'TV' && compareMedia(media, v.title)); + + for (const result of filtered) { + // This gets filtered above but the linter Gods don't think so + if (!result) { + continue; + } + + const html = await ctx.proxiedFetcher(result.href, { + baseUrl: zoeBase, + }); + + // The HTML is not structured in a way that makes using Cheerio clean + // There are no unique IDs or classes to query, resulting in long ugly queries + // Regex is faster and cleaner in this case + const regexResult = html.match(releasedRegex); + if (regexResult) { + const year = Number(regexResult[1]); + if (!Number.isNaN(year) && compareMedia(media, result.title, year)) { + return result.id; + } + } + } + + return null; +} diff --git a/packages/providers/src/providers/streams.ts b/packages/providers/src/providers/streams.ts new file mode 100644 index 0000000..17567a4 --- /dev/null +++ b/packages/providers/src/providers/streams.ts @@ -0,0 +1,35 @@ +import { Flags } from '@/entrypoint/utils/targets'; +import { Caption } from '@/providers/captions'; + +export type StreamFile = { + type: 'mp4'; + url: string; +}; + +export type Qualities = 'unknown' | '360' | '480' | '720' | '1080' | '4k'; + +type ThumbnailTrack = { + type: 'vtt'; + url: string; +}; + +type StreamCommon = { + id: string; // only unique per output + flags: Flags[]; + captions: Caption[]; + thumbnailTrack?: ThumbnailTrack; + headers?: Record; // these headers HAVE to be set to watch the stream + preferredHeaders?: Record; // these headers are optional, would improve the stream +}; + +export type FileBasedStream = StreamCommon & { + type: 'file'; + qualities: Partial>; +}; + +export type HlsBasedStream = StreamCommon & { + type: 'hls'; + playlist: string; +}; + +export type Stream = FileBasedStream | HlsBasedStream; diff --git a/packages/providers/src/runners/individualRunner.ts b/packages/providers/src/runners/individualRunner.ts new file mode 100644 index 0000000..b309180 --- /dev/null +++ b/packages/providers/src/runners/individualRunner.ts @@ -0,0 +1,120 @@ +import { IndividualScraperEvents } from '@/entrypoint/utils/events'; +import { ScrapeMedia } from '@/entrypoint/utils/media'; +import { FeatureMap, flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; +import { UseableFetcher } from '@/fetchers/types'; +import { EmbedOutput, SourcererOutput } from '@/providers/base'; +import { ProviderList } from '@/providers/get'; +import { ScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; +import { isValidStream, validatePlayableStreams } from '@/utils/valid'; + +export type IndividualSourceRunnerOptions = { + features: FeatureMap; + fetcher: UseableFetcher; + proxiedFetcher: UseableFetcher; + media: ScrapeMedia; + id: string; + events?: IndividualScraperEvents; +}; + +export async function scrapeInvidualSource( + list: ProviderList, + ops: IndividualSourceRunnerOptions, +): Promise { + const sourceScraper = list.sources.find((v) => ops.id === v.id); + if (!sourceScraper) throw new Error('Source with ID not found'); + if (ops.media.type === 'movie' && !sourceScraper.scrapeMovie) throw new Error('Source is not compatible with movies'); + if (ops.media.type === 'show' && !sourceScraper.scrapeShow) throw new Error('Source is not compatible with shows'); + + const contextBase: ScrapeContext = { + fetcher: ops.fetcher, + proxiedFetcher: ops.proxiedFetcher, + progress(val) { + ops.events?.update?.({ + id: sourceScraper.id, + percentage: val, + status: 'pending', + }); + }, + }; + + let output: SourcererOutput | null = null; + if (ops.media.type === 'movie' && sourceScraper.scrapeMovie) + output = await sourceScraper.scrapeMovie({ + ...contextBase, + media: ops.media, + }); + else if (ops.media.type === 'show' && sourceScraper.scrapeShow) + output = await sourceScraper.scrapeShow({ + ...contextBase, + media: ops.media, + }); + + // filter output with only valid streams + if (output?.stream) { + output.stream = output.stream + .filter((stream) => isValidStream(stream)) + .filter((stream) => flagsAllowedInFeatures(ops.features, stream.flags)); + } + + if (!output) throw new Error('output is null'); + + // filter output with only valid embeds that are not disabled + output.embeds = output.embeds.filter((embed) => { + const e = list.embeds.find((v) => v.id === embed.embedId); + if (!e || e.disabled) return false; + return true; + }); + + if ((!output.stream || output.stream.length === 0) && output.embeds.length === 0) + throw new NotFoundError('No streams found'); + + // only check for playable streams if there are streams, and if there are no embeds + if (output.stream && output.stream.length > 0 && output.embeds.length === 0) { + const playableStreams = await validatePlayableStreams(output.stream, ops, sourceScraper.id); + if (playableStreams.length === 0) throw new NotFoundError('No playable streams found'); + output.stream = playableStreams; + } + return output; +} + +export type IndividualEmbedRunnerOptions = { + features: FeatureMap; + fetcher: UseableFetcher; + proxiedFetcher: UseableFetcher; + url: string; + id: string; + events?: IndividualScraperEvents; +}; + +export async function scrapeIndividualEmbed( + list: ProviderList, + ops: IndividualEmbedRunnerOptions, +): Promise { + const embedScraper = list.embeds.find((v) => ops.id === v.id); + if (!embedScraper) throw new Error('Embed with ID not found'); + + const output = await embedScraper.scrape({ + fetcher: ops.fetcher, + proxiedFetcher: ops.proxiedFetcher, + url: ops.url, + progress(val) { + ops.events?.update?.({ + id: embedScraper.id, + percentage: val, + status: 'pending', + }); + }, + }); + + output.stream = output.stream + .filter((stream) => isValidStream(stream)) + .filter((stream) => flagsAllowedInFeatures(ops.features, stream.flags)); + if (output.stream.length === 0) throw new NotFoundError('No streams found'); + + const playableStreams = await validatePlayableStreams(output.stream, ops, embedScraper.id); + if (playableStreams.length === 0) throw new NotFoundError('No playable streams found'); + output.stream = playableStreams; + + return output; +} diff --git a/packages/providers/src/runners/runner.ts b/packages/providers/src/runners/runner.ts new file mode 100644 index 0000000..c5f5de3 --- /dev/null +++ b/packages/providers/src/runners/runner.ts @@ -0,0 +1,180 @@ +import { FullScraperEvents, UpdateEvent } from '@/entrypoint/utils/events'; +import { ScrapeMedia } from '@/entrypoint/utils/media'; +import { FeatureMap, flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; +import { UseableFetcher } from '@/fetchers/types'; +import { EmbedOutput, SourcererOutput } from '@/providers/base'; +import { ProviderList } from '@/providers/get'; +import { Stream } from '@/providers/streams'; +import { ScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; +import { reorderOnIdList } from '@/utils/list'; +import { isValidStream, validatePlayableStream } from '@/utils/valid'; + +export type RunOutput = { + sourceId: string; + embedId?: string; + stream: Stream; +}; + +export type SourceRunOutput = { + sourceId: string; + stream: Stream[]; + embeds: []; +}; + +export type EmbedRunOutput = { + embedId: string; + stream: Stream[]; +}; + +export type ProviderRunnerOptions = { + fetcher: UseableFetcher; + proxiedFetcher: UseableFetcher; + features: FeatureMap; + sourceOrder?: string[]; + embedOrder?: string[]; + events?: FullScraperEvents; + media: ScrapeMedia; +}; + +export async function runAllProviders(list: ProviderList, ops: ProviderRunnerOptions): Promise { + const sources = reorderOnIdList(ops.sourceOrder ?? [], list.sources).filter((source) => { + if (ops.media.type === 'movie') return !!source.scrapeMovie; + if (ops.media.type === 'show') return !!source.scrapeShow; + return false; + }); + const embeds = reorderOnIdList(ops.embedOrder ?? [], list.embeds); + const embedIds = embeds.map((embed) => embed.id); + let lastId = ''; + + const contextBase: ScrapeContext = { + fetcher: ops.fetcher, + proxiedFetcher: ops.proxiedFetcher, + progress(val) { + ops.events?.update?.({ + id: lastId, + percentage: val, + status: 'pending', + }); + }, + }; + + ops.events?.init?.({ + sourceIds: sources.map((v) => v.id), + }); + + for (const source of sources) { + ops.events?.start?.(source.id); + lastId = source.id; + + // run source scrapers + let output: SourcererOutput | null = null; + try { + if (ops.media.type === 'movie' && source.scrapeMovie) + output = await source.scrapeMovie({ + ...contextBase, + media: ops.media, + }); + else if (ops.media.type === 'show' && source.scrapeShow) + output = await source.scrapeShow({ + ...contextBase, + media: ops.media, + }); + if (output) { + output.stream = (output.stream ?? []) + .filter(isValidStream) + .filter((stream) => flagsAllowedInFeatures(ops.features, stream.flags)); + } + if (!output || (!output.stream?.length && !output.embeds.length)) { + throw new NotFoundError('No streams found'); + } + } catch (error) { + const updateParams: UpdateEvent = { + id: source.id, + percentage: 100, + status: error instanceof NotFoundError ? 'notfound' : 'failure', + reason: error instanceof NotFoundError ? error.message : undefined, + error: error instanceof NotFoundError ? undefined : error, + }; + + ops.events?.update?.(updateParams); + continue; + } + if (!output) throw new Error('Invalid media type'); + + // return stream is there are any + if (output.stream?.[0]) { + const playableStream = await validatePlayableStream(output.stream[0], ops, source.id); + if (!playableStream) throw new NotFoundError('No streams found'); + return { + sourceId: source.id, + stream: playableStream, + }; + } + + // filter disabled and run embed scrapers on listed embeds + const sortedEmbeds = output.embeds + .filter((embed) => { + const e = list.embeds.find((v) => v.id === embed.embedId); + return e && !e.disabled; + }) + .sort((a, b) => embedIds.indexOf(a.embedId) - embedIds.indexOf(b.embedId)); + + if (sortedEmbeds.length > 0) { + ops.events?.discoverEmbeds?.({ + embeds: sortedEmbeds.map((embed, i) => ({ + id: [source.id, i].join('-'), + embedScraperId: embed.embedId, + })), + sourceId: source.id, + }); + } + + for (const [ind, embed] of sortedEmbeds.entries()) { + const scraper = embeds.find((v) => v.id === embed.embedId); + if (!scraper) throw new Error('Invalid embed returned'); + + // run embed scraper + const id = [source.id, ind].join('-'); + ops.events?.start?.(id); + lastId = id; + + let embedOutput: EmbedOutput; + try { + embedOutput = await scraper.scrape({ + ...contextBase, + url: embed.url, + }); + embedOutput.stream = embedOutput.stream + .filter(isValidStream) + .filter((stream) => flagsAllowedInFeatures(ops.features, stream.flags)); + if (embedOutput.stream.length === 0) { + throw new NotFoundError('No streams found'); + } + const playableStream = await validatePlayableStream(embedOutput.stream[0], ops, embed.embedId); + if (!playableStream) throw new NotFoundError('No streams found'); + embedOutput.stream = [playableStream]; + } catch (error) { + const updateParams: UpdateEvent = { + id: source.id, + percentage: 100, + status: error instanceof NotFoundError ? 'notfound' : 'failure', + reason: error instanceof NotFoundError ? error.message : undefined, + error: error instanceof NotFoundError ? undefined : error, + }; + + ops.events?.update?.(updateParams); + continue; + } + + return { + sourceId: source.id, + embedId: scraper.id, + stream: embedOutput.stream[0], + }; + } + } + + // no providers or embeds returns streams + return null; +} diff --git a/packages/providers/src/utils/compare.ts b/packages/providers/src/utils/compare.ts new file mode 100644 index 0000000..7db784e --- /dev/null +++ b/packages/providers/src/utils/compare.ts @@ -0,0 +1,22 @@ +import { CommonMedia } from '@/entrypoint/utils/media'; + +export function normalizeTitle(title: string): string { + let titleTrimmed = title.trim().toLowerCase(); + if (titleTrimmed !== 'the movie' && titleTrimmed.endsWith('the movie')) { + titleTrimmed = titleTrimmed.replace('the movie', ''); + } + if (titleTrimmed !== 'the series' && titleTrimmed.endsWith('the series')) { + titleTrimmed = titleTrimmed.replace('the series', ''); + } + return titleTrimmed.replace(/['":]/g, '').replace(/[^a-zA-Z0-9]+/g, '_'); +} + +export function compareTitle(a: string, b: string): boolean { + return normalizeTitle(a) === normalizeTitle(b); +} + +export function compareMedia(media: CommonMedia, title: string, releaseYear?: number): boolean { + // if no year is provided, count as if its the correct year + const isSameYear = releaseYear === undefined ? true : media.releaseYear === releaseYear; + return compareTitle(media.title, title) && isSameYear; +} diff --git a/packages/providers/src/utils/context.ts b/packages/providers/src/utils/context.ts new file mode 100644 index 0000000..6f16bca --- /dev/null +++ b/packages/providers/src/utils/context.ts @@ -0,0 +1,22 @@ +import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import { UseableFetcher } from '@/fetchers/types'; + +export type ScrapeContext = { + proxiedFetcher: UseableFetcher; + fetcher: UseableFetcher; + progress(val: number): void; +}; + +export type EmbedInput = { + url: string; +}; + +export type EmbedScrapeContext = EmbedInput & ScrapeContext; + +export type MovieScrapeContext = ScrapeContext & { + media: MovieMedia; +}; + +export type ShowScrapeContext = ScrapeContext & { + media: ShowMedia; +}; diff --git a/packages/providers/src/utils/cookie.ts b/packages/providers/src/utils/cookie.ts new file mode 100644 index 0000000..20fd3e4 --- /dev/null +++ b/packages/providers/src/utils/cookie.ts @@ -0,0 +1,20 @@ +import cookie from 'cookie'; +import setCookieParser from 'set-cookie-parser'; + +export interface Cookie { + name: string; + value: string; +} + +export function makeCookieHeader(cookies: Record): string { + return Object.entries(cookies) + .map(([name, value]) => cookie.serialize(name, value)) + .join('; '); +} + +export function parseSetCookie(headerValue: string): Record { + const parsedCookies = setCookieParser.parse(headerValue, { + map: true, + }); + return parsedCookies; +} diff --git a/packages/providers/src/utils/errors.ts b/packages/providers/src/utils/errors.ts new file mode 100644 index 0000000..0c83611 --- /dev/null +++ b/packages/providers/src/utils/errors.ts @@ -0,0 +1,6 @@ +export class NotFoundError extends Error { + constructor(reason?: string) { + super(`Couldn't find a stream: ${reason ?? 'not found'}`); + this.name = 'NotFoundError'; + } +} diff --git a/packages/providers/src/utils/list.ts b/packages/providers/src/utils/list.ts new file mode 100644 index 0000000..8d619fb --- /dev/null +++ b/packages/providers/src/utils/list.ts @@ -0,0 +1,20 @@ +export function reorderOnIdList(order: string[], list: T): T { + const copy = [...list] as T; + copy.sort((a, b) => { + const aIndex = order.indexOf(a.id); + const bIndex = order.indexOf(b.id); + + // both in order list + if (aIndex >= 0 && bIndex >= 0) return aIndex - bIndex; + + // only one in order list + // negative means order [a,b] + // positive means order [b,a] + if (bIndex >= 0) return 1; // A isnt in list but B is, so A goes later on the list + if (aIndex >= 0) return -1; // B isnt in list but A is, so B goes later on the list + + // both not in list, sort on rank + return b.rank - a.rank; + }); + return copy; +} diff --git a/packages/providers/src/utils/native.ts b/packages/providers/src/utils/native.ts new file mode 100644 index 0000000..cc91cdb --- /dev/null +++ b/packages/providers/src/utils/native.ts @@ -0,0 +1,9 @@ +export const isReactNative = () => { + try { + // eslint-disable-next-line global-require, @typescript-eslint/no-var-requires + require('react-native'); + return true; + } catch (e) { + return false; + } +}; diff --git a/packages/providers/src/utils/predicates.ts b/packages/providers/src/utils/predicates.ts new file mode 100644 index 0000000..f581b2f --- /dev/null +++ b/packages/providers/src/utils/predicates.ts @@ -0,0 +1,3 @@ +export function hasDuplicates(values: Array): boolean { + return new Set(values).size !== values.length; +} diff --git a/packages/providers/src/utils/quality.ts b/packages/providers/src/utils/quality.ts new file mode 100644 index 0000000..8854ca5 --- /dev/null +++ b/packages/providers/src/utils/quality.ts @@ -0,0 +1,20 @@ +import { Qualities } from '@/providers/streams'; + +export function getValidQualityFromString(quality: string): Qualities { + switch (quality.toLowerCase().replace('p', '')) { + case '360': + return '360'; + case '480': + return '480'; + case '720': + return '720'; + case '1080': + return '1080'; + case '2160': + return '4k'; + case '4k': + return '4k'; + default: + return 'unknown'; + } +} diff --git a/packages/providers/src/utils/valid.ts b/packages/providers/src/utils/valid.ts new file mode 100644 index 0000000..e4ea664 --- /dev/null +++ b/packages/providers/src/utils/valid.ts @@ -0,0 +1,79 @@ +import { warezcdnembedMp4Scraper } from '@/providers/embeds/warezcdn/mp4'; +import { Stream } from '@/providers/streams'; +import { IndividualEmbedRunnerOptions } from '@/runners/individualRunner'; +import { ProviderRunnerOptions } from '@/runners/runner'; + +const SKIP_VALIDATION_CHECK_IDS = [warezcdnembedMp4Scraper.id]; + +export function isValidStream(stream: Stream | undefined): boolean { + if (!stream) return false; + if (stream.type === 'hls') { + if (!stream.playlist) return false; + return true; + } + if (stream.type === 'file') { + const validQualities = Object.values(stream.qualities).filter((v) => v.url.length > 0); + if (validQualities.length === 0) return false; + return true; + } + + // unknown file type + return false; +} + +export async function validatePlayableStream( + stream: Stream, + ops: ProviderRunnerOptions | IndividualEmbedRunnerOptions, + sourcererId: string, +): Promise { + if (SKIP_VALIDATION_CHECK_IDS.includes(sourcererId)) return stream; + + if (stream.type === 'hls') { + const result = await ops.proxiedFetcher.full(stream.playlist, { + method: 'GET', + headers: { + ...stream.preferredHeaders, + ...stream.headers, + }, + }); + if (result.statusCode < 200 || result.statusCode >= 400) return null; + return stream; + } + if (stream.type === 'file') { + const validQualitiesResults = await Promise.all( + Object.values(stream.qualities).map((quality) => + ops.proxiedFetcher.full(quality.url, { + method: 'GET', + headers: { + ...stream.preferredHeaders, + ...stream.headers, + Range: 'bytes=0-1', + }, + }), + ), + ); + // remove invalid qualities from the stream + const validQualities = stream.qualities; + Object.keys(stream.qualities).forEach((quality, index) => { + if (validQualitiesResults[index].statusCode < 200 || validQualitiesResults[index].statusCode >= 400) { + delete validQualities[quality as keyof typeof stream.qualities]; + } + }); + + if (Object.keys(validQualities).length === 0) return null; + return { ...stream, qualities: validQualities }; + } + return null; +} + +export async function validatePlayableStreams( + streams: Stream[], + ops: ProviderRunnerOptions | IndividualEmbedRunnerOptions, + sourcererId: string, +): Promise { + if (SKIP_VALIDATION_CHECK_IDS.includes(sourcererId)) return streams; + + return (await Promise.all(streams.map((stream) => validatePlayableStream(stream, ops, sourcererId)))).filter( + (v) => v !== null, + ) as Stream[]; +} diff --git a/packages/providers/tests/README.md b/packages/providers/tests/README.md new file mode 100644 index 0000000..d2acf3d --- /dev/null +++ b/packages/providers/tests/README.md @@ -0,0 +1,3 @@ +# Integration test folder + +This folder simply holds some import tests, to see if the library still works with all its dependencies. diff --git a/packages/providers/tests/browser/.gitignore b/packages/providers/tests/browser/.gitignore new file mode 100644 index 0000000..1521c8b --- /dev/null +++ b/packages/providers/tests/browser/.gitignore @@ -0,0 +1 @@ +dist diff --git a/packages/providers/tests/browser/index.html b/packages/providers/tests/browser/index.html new file mode 100644 index 0000000..a27e53d --- /dev/null +++ b/packages/providers/tests/browser/index.html @@ -0,0 +1,11 @@ + + + + + + Browser integration test + + + + + diff --git a/packages/providers/tests/browser/index.ts b/packages/providers/tests/browser/index.ts new file mode 100644 index 0000000..fafcf26 --- /dev/null +++ b/packages/providers/tests/browser/index.ts @@ -0,0 +1,8 @@ +import { makeProviders, makeStandardFetcher, targets } from '../../lib/index.js'; + +(window as any).TEST = () => { + makeProviders({ + fetcher: makeStandardFetcher(fetch), + target: targets.ANY, + }); +} diff --git a/packages/providers/tests/browser/package.json b/packages/providers/tests/browser/package.json new file mode 100644 index 0000000..727f329 --- /dev/null +++ b/packages/providers/tests/browser/package.json @@ -0,0 +1,3 @@ +{ + "main": "startup.mjs" +} diff --git a/packages/providers/tests/browser/startup.mjs b/packages/providers/tests/browser/startup.mjs new file mode 100644 index 0000000..c504ff0 --- /dev/null +++ b/packages/providers/tests/browser/startup.mjs @@ -0,0 +1,36 @@ +import { build, preview } from 'vite'; +import puppeteer from 'puppeteer'; +import { fileURLToPath } from 'url'; +import { dirname } from 'path'; + +const root = dirname(fileURLToPath(import.meta.url)); + +await build({ + root, +}); +const server = await preview({ + root, +}); +let browser; +try { + browser = await puppeteer.launch({ + headless: true, + args: ['--no-sandbox', '--disable-setuid-sandbox'], + }); + const page = await browser.newPage(); + await page.goto(server.resolvedUrls.local[0]); + await page.waitForFunction('!!window.TEST', { timeout: 5000 }); + await page.evaluate(() => { + window.TEST(); + }); +} finally { + server.httpServer.close(); + try { + await browser.close(); + } catch (e) { + console.error('Failed to close browser:', e); + } +} + +console.log('Success!'); +process.exit(0); diff --git a/packages/providers/tests/cjs/index.js b/packages/providers/tests/cjs/index.js new file mode 100644 index 0000000..6aa3b56 --- /dev/null +++ b/packages/providers/tests/cjs/index.js @@ -0,0 +1,2 @@ +require('../../lib/index.umd.cjs'); +console.log('import successful!'); diff --git a/packages/providers/tests/cjs/package.json b/packages/providers/tests/cjs/package.json new file mode 100644 index 0000000..48c2802 --- /dev/null +++ b/packages/providers/tests/cjs/package.json @@ -0,0 +1,4 @@ +{ + "main": "index.js", + "type": "commonjs" +} diff --git a/packages/providers/tests/esm/index.mjs b/packages/providers/tests/esm/index.mjs new file mode 100644 index 0000000..be92bc5 --- /dev/null +++ b/packages/providers/tests/esm/index.mjs @@ -0,0 +1,2 @@ +import '../../lib/index.js'; +console.log('import successful!'); diff --git a/packages/providers/tests/esm/package.json b/packages/providers/tests/esm/package.json new file mode 100644 index 0000000..84f117c --- /dev/null +++ b/packages/providers/tests/esm/package.json @@ -0,0 +1,4 @@ +{ + "main": "index.mjs", + "type": "module" +} diff --git a/packages/providers/tsconfig.json b/packages/providers/tsconfig.json new file mode 100644 index 0000000..9f30528 --- /dev/null +++ b/packages/providers/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "es2021", + "lib": ["es2021", "DOM"], + "module": "ESNext", + "moduleResolution": "Bundler", + "esModuleInterop": true, + "declaration": true, + "outDir": "./lib", + "strict": true, + "baseUrl": "src", + "experimentalDecorators": true, + "isolatedModules": false, + "skipLibCheck": true, + "resolveJsonModule": true, + "paths": { + "@/*": ["./*"], + "@entrypoint": ["./index.ts"] + } + }, + "include": ["src", "vite.config.ts"], + "exclude": ["node_modules", "**/__test__"] +} diff --git a/packages/providers/vite.config.ts b/packages/providers/vite.config.ts new file mode 100644 index 0000000..5aa358f --- /dev/null +++ b/packages/providers/vite.config.ts @@ -0,0 +1,42 @@ +import path from 'path'; +import { defineConfig } from 'vitest/config'; +import eslintPlugin from '@nabla/vite-plugin-eslint'; +import dts from 'vite-plugin-dts'; +import pkg from './package.json'; + +const shouldTestProviders = process.env.MW_TEST_PROVIDERS === 'true'; +let tests: string[] = ['src/__test__/standard/**/*.test.ts']; +if (shouldTestProviders) tests = ['src/__test__/providers/**/*.test.ts']; + +export default defineConfig((env) => ({ + plugins: [ + env.mode !== 'test' && eslintPlugin(), + dts({ + rollupTypes: true, + }), + ], + resolve: { + alias: { + '@': path.resolve(__dirname, './src'), + }, + }, + build: { + minify: false, + rollupOptions: { + external: Object.keys(pkg.dependencies), + output: { + globals: Object.fromEntries(Object.keys(pkg.dependencies).map((v) => [v, v])), + }, + }, + outDir: 'lib', + lib: { + entry: path.resolve(__dirname, 'src/index.ts'), + name: 'index', + fileName: 'index', + formats: ['umd', 'es'], + }, + }, + test: { + include: tests, + }, +})); diff --git a/packages/tmdb/package.json b/packages/tmdb/package.json index 1402f20..0bda03d 100644 --- a/packages/tmdb/package.json +++ b/packages/tmdb/package.json @@ -18,8 +18,8 @@ "@movie-web/eslint-config": "workspace:^0.2.0", "@movie-web/prettier-config": "workspace:^0.1.0", "@movie-web/tsconfig": "workspace:^0.1.0", - "eslint": "^8.56.0", - "prettier": "^3.1.1", + "eslint": "^8.57.0", + "prettier": "^3.2.5", "typescript": "^5.4.3" }, "eslintConfig": { diff --git a/tooling/colors/package.json b/tooling/colors/package.json index 1cc50fb..3d09dc1 100644 --- a/tooling/colors/package.json +++ b/tooling/colors/package.json @@ -18,8 +18,8 @@ "@movie-web/eslint-config": "workspace:^0.2.0", "@movie-web/prettier-config": "workspace:^0.1.0", "@movie-web/tsconfig": "workspace:^0.1.0", - "eslint": "^8.56.0", - "prettier": "^3.1.1", + "eslint": "^8.57.0", + "prettier": "^3.2.5", "typescript": "^5.4.3" }, "eslintConfig": { diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index a39cdeb..51bc3de 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -27,8 +27,8 @@ "@movie-web/prettier-config": "workspace:^0.1.0", "@movie-web/tsconfig": "workspace:^0.1.0", "@types/eslint": "^8.56.2", - "eslint": "^8.56.0", - "prettier": "^3.1.1", + "eslint": "^8.57.0", + "prettier": "^3.2.5", "typescript": "^5.4.3" }, "eslintConfig": { diff --git a/tooling/prettier/package.json b/tooling/prettier/package.json index 88a2762..3eee9f7 100644 --- a/tooling/prettier/package.json +++ b/tooling/prettier/package.json @@ -13,7 +13,7 @@ }, "dependencies": { "@ianvs/prettier-plugin-sort-imports": "^4.1.1", - "prettier": "^3.1.1", + "prettier": "^3.2.5", "prettier-plugin-tailwindcss": "^0.5.10" }, "devDependencies": { diff --git a/turbo/generators/templates/package.json.hbs b/turbo/generators/templates/package.json.hbs index 706657f..cc4e126 100644 --- a/turbo/generators/templates/package.json.hbs +++ b/turbo/generators/templates/package.json.hbs @@ -18,8 +18,8 @@ "@movie-web/eslint-config": "workspace:^0.2.0", "@movie-web/prettier-config": "workspace:^0.1.0", "@movie-web/tsconfig": "workspace:^0.1.0", - "eslint": "^8.56.0", - "prettier": "^3.1.1", + "eslint": "^8.57.0", + "prettier": "^3.2.5", "typescript": "^5.3.3" }, "eslintConfig": { From cab613f47935a35952cf7054106ab8150eb9ebae Mon Sep 17 00:00:00 2001 From: Jorrin Date: Thu, 2 May 2024 20:08:05 +0200 Subject: [PATCH 14/49] providers linter + build step --- .github/workflows/build-mobile.yml | 6 + bun.lockb | Bin 764088 -> 763912 bytes packages/providers/.gitignore | 1 + packages/providers/lib/index.d.ts | 4 - packages/providers/lib/index.js | 4 - packages/providers/lib/index.umd.cjs | 8 - packages/providers/package.json | 109 ++++++- .../src/__test__/providers/embedUtils.ts | 10 +- .../src/__test__/providers/providerUtils.ts | 9 +- .../src/__test__/providers/testMedia.ts | 2 +- .../standard/fetchers/simpleProxy.test.ts | 3 +- .../standard/fetchers/standard.test.ts | 2 +- .../src/__test__/standard/providerTests.ts | 4 +- .../standard/providers/checks.test.ts | 2 +- .../__test__/standard/utils/features.test.ts | 3 +- packages/providers/src/dev-cli/index.ts | 20 +- packages/providers/src/dev-cli/logging.ts | 7 +- packages/providers/src/dev-cli/scraper.ts | 270 ++++++++++-------- packages/providers/src/dev-cli/tmdb.ts | 2 +- packages/providers/src/dev-cli/validate.ts | 10 +- packages/providers/src/entrypoint/builder.ts | 14 +- packages/providers/src/entrypoint/controls.ts | 16 +- packages/providers/src/entrypoint/declare.ts | 5 +- .../providers/src/entrypoint/providers.ts | 2 +- .../providers/src/entrypoint/utils/events.ts | 28 +- .../providers/src/entrypoint/utils/media.ts | 4 +- .../providers/src/entrypoint/utils/meta.ts | 14 +- .../providers/src/entrypoint/utils/targets.ts | 4 +- packages/providers/src/fetchers/body.ts | 2 +- packages/providers/src/fetchers/common.ts | 6 +- packages/providers/src/fetchers/fetch.ts | 12 +- .../providers/src/fetchers/simpleProxy.ts | 4 +- .../providers/src/fetchers/standardFetch.ts | 4 +- packages/providers/src/fetchers/types.ts | 22 +- packages/providers/src/index.ts | 48 +++- packages/providers/src/providers/all.ts | 6 +- packages/providers/src/providers/base.ts | 26 +- packages/providers/src/providers/captions.ts | 4 +- .../src/providers/embeds/closeload.ts | 3 +- .../src/providers/embeds/febbox/common.ts | 2 +- .../src/providers/embeds/febbox/fileList.ts | 7 +- .../src/providers/embeds/febbox/hls.ts | 38 +-- .../src/providers/embeds/febbox/qualities.ts | 4 +- .../src/providers/embeds/febbox/subtitles.ts | 9 +- .../src/providers/embeds/filemoon/index.ts | 5 +- .../src/providers/embeds/nsbx/delta.ts | 3 +- .../providers/embeds/smashystream/video1.ts | 7 +- .../src/providers/embeds/streambucket.ts | 6 +- .../src/providers/embeds/streamsb.ts | 6 +- .../providers/src/providers/embeds/upcloud.ts | 3 +- .../src/providers/embeds/vidplay/common.ts | 2 +- .../src/providers/embeds/vidplay/index.ts | 5 +- .../src/providers/embeds/vidplay/types.ts | 8 +- .../src/providers/embeds/warezcdn/common.ts | 2 +- .../src/providers/embeds/warezcdn/hls.ts | 2 +- .../src/providers/embeds/warezcdn/mp4.ts | 2 +- packages/providers/src/providers/get.ts | 5 +- .../src/providers/sources/flixhq/index.ts | 3 +- .../src/providers/sources/flixhq/scrape.ts | 10 +- .../src/providers/sources/flixhq/search.ts | 4 +- .../src/providers/sources/gomovies/index.ts | 4 +- .../src/providers/sources/gomovies/source.ts | 2 +- .../providers/sources/goojara/getEmbeds.ts | 7 +- .../src/providers/sources/goojara/index.ts | 5 +- .../src/providers/sources/goojara/util.ts | 9 +- .../src/providers/sources/hdrezka/index.ts | 9 +- .../src/providers/sources/hdrezka/types.ts | 6 +- .../src/providers/sources/hdrezka/utils.ts | 2 +- .../providers/sources/insertunit/captions.ts | 5 +- .../src/providers/sources/insertunit/index.ts | 6 +- .../src/providers/sources/kissasian/search.ts | 8 +- .../src/providers/sources/lookmovie/index.ts | 5 +- .../src/providers/sources/lookmovie/type.ts | 6 +- .../src/providers/sources/lookmovie/util.ts | 10 +- .../src/providers/sources/lookmovie/video.ts | 9 +- .../src/providers/sources/nepu/index.ts | 7 +- .../src/providers/sources/nepu/types.ts | 4 +- .../providers/src/providers/sources/nites.ts | 5 +- .../providers/src/providers/sources/nsbx.ts | 5 +- .../src/providers/sources/primewire/index.ts | 6 +- .../src/providers/sources/ridomovies/index.ts | 7 +- .../src/providers/sources/ridomovies/types.ts | 8 +- .../src/providers/sources/showbox/index.ts | 5 +- .../providers/sources/smashystream/index.ts | 5 +- .../src/providers/sources/soapertv/index.ts | 10 +- .../src/providers/sources/tugaflix/index.ts | 3 +- .../providers/sources/vidsrc/scrape-movie.ts | 2 +- .../providers/sources/vidsrc/scrape-show.ts | 2 +- .../src/providers/sources/vidsrc/scrape.ts | 4 +- .../src/providers/sources/vidsrcto/common.ts | 18 +- .../src/providers/sources/vidsrcto/index.ts | 7 +- .../src/providers/sources/vidsrcto/types.ts | 4 +- .../src/providers/sources/warezcdn/common.ts | 2 +- .../src/providers/sources/warezcdn/index.ts | 81 +++--- .../src/providers/sources/warezcdn/types.ts | 4 +- .../src/providers/sources/zoechip/common.ts | 6 +- .../providers/sources/zoechip/scrape-movie.ts | 2 +- .../providers/sources/zoechip/scrape-show.ts | 2 +- .../src/providers/sources/zoechip/scrape.ts | 7 +- .../src/providers/sources/zoechip/search.ts | 4 +- packages/providers/src/providers/streams.ts | 16 +- .../providers/src/runners/individualRunner.ts | 23 +- packages/providers/src/runners/runner.ts | 112 +++++--- packages/providers/src/utils/compare.ts | 2 +- packages/providers/src/utils/context.ts | 12 +- packages/providers/src/utils/native.ts | 4 +- packages/providers/src/utils/predicates.ts | 2 +- packages/providers/src/utils/quality.ts | 2 +- packages/providers/src/utils/valid.ts | 39 +-- packages/providers/tsconfig.json | 25 +- packages/providers/vite.config.ts | 33 +-- 111 files changed, 814 insertions(+), 592 deletions(-) create mode 100644 packages/providers/.gitignore delete mode 100644 packages/providers/lib/index.d.ts delete mode 100644 packages/providers/lib/index.js delete mode 100644 packages/providers/lib/index.umd.cjs diff --git a/.github/workflows/build-mobile.yml b/.github/workflows/build-mobile.yml index 9bedd9e..c86d2db 100644 --- a/.github/workflows/build-mobile.yml +++ b/.github/workflows/build-mobile.yml @@ -39,6 +39,9 @@ jobs: - name: Install dependencies run: bun install + - name: Build dependencies + run: bun build + - name: Setup Gradle uses: gradle/actions/setup-gradle@v3 @@ -71,6 +74,9 @@ jobs: - name: Install dependencies run: bun install + - name: Install dependencies + run: bun install + - name: Cache Pods uses: actions/cache@v4 with: diff --git a/bun.lockb b/bun.lockb index f59d9a62dd12a59c34a6cb7f8ac9bca647065f19..61b2a70ce3de10242fddbf877515689b29082a23 100755 GIT binary patch delta 43067 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 diff --git a/packages/providers/.gitignore b/packages/providers/.gitignore new file mode 100644 index 0000000..7951405 --- /dev/null +++ b/packages/providers/.gitignore @@ -0,0 +1 @@ +lib \ No newline at end of file diff --git a/packages/providers/lib/index.d.ts b/packages/providers/lib/index.d.ts deleted file mode 100644 index 6b8e059..0000000 --- a/packages/providers/lib/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare const name_2 = "providers"; -export { name_2 as name } - -export { } diff --git a/packages/providers/lib/index.js b/packages/providers/lib/index.js deleted file mode 100644 index c5192d2..0000000 --- a/packages/providers/lib/index.js +++ /dev/null @@ -1,4 +0,0 @@ -const name = "providers"; -export { - name -}; diff --git a/packages/providers/lib/index.umd.cjs b/packages/providers/lib/index.umd.cjs deleted file mode 100644 index 1784d6b..0000000 --- a/packages/providers/lib/index.umd.cjs +++ /dev/null @@ -1,8 +0,0 @@ -(function(global, factory) { - typeof exports === "object" && typeof module !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.index = {})); -})(this, function(exports2) { - "use strict"; - const name = "providers"; - exports2.name = name; - Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" }); -}); diff --git a/packages/providers/package.json b/packages/providers/package.json index c2b632d..3b22e84 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -37,26 +37,20 @@ "prepare": "bun run build" }, "devDependencies": { - "@nabla/vite-plugin-eslint": "^2.0.2", + "@movie-web/eslint-config": "workspace:^0.2.0", + "@movie-web/prettier-config": "workspace:^0.1.0", + "@movie-web/tsconfig": "workspace:^0.1.0", "@types/cookie": "^0.6.0", "@types/crypto-js": "^4.2.2", "@types/node-fetch": "^2.6.11", "@types/randombytes": "^2.0.3", "@types/set-cookie-parser": "^2.4.7", "@types/spinnies": "^0.5.3", - "@typescript-eslint/eslint-plugin": "^7.4.0", - "@typescript-eslint/parser": "^7.4.0", "@vitest/coverage-v8": "^1.4.0", "commander": "^12.0.0", "cross-env": "^7.0.3", "dotenv": "^16.4.5", "enquirer": "^2.4.1", - "eslint": "^8.57.0", - "eslint-config-airbnb-base": "^15.0.0", - "eslint-config-prettier": "^9.1.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-prettier": "^5.1.3", "node-fetch": "^3.3.2", "prettier": "^3.2.5", "puppeteer": "^22.6.1", @@ -79,5 +73,100 @@ "node-fetch": "^3.3.2", "set-cookie-parser": "^2.6.0", "unpacker": "^1.0.1" - } + }, + "eslintConfig": { + "env": { + "browser": true + }, + "extends": [ + "airbnb-base", + "plugin:@typescript-eslint/recommended", + "prettier" + ], + "ignorePatterns": [ + "lib/*", + "tests/*", + "/*.js", + "/*.ts", + "/src/__test__/*", + "/**/*.test.ts", + "test/*" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "./tsconfig.json", + "tsconfigRootDir": "./" + }, + "settings": { + "import/resolver": { + "typescript": { + "project": "./tsconfig.json" + } + } + }, + "plugins": [ + "@typescript-eslint", + "import", + "prettier" + ], + "rules": { + "no-plusplus": "off", + "class-methods-use-this": "off", + "no-bitwise": "off", + "no-underscore-dangle": "off", + "@typescript-eslint/no-explicit-any": "off", + "no-console": [ + "error", + { + "allow": [ + "warn", + "error" + ] + } + ], + "@typescript-eslint/no-this-alias": "off", + "import/prefer-default-export": "off", + "@typescript-eslint/no-empty-function": "off", + "no-shadow": "off", + "@typescript-eslint/no-shadow": [ + "error" + ], + "no-restricted-syntax": "off", + "import/no-unresolved": [ + "error", + { + "ignore": [ + "^virtual:" + ] + } + ], + "consistent-return": "off", + "no-continue": "off", + "no-eval": "off", + "no-await-in-loop": "off", + "no-nested-ternary": "off", + "no-param-reassign": [ + "error", + { + "props": false + } + ], + "prefer-destructuring": "off", + "@typescript-eslint/no-unused-vars": [ + "warn", + { + "argsIgnorePattern": "^_" + } + ], + "import/extensions": [ + "error", + "ignorePackages", + { + "ts": "never", + "tsx": "never" + } + ] + } + }, + "prettier": "@movie-web/prettier-config" } diff --git a/packages/providers/src/__test__/providers/embedUtils.ts b/packages/providers/src/__test__/providers/embedUtils.ts index 77516f1..4203cf5 100644 --- a/packages/providers/src/__test__/providers/embedUtils.ts +++ b/packages/providers/src/__test__/providers/embedUtils.ts @@ -1,11 +1,11 @@ import { buildProviders } from '@/entrypoint/builder'; -import { ScrapeMedia } from '@/entrypoint/utils/media'; +import type { ScrapeMedia } from '@/entrypoint/utils/media'; import { targets } from '@/entrypoint/utils/targets'; import { makeStandardFetcher } from '@/fetchers/standardFetch'; -import { Embed, Sourcerer, SourcererEmbed } from '@/providers/base'; -import { TestTypes } from './providerUtils'; +import type { Embed, Sourcerer, SourcererEmbed } from '@/providers/base'; +import type { TestTypes } from './providerUtils'; import { describe, expect, it } from 'vitest'; -import { ProviderControls } from '@/entrypoint/controls'; +import type { ProviderControls } from '@/entrypoint/controls'; import { makeSimpleProxyFetcher } from '@/fetchers/simpleProxy'; export interface TestEmbedOptions { @@ -80,7 +80,7 @@ export function testEmbed(ops: TestEmbedOptions) { }); } catch (err) { it(`${t} - embed ??`, () => { - throw new Error('Failed to get streams: ' + err); + throw new Error(`Failed to get streams: ${ err}`); }); } } diff --git a/packages/providers/src/__test__/providers/providerUtils.ts b/packages/providers/src/__test__/providers/providerUtils.ts index d47b924..bb80330 100644 --- a/packages/providers/src/__test__/providers/providerUtils.ts +++ b/packages/providers/src/__test__/providers/providerUtils.ts @@ -1,9 +1,10 @@ -import { ScrapeMedia } from '@/entrypoint/utils/media'; -import { Embed, Sourcerer, SourcererEmbed } from '@/providers/base'; +import type { ScrapeMedia } from '@/entrypoint/utils/media'; +import type { Sourcerer} from '@/providers/base'; +import { Embed, SourcererEmbed } from '@/providers/base'; import { buildProviders } from '@/entrypoint/builder'; import { describe, expect, it } from 'vitest'; import { makeStandardFetcher } from '@/fetchers/standardFetch'; -import { ProviderControls } from '@/entrypoint/controls'; +import type { ProviderControls } from '@/entrypoint/controls'; import { NotFoundError } from '@/utils/errors'; import { targets } from '@/entrypoint/utils/targets'; import { getBuiltinEmbeds } from '@/entrypoint/providers'; @@ -41,7 +42,7 @@ export function testSource(ops: TestSourceOptions) { let hasError = false; let streamCount = 0; let embedCount = 0; - let embeds = []; + const embeds = []; try { const result = await providers.runSourceScraper({ id: ops.source.id, diff --git a/packages/providers/src/__test__/providers/testMedia.ts b/packages/providers/src/__test__/providers/testMedia.ts index 1c2c3bd..3218f10 100644 --- a/packages/providers/src/__test__/providers/testMedia.ts +++ b/packages/providers/src/__test__/providers/testMedia.ts @@ -1,4 +1,4 @@ -import { ScrapeMedia } from '@/entrypoint/utils/media'; +import type { ScrapeMedia } from '@/entrypoint/utils/media'; function makeMedia(media: ScrapeMedia): ScrapeMedia { return media; diff --git a/packages/providers/src/__test__/standard/fetchers/simpleProxy.test.ts b/packages/providers/src/__test__/standard/fetchers/simpleProxy.test.ts index cef585e..01fb4c5 100644 --- a/packages/providers/src/__test__/standard/fetchers/simpleProxy.test.ts +++ b/packages/providers/src/__test__/standard/fetchers/simpleProxy.test.ts @@ -1,5 +1,6 @@ import { makeSimpleProxyFetcher } from '@/fetchers/simpleProxy'; -import { DefaultedFetcherOptions, FetcherOptions } from '@/fetchers/types'; +import type { DefaultedFetcherOptions} from '@/fetchers/types'; +import { FetcherOptions } from '@/fetchers/types'; import { Headers } from 'node-fetch'; import { afterEach, describe, expect, it, vi } from 'vitest'; diff --git a/packages/providers/src/__test__/standard/fetchers/standard.test.ts b/packages/providers/src/__test__/standard/fetchers/standard.test.ts index 8699136..8e59c62 100644 --- a/packages/providers/src/__test__/standard/fetchers/standard.test.ts +++ b/packages/providers/src/__test__/standard/fetchers/standard.test.ts @@ -1,5 +1,5 @@ import { makeStandardFetcher } from '@/fetchers/standardFetch'; -import { DefaultedFetcherOptions } from '@/fetchers/types'; +import type { DefaultedFetcherOptions } from '@/fetchers/types'; import { Headers } from 'node-fetch'; import { afterEach, describe, expect, it, vi } from 'vitest'; diff --git a/packages/providers/src/__test__/standard/providerTests.ts b/packages/providers/src/__test__/standard/providerTests.ts index f5c87b7..46744ef 100644 --- a/packages/providers/src/__test__/standard/providerTests.ts +++ b/packages/providers/src/__test__/standard/providerTests.ts @@ -1,7 +1,7 @@ -// eslint-disable-next-line import/no-extraneous-dependencies + import { vi } from 'vitest'; -import { gatherAllEmbeds, gatherAllSources } from '@/providers/all'; +import type { gatherAllEmbeds, gatherAllSources } from '@/providers/all'; import { makeEmbed, makeSourcerer } from '@/providers/base'; export function makeProviderMocks() { diff --git a/packages/providers/src/__test__/standard/providers/checks.test.ts b/packages/providers/src/__test__/standard/providers/checks.test.ts index 56e1c39..a1d8f87 100644 --- a/packages/providers/src/__test__/standard/providers/checks.test.ts +++ b/packages/providers/src/__test__/standard/providers/checks.test.ts @@ -1,6 +1,6 @@ import { mockEmbeds, mockSources } from '../providerTests'; import { getBuiltinEmbeds, getBuiltinSources } from '@/entrypoint/providers'; -import { FeatureMap } from '@/entrypoint/utils/targets'; +import type { FeatureMap } from '@/entrypoint/utils/targets'; import { getProviders } from '@/providers/get'; import { vi, describe, it, expect, afterEach } from 'vitest'; diff --git a/packages/providers/src/__test__/standard/utils/features.test.ts b/packages/providers/src/__test__/standard/utils/features.test.ts index 75a855c..a7a9349 100644 --- a/packages/providers/src/__test__/standard/utils/features.test.ts +++ b/packages/providers/src/__test__/standard/utils/features.test.ts @@ -1,4 +1,5 @@ -import { FeatureMap, Flags, flags, flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; +import type { FeatureMap, Flags} from '@/entrypoint/utils/targets'; +import { flags, flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; import { describe, it, expect } from 'vitest'; describe('flagsAllowedInFeatures()', () => { diff --git a/packages/providers/src/dev-cli/index.ts b/packages/providers/src/dev-cli/index.ts index fef501a..0e6edc2 100644 --- a/packages/providers/src/dev-cli/index.ts +++ b/packages/providers/src/dev-cli/index.ts @@ -10,24 +10,24 @@ import { getBuiltinEmbeds, getBuiltinSources } from '@/entrypoint/providers'; dotenv.config(); -type ProviderSourceAnswers = { +interface ProviderSourceAnswers { id: string; type: string; -}; +} -type EmbedSourceAnswers = { +interface EmbedSourceAnswers { url: string; -}; +} -type CommonAnswers = { +interface CommonAnswers { fetcher: string; source: string; -}; +} -type ShowAnswers = { +interface ShowAnswers { season: string; episode: string; -}; +} const sourceScrapers = getBuiltinSources().sort((a, b) => b.rank - a.rank); const embedScrapers = getBuiltinEmbeds().sort((a, b) => b.rank - a.rank); @@ -36,9 +36,7 @@ const sources = [...sourceScrapers, ...embedScrapers]; function joinMediaTypes(mediaTypes: string[] | undefined) { if (mediaTypes) { const formatted = mediaTypes - .map((type: string) => { - return `${type[0].toUpperCase() + type.substring(1).toLowerCase()}s`; - }) + .map((type: string) => `${type[0].toUpperCase() + type.substring(1).toLowerCase()}s`) .join(' / '); return `(${formatted})`; diff --git a/packages/providers/src/dev-cli/logging.ts b/packages/providers/src/dev-cli/logging.ts index 5495f1d..2e41a5f 100644 --- a/packages/providers/src/dev-cli/logging.ts +++ b/packages/providers/src/dev-cli/logging.ts @@ -1,7 +1,8 @@ -import { inspect } from 'node:util'; +import { inspect } from "node:util"; export function logDeepObject(object: Record) { - // This is the dev cli, so we can use console.log // eslint-disable-next-line no-console - console.log(inspect(object, { showHidden: false, depth: null, colors: true })); + console.log( + inspect(object, { showHidden: false, depth: null, colors: true }), + ); } diff --git a/packages/providers/src/dev-cli/scraper.ts b/packages/providers/src/dev-cli/scraper.ts index 5afb582..c03ea00 100644 --- a/packages/providers/src/dev-cli/scraper.ts +++ b/packages/providers/src/dev-cli/scraper.ts @@ -1,141 +1,157 @@ /* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": true}] */ -import { existsSync } from 'fs'; -import { join } from 'path'; - -import puppeteer, { Browser } from 'puppeteer'; -import Spinnies from 'spinnies'; -import { PreviewServer, build, preview } from 'vite'; - -import { getConfig } from '@/dev-cli/config'; -import { logDeepObject } from '@/dev-cli/logging'; -import { getMovieMediaDetails, getShowMediaDetails } from '@/dev-cli/tmdb'; -import { CommandLineArguments } from '@/dev-cli/validate'; -import { ProviderMakerOptions, makeProviders } from '@/entrypoint/declare'; -import { MetaOutput } from '@/entrypoint/utils/meta'; +import { existsSync } from "fs"; +import { join } from "path"; +import type { CommandLineArguments } from "@/dev-cli/validate"; +import type { ProviderMakerOptions } from "@/entrypoint/declare"; +import type { MetaOutput } from "@/entrypoint/utils/meta"; +import type { Browser } from "puppeteer"; +import type { PreviewServer } from "vite"; +import { getConfig } from "@/dev-cli/config"; +import { logDeepObject } from "@/dev-cli/logging"; +import { getMovieMediaDetails, getShowMediaDetails } from "@/dev-cli/tmdb"; +import { makeProviders } from "@/entrypoint/declare"; +import puppeteer from "puppeteer"; +import Spinnies from "spinnies"; +import { build, preview } from "vite"; async function runBrowserScraping( - providerOptions: ProviderMakerOptions, - source: MetaOutput, - options: CommandLineArguments, + providerOptions: ProviderMakerOptions, + source: MetaOutput, + options: CommandLineArguments, ) { - if (!existsSync(join(__dirname, '../../lib/index.js'))) - throw new Error('Please compile before running cli in browser mode'); - const config = getConfig(); - if (!config.proxyUrl) - throw new Error('Simple proxy url must be set in the environment (MOVIE_WEB_PROXY_URL) for browser mode to work'); - - const root = join(__dirname, 'browser'); - let server: PreviewServer | undefined; - let browser: Browser | undefined; - try { - // setup browser - await build({ - root, - }); - server = await preview({ - root, - }); - browser = await puppeteer.launch({ - headless: true, - args: ['--no-sandbox', '--disable-setuid-sandbox'], - }); - const page = await browser.newPage(); - // This is the dev cli, so we can use console.log - // eslint-disable-next-line no-console - page.on('console', (message) => console.log(`${message.type().slice(0, 3).toUpperCase()} ${message.text()}`)); - - if (!server.resolvedUrls?.local.length) throw new Error('Server did not start'); - await page.goto(server.resolvedUrls.local[0]); - await page.waitForFunction('!!window.scrape', { timeout: 5000 }); - - // get input media - let input: any; - if (source.type === 'embed') { - input = { - url: options.url, - id: source.id, - }; - } else if (source.type === 'source') { - let media; - if (options.type === 'movie') { - media = await getMovieMediaDetails(options.tmdbId); - } else { - media = await getShowMediaDetails(options.tmdbId, options.season, options.episode); - } - input = { - media, - id: source.id, - }; - } else { - throw new Error('Wrong source input type'); - } - - return await page.evaluate( - async (proxy, type, inp) => { - return (window as any).scrape(proxy, type, inp); - }, - config.proxyUrl, - source.type, - input, - ); - } finally { - server?.httpServer.close(); - await browser?.close(); - } + if (!existsSync(join(__dirname, "../../lib/index.js"))) + throw new Error("Please compile before running cli in browser mode"); + const config = getConfig(); + if (!config.proxyUrl) + throw new Error( + "Simple proxy url must be set in the environment (MOVIE_WEB_PROXY_URL) for browser mode to work", + ); + + const root = join(__dirname, "browser"); + let server: PreviewServer | undefined; + let browser: Browser | undefined; + try { + // setup browser + await build({ + root, + }); + server = await preview({ + root, + }); + browser = await puppeteer.launch({ + headless: true, + args: ["--no-sandbox", "--disable-setuid-sandbox"], + }); + const page = await browser.newPage(); + // This is the dev cli, so we can use console.log + + page.on("console", (message) => + // eslint-disable-next-line no-console + console.log( + `${message.type().slice(0, 3).toUpperCase()} ${message.text()}`, + ), + ); + + if (!server.resolvedUrls?.local.length) + throw new Error("Server did not start"); + await page.goto(server.resolvedUrls.local[0]); + await page.waitForFunction("!!window.scrape", { timeout: 5000 }); + + // get input media + let input: any; + if (source.type === "embed") { + input = { + url: options.url, + id: source.id, + }; + } else if (source.type === "source") { + let media; + if (options.type === "movie") { + media = await getMovieMediaDetails(options.tmdbId); + } else { + media = await getShowMediaDetails( + options.tmdbId, + options.season, + options.episode, + ); + } + input = { + media, + id: source.id, + }; + } else { + throw new Error("Wrong source input type"); + } + + return await page.evaluate( + async (proxy, type, inp) => (window as any).scrape(proxy, type, inp), + config.proxyUrl, + source.type, + input, + ); + } finally { + server?.httpServer.close(); + await browser?.close(); + } } async function runActualScraping( - providerOptions: ProviderMakerOptions, - source: MetaOutput, - options: CommandLineArguments, + providerOptions: ProviderMakerOptions, + source: MetaOutput, + options: CommandLineArguments, ): Promise { - if (options.fetcher === 'browser') return runBrowserScraping(providerOptions, source, options); - const providers = makeProviders(providerOptions); - - if (source.type === 'embed') { - return providers.runEmbedScraper({ - url: options.url, - id: source.id, - }); - } - - if (source.type === 'source') { - let media; - - if (options.type === 'movie') { - media = await getMovieMediaDetails(options.tmdbId); - } else { - media = await getShowMediaDetails(options.tmdbId, options.season, options.episode); - } - - return providers.runSourceScraper({ - media, - id: source.id, - }); - } - - throw new Error('Invalid source type'); + if (options.fetcher === "browser") + return runBrowserScraping(providerOptions, source, options); + const providers = makeProviders(providerOptions); + + if (source.type === "embed") { + return providers.runEmbedScraper({ + url: options.url, + id: source.id, + }); + } + + if (source.type === "source") { + let media; + + if (options.type === "movie") { + media = await getMovieMediaDetails(options.tmdbId); + } else { + media = await getShowMediaDetails( + options.tmdbId, + options.season, + options.episode, + ); + } + + return providers.runSourceScraper({ + media, + id: source.id, + }); + } + + throw new Error("Invalid source type"); } export async function runScraper( - providerOptions: ProviderMakerOptions, - source: MetaOutput, - options: CommandLineArguments, + providerOptions: ProviderMakerOptions, + source: MetaOutput, + options: CommandLineArguments, ) { - const spinnies = new Spinnies(); - - spinnies.add('scrape', { text: `Running ${source.name} scraper` }); - try { - const result = await runActualScraping(providerOptions, source, options); - spinnies.succeed('scrape', { text: 'Done!' }); - logDeepObject(result); - } catch (error) { - let message = 'Unknown error'; - if (error instanceof Error) { - message = error.message; - } - spinnies.fail('scrape', { text: `ERROR: ${message}` }); - console.error(error); - } + const spinnies = new Spinnies(); + + spinnies.add("scrape", { text: `Running ${source.name} scraper` }); + try { + const result = await runActualScraping(providerOptions, source, options); + spinnies.succeed("scrape", { text: "Done!" }); + logDeepObject(result); + } catch (error) { + let message = "Unknown error"; + if (error instanceof Error) { + message = error.message; + } + spinnies.fail("scrape", { text: `ERROR: ${message}` }); + console.error(error); + } } diff --git a/packages/providers/src/dev-cli/tmdb.ts b/packages/providers/src/dev-cli/tmdb.ts index f18aed1..da66bf5 100644 --- a/packages/providers/src/dev-cli/tmdb.ts +++ b/packages/providers/src/dev-cli/tmdb.ts @@ -1,5 +1,5 @@ import { getConfig } from '@/dev-cli/config'; -import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import type { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; export async function makeTMDBRequest(url: string, appendToResponse?: string): Promise { const headers: { diff --git a/packages/providers/src/dev-cli/validate.ts b/packages/providers/src/dev-cli/validate.ts index 033b51c..aaee51c 100644 --- a/packages/providers/src/dev-cli/validate.ts +++ b/packages/providers/src/dev-cli/validate.ts @@ -1,11 +1,11 @@ import nodeFetch from 'node-fetch'; -import { Embed, Sourcerer } from '@/providers/base'; -import { ProviderMakerOptions } from '@/entrypoint/declare'; +import type { Embed, Sourcerer } from '@/providers/base'; +import type { ProviderMakerOptions } from '@/entrypoint/declare'; import { targets } from '@/entrypoint/utils/targets'; import { makeStandardFetcher } from '@/fetchers/standardFetch'; -export type CommandLineArguments = { +export interface CommandLineArguments { fetcher: string; sourceId: string; tmdbId: string; @@ -13,9 +13,9 @@ export type CommandLineArguments = { season: string; episode: string; url: string; -}; +} -export async function processOptions(sources: Array, options: CommandLineArguments) { +export async function processOptions(sources: (Embed | Sourcerer)[], options: CommandLineArguments) { const fetcherOptions = ['node-fetch', 'native', 'browser']; if (!fetcherOptions.includes(options.fetcher)) { throw new Error(`Fetcher must be any of: ${fetcherOptions.join()}`); diff --git a/packages/providers/src/entrypoint/builder.ts b/packages/providers/src/entrypoint/builder.ts index abf8288..d001265 100644 --- a/packages/providers/src/entrypoint/builder.ts +++ b/packages/providers/src/entrypoint/builder.ts @@ -1,11 +1,13 @@ -import { ProviderControls, makeControls } from '@/entrypoint/controls'; +import type { ProviderControls} from '@/entrypoint/controls'; +import { makeControls } from '@/entrypoint/controls'; import { getBuiltinEmbeds, getBuiltinSources } from '@/entrypoint/providers'; -import { Targets, getTargetFeatures } from '@/entrypoint/utils/targets'; -import { Fetcher } from '@/fetchers/types'; -import { Embed, Sourcerer } from '@/providers/base'; +import type { Targets} from '@/entrypoint/utils/targets'; +import { getTargetFeatures } from '@/entrypoint/utils/targets'; +import type { Fetcher } from '@/fetchers/types'; +import type { Embed, Sourcerer } from '@/providers/base'; import { getProviders } from '@/providers/get'; -export type ProviderBuilder = { +export interface ProviderBuilder { setTarget(target: Targets): ProviderBuilder; setFetcher(fetcher: Fetcher): ProviderBuilder; setProxiedFetcher(fetcher: Fetcher): ProviderBuilder; @@ -16,7 +18,7 @@ export type ProviderBuilder = { addBuiltinProviders(): ProviderBuilder; enableConsistentIpForRequests(): ProviderBuilder; build(): ProviderControls; -}; +} export function buildProviders(): ProviderBuilder { let consistentIpForRequests = false; diff --git a/packages/providers/src/entrypoint/controls.ts b/packages/providers/src/entrypoint/controls.ts index 5ff400b..120f921 100644 --- a/packages/providers/src/entrypoint/controls.ts +++ b/packages/providers/src/entrypoint/controls.ts @@ -1,12 +1,14 @@ -import { FullScraperEvents, IndividualScraperEvents } from '@/entrypoint/utils/events'; -import { ScrapeMedia } from '@/entrypoint/utils/media'; -import { MetaOutput, getAllEmbedMetaSorted, getAllSourceMetaSorted, getSpecificId } from '@/entrypoint/utils/meta'; -import { FeatureMap } from '@/entrypoint/utils/targets'; +import type { FullScraperEvents, IndividualScraperEvents } from '@/entrypoint/utils/events'; +import type { ScrapeMedia } from '@/entrypoint/utils/media'; +import type { MetaOutput} from '@/entrypoint/utils/meta'; +import { getAllEmbedMetaSorted, getAllSourceMetaSorted, getSpecificId } from '@/entrypoint/utils/meta'; +import type { FeatureMap } from '@/entrypoint/utils/targets'; import { makeFetcher } from '@/fetchers/common'; -import { Fetcher } from '@/fetchers/types'; -import { Embed, EmbedOutput, Sourcerer, SourcererOutput } from '@/providers/base'; +import type { Fetcher } from '@/fetchers/types'; +import type { Embed, EmbedOutput, Sourcerer, SourcererOutput } from '@/providers/base'; import { scrapeIndividualEmbed, scrapeInvidualSource } from '@/runners/individualRunner'; -import { RunOutput, runAllProviders } from '@/runners/runner'; +import type { RunOutput} from '@/runners/runner'; +import { runAllProviders } from '@/runners/runner'; export interface ProviderControlsInput { fetcher: Fetcher; diff --git a/packages/providers/src/entrypoint/declare.ts b/packages/providers/src/entrypoint/declare.ts index 152ee87..7aeb3f1 100644 --- a/packages/providers/src/entrypoint/declare.ts +++ b/packages/providers/src/entrypoint/declare.ts @@ -1,7 +1,8 @@ import { makeControls } from '@/entrypoint/controls'; import { getBuiltinEmbeds, getBuiltinSources } from '@/entrypoint/providers'; -import { Targets, getTargetFeatures } from '@/entrypoint/utils/targets'; -import { Fetcher } from '@/fetchers/types'; +import type { Targets} from '@/entrypoint/utils/targets'; +import { getTargetFeatures } from '@/entrypoint/utils/targets'; +import type { Fetcher } from '@/fetchers/types'; import { getProviders } from '@/providers/get'; export interface ProviderMakerOptions { diff --git a/packages/providers/src/entrypoint/providers.ts b/packages/providers/src/entrypoint/providers.ts index e456eb0..623dcbc 100644 --- a/packages/providers/src/entrypoint/providers.ts +++ b/packages/providers/src/entrypoint/providers.ts @@ -1,5 +1,5 @@ import { gatherAllEmbeds, gatherAllSources } from '@/providers/all'; -import { Embed, Sourcerer } from '@/providers/base'; +import type { Embed, Sourcerer } from '@/providers/base'; export function getBuiltinSources(): Sourcerer[] { return gatherAllSources().filter((v) => !v.disabled); diff --git a/packages/providers/src/entrypoint/utils/events.ts b/packages/providers/src/entrypoint/utils/events.ts index 50a8c2a..98ece21 100644 --- a/packages/providers/src/entrypoint/utils/events.ts +++ b/packages/providers/src/entrypoint/utils/events.ts @@ -1,32 +1,32 @@ export type UpdateEventStatus = 'success' | 'failure' | 'notfound' | 'pending'; -export type UpdateEvent = { +export interface UpdateEvent { id: string; // id presented in start event percentage: number; status: UpdateEventStatus; error?: unknown; // set when status is failure reason?: string; // set when status is not-found -}; +} -export type InitEvent = { +export interface InitEvent { sourceIds: string[]; // list of source ids -}; +} -export type DiscoverEmbedsEvent = { +export interface DiscoverEmbedsEvent { sourceId: string; // list of embeds that will be scraped in order - embeds: Array<{ + embeds: { id: string; embedScraperId: string; - }>; -}; + }[]; +} -export type SingleScraperEvents = { +export interface SingleScraperEvents { update?: (evt: UpdateEvent) => void; -}; +} -export type FullScraperEvents = { +export interface FullScraperEvents { // update progress percentage and status of the currently scraping item update?: (evt: UpdateEvent) => void; @@ -39,9 +39,9 @@ export type FullScraperEvents = { // start scraping an item. start?: (id: string) => void; -}; +} -export type IndividualScraperEvents = { +export interface IndividualScraperEvents { // update progress percentage and status of the currently scraping item update?: (evt: UpdateEvent) => void; -}; +} diff --git a/packages/providers/src/entrypoint/utils/media.ts b/packages/providers/src/entrypoint/utils/media.ts index c137063..6d01752 100644 --- a/packages/providers/src/entrypoint/utils/media.ts +++ b/packages/providers/src/entrypoint/utils/media.ts @@ -1,9 +1,9 @@ -export type CommonMedia = { +export interface CommonMedia { title: string; releaseYear: number; imdbId?: string; tmdbId: string; -}; +} export type MediaTypes = 'show' | 'movie'; diff --git a/packages/providers/src/entrypoint/utils/meta.ts b/packages/providers/src/entrypoint/utils/meta.ts index 5e54b2a..4c2bce2 100644 --- a/packages/providers/src/entrypoint/utils/meta.ts +++ b/packages/providers/src/entrypoint/utils/meta.ts @@ -1,17 +1,17 @@ -import { MediaTypes } from '@/entrypoint/utils/media'; -import { Embed, Sourcerer } from '@/providers/base'; -import { ProviderList } from '@/providers/get'; +import type { MediaTypes } from '@/entrypoint/utils/media'; +import type { Embed, Sourcerer } from '@/providers/base'; +import type { ProviderList } from '@/providers/get'; -export type MetaOutput = { +export interface MetaOutput { type: 'embed' | 'source'; id: string; rank: number; name: string; - mediaTypes?: Array; -}; + mediaTypes?: MediaTypes[]; +} function formatSourceMeta(v: Sourcerer): MetaOutput { - const types: Array = []; + const types: MediaTypes[] = []; if (v.scrapeMovie) types.push('movie'); if (v.scrapeShow) types.push('show'); return { diff --git a/packages/providers/src/entrypoint/utils/targets.ts b/packages/providers/src/entrypoint/utils/targets.ts index 80988a4..cd0ae8e 100644 --- a/packages/providers/src/entrypoint/utils/targets.ts +++ b/packages/providers/src/entrypoint/utils/targets.ts @@ -29,10 +29,10 @@ export const targets = { export type Targets = (typeof targets)[keyof typeof targets]; -export type FeatureMap = { +export interface FeatureMap { requires: Flags[]; disallowed: Flags[]; -}; +} export const targetToFeatures: Record = { browser: { diff --git a/packages/providers/src/fetchers/body.ts b/packages/providers/src/fetchers/body.ts index c859a2a..c0c6209 100644 --- a/packages/providers/src/fetchers/body.ts +++ b/packages/providers/src/fetchers/body.ts @@ -1,6 +1,6 @@ import FormData from 'form-data'; -import { FetcherOptions } from '@/fetchers/types'; +import type { FetcherOptions } from '@/fetchers/types'; import { isReactNative } from '@/utils/native'; export interface SeralizedBody { diff --git a/packages/providers/src/fetchers/common.ts b/packages/providers/src/fetchers/common.ts index 71956ba..e427a58 100644 --- a/packages/providers/src/fetchers/common.ts +++ b/packages/providers/src/fetchers/common.ts @@ -1,4 +1,4 @@ -import { Fetcher, FetcherOptions, UseableFetcher } from '@/fetchers/types'; +import type { Fetcher, FetcherOptions, UseableFetcher } from '@/fetchers/types'; export type FullUrlOptions = Pick; @@ -27,8 +27,7 @@ export function makeFullUrl(url: string, ops?: FullUrlOptions): string { } export function makeFetcher(fetcher: Fetcher): UseableFetcher { - const newFetcher = (url: string, ops?: FetcherOptions) => { - return fetcher(url, { + const newFetcher = (url: string, ops?: FetcherOptions) => fetcher(url, { headers: ops?.headers ?? {}, method: ops?.method ?? 'GET', query: ops?.query ?? {}, @@ -36,7 +35,6 @@ export function makeFetcher(fetcher: Fetcher): UseableFetcher { readHeaders: ops?.readHeaders ?? [], body: ops?.body, }); - }; const output: UseableFetcher = async (url, ops) => (await newFetcher(url, ops)).body; output.full = newFetcher; return output; diff --git a/packages/providers/src/fetchers/fetch.ts b/packages/providers/src/fetchers/fetch.ts index d2156d0..c898e8b 100644 --- a/packages/providers/src/fetchers/fetch.ts +++ b/packages/providers/src/fetchers/fetch.ts @@ -3,18 +3,18 @@ * Only containing what we need for it to function. */ -export type FetchOps = { +export interface FetchOps { headers: Record; method: string; body: any; -}; +} -export type FetchHeaders = { +export interface FetchHeaders { get(key: string): string | null; set(key: string, value: string): void; -}; +} -export type FetchReply = { +export interface FetchReply { text(): Promise; json(): Promise; extraHeaders?: FetchHeaders; @@ -22,6 +22,6 @@ export type FetchReply = { headers: FetchHeaders; url: string; status: number; -}; +} export type FetchLike = (url: string, ops?: FetchOps | undefined) => Promise; diff --git a/packages/providers/src/fetchers/simpleProxy.ts b/packages/providers/src/fetchers/simpleProxy.ts index 360a149..261d0a4 100644 --- a/packages/providers/src/fetchers/simpleProxy.ts +++ b/packages/providers/src/fetchers/simpleProxy.ts @@ -1,7 +1,7 @@ import { makeFullUrl } from '@/fetchers/common'; -import { FetchLike } from '@/fetchers/fetch'; +import type { FetchLike } from '@/fetchers/fetch'; import { makeStandardFetcher } from '@/fetchers/standardFetch'; -import { Fetcher } from '@/fetchers/types'; +import type { Fetcher } from '@/fetchers/types'; const headerMap: Record = { cookie: 'X-Cookie', diff --git a/packages/providers/src/fetchers/standardFetch.ts b/packages/providers/src/fetchers/standardFetch.ts index 9fb6afa..682e7cc 100644 --- a/packages/providers/src/fetchers/standardFetch.ts +++ b/packages/providers/src/fetchers/standardFetch.ts @@ -1,7 +1,7 @@ import { serializeBody } from '@/fetchers/body'; import { makeFullUrl } from '@/fetchers/common'; -import { FetchLike, FetchReply } from '@/fetchers/fetch'; -import { Fetcher } from '@/fetchers/types'; +import type { FetchLike, FetchReply } from '@/fetchers/fetch'; +import type { Fetcher } from '@/fetchers/types'; function getHeaders(list: string[], res: FetchReply): Headers { const output = new Headers(); diff --git a/packages/providers/src/fetchers/types.ts b/packages/providers/src/fetchers/types.ts index f5dbe06..f69c2b7 100644 --- a/packages/providers/src/fetchers/types.ts +++ b/packages/providers/src/fetchers/types.ts @@ -1,39 +1,37 @@ -import * as FormData from 'form-data'; +import type * as FormData from 'form-data'; -export type FetcherOptions = { +export interface FetcherOptions { baseUrl?: string; headers?: Record; query?: Record; method?: 'HEAD' | 'GET' | 'POST'; readHeaders?: string[]; body?: Record | string | FormData | URLSearchParams; -}; +} // Version of the options that always has the defaults set // This is to make making fetchers yourself easier -export type DefaultedFetcherOptions = { +export interface DefaultedFetcherOptions { baseUrl?: string; body?: Record | string | FormData; headers: Record; query: Record; readHeaders: string[]; method: 'HEAD' | 'GET' | 'POST'; -}; +} -export type FetcherResponse = { +export interface FetcherResponse { statusCode: number; headers: Headers; finalUrl: string; body: T; -}; +} // This is the version that will be inputted by library users -export type Fetcher = { - (url: string, ops: DefaultedFetcherOptions): Promise>; -}; +export type Fetcher = (url: string, ops: DefaultedFetcherOptions) => Promise>; // This is the version that scrapers will be interacting with -export type UseableFetcher = { +export interface UseableFetcher { (url: string, ops?: FetcherOptions): Promise; full: (url: string, ops?: FetcherOptions) => Promise>; -}; +} diff --git a/packages/providers/src/index.ts b/packages/providers/src/index.ts index 46f8d6a..44acb6f 100644 --- a/packages/providers/src/index.ts +++ b/packages/providers/src/index.ts @@ -1 +1,47 @@ -export const name = 'providers'; \ No newline at end of file +export type { EmbedOutput, SourcererOutput } from "@/providers/base"; +export type { + Stream, + StreamFile, + FileBasedStream, + HlsBasedStream, + Qualities, +} from "@/providers/streams"; +export type { + Fetcher, + DefaultedFetcherOptions, + FetcherOptions, + FetcherResponse, +} from "@/fetchers/types"; +export type { RunOutput } from "@/runners/runner"; +export type { MetaOutput } from "@/entrypoint/utils/meta"; +export type { FullScraperEvents } from "@/entrypoint/utils/events"; +export type { Targets, Flags } from "@/entrypoint/utils/targets"; +export type { + MediaTypes, + ShowMedia, + ScrapeMedia, + MovieMedia, +} from "@/entrypoint/utils/media"; +export type { + ProviderControls, + RunnerOptions, + EmbedRunnerOptions, + SourceRunnerOptions, +} from "@/entrypoint/controls"; +export type { ProviderBuilder } from "@/entrypoint/builder"; +export type { ProviderMakerOptions } from "@/entrypoint/declare"; +export type { + MovieScrapeContext, + ShowScrapeContext, + EmbedScrapeContext, + ScrapeContext, +} from "@/utils/context"; +export type { SourcererOptions, EmbedOptions } from "@/providers/base"; + +export { NotFoundError } from "@/utils/errors"; +export { makeProviders } from "@/entrypoint/declare"; +export { buildProviders } from "@/entrypoint/builder"; +export { getBuiltinEmbeds, getBuiltinSources } from "@/entrypoint/providers"; +export { makeStandardFetcher } from "@/fetchers/standardFetch"; +export { makeSimpleProxyFetcher } from "@/fetchers/simpleProxy"; +export { flags, targets } from "@/entrypoint/utils/targets"; diff --git a/packages/providers/src/providers/all.ts b/packages/providers/src/providers/all.ts index 6652bfd..2916196 100644 --- a/packages/providers/src/providers/all.ts +++ b/packages/providers/src/providers/all.ts @@ -1,4 +1,4 @@ -import { Embed, Sourcerer } from '@/providers/base'; +import type { Embed, Sourcerer } from '@/providers/base'; import { doodScraper } from '@/providers/embeds/dood'; import { droploadScraper } from '@/providers/embeds/dropload'; import { febboxHlsScraper } from '@/providers/embeds/febbox/hls'; @@ -51,7 +51,7 @@ import { soaperTvScraper } from './sources/soapertv'; import { vidSrcToScraper } from './sources/vidsrcto'; import { warezcdnScraper } from './sources/warezcdn'; -export function gatherAllSources(): Array { +export function gatherAllSources(): Sourcerer[] { // all sources are gathered here return [ flixhqScraper, @@ -78,7 +78,7 @@ export function gatherAllSources(): Array { ]; } -export function gatherAllEmbeds(): Array { +export function gatherAllEmbeds(): Embed[] { // all embeds are gathered here return [ upcloudScraper, diff --git a/packages/providers/src/providers/base.ts b/packages/providers/src/providers/base.ts index 0d43895..211daf6 100644 --- a/packages/providers/src/providers/base.ts +++ b/packages/providers/src/providers/base.ts @@ -1,20 +1,20 @@ -import { Flags } from '@/entrypoint/utils/targets'; -import { Stream } from '@/providers/streams'; -import { EmbedScrapeContext, MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import type { Flags } from '@/entrypoint/utils/targets'; +import type { Stream } from '@/providers/streams'; +import type { EmbedScrapeContext, MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; export type MediaScraperTypes = 'show' | 'movie'; -export type SourcererEmbed = { +export interface SourcererEmbed { embedId: string; url: string; -}; +} -export type SourcererOutput = { +export interface SourcererOutput { embeds: SourcererEmbed[]; stream?: Stream[]; -}; +} -export type SourcererOptions = { +export interface SourcererOptions { id: string; name: string; // displayed in the UI rank: number; // the higher the number, the earlier it gets put on the queue @@ -22,7 +22,7 @@ export type SourcererOptions = { flags: Flags[]; scrapeMovie?: (input: MovieScrapeContext) => Promise; scrapeShow?: (input: ShowScrapeContext) => Promise; -}; +} export type Sourcerer = SourcererOptions & { type: 'source'; @@ -42,17 +42,17 @@ export function makeSourcerer(state: SourcererOptions): Sourcerer { }; } -export type EmbedOutput = { +export interface EmbedOutput { stream: Stream[]; -}; +} -export type EmbedOptions = { +export interface EmbedOptions { id: string; name: string; // displayed in the UI rank: number; // the higher the number, the earlier it gets put on the queue disabled?: boolean; scrape: (input: EmbedScrapeContext) => Promise; -}; +} export type Embed = EmbedOptions & { type: 'embed'; diff --git a/packages/providers/src/providers/captions.ts b/packages/providers/src/providers/captions.ts index 92e5db3..afbe49e 100644 --- a/packages/providers/src/providers/captions.ts +++ b/packages/providers/src/providers/captions.ts @@ -6,13 +6,13 @@ export const captionTypes = { }; export type CaptionType = keyof typeof captionTypes; -export type Caption = { +export interface Caption { type: CaptionType; id: string; // only unique per stream url: string; hasCorsRestrictions: boolean; language: string; -}; +} export function getCaptionTypeFromUrl(url: string): CaptionType | null { const extensions = Object.keys(captionTypes) as CaptionType[]; diff --git a/packages/providers/src/providers/embeds/closeload.ts b/packages/providers/src/providers/embeds/closeload.ts index 811323a..5a620e9 100644 --- a/packages/providers/src/providers/embeds/closeload.ts +++ b/packages/providers/src/providers/embeds/closeload.ts @@ -5,7 +5,8 @@ import { flags } from '@/entrypoint/utils/targets'; import { NotFoundError } from '@/utils/errors'; import { makeEmbed } from '../base'; -import { Caption, getCaptionTypeFromUrl, labelToLanguageCode } from '../captions'; +import type { Caption} from '../captions'; +import { getCaptionTypeFromUrl, labelToLanguageCode } from '../captions'; const referer = 'https://ridomovies.tv/'; diff --git a/packages/providers/src/providers/embeds/febbox/common.ts b/packages/providers/src/providers/embeds/febbox/common.ts index 5d902db..b9cdb1d 100644 --- a/packages/providers/src/providers/embeds/febbox/common.ts +++ b/packages/providers/src/providers/embeds/febbox/common.ts @@ -1,4 +1,4 @@ -import { MediaTypes } from '@/entrypoint/utils/media'; +import type { MediaTypes } from '@/entrypoint/utils/media'; export const febBoxBase = `https://www.febbox.com`; diff --git a/packages/providers/src/providers/embeds/febbox/fileList.ts b/packages/providers/src/providers/embeds/febbox/fileList.ts index 593fc77..2651103 100644 --- a/packages/providers/src/providers/embeds/febbox/fileList.ts +++ b/packages/providers/src/providers/embeds/febbox/fileList.ts @@ -1,6 +1,7 @@ -import { MediaTypes } from '@/entrypoint/utils/media'; -import { FebboxFileList, febBoxBase } from '@/providers/embeds/febbox/common'; -import { EmbedScrapeContext } from '@/utils/context'; +import type { MediaTypes } from '@/entrypoint/utils/media'; +import type { FebboxFileList} from '@/providers/embeds/febbox/common'; +import { febBoxBase } from '@/providers/embeds/febbox/common'; +import type { EmbedScrapeContext } from '@/utils/context'; export async function getFileList( ctx: EmbedScrapeContext, diff --git a/packages/providers/src/providers/embeds/febbox/hls.ts b/packages/providers/src/providers/embeds/febbox/hls.ts index 792c112..443f850 100644 --- a/packages/providers/src/providers/embeds/febbox/hls.ts +++ b/packages/providers/src/providers/embeds/febbox/hls.ts @@ -1,47 +1,53 @@ -import { MediaTypes } from '@/entrypoint/utils/media'; -import { makeEmbed } from '@/providers/base'; -import { parseInputUrl } from '@/providers/embeds/febbox/common'; -import { getStreams } from '@/providers/embeds/febbox/fileList'; -import { getSubtitles } from '@/providers/embeds/febbox/subtitles'; -import { showboxBase } from '@/providers/sources/showbox/common'; +import { makeEmbed } from "@/providers/base"; +import { parseInputUrl } from "@/providers/embeds/febbox/common"; +import { getStreams } from "@/providers/embeds/febbox/fileList"; +import { getSubtitles } from "@/providers/embeds/febbox/subtitles"; +import { showboxBase } from "@/providers/sources/showbox/common"; // structure: https://www.febbox.com/share/ export function extractShareKey(url: string): string { const parsedUrl = new URL(url); - const shareKey = parsedUrl.pathname.split('/')[2]; + const shareKey = parsedUrl.pathname.split("/")[2]; return shareKey; } export const febboxHlsScraper = makeEmbed({ - id: 'febbox-hls', - name: 'Febbox (HLS)', + id: "febbox-hls", + name: "Febbox (HLS)", rank: 160, disabled: true, async scrape(ctx) { const { type, id, season, episode } = parseInputUrl(ctx.url); const sharelinkResult = await ctx.proxiedFetcher<{ data?: { link?: string }; - }>('/index/share_link', { + }>("/index/share_link", { baseUrl: showboxBase, query: { id, - type: type === 'movie' ? '1' : '2', + type: type === "movie" ? "1" : "2", }, }); - if (!sharelinkResult?.data?.link) throw new Error('No embed url found'); + if (!sharelinkResult?.data?.link) throw new Error("No embed url found"); ctx.progress(30); const shareKey = extractShareKey(sharelinkResult.data.link); const fileList = await getStreams(ctx, shareKey, type, season, episode); const firstStream = fileList[0]; - if (!firstStream) throw new Error('No playable mp4 stream found'); + if (!firstStream) throw new Error("No playable mp4 stream found"); ctx.progress(70); return { stream: [ { - id: 'primary', - type: 'hls', + id: "primary", + type: "hls", flags: [], - captions: await getSubtitles(ctx, id, firstStream.fid, type as MediaTypes, season, episode), + captions: await getSubtitles( + ctx, + id, + firstStream.fid, + type, + season, + episode, + ), playlist: `https://www.febbox.com/hls/main/${firstStream.oss_fid}.m3u8`, }, ], diff --git a/packages/providers/src/providers/embeds/febbox/qualities.ts b/packages/providers/src/providers/embeds/febbox/qualities.ts index b55dd72..86decdc 100644 --- a/packages/providers/src/providers/embeds/febbox/qualities.ts +++ b/packages/providers/src/providers/embeds/febbox/qualities.ts @@ -1,6 +1,6 @@ import { sendRequest } from '@/providers/sources/showbox/sendRequest'; -import { StreamFile } from '@/providers/streams'; -import { ScrapeContext } from '@/utils/context'; +import type { StreamFile } from '@/providers/streams'; +import type { ScrapeContext } from '@/utils/context'; const allowedQualities = ['360', '480', '720', '1080', '4k']; diff --git a/packages/providers/src/providers/embeds/febbox/subtitles.ts b/packages/providers/src/providers/embeds/febbox/subtitles.ts index fbb2e85..084038d 100644 --- a/packages/providers/src/providers/embeds/febbox/subtitles.ts +++ b/packages/providers/src/providers/embeds/febbox/subtitles.ts @@ -1,12 +1,13 @@ +import type { + Caption} from '@/providers/captions'; import { - Caption, getCaptionTypeFromUrl, isValidLanguageCode, removeDuplicatedLanguages as removeDuplicateLanguages, } from '@/providers/captions'; import { captionsDomains } from '@/providers/sources/showbox/common'; import { sendRequest } from '@/providers/sources/showbox/sendRequest'; -import { ScrapeContext } from '@/utils/context'; +import type { ScrapeContext } from '@/utils/context'; interface CaptionApiResponse { data: { @@ -50,9 +51,7 @@ export async function getSubtitles( const subtitleFilePath = subtitle.file_path .replace(captionsDomains[0], captionsDomains[1]) .replace(/\s/g, '+') - .replace(/[()]/g, (c) => { - return `%${c.charCodeAt(0).toString(16)}`; - }); + .replace(/[()]/g, (c) => `%${c.charCodeAt(0).toString(16)}`); const subtitleType = getCaptionTypeFromUrl(subtitleFilePath); if (!subtitleType) return; diff --git a/packages/providers/src/providers/embeds/filemoon/index.ts b/packages/providers/src/providers/embeds/filemoon/index.ts index be1d9d3..42aebb5 100644 --- a/packages/providers/src/providers/embeds/filemoon/index.ts +++ b/packages/providers/src/providers/embeds/filemoon/index.ts @@ -1,9 +1,10 @@ import { load } from 'cheerio'; import { unpack } from 'unpacker'; -import { SubtitleResult } from './types'; +import type { SubtitleResult } from './types'; import { makeEmbed } from '../../base'; -import { Caption, getCaptionTypeFromUrl, labelToLanguageCode } from '../../captions'; +import type { Caption} from '../../captions'; +import { getCaptionTypeFromUrl, labelToLanguageCode } from '../../captions'; const evalCodeRegex = /eval\((.*)\)/g; const fileRegex = /file:"(.*?)"/g; diff --git a/packages/providers/src/providers/embeds/nsbx/delta.ts b/packages/providers/src/providers/embeds/nsbx/delta.ts index 95f354f..283ddde 100644 --- a/packages/providers/src/providers/embeds/nsbx/delta.ts +++ b/packages/providers/src/providers/embeds/nsbx/delta.ts @@ -1,4 +1,5 @@ -import { EmbedOutput, makeEmbed } from '@/providers/base'; +import type { EmbedOutput} from '@/providers/base'; +import { makeEmbed } from '@/providers/base'; import { headers } from '@/providers/sources/nsbx'; export const deltaScraper = makeEmbed({ diff --git a/packages/providers/src/providers/embeds/smashystream/video1.ts b/packages/providers/src/providers/embeds/smashystream/video1.ts index 19af888..a0e5772 100644 --- a/packages/providers/src/providers/embeds/smashystream/video1.ts +++ b/packages/providers/src/providers/embeds/smashystream/video1.ts @@ -1,12 +1,13 @@ import { flags } from '@/entrypoint/utils/targets'; import { makeEmbed } from '@/providers/base'; -import { Caption, getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; +import type { Caption} from '@/providers/captions'; +import { getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; import { NotFoundError } from '@/utils/errors'; -type FPlayerResponse = { +interface FPlayerResponse { sourceUrls: string[]; subtitles: string | null; -}; +} // if you don't understand how this is reversed // check https://discord.com/channels/871713465100816424/1186646348137775164/1225644477188935770 diff --git a/packages/providers/src/providers/embeds/streambucket.ts b/packages/providers/src/providers/embeds/streambucket.ts index 9e21a93..f1da131 100644 --- a/packages/providers/src/providers/embeds/streambucket.ts +++ b/packages/providers/src/providers/embeds/streambucket.ts @@ -26,12 +26,12 @@ function decodeHunter(encoded: string, mask: string, charCodeOffset: number, del .map((chunk) => { // Chunks are in reverse order. 'reduceRight' removes the // need to 'reverse' the array first - const charCode = chunk.split('').reduceRight((c, value, index) => { + const charCode = chunk.split('').reduceRight((c, value, index) => // Calculate the character code for each character in the chunk. // This involves finding the index of 'value' in the 'mask' and // multiplying it by (delimiterOffset^position). - return c + mask.indexOf(value) * delimiterOffset ** (chunk.length - 1 - index); - }, 0); + c + mask.indexOf(value) * delimiterOffset ** (chunk.length - 1 - index) + , 0); // The actual character code is offset by the given amount return String.fromCharCode(charCode - charCodeOffset); diff --git a/packages/providers/src/providers/embeds/streamsb.ts b/packages/providers/src/providers/embeds/streamsb.ts index 7e5c5ad..084c59d 100644 --- a/packages/providers/src/providers/embeds/streamsb.ts +++ b/packages/providers/src/providers/embeds/streamsb.ts @@ -5,8 +5,8 @@ import FormData from 'form-data'; import { flags } from '@/entrypoint/utils/targets'; import { makeEmbed } from '@/providers/base'; -import { StreamFile } from '@/providers/streams'; -import { EmbedScrapeContext } from '@/utils/context'; +import type { StreamFile } from '@/providers/streams'; +import type { EmbedScrapeContext } from '@/utils/context'; async function fetchCaptchaToken(ctx: EmbedScrapeContext, domain: string, recaptchaKey: string) { const domainHash = Base64.stringify(Utf8.parse(domain)).replace(/=/g, '.'); @@ -150,7 +150,7 @@ export const streamsbScraper = makeEmbed({ (a, v) => { a[v.quality] = { type: 'mp4', - url: v.url as string, + url: v.url!, }; return a; }, diff --git a/packages/providers/src/providers/embeds/upcloud.ts b/packages/providers/src/providers/embeds/upcloud.ts index 63d8407..ad30d53 100644 --- a/packages/providers/src/providers/embeds/upcloud.ts +++ b/packages/providers/src/providers/embeds/upcloud.ts @@ -2,7 +2,8 @@ import crypto from 'crypto-js'; import { flags } from '@/entrypoint/utils/targets'; import { makeEmbed } from '@/providers/base'; -import { Caption, getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; +import type { Caption} from '@/providers/captions'; +import { getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; const origin = 'https://rabbitstream.net'; const referer = 'https://rabbitstream.net/'; diff --git a/packages/providers/src/providers/embeds/vidplay/common.ts b/packages/providers/src/providers/embeds/vidplay/common.ts index f10681a..f4f9a02 100644 --- a/packages/providers/src/providers/embeds/vidplay/common.ts +++ b/packages/providers/src/providers/embeds/vidplay/common.ts @@ -1,6 +1,6 @@ import { makeFullUrl } from '@/fetchers/common'; import { decodeData } from '@/providers/sources/vidsrcto/common'; -import { EmbedScrapeContext } from '@/utils/context'; +import type { EmbedScrapeContext } from '@/utils/context'; export const vidplayBase = 'https://vidplay.online'; export const referer = `${vidplayBase}/`; diff --git a/packages/providers/src/providers/embeds/vidplay/index.ts b/packages/providers/src/providers/embeds/vidplay/index.ts index 781909c..741bd80 100644 --- a/packages/providers/src/providers/embeds/vidplay/index.ts +++ b/packages/providers/src/providers/embeds/vidplay/index.ts @@ -1,8 +1,9 @@ import { makeEmbed } from '@/providers/base'; -import { Caption, getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; +import type { Caption} from '@/providers/captions'; +import { getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; import { getFileUrl } from './common'; -import { SubtitleResult, ThumbnailTrack, VidplaySourceResponse } from './types'; +import type { SubtitleResult, ThumbnailTrack, VidplaySourceResponse } from './types'; export const vidplayScraper = makeEmbed({ id: 'vidplay', diff --git a/packages/providers/src/providers/embeds/vidplay/types.ts b/packages/providers/src/providers/embeds/vidplay/types.ts index 8810647..14fc36a 100644 --- a/packages/providers/src/providers/embeds/vidplay/types.ts +++ b/packages/providers/src/providers/embeds/vidplay/types.ts @@ -1,4 +1,4 @@ -export type VidplaySourceResponse = { +export interface VidplaySourceResponse { result: | { sources: { @@ -10,7 +10,7 @@ export type VidplaySourceResponse = { }[]; } | number; -}; +} export type SubtitleResult = { file: string; @@ -18,7 +18,7 @@ export type SubtitleResult = { kind: string; }[]; -export type ThumbnailTrack = { +export interface ThumbnailTrack { type: 'vtt'; url: string; -}; +} diff --git a/packages/providers/src/providers/embeds/warezcdn/common.ts b/packages/providers/src/providers/embeds/warezcdn/common.ts index 2762ed8..1f35b6f 100644 --- a/packages/providers/src/providers/embeds/warezcdn/common.ts +++ b/packages/providers/src/providers/embeds/warezcdn/common.ts @@ -1,5 +1,5 @@ import { warezcdnPlayerBase } from '@/providers/sources/warezcdn/common'; -import { EmbedScrapeContext } from '@/utils/context'; +import type { EmbedScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; function decrypt(input: string) { diff --git a/packages/providers/src/providers/embeds/warezcdn/hls.ts b/packages/providers/src/providers/embeds/warezcdn/hls.ts index 2e49852..809d2ff 100644 --- a/packages/providers/src/providers/embeds/warezcdn/hls.ts +++ b/packages/providers/src/providers/embeds/warezcdn/hls.ts @@ -1,6 +1,6 @@ import { flags } from '@/entrypoint/utils/targets'; import { makeEmbed } from '@/providers/base'; -import { EmbedScrapeContext } from '@/utils/context'; +import type { EmbedScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; import { getDecryptedId } from './common'; diff --git a/packages/providers/src/providers/embeds/warezcdn/mp4.ts b/packages/providers/src/providers/embeds/warezcdn/mp4.ts index ada781d..8347e96 100644 --- a/packages/providers/src/providers/embeds/warezcdn/mp4.ts +++ b/packages/providers/src/providers/embeds/warezcdn/mp4.ts @@ -1,7 +1,7 @@ import { flags } from '@/entrypoint/utils/targets'; import { makeEmbed } from '@/providers/base'; import { warezcdnWorkerProxy } from '@/providers/sources/warezcdn/common'; -import { EmbedScrapeContext } from '@/utils/context'; +import type { EmbedScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; import { getDecryptedId } from './common'; diff --git a/packages/providers/src/providers/get.ts b/packages/providers/src/providers/get.ts index 900bbd1..e454692 100644 --- a/packages/providers/src/providers/get.ts +++ b/packages/providers/src/providers/get.ts @@ -1,5 +1,6 @@ -import { FeatureMap, flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; -import { Embed, Sourcerer } from '@/providers/base'; +import type { FeatureMap} from '@/entrypoint/utils/targets'; +import { flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; +import type { Embed, Sourcerer } from '@/providers/base'; import { hasDuplicates } from '@/utils/predicates'; export interface ProviderList { diff --git a/packages/providers/src/providers/sources/flixhq/index.ts b/packages/providers/src/providers/sources/flixhq/index.ts index d0a2898..c037835 100644 --- a/packages/providers/src/providers/sources/flixhq/index.ts +++ b/packages/providers/src/providers/sources/flixhq/index.ts @@ -1,5 +1,6 @@ import { flags } from '@/entrypoint/utils/targets'; -import { SourcererEmbed, makeSourcerer } from '@/providers/base'; +import type { SourcererEmbed} from '@/providers/base'; +import { makeSourcerer } from '@/providers/base'; import { upcloudScraper } from '@/providers/embeds/upcloud'; import { vidCloudScraper } from '@/providers/embeds/vidcloud'; import { getFlixhqMovieSources, getFlixhqShowSources, getFlixhqSourceDetails } from '@/providers/sources/flixhq/scrape'; diff --git a/packages/providers/src/providers/sources/flixhq/scrape.ts b/packages/providers/src/providers/sources/flixhq/scrape.ts index 3f42e9a..e43c2c6 100644 --- a/packages/providers/src/providers/sources/flixhq/scrape.ts +++ b/packages/providers/src/providers/sources/flixhq/scrape.ts @@ -1,8 +1,8 @@ import { load } from 'cheerio'; -import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import type { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; import { flixHqBase } from '@/providers/sources/flixhq/common'; -import { ScrapeContext } from '@/utils/context'; +import type { ScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; export async function getFlixhqSourceDetails(ctx: ScrapeContext, sourceId: string): Promise { @@ -59,12 +59,10 @@ export async function getFlixhqShowSources(ctx: ScrapeContext, media: ShowMedia, const seasonDoc = load(seasonData); const episode = seasonDoc('.nav-item > a') .toArray() - .map((el) => { - return { + .map((el) => ({ id: seasonDoc(el).attr('data-id'), title: seasonDoc(el).attr('title'), - }; - }) + })) .find((e) => e.title?.startsWith(`Eps ${media.episode.number}`))?.id; if (!episode) throw new NotFoundError('episode not found'); diff --git a/packages/providers/src/providers/sources/flixhq/search.ts b/packages/providers/src/providers/sources/flixhq/search.ts index bcab033..3d86aca 100644 --- a/packages/providers/src/providers/sources/flixhq/search.ts +++ b/packages/providers/src/providers/sources/flixhq/search.ts @@ -1,9 +1,9 @@ import { load } from 'cheerio'; -import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import type { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; import { flixHqBase } from '@/providers/sources/flixhq/common'; import { compareMedia, compareTitle } from '@/utils/compare'; -import { ScrapeContext } from '@/utils/context'; +import type { ScrapeContext } from '@/utils/context'; export async function getFlixhqId(ctx: ScrapeContext, media: MovieMedia | ShowMedia): Promise { const searchResults = await ctx.proxiedFetcher(`/search/${media.title.replaceAll(/[^a-z0-9A-Z]/g, '-')}`, { diff --git a/packages/providers/src/providers/sources/gomovies/index.ts b/packages/providers/src/providers/sources/gomovies/index.ts index 419efba..d2e1463 100644 --- a/packages/providers/src/providers/sources/gomovies/index.ts +++ b/packages/providers/src/providers/sources/gomovies/index.ts @@ -131,7 +131,7 @@ export const goMoviesScraper = makeSourcerer({ .filter((embed) => embed.url) .map((embed) => ({ embedId: embed.embedId, - url: embed.url as string, + url: embed.url!, })); if (filteredEmbeds.length === 0) throw new Error('No valid embeds found.'); @@ -213,7 +213,7 @@ export const goMoviesScraper = makeSourcerer({ .filter((embed) => embed.url) .map((embed) => ({ embedId: embed.embedId, - url: embed.url as string, + url: embed.url!, })); if (filteredEmbeds.length === 0) throw new Error('No valid embeds found.'); diff --git a/packages/providers/src/providers/sources/gomovies/source.ts b/packages/providers/src/providers/sources/gomovies/source.ts index 4ef93bc..3d55a7b 100644 --- a/packages/providers/src/providers/sources/gomovies/source.ts +++ b/packages/providers/src/providers/sources/gomovies/source.ts @@ -1,6 +1,6 @@ import { load } from 'cheerio'; -import { ScrapeContext } from '@/utils/context'; +import type { ScrapeContext } from '@/utils/context'; import { gomoviesBase } from '.'; diff --git a/packages/providers/src/providers/sources/goojara/getEmbeds.ts b/packages/providers/src/providers/sources/goojara/getEmbeds.ts index 7b26d6c..8adacc0 100644 --- a/packages/providers/src/providers/sources/goojara/getEmbeds.ts +++ b/packages/providers/src/providers/sources/goojara/getEmbeds.ts @@ -1,9 +1,10 @@ import { load } from 'cheerio'; -import { ScrapeContext } from '@/utils/context'; +import type { ScrapeContext } from '@/utils/context'; import { makeCookieHeader, parseSetCookie } from '@/utils/cookie'; -import { EmbedsResult, baseUrl, baseUrl2 } from './type'; +import type { EmbedsResult} from './type'; +import { baseUrl, baseUrl2 } from './type'; export async function getEmbeds(ctx: ScrapeContext, id: string): Promise { const data = await ctx.fetcher.full(`/${id}`, { @@ -22,7 +23,7 @@ export async function getEmbeds(ctx: ScrapeContext, id: string): Promise => { const result = await searchAndFindMediaId(ctx); - if (!result || !result.id) throw new NotFoundError('No result found'); + if (!result?.id) throw new NotFoundError('No result found'); const translatorId = await getTranslatorId(result.url, result.id, ctx); if (!translatorId) throw new NotFoundError('No translator id found'); diff --git a/packages/providers/src/providers/sources/hdrezka/types.ts b/packages/providers/src/providers/sources/hdrezka/types.ts index 3a3a6d0..22fc129 100644 --- a/packages/providers/src/providers/sources/hdrezka/types.ts +++ b/packages/providers/src/providers/sources/hdrezka/types.ts @@ -1,6 +1,6 @@ -import { ScrapeMedia } from "@/entrypoint/utils/media"; +import type { ScrapeMedia } from "@/entrypoint/utils/media"; -export type VideoLinks = { +export interface VideoLinks { success: boolean; message: string; premium_content: number; @@ -10,7 +10,7 @@ export type VideoLinks = { subtitle_lns: boolean; subtitle_def: boolean; thumbnails: string; -}; +} export interface MovieData { id: string | null; diff --git a/packages/providers/src/providers/sources/hdrezka/utils.ts b/packages/providers/src/providers/sources/hdrezka/utils.ts index a88c5a3..57c6469 100644 --- a/packages/providers/src/providers/sources/hdrezka/utils.ts +++ b/packages/providers/src/providers/sources/hdrezka/utils.ts @@ -1,5 +1,5 @@ import { getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; -import { FileBasedStream } from '@/providers/streams'; +import type { FileBasedStream } from '@/providers/streams'; import { NotFoundError } from '@/utils/errors'; import { getValidQualityFromString } from '@/utils/quality'; diff --git a/packages/providers/src/providers/sources/insertunit/captions.ts b/packages/providers/src/providers/sources/insertunit/captions.ts index 881c9c2..863f533 100644 --- a/packages/providers/src/providers/sources/insertunit/captions.ts +++ b/packages/providers/src/providers/sources/insertunit/captions.ts @@ -1,6 +1,7 @@ -import { Caption, removeDuplicatedLanguages } from '@/providers/captions'; +import type { Caption} from '@/providers/captions'; +import { removeDuplicatedLanguages } from '@/providers/captions'; -import { Subtitle } from './types'; +import type { Subtitle } from './types'; export async function getCaptions(data: Subtitle[]) { let captions: Caption[] = []; diff --git a/packages/providers/src/providers/sources/insertunit/index.ts b/packages/providers/src/providers/sources/insertunit/index.ts index 9a54866..898f5fd 100644 --- a/packages/providers/src/providers/sources/insertunit/index.ts +++ b/packages/providers/src/providers/sources/insertunit/index.ts @@ -1,10 +1,10 @@ import { flags } from '@/entrypoint/utils/targets'; import { makeSourcerer } from '@/providers/base'; -import { Caption } from '@/providers/captions'; +import type { Caption } from '@/providers/captions'; import { NotFoundError } from '@/utils/errors'; import { getCaptions } from './captions'; -import { Season } from './types'; +import type { Season } from './types'; const insertUnitBase = 'https://api.insertunit.ws/'; @@ -80,7 +80,7 @@ export const insertunitScraper = makeSourcerer({ let captions: Caption[] = []; - if (subtitleJSONData != null && subtitleJSONData[1] != null) { + if (subtitleJSONData?.[1] != null) { const subtitleData = JSON.parse(subtitleJSONData[1]); captions = await getCaptions(subtitleData); } diff --git a/packages/providers/src/providers/sources/kissasian/search.ts b/packages/providers/src/providers/sources/kissasian/search.ts index 3fc9cd9..039f39d 100644 --- a/packages/providers/src/providers/sources/kissasian/search.ts +++ b/packages/providers/src/providers/sources/kissasian/search.ts @@ -1,7 +1,7 @@ import { load } from 'cheerio'; import FormData from 'form-data'; -import { ScrapeContext } from '@/utils/context'; +import type { ScrapeContext } from '@/utils/context'; import { kissasianBase } from './common'; @@ -18,10 +18,8 @@ export async function search(ctx: ScrapeContext, title: string, seasonNumber?: n const searchPage = load(searchResults); - return Array.from(searchPage('a')).map((drama) => { - return { + return Array.from(searchPage('a')).map((drama) => ({ name: searchPage(drama).text(), url: drama.attribs.href, - }; - }); + })); } diff --git a/packages/providers/src/providers/sources/lookmovie/index.ts b/packages/providers/src/providers/sources/lookmovie/index.ts index 80f816d..b84ee2e 100644 --- a/packages/providers/src/providers/sources/lookmovie/index.ts +++ b/packages/providers/src/providers/sources/lookmovie/index.ts @@ -1,6 +1,7 @@ import { flags } from '@/entrypoint/utils/targets'; -import { SourcererOutput, makeSourcerer } from '@/providers/base'; -import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import type { SourcererOutput} from '@/providers/base'; +import { makeSourcerer } from '@/providers/base'; +import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; import { scrape, searchAndFindMedia } from './util'; diff --git a/packages/providers/src/providers/sources/lookmovie/type.ts b/packages/providers/src/providers/sources/lookmovie/type.ts index 47ccc55..d8f7478 100644 --- a/packages/providers/src/providers/sources/lookmovie/type.ts +++ b/packages/providers/src/providers/sources/lookmovie/type.ts @@ -1,4 +1,4 @@ -import { MovieMedia } from '@/entrypoint/utils/media'; +import type { MovieMedia } from '@/entrypoint/utils/media'; // ! Types interface BaseConfig { @@ -35,9 +35,7 @@ export interface ShowDataResult { episodes: episodeObj[]; } -interface VideoSources { - [key: string]: string; -} +type VideoSources = Record; interface VideoSubtitles { id?: number; diff --git a/packages/providers/src/providers/sources/lookmovie/util.ts b/packages/providers/src/providers/sources/lookmovie/util.ts index 6057f76..e523251 100644 --- a/packages/providers/src/providers/sources/lookmovie/util.ts +++ b/packages/providers/src/providers/sources/lookmovie/util.ts @@ -1,9 +1,9 @@ -import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import type { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; import { compareMedia } from '@/utils/compare'; -import { ScrapeContext } from '@/utils/context'; +import type { ScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; -import { Result, ResultItem, ShowDataResult, episodeObj } from './type'; +import type { Result, ResultItem, ShowDataResult, episodeObj } from './type'; import { getVideo } from './video'; export const baseUrl = 'https://lmscript.xyz'; @@ -46,9 +46,7 @@ export async function scrape(ctx: ScrapeContext, media: MovieMedia | ShowMedia, query: { expand: 'episodes', id: result.id_show }, }); - const episode = data.episodes?.find((v: episodeObj) => { - return Number(v.season) === Number(media.season.number) && Number(v.episode) === Number(media.episode.number); - }); + const episode = data.episodes?.find((v: episodeObj) => Number(v.season) === Number(media.season.number) && Number(v.episode) === Number(media.episode.number)); if (episode) id = episode.id; } diff --git a/packages/providers/src/providers/sources/lookmovie/video.ts b/packages/providers/src/providers/sources/lookmovie/video.ts index 8e8e3c4..7990330 100644 --- a/packages/providers/src/providers/sources/lookmovie/video.ts +++ b/packages/providers/src/providers/sources/lookmovie/video.ts @@ -1,8 +1,9 @@ -import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; -import { Caption, labelToLanguageCode, removeDuplicatedLanguages } from '@/providers/captions'; -import { ScrapeContext } from '@/utils/context'; +import type { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import type { Caption} from '@/providers/captions'; +import { labelToLanguageCode, removeDuplicatedLanguages } from '@/providers/captions'; +import type { ScrapeContext } from '@/utils/context'; -import { StreamsDataResult } from './type'; +import type { StreamsDataResult } from './type'; import { baseUrl } from './util'; export async function getVideoSources( diff --git a/packages/providers/src/providers/sources/nepu/index.ts b/packages/providers/src/providers/sources/nepu/index.ts index 0e19721..cc4aa3e 100644 --- a/packages/providers/src/providers/sources/nepu/index.ts +++ b/packages/providers/src/providers/sources/nepu/index.ts @@ -1,11 +1,12 @@ import { load } from 'cheerio'; -import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import type { SourcererOutput} from '@/providers/base'; +import { makeSourcerer } from '@/providers/base'; import { compareTitle } from '@/utils/compare'; -import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; -import { SearchResults } from './types'; +import type { SearchResults } from './types'; const nepuBase = 'https://nepu.to'; const nepuReferer = `${nepuBase}/`; diff --git a/packages/providers/src/providers/sources/nepu/types.ts b/packages/providers/src/providers/sources/nepu/types.ts index 200995a..1a00719 100644 --- a/packages/providers/src/providers/sources/nepu/types.ts +++ b/packages/providers/src/providers/sources/nepu/types.ts @@ -1,8 +1,8 @@ -export type SearchResults = { +export interface SearchResults { data: { id: number; name: string; url: string; type: 'Movie' | 'Serie'; }[]; -}; +} diff --git a/packages/providers/src/providers/sources/nites.ts b/packages/providers/src/providers/sources/nites.ts index 4a3570a..822ec1b 100644 --- a/packages/providers/src/providers/sources/nites.ts +++ b/packages/providers/src/providers/sources/nites.ts @@ -1,8 +1,9 @@ import { load } from 'cheerio'; -import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import type { SourcererOutput} from '@/providers/base'; +import { makeSourcerer } from '@/providers/base'; import { compareMedia } from '@/utils/compare'; -import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; const baseUrl = 'https://w1.nites.is'; diff --git a/packages/providers/src/providers/sources/nsbx.ts b/packages/providers/src/providers/sources/nsbx.ts index 6082e96..4eb2d1b 100644 --- a/packages/providers/src/providers/sources/nsbx.ts +++ b/packages/providers/src/providers/sources/nsbx.ts @@ -1,6 +1,7 @@ import { flags } from '@/entrypoint/utils/targets'; -import { SourcererEmbed, SourcererOutput, makeSourcerer } from '@/providers/base'; -import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import type { SourcererEmbed, SourcererOutput} from '@/providers/base'; +import { makeSourcerer } from '@/providers/base'; +import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; export const headers = { diff --git a/packages/providers/src/providers/sources/primewire/index.ts b/packages/providers/src/providers/sources/primewire/index.ts index b83594c..81a0afb 100644 --- a/packages/providers/src/providers/sources/primewire/index.ts +++ b/packages/providers/src/providers/sources/primewire/index.ts @@ -2,7 +2,7 @@ import { load } from 'cheerio'; import { flags } from '@/entrypoint/utils/targets'; import { makeSourcerer } from '@/providers/base'; -import { ScrapeContext } from '@/utils/context'; +import type { ScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; import { primewireApiKey, primewireBase } from './common'; @@ -108,9 +108,7 @@ export const primewireScraper = makeSourcerer({ const episodeLink = seasonPage(`.show_season[data-id='${ctx.media.season.number}'] > div > a`) .toArray() - .find((link) => { - return link.attribs.href.includes(`-episode-${ctx.media.episode.number}`); - })?.attribs.href; + .find((link) => link.attribs.href.includes(`-episode-${ctx.media.episode.number}`))?.attribs.href; if (!episodeLink) throw new NotFoundError('No episode links found'); diff --git a/packages/providers/src/providers/sources/ridomovies/index.ts b/packages/providers/src/providers/sources/ridomovies/index.ts index 638ea13..1017ee7 100644 --- a/packages/providers/src/providers/sources/ridomovies/index.ts +++ b/packages/providers/src/providers/sources/ridomovies/index.ts @@ -1,13 +1,14 @@ import { load } from 'cheerio'; import { flags } from '@/entrypoint/utils/targets'; -import { SourcererEmbed, makeSourcerer } from '@/providers/base'; +import type { SourcererEmbed} from '@/providers/base'; +import { makeSourcerer } from '@/providers/base'; import { closeLoadScraper } from '@/providers/embeds/closeload'; import { ridooScraper } from '@/providers/embeds/ridoo'; -import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; -import { IframeSourceResult, SearchResult } from './types'; +import type { IframeSourceResult, SearchResult } from './types'; const ridoMoviesBase = `https://ridomovies.tv`; const ridoMoviesApiBase = `${ridoMoviesBase}/core/api`; diff --git a/packages/providers/src/providers/sources/ridomovies/types.ts b/packages/providers/src/providers/sources/ridomovies/types.ts index a030738..d5ba25d 100644 --- a/packages/providers/src/providers/sources/ridomovies/types.ts +++ b/packages/providers/src/providers/sources/ridomovies/types.ts @@ -65,14 +65,14 @@ export interface SearchResultItem { contentable: Contentable; } -export type SearchResult = { +export interface SearchResult { data: { items: SearchResultItem[]; }; -}; +} -export type IframeSourceResult = { +export interface IframeSourceResult { data: { url: string; }[]; -}; +} diff --git a/packages/providers/src/providers/sources/showbox/index.ts b/packages/providers/src/providers/sources/showbox/index.ts index 9901a52..32fec19 100644 --- a/packages/providers/src/providers/sources/showbox/index.ts +++ b/packages/providers/src/providers/sources/showbox/index.ts @@ -1,8 +1,9 @@ import { flags } from '@/entrypoint/utils/targets'; -import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import type { SourcererOutput} from '@/providers/base'; +import { makeSourcerer } from '@/providers/base'; import { febboxMp4Scraper } from '@/providers/embeds/febbox/mp4'; import { compareTitle } from '@/utils/compare'; -import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; import { sendRequest } from './sendRequest'; diff --git a/packages/providers/src/providers/sources/smashystream/index.ts b/packages/providers/src/providers/sources/smashystream/index.ts index 0937e6a..8dfea61 100644 --- a/packages/providers/src/providers/sources/smashystream/index.ts +++ b/packages/providers/src/providers/sources/smashystream/index.ts @@ -1,8 +1,9 @@ import { flags } from '@/entrypoint/utils/targets'; -import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import type { SourcererOutput} from '@/providers/base'; +import { makeSourcerer } from '@/providers/base'; import { smashyStreamOScraper } from '@/providers/embeds/smashystream/opstream'; import { smashyStreamFScraper } from '@/providers/embeds/smashystream/video1'; -import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; const universalScraper = async (ctx: ShowScrapeContext | MovieScrapeContext): Promise => { // theres no point in fetching the player page diff --git a/packages/providers/src/providers/sources/soapertv/index.ts b/packages/providers/src/providers/sources/soapertv/index.ts index feee555..4d8cbba 100644 --- a/packages/providers/src/providers/sources/soapertv/index.ts +++ b/packages/providers/src/providers/sources/soapertv/index.ts @@ -1,12 +1,14 @@ import { load } from 'cheerio'; import { flags } from '@/entrypoint/utils/targets'; -import { Caption, labelToLanguageCode } from '@/providers/captions'; -import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import type { Caption} from '@/providers/captions'; +import { labelToLanguageCode } from '@/providers/captions'; +import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; -import { InfoResponse } from './types'; -import { SourcererOutput, makeSourcerer } from '../../base'; +import type { InfoResponse } from './types'; +import type { SourcererOutput} from '../../base'; +import { makeSourcerer } from '../../base'; const baseUrl = 'https://soaper.tv'; diff --git a/packages/providers/src/providers/sources/tugaflix/index.ts b/packages/providers/src/providers/sources/tugaflix/index.ts index eda8042..379e805 100644 --- a/packages/providers/src/providers/sources/tugaflix/index.ts +++ b/packages/providers/src/providers/sources/tugaflix/index.ts @@ -1,7 +1,8 @@ import { load } from 'cheerio'; import { flags } from '@/entrypoint/utils/targets'; -import { SourcererEmbed, makeSourcerer } from '@/providers/base'; +import type { SourcererEmbed} from '@/providers/base'; +import { makeSourcerer } from '@/providers/base'; import { compareMedia } from '@/utils/compare'; import { NotFoundError } from '@/utils/errors'; diff --git a/packages/providers/src/providers/sources/vidsrc/scrape-movie.ts b/packages/providers/src/providers/sources/vidsrc/scrape-movie.ts index 585eb31..8adebab 100644 --- a/packages/providers/src/providers/sources/vidsrc/scrape-movie.ts +++ b/packages/providers/src/providers/sources/vidsrc/scrape-movie.ts @@ -1,5 +1,5 @@ import { getVidSrcMovieSources } from '@/providers/sources/vidsrc/scrape'; -import { MovieScrapeContext } from '@/utils/context'; +import type { MovieScrapeContext } from '@/utils/context'; export async function scrapeMovie(ctx: MovieScrapeContext) { return { diff --git a/packages/providers/src/providers/sources/vidsrc/scrape-show.ts b/packages/providers/src/providers/sources/vidsrc/scrape-show.ts index ff5d2a4..33bbe12 100644 --- a/packages/providers/src/providers/sources/vidsrc/scrape-show.ts +++ b/packages/providers/src/providers/sources/vidsrc/scrape-show.ts @@ -1,5 +1,5 @@ import { getVidSrcShowSources } from '@/providers/sources/vidsrc/scrape'; -import { ShowScrapeContext } from '@/utils/context'; +import type { ShowScrapeContext } from '@/utils/context'; export async function scrapeShow(ctx: ShowScrapeContext) { return { diff --git a/packages/providers/src/providers/sources/vidsrc/scrape.ts b/packages/providers/src/providers/sources/vidsrc/scrape.ts index 81dceff..a05d95b 100644 --- a/packages/providers/src/providers/sources/vidsrc/scrape.ts +++ b/packages/providers/src/providers/sources/vidsrc/scrape.ts @@ -1,10 +1,10 @@ import { load } from 'cheerio'; -import { SourcererEmbed } from '@/providers/base'; +import type { SourcererEmbed } from '@/providers/base'; import { streambucketScraper } from '@/providers/embeds/streambucket'; import { vidsrcembedScraper } from '@/providers/embeds/vidsrc'; import { vidsrcBase, vidsrcRCPBase } from '@/providers/sources/vidsrc/common'; -import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; function decodeSrc(encoded: string, seed: string) { let decoded = ''; diff --git a/packages/providers/src/providers/sources/vidsrcto/common.ts b/packages/providers/src/providers/sources/vidsrcto/common.ts index 33c436e..33a3bb5 100644 --- a/packages/providers/src/providers/sources/vidsrcto/common.ts +++ b/packages/providers/src/providers/sources/vidsrcto/common.ts @@ -1,10 +1,10 @@ // This file is based on https://github.com/Ciarands/vidsrc-to-resolver/blob/dffa45e726a4b944cb9af0c9e7630476c93c0213/vidsrc.py#L16 // Full credits to @Ciarands! -const DECRYPTION_KEY = 'WXrUARXb1aDLaZjI'; +const DECRYPTION_KEY = "WXrUARXb1aDLaZjI"; export const decodeBase64UrlSafe = (str: string) => { - const standardizedInput = str.replace(/_/g, '/').replace(/-/g, '+'); + const standardizedInput = str.replace(/_/g, "/").replace(/-/g, "+"); const decodedData = atob(standardizedInput); const bytes = new Uint8Array(decodedData.length); @@ -26,17 +26,21 @@ export const decodeData = (key: string, data: any) => { } index1 = 0; let index2 = 0; - let finalKey = ''; + let finalKey = ""; for (let char = 0; char < data.length; char += 1) { index1 = (index1 + 1) % 256; index2 = (index2 + state[index1]) % 256; const temp = state[index1]; state[index1] = state[index2]; state[index2] = temp; - if (typeof data[char] === 'string') { - finalKey += String.fromCharCode(data[char].charCodeAt(0) ^ state[(state[index1] + state[index2]) % 256]); - } else if (typeof data[char] === 'number') { - finalKey += String.fromCharCode(data[char] ^ state[(state[index1] + state[index2]) % 256]); + if (typeof data[char] === "string") { + finalKey += String.fromCharCode( + data[char].charCodeAt(0) ^ state[(state[index1] + state[index2]) % 256], + ); + } else if (typeof data[char] === "number") { + finalKey += String.fromCharCode( + data[char] ^ state[(state[index1] + state[index2]) % 256], + ); } } return finalKey; diff --git a/packages/providers/src/providers/sources/vidsrcto/index.ts b/packages/providers/src/providers/sources/vidsrcto/index.ts index 3bb7b92..08abe6d 100644 --- a/packages/providers/src/providers/sources/vidsrcto/index.ts +++ b/packages/providers/src/providers/sources/vidsrcto/index.ts @@ -1,10 +1,11 @@ import { load } from 'cheerio'; -import { SourcererEmbed, SourcererOutput, makeSourcerer } from '@/providers/base'; -import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import type { SourcererEmbed, SourcererOutput} from '@/providers/base'; +import { makeSourcerer } from '@/providers/base'; +import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; import { decryptSourceUrl } from './common'; -import { SourceResult, SourcesResult } from './types'; +import type { SourceResult, SourcesResult } from './types'; const vidSrcToBase = 'https://vidsrc.to'; const referer = `${vidSrcToBase}/`; diff --git a/packages/providers/src/providers/sources/vidsrcto/types.ts b/packages/providers/src/providers/sources/vidsrcto/types.ts index 0694b15..1471ca3 100644 --- a/packages/providers/src/providers/sources/vidsrcto/types.ts +++ b/packages/providers/src/providers/sources/vidsrcto/types.ts @@ -1,7 +1,7 @@ -export type VidSrcToResponse = { +export interface VidSrcToResponse { status: number; result: T; -}; +} export type SourcesResult = VidSrcToResponse< { diff --git a/packages/providers/src/providers/sources/warezcdn/common.ts b/packages/providers/src/providers/sources/warezcdn/common.ts index 182b2b6..4d60aee 100644 --- a/packages/providers/src/providers/sources/warezcdn/common.ts +++ b/packages/providers/src/providers/sources/warezcdn/common.ts @@ -1,4 +1,4 @@ -import { ScrapeContext } from '@/utils/context'; +import type { ScrapeContext } from '@/utils/context'; export const warezcdnBase = 'https://embed.warezcdn.com'; export const warezcdnApiBase = 'https://warezcdn.com/embed'; diff --git a/packages/providers/src/providers/sources/warezcdn/index.ts b/packages/providers/src/providers/sources/warezcdn/index.ts index f27b052..3cc097b 100644 --- a/packages/providers/src/providers/sources/warezcdn/index.ts +++ b/packages/providers/src/providers/sources/warezcdn/index.ts @@ -1,44 +1,52 @@ -import { load } from 'cheerio'; - -import { flags } from '@/entrypoint/utils/targets'; -import { SourcererEmbed, makeSourcerer } from '@/providers/base'; -import { mixdropScraper } from '@/providers/embeds/mixdrop'; -import { warezcdnembedHlsScraper } from '@/providers/embeds/warezcdn/hls'; -import { warezcdnembedMp4Scraper } from '@/providers/embeds/warezcdn/mp4'; -import { NotFoundError } from '@/utils/errors'; - -import { getExternalPlayerUrl, warezcdnBase } from './common'; -import { SerieAjaxResponse } from './types'; +import type { SourcererEmbed } from "@/providers/base"; +import { flags } from "@/entrypoint/utils/targets"; +import { makeSourcerer } from "@/providers/base"; +import { mixdropScraper } from "@/providers/embeds/mixdrop"; +import { warezcdnembedHlsScraper } from "@/providers/embeds/warezcdn/hls"; +import { warezcdnembedMp4Scraper } from "@/providers/embeds/warezcdn/mp4"; +import { NotFoundError } from "@/utils/errors"; +import { load } from "cheerio"; + +import { getExternalPlayerUrl, warezcdnBase } from "./common"; +import { SerieAjaxResponse } from "./types"; export const warezcdnScraper = makeSourcerer({ - id: 'warezcdn', - name: 'WarezCDN', + id: "warezcdn", + name: "WarezCDN", rank: 81, flags: [flags.CORS_ALLOWED], scrapeMovie: async (ctx) => { - if (!ctx.media.imdbId) throw new NotFoundError('This source requires IMDB id.'); + if (!ctx.media.imdbId) + throw new NotFoundError("This source requires IMDB id."); - const serversPage = await ctx.proxiedFetcher(`/filme/${ctx.media.imdbId}`, { - baseUrl: warezcdnBase, - }); + const serversPage = await ctx.proxiedFetcher( + `/filme/${ctx.media.imdbId}`, + { + baseUrl: warezcdnBase, + }, + ); const $ = load(serversPage); - const embedsHost = $('.hostList.active [data-load-embed]').get(); + const embedsHost = $(".hostList.active [data-load-embed]").get(); const embeds: SourcererEmbed[] = []; embedsHost.forEach(async (element) => { - const embedHost = $(element).attr('data-load-embed-host')!; - const embedUrl = $(element).attr('data-load-embed')!; - - if (embedHost === 'mixdrop') { - const realEmbedUrl = await getExternalPlayerUrl(ctx, 'mixdrop', embedUrl); - if (!realEmbedUrl) throw new Error('Could not find embed url'); + const embedHost = $(element).attr("data-load-embed-host")!; + const embedUrl = $(element).attr("data-load-embed")!; + + if (embedHost === "mixdrop") { + const realEmbedUrl = await getExternalPlayerUrl( + ctx, + "mixdrop", + embedUrl, + ); + if (!realEmbedUrl) throw new Error("Could not find embed url"); embeds.push({ embedId: mixdropScraper.id, url: realEmbedUrl, }); - } else if (embedHost === 'warezcdn') { + } else if (embedHost === "warezcdn") { embeds.push( { embedId: warezcdnembedHlsScraper.id, @@ -57,18 +65,21 @@ export const warezcdnScraper = makeSourcerer({ }; }, scrapeShow: async (ctx) => { - if (!ctx.media.imdbId) throw new NotFoundError('This source requires IMDB id.'); + if (!ctx.media.imdbId) + throw new NotFoundError("This source requires IMDB id."); const url = `${warezcdnBase}/serie/${ctx.media.imdbId}/${ctx.media.season.number}/${ctx.media.episode.number}`; const serversPage = await ctx.proxiedFetcher(url); - const episodeId = serversPage.match(/\$\('\[data-load-episode-content="(\d+)"\]'\)/)?.[1]; + const episodeId = serversPage.match( + /\$\('\[data-load-episode-content="(\d+)"\]'\)/, + )?.[1]; - if (!episodeId) throw new NotFoundError('Failed to find episode id'); + if (!episodeId) throw new NotFoundError("Failed to find episode id"); const streamsData = await ctx.proxiedFetcher(`/serieAjax.php`, { - method: 'POST', + method: "POST", baseUrl: warezcdnBase, body: new URLSearchParams({ getAudios: episodeId, @@ -76,25 +87,25 @@ export const warezcdnScraper = makeSourcerer({ headers: { Origin: warezcdnBase, Referer: url, - 'X-Requested-With': 'XMLHttpRequest', + "X-Requested-With": "XMLHttpRequest", }, }); const streams: SerieAjaxResponse = JSON.parse(streamsData); - const list = streams.list['0']; + const list = streams.list["0"]; const embeds: SourcererEmbed[] = []; // 3 means ok - if (list.mixdropStatus === '3') { - const realEmbedUrl = await getExternalPlayerUrl(ctx, 'mixdrop', list.id); - if (!realEmbedUrl) throw new Error('Could not find embed url'); + if (list.mixdropStatus === "3") { + const realEmbedUrl = await getExternalPlayerUrl(ctx, "mixdrop", list.id); + if (!realEmbedUrl) throw new Error("Could not find embed url"); embeds.push({ embedId: mixdropScraper.id, url: realEmbedUrl, }); } - if (list.warezcdnStatus === '3') { + if (list.warezcdnStatus === "3") { embeds.push( { embedId: warezcdnembedHlsScraper.id, diff --git a/packages/providers/src/providers/sources/warezcdn/types.ts b/packages/providers/src/providers/sources/warezcdn/types.ts index 38711ff..a7c7cec 100644 --- a/packages/providers/src/providers/sources/warezcdn/types.ts +++ b/packages/providers/src/providers/sources/warezcdn/types.ts @@ -7,9 +7,7 @@ interface Data { warezcdnStatus: string; } -type List = { - [key: string]: Data; -}; +type List = Record; export interface SerieAjaxResponse { list: List; diff --git a/packages/providers/src/providers/sources/zoechip/common.ts b/packages/providers/src/providers/sources/zoechip/common.ts index 55b37ac..070d55b 100644 --- a/packages/providers/src/providers/sources/zoechip/common.ts +++ b/packages/providers/src/providers/sources/zoechip/common.ts @@ -3,17 +3,17 @@ import { upcloudScraper } from '@/providers/embeds/upcloud'; import { upstreamScraper } from '@/providers/embeds/upstream'; import { vidCloudScraper } from '@/providers/embeds/vidcloud'; import { getZoeChipSourceURL, getZoeChipSources } from '@/providers/sources/zoechip/scrape'; -import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; export const zoeBase = 'https://zoechip.cc'; -export type ZoeChipSourceDetails = { +export interface ZoeChipSourceDetails { type: string; // Only seen "iframe" so far link: string; sources: string[]; // Never seen this populated, assuming it's a string array tracks: string[]; // Never seen this populated, assuming it's a string array title: string; -}; +} export async function formatSource( ctx: MovieScrapeContext | ShowScrapeContext, diff --git a/packages/providers/src/providers/sources/zoechip/scrape-movie.ts b/packages/providers/src/providers/sources/zoechip/scrape-movie.ts index 86161fc..bdabad2 100644 --- a/packages/providers/src/providers/sources/zoechip/scrape-movie.ts +++ b/packages/providers/src/providers/sources/zoechip/scrape-movie.ts @@ -1,6 +1,6 @@ import { createZoeChipStreamData } from '@/providers/sources/zoechip/common'; import { getZoeChipMovieID } from '@/providers/sources/zoechip/search'; -import { MovieScrapeContext } from '@/utils/context'; +import type { MovieScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; export async function scrapeMovie(ctx: MovieScrapeContext) { diff --git a/packages/providers/src/providers/sources/zoechip/scrape-show.ts b/packages/providers/src/providers/sources/zoechip/scrape-show.ts index fe9f4eb..71f8cc9 100644 --- a/packages/providers/src/providers/sources/zoechip/scrape-show.ts +++ b/packages/providers/src/providers/sources/zoechip/scrape-show.ts @@ -1,7 +1,7 @@ import { createZoeChipStreamData } from '@/providers/sources/zoechip/common'; import { getZoeChipEpisodeID, getZoeChipSeasonID } from '@/providers/sources/zoechip/scrape'; import { getZoeChipShowID } from '@/providers/sources/zoechip/search'; -import { ShowScrapeContext } from '@/utils/context'; +import type { ShowScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; export async function scrapeShow(ctx: ShowScrapeContext) { diff --git a/packages/providers/src/providers/sources/zoechip/scrape.ts b/packages/providers/src/providers/sources/zoechip/scrape.ts index d3eb183..5c42ccd 100644 --- a/packages/providers/src/providers/sources/zoechip/scrape.ts +++ b/packages/providers/src/providers/sources/zoechip/scrape.ts @@ -1,8 +1,9 @@ import { load } from 'cheerio'; -import { ShowMedia } from '@/entrypoint/utils/media'; -import { ZoeChipSourceDetails, zoeBase } from '@/providers/sources/zoechip/common'; -import { MovieScrapeContext, ScrapeContext, ShowScrapeContext } from '@/utils/context'; +import type { ShowMedia } from '@/entrypoint/utils/media'; +import type { ZoeChipSourceDetails} from '@/providers/sources/zoechip/common'; +import { zoeBase } from '@/providers/sources/zoechip/common'; +import type { MovieScrapeContext, ScrapeContext, ShowScrapeContext } from '@/utils/context'; export async function getZoeChipSources(ctx: MovieScrapeContext | ShowScrapeContext, id: string) { // Movies use /ajax/episode/list/ID diff --git a/packages/providers/src/providers/sources/zoechip/search.ts b/packages/providers/src/providers/sources/zoechip/search.ts index f3a838d..9feb4bc 100644 --- a/packages/providers/src/providers/sources/zoechip/search.ts +++ b/packages/providers/src/providers/sources/zoechip/search.ts @@ -1,9 +1,9 @@ import { load } from 'cheerio'; -import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import type { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; import { zoeBase } from '@/providers/sources/zoechip/common'; import { compareMedia } from '@/utils/compare'; -import { ScrapeContext } from '@/utils/context'; +import type { ScrapeContext } from '@/utils/context'; export async function getZoeChipSearchResults(ctx: ScrapeContext, media: MovieMedia | ShowMedia) { const titleCleaned = media.title.toLocaleLowerCase().replace(/ /g, '-'); diff --git a/packages/providers/src/providers/streams.ts b/packages/providers/src/providers/streams.ts index 17567a4..c371857 100644 --- a/packages/providers/src/providers/streams.ts +++ b/packages/providers/src/providers/streams.ts @@ -1,26 +1,26 @@ -import { Flags } from '@/entrypoint/utils/targets'; -import { Caption } from '@/providers/captions'; +import type { Flags } from '@/entrypoint/utils/targets'; +import type { Caption } from '@/providers/captions'; -export type StreamFile = { +export interface StreamFile { type: 'mp4'; url: string; -}; +} export type Qualities = 'unknown' | '360' | '480' | '720' | '1080' | '4k'; -type ThumbnailTrack = { +interface ThumbnailTrack { type: 'vtt'; url: string; -}; +} -type StreamCommon = { +interface StreamCommon { id: string; // only unique per output flags: Flags[]; captions: Caption[]; thumbnailTrack?: ThumbnailTrack; headers?: Record; // these headers HAVE to be set to watch the stream preferredHeaders?: Record; // these headers are optional, would improve the stream -}; +} export type FileBasedStream = StreamCommon & { type: 'file'; diff --git a/packages/providers/src/runners/individualRunner.ts b/packages/providers/src/runners/individualRunner.ts index b309180..a4c956c 100644 --- a/packages/providers/src/runners/individualRunner.ts +++ b/packages/providers/src/runners/individualRunner.ts @@ -1,21 +1,22 @@ -import { IndividualScraperEvents } from '@/entrypoint/utils/events'; -import { ScrapeMedia } from '@/entrypoint/utils/media'; -import { FeatureMap, flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; -import { UseableFetcher } from '@/fetchers/types'; -import { EmbedOutput, SourcererOutput } from '@/providers/base'; -import { ProviderList } from '@/providers/get'; -import { ScrapeContext } from '@/utils/context'; +import type { IndividualScraperEvents } from '@/entrypoint/utils/events'; +import type { ScrapeMedia } from '@/entrypoint/utils/media'; +import type { FeatureMap} from '@/entrypoint/utils/targets'; +import { flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; +import type { UseableFetcher } from '@/fetchers/types'; +import type { EmbedOutput, SourcererOutput } from '@/providers/base'; +import type { ProviderList } from '@/providers/get'; +import type { ScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; import { isValidStream, validatePlayableStreams } from '@/utils/valid'; -export type IndividualSourceRunnerOptions = { +export interface IndividualSourceRunnerOptions { features: FeatureMap; fetcher: UseableFetcher; proxiedFetcher: UseableFetcher; media: ScrapeMedia; id: string; events?: IndividualScraperEvents; -}; +} export async function scrapeInvidualSource( list: ProviderList, @@ -78,14 +79,14 @@ export async function scrapeInvidualSource( return output; } -export type IndividualEmbedRunnerOptions = { +export interface IndividualEmbedRunnerOptions { features: FeatureMap; fetcher: UseableFetcher; proxiedFetcher: UseableFetcher; url: string; id: string; events?: IndividualScraperEvents; -}; +} export async function scrapeIndividualEmbed( list: ProviderList, diff --git a/packages/providers/src/runners/runner.ts b/packages/providers/src/runners/runner.ts index c5f5de3..95d1ae8 100644 --- a/packages/providers/src/runners/runner.ts +++ b/packages/providers/src/runners/runner.ts @@ -1,33 +1,34 @@ -import { FullScraperEvents, UpdateEvent } from '@/entrypoint/utils/events'; -import { ScrapeMedia } from '@/entrypoint/utils/media'; -import { FeatureMap, flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; -import { UseableFetcher } from '@/fetchers/types'; -import { EmbedOutput, SourcererOutput } from '@/providers/base'; -import { ProviderList } from '@/providers/get'; -import { Stream } from '@/providers/streams'; -import { ScrapeContext } from '@/utils/context'; -import { NotFoundError } from '@/utils/errors'; -import { reorderOnIdList } from '@/utils/list'; -import { isValidStream, validatePlayableStream } from '@/utils/valid'; - -export type RunOutput = { +import type { FullScraperEvents, UpdateEvent } from "@/entrypoint/utils/events"; +import type { ScrapeMedia } from "@/entrypoint/utils/media"; +import type { FeatureMap } from "@/entrypoint/utils/targets"; +import type { UseableFetcher } from "@/fetchers/types"; +import type { EmbedOutput, SourcererOutput } from "@/providers/base"; +import type { ProviderList } from "@/providers/get"; +import type { Stream } from "@/providers/streams"; +import type { ScrapeContext } from "@/utils/context"; +import { flagsAllowedInFeatures } from "@/entrypoint/utils/targets"; +import { NotFoundError } from "@/utils/errors"; +import { reorderOnIdList } from "@/utils/list"; +import { isValidStream, validatePlayableStream } from "@/utils/valid"; + +export interface RunOutput { sourceId: string; embedId?: string; stream: Stream; -}; +} -export type SourceRunOutput = { +export interface SourceRunOutput { sourceId: string; stream: Stream[]; embeds: []; -}; +} -export type EmbedRunOutput = { +export interface EmbedRunOutput { embedId: string; stream: Stream[]; -}; +} -export type ProviderRunnerOptions = { +export interface ProviderRunnerOptions { fetcher: UseableFetcher; proxiedFetcher: UseableFetcher; features: FeatureMap; @@ -35,17 +36,22 @@ export type ProviderRunnerOptions = { embedOrder?: string[]; events?: FullScraperEvents; media: ScrapeMedia; -}; +} -export async function runAllProviders(list: ProviderList, ops: ProviderRunnerOptions): Promise { - const sources = reorderOnIdList(ops.sourceOrder ?? [], list.sources).filter((source) => { - if (ops.media.type === 'movie') return !!source.scrapeMovie; - if (ops.media.type === 'show') return !!source.scrapeShow; - return false; - }); +export async function runAllProviders( + list: ProviderList, + ops: ProviderRunnerOptions, +): Promise { + const sources = reorderOnIdList(ops.sourceOrder ?? [], list.sources).filter( + (source) => { + if (ops.media.type === "movie") return !!source.scrapeMovie; + if (ops.media.type === "show") return !!source.scrapeShow; + return false; + }, + ); const embeds = reorderOnIdList(ops.embedOrder ?? [], list.embeds); const embedIds = embeds.map((embed) => embed.id); - let lastId = ''; + let lastId = ""; const contextBase: ScrapeContext = { fetcher: ops.fetcher, @@ -54,7 +60,7 @@ export async function runAllProviders(list: ProviderList, ops: ProviderRunnerOpt ops.events?.update?.({ id: lastId, percentage: val, - status: 'pending', + status: "pending", }); }, }; @@ -70,12 +76,12 @@ export async function runAllProviders(list: ProviderList, ops: ProviderRunnerOpt // run source scrapers let output: SourcererOutput | null = null; try { - if (ops.media.type === 'movie' && source.scrapeMovie) + if (ops.media.type === "movie" && source.scrapeMovie) output = await source.scrapeMovie({ ...contextBase, media: ops.media, }); - else if (ops.media.type === 'show' && source.scrapeShow) + else if (ops.media.type === "show" && source.scrapeShow) output = await source.scrapeShow({ ...contextBase, media: ops.media, @@ -83,16 +89,18 @@ export async function runAllProviders(list: ProviderList, ops: ProviderRunnerOpt if (output) { output.stream = (output.stream ?? []) .filter(isValidStream) - .filter((stream) => flagsAllowedInFeatures(ops.features, stream.flags)); + .filter((stream) => + flagsAllowedInFeatures(ops.features, stream.flags), + ); } if (!output || (!output.stream?.length && !output.embeds.length)) { - throw new NotFoundError('No streams found'); + throw new NotFoundError("No streams found"); } } catch (error) { const updateParams: UpdateEvent = { id: source.id, percentage: 100, - status: error instanceof NotFoundError ? 'notfound' : 'failure', + status: error instanceof NotFoundError ? "notfound" : "failure", reason: error instanceof NotFoundError ? error.message : undefined, error: error instanceof NotFoundError ? undefined : error, }; @@ -100,12 +108,16 @@ export async function runAllProviders(list: ProviderList, ops: ProviderRunnerOpt ops.events?.update?.(updateParams); continue; } - if (!output) throw new Error('Invalid media type'); + if (!output) throw new Error("Invalid media type"); // return stream is there are any if (output.stream?.[0]) { - const playableStream = await validatePlayableStream(output.stream[0], ops, source.id); - if (!playableStream) throw new NotFoundError('No streams found'); + const playableStream = await validatePlayableStream( + output.stream[0], + ops, + source.id, + ); + if (!playableStream) throw new NotFoundError("No streams found"); return { sourceId: source.id, stream: playableStream, @@ -118,12 +130,14 @@ export async function runAllProviders(list: ProviderList, ops: ProviderRunnerOpt const e = list.embeds.find((v) => v.id === embed.embedId); return e && !e.disabled; }) - .sort((a, b) => embedIds.indexOf(a.embedId) - embedIds.indexOf(b.embedId)); + .sort( + (a, b) => embedIds.indexOf(a.embedId) - embedIds.indexOf(b.embedId), + ); if (sortedEmbeds.length > 0) { ops.events?.discoverEmbeds?.({ embeds: sortedEmbeds.map((embed, i) => ({ - id: [source.id, i].join('-'), + id: [source.id, i].join("-"), embedScraperId: embed.embedId, })), sourceId: source.id, @@ -132,10 +146,10 @@ export async function runAllProviders(list: ProviderList, ops: ProviderRunnerOpt for (const [ind, embed] of sortedEmbeds.entries()) { const scraper = embeds.find((v) => v.id === embed.embedId); - if (!scraper) throw new Error('Invalid embed returned'); + if (!scraper) throw new Error("Invalid embed returned"); // run embed scraper - const id = [source.id, ind].join('-'); + const id = [source.id, ind].join("-"); ops.events?.start?.(id); lastId = id; @@ -147,18 +161,24 @@ export async function runAllProviders(list: ProviderList, ops: ProviderRunnerOpt }); embedOutput.stream = embedOutput.stream .filter(isValidStream) - .filter((stream) => flagsAllowedInFeatures(ops.features, stream.flags)); + .filter((stream) => + flagsAllowedInFeatures(ops.features, stream.flags), + ); if (embedOutput.stream.length === 0) { - throw new NotFoundError('No streams found'); + throw new NotFoundError("No streams found"); } - const playableStream = await validatePlayableStream(embedOutput.stream[0], ops, embed.embedId); - if (!playableStream) throw new NotFoundError('No streams found'); + const playableStream = await validatePlayableStream( + embedOutput.stream[0]!, + ops, + embed.embedId, + ); + if (!playableStream) throw new NotFoundError("No streams found"); embedOutput.stream = [playableStream]; } catch (error) { const updateParams: UpdateEvent = { id: source.id, percentage: 100, - status: error instanceof NotFoundError ? 'notfound' : 'failure', + status: error instanceof NotFoundError ? "notfound" : "failure", reason: error instanceof NotFoundError ? error.message : undefined, error: error instanceof NotFoundError ? undefined : error, }; @@ -170,7 +190,7 @@ export async function runAllProviders(list: ProviderList, ops: ProviderRunnerOpt return { sourceId: source.id, embedId: scraper.id, - stream: embedOutput.stream[0], + stream: embedOutput.stream[0]!, }; } } diff --git a/packages/providers/src/utils/compare.ts b/packages/providers/src/utils/compare.ts index 7db784e..e57ece2 100644 --- a/packages/providers/src/utils/compare.ts +++ b/packages/providers/src/utils/compare.ts @@ -1,4 +1,4 @@ -import { CommonMedia } from '@/entrypoint/utils/media'; +import type { CommonMedia } from '@/entrypoint/utils/media'; export function normalizeTitle(title: string): string { let titleTrimmed = title.trim().toLowerCase(); diff --git a/packages/providers/src/utils/context.ts b/packages/providers/src/utils/context.ts index 6f16bca..e6baa46 100644 --- a/packages/providers/src/utils/context.ts +++ b/packages/providers/src/utils/context.ts @@ -1,15 +1,15 @@ -import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; -import { UseableFetcher } from '@/fetchers/types'; +import type { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import type { UseableFetcher } from '@/fetchers/types'; -export type ScrapeContext = { +export interface ScrapeContext { proxiedFetcher: UseableFetcher; fetcher: UseableFetcher; progress(val: number): void; -}; +} -export type EmbedInput = { +export interface EmbedInput { url: string; -}; +} export type EmbedScrapeContext = EmbedInput & ScrapeContext; diff --git a/packages/providers/src/utils/native.ts b/packages/providers/src/utils/native.ts index cc91cdb..e72e9a2 100644 --- a/packages/providers/src/utils/native.ts +++ b/packages/providers/src/utils/native.ts @@ -1,7 +1,7 @@ export const isReactNative = () => { try { - // eslint-disable-next-line global-require, @typescript-eslint/no-var-requires - require('react-native'); + // eslint-disable-next-line import/no-extraneous-dependencies, global-require + require("react-native"); return true; } catch (e) { return false; diff --git a/packages/providers/src/utils/predicates.ts b/packages/providers/src/utils/predicates.ts index f581b2f..e6704f7 100644 --- a/packages/providers/src/utils/predicates.ts +++ b/packages/providers/src/utils/predicates.ts @@ -1,3 +1,3 @@ -export function hasDuplicates(values: Array): boolean { +export function hasDuplicates(values: T[]): boolean { return new Set(values).size !== values.length; } diff --git a/packages/providers/src/utils/quality.ts b/packages/providers/src/utils/quality.ts index 8854ca5..6915672 100644 --- a/packages/providers/src/utils/quality.ts +++ b/packages/providers/src/utils/quality.ts @@ -1,4 +1,4 @@ -import { Qualities } from '@/providers/streams'; +import type { Qualities } from '@/providers/streams'; export function getValidQualityFromString(quality: string): Qualities { switch (quality.toLowerCase().replace('p', '')) { diff --git a/packages/providers/src/utils/valid.ts b/packages/providers/src/utils/valid.ts index e4ea664..22f05df 100644 --- a/packages/providers/src/utils/valid.ts +++ b/packages/providers/src/utils/valid.ts @@ -1,18 +1,20 @@ -import { warezcdnembedMp4Scraper } from '@/providers/embeds/warezcdn/mp4'; -import { Stream } from '@/providers/streams'; -import { IndividualEmbedRunnerOptions } from '@/runners/individualRunner'; -import { ProviderRunnerOptions } from '@/runners/runner'; +import type { Stream } from "@/providers/streams"; +import type { IndividualEmbedRunnerOptions } from "@/runners/individualRunner"; +import type { ProviderRunnerOptions } from "@/runners/runner"; +import { warezcdnembedMp4Scraper } from "@/providers/embeds/warezcdn/mp4"; const SKIP_VALIDATION_CHECK_IDS = [warezcdnembedMp4Scraper.id]; export function isValidStream(stream: Stream | undefined): boolean { if (!stream) return false; - if (stream.type === 'hls') { + if (stream.type === "hls") { if (!stream.playlist) return false; return true; } - if (stream.type === 'file') { - const validQualities = Object.values(stream.qualities).filter((v) => v.url.length > 0); + if (stream.type === "file") { + const validQualities = Object.values(stream.qualities).filter( + (v) => v.url.length > 0, + ); if (validQualities.length === 0) return false; return true; } @@ -28,9 +30,9 @@ export async function validatePlayableStream( ): Promise { if (SKIP_VALIDATION_CHECK_IDS.includes(sourcererId)) return stream; - if (stream.type === 'hls') { + if (stream.type === "hls") { const result = await ops.proxiedFetcher.full(stream.playlist, { - method: 'GET', + method: "GET", headers: { ...stream.preferredHeaders, ...stream.headers, @@ -39,15 +41,15 @@ export async function validatePlayableStream( if (result.statusCode < 200 || result.statusCode >= 400) return null; return stream; } - if (stream.type === 'file') { + if (stream.type === "file") { const validQualitiesResults = await Promise.all( Object.values(stream.qualities).map((quality) => ops.proxiedFetcher.full(quality.url, { - method: 'GET', + method: "GET", headers: { ...stream.preferredHeaders, ...stream.headers, - Range: 'bytes=0-1', + Range: "bytes=0-1", }, }), ), @@ -55,7 +57,10 @@ export async function validatePlayableStream( // remove invalid qualities from the stream const validQualities = stream.qualities; Object.keys(stream.qualities).forEach((quality, index) => { - if (validQualitiesResults[index].statusCode < 200 || validQualitiesResults[index].statusCode >= 400) { + if ( + validQualitiesResults[index]!.statusCode < 200 || + validQualitiesResults[index]!.statusCode >= 400 + ) { delete validQualities[quality as keyof typeof stream.qualities]; } }); @@ -73,7 +78,9 @@ export async function validatePlayableStreams( ): Promise { if (SKIP_VALIDATION_CHECK_IDS.includes(sourcererId)) return streams; - return (await Promise.all(streams.map((stream) => validatePlayableStream(stream, ops, sourcererId)))).filter( - (v) => v !== null, - ) as Stream[]; + return ( + await Promise.all( + streams.map((stream) => validatePlayableStream(stream, ops, sourcererId)), + ) + ).filter((v) => v !== null) as Stream[]; } diff --git a/packages/providers/tsconfig.json b/packages/providers/tsconfig.json index 9f30528..145f1d3 100644 --- a/packages/providers/tsconfig.json +++ b/packages/providers/tsconfig.json @@ -1,7 +1,10 @@ { "compilerOptions": { "target": "es2021", - "lib": ["es2021", "DOM"], + "lib": [ + "es2021", + "DOM" + ], "module": "ESNext", "moduleResolution": "Bundler", "esModuleInterop": true, @@ -14,10 +17,20 @@ "skipLibCheck": true, "resolveJsonModule": true, "paths": { - "@/*": ["./*"], - "@entrypoint": ["./index.ts"] + "@/*": [ + "./*" + ], + "@entrypoint": [ + "./index.ts" + ] } }, - "include": ["src", "vite.config.ts"], - "exclude": ["node_modules", "**/__test__"] -} + "include": [ + "src", + "vite.config.ts" + ], + "exclude": [ + "node_modules", + "**/__test__" + ] +} \ No newline at end of file diff --git a/packages/providers/vite.config.ts b/packages/providers/vite.config.ts index 5aa358f..ba2ecb5 100644 --- a/packages/providers/vite.config.ts +++ b/packages/providers/vite.config.ts @@ -1,23 +1,22 @@ -import path from 'path'; -import { defineConfig } from 'vitest/config'; -import eslintPlugin from '@nabla/vite-plugin-eslint'; -import dts from 'vite-plugin-dts'; -import pkg from './package.json'; +import path from "path"; +import dts from "vite-plugin-dts"; +import { defineConfig } from "vitest/config"; -const shouldTestProviders = process.env.MW_TEST_PROVIDERS === 'true'; -let tests: string[] = ['src/__test__/standard/**/*.test.ts']; -if (shouldTestProviders) tests = ['src/__test__/providers/**/*.test.ts']; +import pkg from "./package.json"; + +const shouldTestProviders = process.env.MW_TEST_PROVIDERS === "true"; +let tests: string[] = ["src/__test__/standard/**/*.test.ts"]; +if (shouldTestProviders) tests = ["src/__test__/providers/**/*.test.ts"]; export default defineConfig((env) => ({ plugins: [ - env.mode !== 'test' && eslintPlugin(), dts({ rollupTypes: true, }), ], resolve: { alias: { - '@': path.resolve(__dirname, './src'), + "@": path.resolve(__dirname, "./src"), }, }, build: { @@ -25,15 +24,17 @@ export default defineConfig((env) => ({ rollupOptions: { external: Object.keys(pkg.dependencies), output: { - globals: Object.fromEntries(Object.keys(pkg.dependencies).map((v) => [v, v])), + globals: Object.fromEntries( + Object.keys(pkg.dependencies).map((v) => [v, v]), + ), }, }, - outDir: 'lib', + outDir: "lib", lib: { - entry: path.resolve(__dirname, 'src/index.ts'), - name: 'index', - fileName: 'index', - formats: ['umd', 'es'], + entry: path.resolve(__dirname, "src/index.ts"), + name: "index", + fileName: "index", + formats: ["umd", "es"], }, }, test: { From 67c811dab8b96af4555807197775e74b3b09308f Mon Sep 17 00:00:00 2001 From: Jorrin Date: Thu, 2 May 2024 20:15:04 +0200 Subject: [PATCH 15/49] fix ci --- .github/workflows/build-mobile.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-mobile.yml b/.github/workflows/build-mobile.yml index c86d2db..fa1fcd5 100644 --- a/.github/workflows/build-mobile.yml +++ b/.github/workflows/build-mobile.yml @@ -40,7 +40,7 @@ jobs: run: bun install - name: Build dependencies - run: bun build + run: bun run build - name: Setup Gradle uses: gradle/actions/setup-gradle@v3 @@ -74,8 +74,8 @@ jobs: - name: Install dependencies run: bun install - - name: Install dependencies - run: bun install + - name: Build dependencies + run: bun run build - name: Cache Pods uses: actions/cache@v4 From 7b50fa632aad85a4004bd23e1d79586cba2589c6 Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Fri, 3 May 2024 15:31:16 +0200 Subject: [PATCH 16/49] chore: deps --- apps/expo/package.json | 6 +++--- bun.lockb | Bin 763912 -> 730048 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/expo/package.json b/apps/expo/package.json index 610a9bb..ce41ab7 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -53,9 +53,9 @@ "expo-navigation-bar": "^2.8.1", "expo-network": "~5.8.0", "expo-pod-pinner": "^1.0.1", - "expo-router": "~3.4.8", + "expo-router": "~3.4.10", "expo-screen-orientation": "~6.4.1", - "expo-splash-screen": "~0.26.4", + "expo-splash-screen": "~0.26.5", "expo-status-bar": "~1.11.1", "expo-system-ui": "^2.9.3", "expo-web-browser": "^12.8.2", @@ -91,7 +91,7 @@ "@movie-web/tsconfig": "workspace:^0.1.0", "@tanstack/eslint-plugin-query": "^5.20.1", "@types/babel__core": "^7.20.5", - "@types/react": "^18.2.48", + "@types/react": "~18.2.45", "babel-plugin-module-resolver": "^5.0.0", "eslint": "^8.57.0", "prettier": "^3.2.5", diff --git a/bun.lockb b/bun.lockb index 61b2a70ce3de10242fddbf877515689b29082a23..e45c2e8910511b04bf1d3acf5f5d199aa4dbbde2 100755 GIT binary patch delta 166433 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 KMYa83krS^BM-&tk6>;B9&0JE!0R|Wt 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 From 2a75f95cb9040363e94c9ba57980e1944e51db78 Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Fri, 3 May 2024 15:58:29 +0200 Subject: [PATCH 17/49] fix: use quick crypto main branch --- apps/expo/babel.config.js | 2 +- apps/expo/package.json | 2 +- bun.lockb | Bin 730048 -> 715984 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/expo/babel.config.js b/apps/expo/babel.config.js index 1967743..6c3425f 100644 --- a/apps/expo/babel.config.js +++ b/apps/expo/babel.config.js @@ -11,7 +11,7 @@ module.exports = function (api) { { alias: { crypto: "react-native-quick-crypto", - stream: "stream-browserify", + stream: "readable-stream", buffer: "@craftzdog/react-native-buffer", }, }, diff --git a/apps/expo/package.json b/apps/expo/package.json index ce41ab7..4355031 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -71,7 +71,7 @@ "react-native-mmkv": "^2.12.2", "react-native-modal": "^13.0.1", "react-native-quick-base64": "^2.0.8", - "react-native-quick-crypto": "^0.6.1", + "react-native-quick-crypto": "https://github.com/margelo/react-native-quick-crypto", "react-native-reanimated": "~3.6.2", "react-native-safe-area-context": "~4.8.2", "react-native-screens": "~3.29.0", diff --git a/bun.lockb b/bun.lockb index e45c2e8910511b04bf1d3acf5f5d199aa4dbbde2..7e286f709586b3497b10d3b6f9cdf124389dbdd0 100755 GIT binary patch delta 118398 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 delta 127869 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

v&-^l==$7O>eb#*QW?<;^?@Gt!_~p^>W7n3y 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 Date: Fri, 3 May 2024 16:08:14 +0200 Subject: [PATCH 18/49] chore: skip ios build if repo owner matches --- .github/workflows/build-mobile.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-mobile.yml b/.github/workflows/build-mobile.yml index fa1fcd5..2b00d21 100644 --- a/.github/workflows/build-mobile.yml +++ b/.github/workflows/build-mobile.yml @@ -56,6 +56,7 @@ jobs: build-ios: runs-on: macos-14 + if: github.repository_owner != 'JorrinKievit' steps: - name: Checkout code From 558816db046e317e2822a1503b7ae0e5fb6640cd Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Fri, 3 May 2024 21:27:22 +0200 Subject: [PATCH 19/49] chore: not using eas --- apps/expo/eas.json | 31 ------------------------------- 1 file changed, 31 deletions(-) delete mode 100644 apps/expo/eas.json diff --git a/apps/expo/eas.json b/apps/expo/eas.json deleted file mode 100644 index 607de32..0000000 --- a/apps/expo/eas.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "cli": { - "version": ">= 4.1.2" - }, - "build": { - "base": { - "node": "18.16.1", - "ios": { - "resourceClass": "m-medium" - } - }, - "development": { - "extends": "base", - "developmentClient": true, - "distribution": "internal" - }, - "preview": { - "extends": "base", - "distribution": "internal", - "ios": { - "simulator": true - } - }, - "production": { - "extends": "base" - } - }, - "submit": { - "production": {} - } -} From 7f8a74154425d1af56cc0901d4451a23912c5e7f Mon Sep 17 00:00:00 2001 From: Jorrin <43169049+JorrinKievit@users.noreply.github.com> Date: Sat, 4 May 2024 00:53:19 +0200 Subject: [PATCH 20/49] bump version --- apps/expo/package.json | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/apps/expo/package.json b/apps/expo/package.json index 4355031..8ca8841 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -70,7 +70,7 @@ "react-native-markdown-display": "^7.0.2", "react-native-mmkv": "^2.12.2", "react-native-modal": "^13.0.1", - "react-native-quick-base64": "^2.0.8", + "react-native-quick-base64": "^2.1.2", "react-native-quick-crypto": "https://github.com/margelo/react-native-quick-crypto", "react-native-reanimated": "~3.6.2", "react-native-safe-area-context": "~4.8.2", @@ -103,9 +103,7 @@ "@movie-web/eslint-config/base", "@movie-web/eslint-config/react" ], - "ignorePatterns": [ - "expo-plugins/**" - ] + "ignorePatterns": ["expo-plugins/**"] }, "prettier": "@movie-web/prettier-config" } From 4961044969c6e6c3c81e392a56b0475ae91e5813 Mon Sep 17 00:00:00 2001 From: Jorrin Date: Sat, 4 May 2024 00:57:43 +0200 Subject: [PATCH 21/49] lint --- apps/expo/package.json | 4 +++- .../src/components/player/VideoSlider.tsx | 2 +- bun.lockb | Bin 715984 -> 748672 bytes 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/expo/package.json b/apps/expo/package.json index 8ca8841..586121f 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -103,7 +103,9 @@ "@movie-web/eslint-config/base", "@movie-web/eslint-config/react" ], - "ignorePatterns": ["expo-plugins/**"] + "ignorePatterns": [ + "expo-plugins/**" + ] }, "prettier": "@movie-web/prettier-config" } diff --git a/apps/expo/src/components/player/VideoSlider.tsx b/apps/expo/src/components/player/VideoSlider.tsx index a0d8cc2..fc341e1 100644 --- a/apps/expo/src/components/player/VideoSlider.tsx +++ b/apps/expo/src/components/player/VideoSlider.tsx @@ -115,7 +115,7 @@ const VideoSlider = ({ onSlidingComplete }: VideoSliderProps) => { const bufferStyle = useAnimatedStyle(() => { return { width: bufferTranslateX.value + knobSize_, - backgroundColor: theme.ash300.val, + backgroundColor: theme.ash100.val, borderRadius: trackSize_ / 2, }; }); diff --git a/bun.lockb b/bun.lockb index 7e286f709586b3497b10d3b6f9cdf124389dbdd0..a94d6113f5ab34c762cea2efc9fa8c3616825bbc 100755 GIT binary patch delta 184490 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%0AN8S2oaB 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

;K-8q(@OZKw|oHCw*N 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ʿo5jD&P{;^TL-VCXhn_nF$c( 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 From 07a64d13ec2a71b04878c1d7bbf550c2c449b27b Mon Sep 17 00:00:00 2001 From: Jorrin Date: Mon, 6 May 2024 21:37:10 +0200 Subject: [PATCH 22/49] idk whats going on --- apps/expo/index.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/apps/expo/index.js b/apps/expo/index.js index d1037fb..7fb719a 100644 --- a/apps/expo/index.js +++ b/apps/expo/index.js @@ -2,6 +2,3 @@ import "expo-router/entry"; import "react-native-gesture-handler"; import "@react-native-anywhere/polyfill-base64"; import "text-encoding-polyfill"; - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import crypto from "react-native-quick-crypto"; From 38e220c52046292764cdf4346b72451b24e9b765 Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Tue, 7 May 2024 09:44:42 +0200 Subject: [PATCH 23/49] chore: revert to stable quick crypto --- apps/expo/app.config.ts | 7 +------ apps/expo/index.js | 3 +++ apps/expo/package.json | 7 +++++-- bun.lockb | Bin 748672 -> 730554 bytes 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/apps/expo/app.config.ts b/apps/expo/app.config.ts index ccd194f..39f31a6 100644 --- a/apps/expo/app.config.ts +++ b/apps/expo/app.config.ts @@ -60,12 +60,7 @@ const defineConfig = (): ExpoConfig => ({ newArchEnabled: false, minSdkVersion: 24, packagingOptions: { - pickFirst: [ - "lib/x86/libcrypto.so", - "lib/x86_64/libcrypto.so", - "lib/armeabi-v7a/libcrypto.so", - "lib/arm64-v8a/libcrypto.so", - ], + pickFirst: ['**/libcrypto.so'], }, }, }, diff --git a/apps/expo/index.js b/apps/expo/index.js index 7fb719a..c8b44ef 100644 --- a/apps/expo/index.js +++ b/apps/expo/index.js @@ -2,3 +2,6 @@ import "expo-router/entry"; import "react-native-gesture-handler"; import "@react-native-anywhere/polyfill-base64"; import "text-encoding-polyfill"; + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +import crypto from "react-native-quick-crypto"; \ No newline at end of file diff --git a/apps/expo/package.json b/apps/expo/package.json index 586121f..ab9a73a 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -17,6 +17,9 @@ "lint": "eslint .", "typecheck": "tsc --noEmit" }, + "overrides": { + "browserify-sign": "4.2.2" + }, "dependencies": { "@expo/metro-config": "^0.17.3", "@movie-web/api": "workspace:*", @@ -71,7 +74,7 @@ "react-native-mmkv": "^2.12.2", "react-native-modal": "^13.0.1", "react-native-quick-base64": "^2.1.2", - "react-native-quick-crypto": "https://github.com/margelo/react-native-quick-crypto", + "react-native-quick-crypto": "^0.6.1", "react-native-reanimated": "~3.6.2", "react-native-safe-area-context": "~4.8.2", "react-native-screens": "~3.29.0", @@ -108,4 +111,4 @@ ] }, "prettier": "@movie-web/prettier-config" -} +} \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index a94d6113f5ab34c762cea2efc9fa8c3616825bbc..04f3e9f4fe8245b91a0ab950820b88fe9df7c8ad 100755 GIT binary patch delta 172742 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 NVTvU&yl|@P&@*|UbY1`e delta 185062 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 z%0A!Ad1fJyGuFgt{YyCMkF6OR6+2eoEW}}ZkkYm~;w-nGaU@!UDSiMdLF5LZ@fWHg z6VLfD5hM+jFK+=o4RV@iDgC-tmB?bmu;a=&>_4u0^!Wcl%R$nOx)Hbs>SQ80^fv#J zc1B!sv@7jPl>O7;4W`7@Bv4&8Sr!TkT&)B;p{}>f%bQHsCnvDlpID{VSN46G+}2I` z%7`87)vr+4nsLgRCy(kUjeH7woU{j*nOP1JH#bjc`c;q>#yEYMQ_2!*`_Tm?D&Umd ztSkUEG2+sq^>bD&me}{Bf={dPRy&Ul|AQ8R#0fAguJjeiBLfF~FER&J&ZvjT!9G0} zq-I2dZwW}^o*ihONB`1#Mgk-AxQm^|RRdv7iL&OflCaFVa*aES!;Ho>?@=sHs}3nY zfkX;sg07>_sjivO21tNrVlI%=D`(bQRyCDH!mp~MIU9AnA`R5a6j`#{Hc&qh*^N0Va!q+B-Sg77E2t&U zG*dR$tJko5Y0Q0@a+w{|6{nGH_#}akwo@*T&KTf zBDP6*-&FQeO_D&8BHgB2>AQf*F}GyfxiXg}@8~VmE#r)F=c0{X zppA3M4@Q2X*LnR1BQ(kDEPvO?hjhGageH6SMR!%#?6T)XIqn*{l$HF^79WRqzVxFJ zn&Ney`O%1lochJcP4T)X{E7*Uu%u|`-d~N-RImP!f+h&1d?E6_I)ABmwv#~O-RPF& z34RYGo><^V&fo4EvAh-=`oOM+J2_u_V7@E+ox<*BTb#hz;Wr~T&FftGn~|I5)i3|1 z+=V#d&Zp|{N)ukn(Y*KXMr^v*IrVoVAMzO})9bAI&3wYELZ&=6@*x)<8=;fD&cc5iv6H-dyT6stym24zalZJs zkx$_v3ZJ3RQs#NisW~`JU78flbsqmhP=&ges){?=@>eE0nvz(gPF6;-%%&9zF#_cd&SowEHP%ECPoxvKe?4EFVSKC4kLm(0%qTXIt7Bm_nHS^Ah7N%4 zhAy8MqyO^nT6%+EhnXH!4@*IEgP=~Wn$DPFE4LSp4=LD#&xI>UC;CZ{*u98Mmb)G= zom!eHZ4{i;QoX(d>I@2+?+YA9brgIONeh#K^|CdU0HrSZlk-jC@u9acVJ zALwoe8f1jcjCQYqOB6}mC7+N!<2JSkf=M;v-Zhy-QP!PM%b{hMwJyPpGP&n?p*YBh zd#6PZ%yhG}xH=APf>{KUY}RTQ;m}43=lUc9gRP5km#b^{H4ARKY0PJyL<^q1_oUcG zMqF9Xp~ad#{05h7cJHq*-OJOj;Sdq2yG1(Gt7Z32xD2zmx((=ULyUV#15+bvm2K$I z#u=A3M7!s}Df#cisj)^ka%d^$(|kDee4|D1Q_9>V#?@THfM%M*wQcOsrkGVfg&S^! z?P?M9v_qS1%C{5F)YTo<#G$2`4d$8Lr8ipyHI;{92TW$V`RqrEW(%i}Z|2aZGP`QH zzd%EcFebob3wsETi9~_=QTBu_g<}Fx?*ZIIv!k?U99pJywD>CDQ~`3#3agqsG{cC? zi*`4Twr6HF+z7MF!Y%AF-nxswZD|n%qo)4(7>AZ+cCsIi*V>rBrdLdNX+^Yq8C1!ib1wvL;_Ou(5h$KBWArW$d%L_-^9Zbyv!t2WmB zy4pO8C-01LZ+q61Y+bZor7hMeu+?Oc^0YfP=ZbAdEbWSkxZcj8OY@T zUWM|i%g>L!QnKxvW=KwL@6cA5vW7qB&|WjSy>NR>ZbAo#w$Qk=zJ;?RUc5WT)w&aM z?T*psbW;Bm9&xwBqkjOB6`lR#Jdf)~>Qvqn<9_0KvaS)fF4{Htd0KrK<5~*606hn- zyf?-b#y?Lv06GJ@d~b~Yb!U~!$^5JeVO`WZz&@1h*bAiA7}<6&2FZwQ_&CuW0?B5d zWW_%IA*ih>jnr)4RrR6{Z4>_oZ3D?Fq@LaTAJm|m8c#hN4l=h@fxHy<0U%l7*gCS7 zeF0KO5*a#}XU&dg(x2oEMp`@1k1-PE3<*&h+ z-;TIP^c4RSZ~7cgJ+0J>_GZ}(I2CfGdpmghMLpN>-k9~%8233!2)Uinu0ee$*%{;d z0$TYqUf;f;lr#64?x4Q>^Q7jIJ_xRzxvZ{%6A4k{e3VpZZB}U0PgXKn{pY|vEnM)p z{%S4?Rw{iXB}%=#Z=-?$eat5PV;x#wliLEc^;Lx5k z>sB3TwQ^++#7&OGxIR_X9UNy%n*=BB;0XA7vsH!2Vz2* zv=JaV6{v;yO^`SO%MY%010?N0)T}yKO(=^rSD~?kk@t9v`xQ#-n@iMgxK`BWIY%&k zh`r!Q+jbyv6uzk7!Y&vj%RO$x(c)M^O*sVVKHG_8-~KE}yoHS#E;Sz{(m4Wo-RK1* zfxuRl7Z!zv+S?-u89&IhgLx`j22wTUO5y}a=_oG(O2!vFL(b-OJ zoVsGXFPs{cpBywDR$!BPeB%dtmS<{nbQr|DEnX`8Ddpx(d`rL5u8{c>VmwGjGk=tz z?+3}2-#q2HD-4(P$eS@e1f^thiIE9G&M z_^t;|`5X21fQ8J1i~AU;l@Yfj+EsiUw)`PR_l>h;2>AGNDF|eKQQ$hp^9ww$oTWxl z$-E0l_N=BgTyJM#qq{NgUgOcJvd?0S@KF-rFFFJ@O%U>30N)o!s?vWId8uoD3(kMGSMVzXK%R^3Q_sGbQ3% z>iLsX)NGi?`at)_4&6Bg>pY0j=kr9ogzFZ(?j}ew1Gc^q75oxM5CH*SF+M~9iAbj5 z-JgQgw{1mV#=Ml9Q|qobRnphWS<(7vIO$5A|JQ-U>A1;2z4IUuF4*w>85KND*#XV* z?dL&qj8t*+8c3|dVSBO1U1qv0ieiV}aOUyOWlYE49>wTiQ6lyrUdgq=GZf;AW()Zn z^v|rW0?8pWSF}ZZOfhKpnpsdn- zHvECOU^<6WZS&!p2jaF;w!jv97+hDg?KU|4fu5gPXr64~Ho*-y%gPwIXJDn1w!%r7 zYo6fYZj@0yq&!gZv=h@$-aRZn&5FgwU}mwc_T3s zW&n(P|6)r-easTuMSVF@K>%fzmI3pGheXTZl-Aebcq3U7iI%cOFeRG3lpb})ueMA@ zliC!|1WAN|$T3Gja?PNwc+2Lh9gfOPDWHG0r5iwI_{e(V{u^W}?v7cG(E^u(7#fa! zCW2`zY{5FgvE!s{MM2rOaBA8btQ4^?m8LD6@&xTQyG2hpv!1>dPVxc4H_hX|4pNg? zbCqQj*Wgu-!159(yP6`2MYhQ-6X!sk0&(RSV6|lz_cAzTwFhu)f)TDop4E|_1t<4m zOwVJF>rfuuhA=BNUdL*IFb5q8XEu5ZPEEQ(5c>`BdjtHmP zZin**!rb(%xDVmh+GC`{sb01gl--9LW=hciO|f6t8?=CHW0qZqQ&ITzI(v*1I3?c( zIQICc{1=>R(Q>^##w0jZb{wncZy}@l+~3I%+*M-B$ z=y4#+fK*)!k`;+9es{zGsfCXy&|TYAP4h*C9u4YBP1Y`+EeFYwLTx~9S~WpzxvK3@ z>7BI8Dz_G-j4rQTAMFT))(vpiIlni-ap6pwT5`+@w%^mFh1K@F)4Og15$f1d5L+}s*RM4S79&lq%>H~)hbBV=*H&6ybh9`A@5RO z_vlZ3qGKn~rn#wcM_zZvD&ABc@+R#s8SW%HhB{a4{k9ptJe>VUODQ@)f96i+8U<(=yh zpsZ))5n{8#Un~TvLvsF1|JE8wq}rXl*-PV@a8)O{ja0y0Aj&` z$GGME=jlg4+00u{Bfd~!Y{6MTd8KE;8$dbBSn%27>Y!)A)xf_0JT3aAZ4Z3L-4Vo5 zo9%lZoH!&2883O_L?E;sLT@}_IcA{xU*sf^9Gi>EZJe{?SAo#>gvz%k1F=v(4^Xo} zAYtj}K@!Y_3E{gMq=JS?b>9UwmcxlV^0X{hvVndXPQ67r2^UREO}))5aYp$+d5Df$ zfW-gRAjt*Kvi)ji2~IVkRPNL07B8d24sGmso#W?VUe4G!Y(M09Hz7P0m?s-IG(xT&_4i)+$y0tuKwG09+1)khjpjR zvq0DxKDdJu8(`rqkL$u!PEq4y^rx;_BA6L_G)Vdl3iv)|u0W>enQ8MjNZP9fIr4fz zJHlebzmYo+)GBbP8e_s)Jus`4ZWOd34fg_xocKIw9!UIF?MTjn)L63O6!}I;#a!~) z9Y74B#8?PY(<~dA!yt)v-n~-sTh%{3ei7yPHjtY{G+(1ouHH%pu3lm_xoNqdI}T1c zZvaljV$tGi@g&HsZ>H_Zw`@TqXpe)eP-D7^-?p7p95@D~jxSd~iV6m(`x3cFJq~JX zDuBrDGT)ir%&p)6IF-_U*kc*UQZvh=UjQjz%;N`R->co0+Mo^uDaVk{hF$}S^f)v! z<%7iAum>pkjuJx)RDYKr1l|ecrel%alv;tu!NYrH7IR{m}M^-n3IRK~3BJOaZ07*`& z_LFiP+Td)7psw_wlEeETb!8`GeG3vpIn}><6Z$h^8FAd$_JV6*4m1Vs|6%XU<6`{! z|6kJ#g-}FA2q{bUlt{M75+6%s$(Bfj5LuECS+eJ32_dp%k1W|EE%wNgJ+fqvNc>)} znd5WMeSiJ#@A_xwVZ5&Q^X%_)u5(>;&76h}$GpHt!|AYCt!B7uefoU{@+$2C>mO5X zEv&!P)v^(^}ukbZm?{ikCP zobojJaRY$-0kG7!JZdW*mfF$kZ|doO(YVh*^EEkG@|?t^^M}QJIK$z>s*eUImluz1E}GL3g&6wfC0=&MZf)h^rI!k`_F`haT|pEaSbQ#^j&?{VJV-3BiUs%{hYKg zZ!xAe1;0-pc54DG4ug((oPskLmbzqx;)hr}8`td)Kg3MGPX(P&*F9$V`w#DMvD^rEj& zh;=wH=%dgSg6$*NBDx2bW_wXSj@qL*^?jc~OFe~pz%^DNEUrNKe$RY-DettNLR4CS zLQ5)9Iu29=@kh@aue6xb!eA|qr1Npto&$@8;!1~8uO9vaI{Sw619RCImS(nak$Vb@ zPSq^M&G9G8|2`x1W*0*>i_mtr;+n!ScLFgJVBx`v7p5VO{*k$^zQzOUwyP$7j%>pnHmijJDJx}();v+Gf9Qdk8E-XAgz>W^PQrd2q z4vX%?C${)j`f*rXoiO}ZUJMLTC9EkJDib6~ZHh407+ zEEA;_>c^Rw<+F9|4T53vT~@fzWoWzF~)gv2%iU+QK-Kvi1nRcR^Ra3 zRBuQ50!#C`M6I$4^^KeJ+biA}~*S7@=@Vs=D~A@ai%(yAxn>q|`fj^k!B> z*EYg4w}G+KWFtJ&&{Uy={UstTnLkEQ-%ry1|rVi(Ax% zurybP6db8)z8lrh^g@Xb zU~qAOg@W;pMBqr?KjFHb3QL`tU(&_bq!jp$Kvr4{gRVGY6caKP+F;#3h_$*a4({PVwYWA;ZIN{lljGSx4qMjYDyF83ao9(5_ymW8G>5J0 z{!Lfou(yW3!eLL%Vas}d(`7j9s-_0_ambrqtPp%#QqK1Gni%cxpbujR;?&P=^!C`o z@kh|Wx4@dowHSYiUUT#aN9rg32K5?fCJ=5#@a}vVEKQ0{IMVp(J&rV9Y}QaRy?G7c zhNBqO^FTcLad}*AZ!ocuLj8qBEOY$Q@nx8rk1g;~lD=VM_!~*Z?>}r|&=*9WC3uUs z5*DW={%8>1n_Y&*Nv~Or^zk?K8HcBs^Xv^4!(zE5#Ly0?CiS1q5=}K19~s*VCf8?a z?t;nnLSw4lz|?$v<6)hDvkS3JG;4#;u}S#~&RoQ^~|A0NVEmhx(A4*sY< z>%^lW+zu7M;xlf1idPNiz9R+zmc}U`VbP%&Iy{7GiNEeoXW~gQ&iEy;IBP4Y-`d`V z#V?ZLVubn{w!|Q7@}XB_VbPhmdqVS1!lHX{4?70+$++U0&k&t{U&py%&w<7IN~xb9 zo`S{t&y70#4%n21=X}vv zvu2`e-hZnG!EC|(K#DcaqJKq2D}yW$&UW+(7pQKnvGS>Fw8W>y^I+k^iFNQ8j(Ewz z-TPvDMP6&M))aZWwfQ}rcptR@mL~7e5bT+S#nFI2;Hv^y8XseD6)tVXT{HA&R$F0i zu4tt)Xs2E|%oQyR`r?px6L8gNJfGg$PTXaRPr&`uS7?K-?KLYXP8D3!Hp3c(^cqXY zMN_GPdhR>I>iu`z5?EY$H7Rex;=LIyxi?_?Z@=2}hjRD}4C+8FhF5uw`9IQ<$XgY! zQh3$HOMw@*lj!K;g)6d-5-%*v>HrP?eefTY8L`T%1C<5XN#(p?pps*KQ#TwdygE?H zF=y3*N*l9Q-JmvV$_*5n`Z$oG5tWi z7^t*8rDEQw1C@NR##Cz=9FOHlu%Z5VQ77TW@F!&f0qWR)Rs*n^c(FmV@M4&S7wy@2 zvD{FpVNeDt%Ui&aV8TUsG5krHa4}viXenN_m*K@grM;X6!k?7!E7Y+XWqqsgqOR^O zBUWoED_SFMDif}gHdTe!CcMZuQG|B!+d7|FKiyeG`7t=k$i{TOLCwM{&L0ehyQ#I8n z?Pt=avfwv(G5=e<7^tl10}TYK60bZO2>+_V1T6RqUMwhI>UStJ{=|y~>N3%Pq9qYu z3h9`>j7+bsL}l?G)kqT`tUlneu?GB;8iH2^XH+#APvr!+lJ=jJp0Snj+DcSka*bMR z0DIn0Mo?LR1C*#a{!@skYKn?tcQu8+`oCafM7YTW-Ixl2%7Xrqyocme@?MhnmUbU$ z_my@(sRJY*DAiNyAgP1#V~Xkmhe|LE$_j={9U=KhX^(<3Xe*JgOg9=zmyU;)h0cP~ z17T2(!rPckqA^yw$0MkR`P9K;CniqBKjL0fC_s#u(*AyC;9JlRnPDi6!xKjy{r7IpaFD9gdK z7{^=OwfULZXpfVvIji?omI@F5i7wSM|JRVo5U5Ez@YP+(G|C2I3ez#4XzM4!& z)#d!N!~q%JXsZjtduMf^GNTogV}|##Y8!7^)#1OQ9AmuOR0nP4RSs{S*niCd)8Ji? zI#5|L-sz}=wi4mJi~63nlT6ncS`OS3S_(P}$_D#E8K|6$6Qr%Bn)8o<38p|f2ZEq% zz)Y#ZQfEQgqd8DkFdxc5rM*bTFOi(e^vj_vZw0hI^fZ+9B`HupBQD4U7oiMP@?>dK zSwR|<8L!Fs>r!t>y$QuXom^)d9-tT1wkl+U=xvgfgEil#c5LEe#zArN4$k zx$O8rIpronSzaKN&6oydfNG|g7El*F9SK;$45>jOMXV`S;>>2Y-lQ! zo=6wbgB0b|gK$+w-I7t6PzEZ;@DY?%J%+M~7f=@Q63RQ6FHolY31!e$`b-b)W_lId zFSR<=JVOF1TNnc6ZSG>pshoZrr2T)a!T+s-*@I}= z5Nbu(3DW+bDaQYQmht~6ALkz%z@8n4a!gK0`xKOG*##(rwldvCnLb&@Q#olL&Ob)5z#J&kzQKRI z?fwE~gYpUgo63COk&l!5m&{LPg9xd*D%8(}dQ2siX^X?=%2pmq+Z0NV@W**LB-JIa z1!d4y7HloKwlaSm$*D|NH&`CjlMz%#*h*Vl+0X{yET}P*4QmD^caZ6|mE|;->03g% zAhm^(x0C6Ee;@owxu$oK8M;b!lNqV3xI2^$>M7%U$#^Oo*jL(AmNytm5023A;NJ&- zR2Do638`bCtZ*!p1y6voCljFzRHmCO`4nkSlktC2^-VyKOh9D?zlUU&kvB6J@$$>hu`@;xdD_vTQ?e zYB?ECrELaf0p?J8$U^cOP)^EvGTs)-psmbTU&c3pDtZ1jkqNbx1visiTUmfTIO82< zytdMVZNYm&S3#LR0!ohwC_4}ZWuU6he;%;FO;C>ER;jU)^H<`?_d;1fJd}aTf{#dB zTUl{}GJPtP1*S=US?X08e?!LKl>8Qy zlk%Rlvx=ktJa1nBu!paqEbxugTqrAg4`qWsLYeN1wDV>r389+WbvF=C_yJQEIT0 zOyDd*TPQuyPTC!0ysOmClDkQ}yR>^kIr|4dS0V< zizY(Z<3K2TG)?LZ8UNd3A(GFL8Y*?Z)CEv>WFeI0hC|t~}Rhor_s8K_Ku7|OHb1e6UwDdV-3{Iuk1<@v`0w(uO31)Z0g1Z9Sc zPzEaFlcipgTw7UAnv74E@l@u!ENvU${PGZsJ@s4TBg+S-Z}L`R8WMQ;GxpiR`Ovo-b?Cm znNC|-zK`TSrG6hkiwle9^0C->iT|Cl;}c{$Du*;s+J92kI|K2|H&dpg(w-%4sOFQG z*%DCMu{l!bN={{gVUjP9oLUF`pyY?7#zQ&uC!nnGq}0<;HvEFLlQ|+xkOIJ=OqU66 zNc)!5J5WxI2T-oyIZy^F8~jq*e^N$$#DDC-7bxH9>9G)M@b3dC3*xVlGH5F+Hjw;( zqU>NvXK9GQX6SgnXZnssqA@uY5$7` zt0P!IQzT%;b}}KAyakj)(+bK4b%L^jE>MR5jxwJc^0A(7YQ^|>#{nzoDGQ|1c9-fQ z`Ja@}s(ca8g2%{o+RAdqNls3Z%RptaDbl9Wfzu_QAvu+w zE-se#zf<~g1=6uO5m1)D8p>uzmcS{*GB(SIEixiT+S{ZZ3)K->6Xlm!c1XO77=g-i zcSBjvUTN=xvYrD_ex`T^%Kjuty(HsPp>)etD9gDf^}39|3FWDjRRW6!D|iIJf}TNX zzko7h4wQjP{u;^#JDW_ z4=5|}gfdY17JM|61&x8yIg_EhSk8p9fuT_54}&sLS!rN`%8Iu_IV3wI-zDvRPzG&fIS0Vmp?I182$T&u4&@M@Am{u$i33(} zUPdHASy2j{<9kZpOWN*GhCiu+DC~$8p7nVn8QbF{v-v_f za$}`E9?I(cp(fCIP@Y6fp$z{E)vT~AfE6r*R)+4D1yecK_sjSL(5|q5Lg^3nq9>KM z0*fG331vP5D9bIu#qnR1tAufB)XxOvkU%}Ppe&%0%vf1wq%xg_wEv{^U^SV}Ql|TN z%KEJNgB)lF(Qnf_182L7dq4^|%#^pqK>oRs~ft*xw}zvS9VJ^-9! zJ_Jg8sMKLHy|%Kx;p+GXnEf~)7%3BKD|_xMIn`KLgvj?&>aSWO`u7OVLNx0Qkvdyu zqq6w9Qs+rdW%~J2!z8D&+C|c)(p~~(`lY3@EOO{qO0Wt_hpmG$Xe%>rketefY?8LN zGTj!*skFC2S>bjl9lKk`@8(Iv1^fsAuc>FC%y1sc3`sKKzf-2WAk%3pJC-6jmDi42 z(xx)sZMvL2xg#T}SP^udOPk909BKba8UISAdjn;`xiUSK_FE`B_CeYoWqdFX7?CHz zpOo?WGM>r`ze8DY0hCvsQn;Rymxi+E#?me?ZBr-%mHEsxJXps+0p z8$p?|F_aZFgEIU{na*COYXRl*&<@H5x=8H^Rey`k6$cDd_Oy#k;09$yJ)pcq^oKJ1 zNm=0l#8U@CSwuf3SI0-)>iIf5IeI;;k9A1mB`brNa$jvm>RYmVvUvMo>D;9LhkYBdbE0ue#*g%6MzZp~315 z^(3IO;QG?0vf>8P{&z}`H<9VImHC^3Gu}a#*Br`vT9nlc2o5yMma9zIRVH+kyg!uT z|5Dko0l~810kXn@Qazy@`jJq!d^D6T_JcBLD+?M6P8}!HPn78cpd6x^GX8gcRF)SU zf&&IBD+-kf=Rr9a7DG9fOQ8%@+AE+;zZ%MdBB31HC@2G!_GT#4ZIika%7*TOA_V_F zP%8`GBNOb^B+#L|vQRPyIgHslpl{kHOrOrWhyn9BsvcTzt< zS>P8aq_|p}Q@nZOQ%8X6bsWi$0?C_#ClblMMAK0_u|M{*pj6Vx* zgBQb}l=1DSpX z?_%R4yrNxeMZ4CDcCBgeR>Mi5-o?fT5P#aO#&~jTXwj~3g_v}>(s*BW=Paaqvbt;QQE+T=yM*5C++qFrl6yVi*U?)O{>QS9BLtCVzw;gJGV#AsEr@Q)>EYV=nqIG>T99EZc zn$|FJP^q!+7m1EOyC=>U8>?NO<~sMq(LQOr#PBCr>2n`CXD4-; z61YCx_<4s9S4%Y;89C<0>yVIREA70VJ&j-R#kSAfVxiN5=UJ;#)214B9=YTC$8QVU zrkAVPf1u@BmxBH3f_3y~p+xR@`yG_cUW|TxsBP%SiOL`6*G9O1iWuKxZd=ps>(91! zi8(fT^c=t4Q9u7GbRXXS*o!GOW9uF^sl5ECt@VxRh0~r^QvA4x--%W?7+e1MMn`UE zg`wOrMkykC-0<@4SbN&1!k1^G?*ClS?`WNwrwqpLdHHtJ&F4807wU~2<@R#JQ^(@X zrZ(Lei?=XZedMbFu@Edg(r|b@4^5wbN_aw#to(=~wN+jIufnkEazcxkJBt>;MmS zgMXI6FI!_Pt#~z5*++OR##|GROWo2vIH66~Q89m|IGu5?aH#dhxNRGY&$PTe*SAeS zzl@1(9xlzA<#qYoqMsK{b^7NAc)WeF_E7TiQp-tNC_$+)ETLR+t87hrF3N@S^jgfJ*Nwn0^~q`#}3KiVh`8wK5(TWoFSi(xlSf zo>N{{Z?m&UYIv2L=#y_IEE($Izsx}}tLSZPr*$uF@dzpx6Csfjvw;Qii=-Kd-T;+0YL!o*bVtx5@_n&6hsvM^u~t zs8QUYx%PK#L|nMSRK%as>!K*5BNV6g`UsyT3PTYTqv)bA(h>bhOqYTrp4RK)#=jZ$ zJ1A==7EX+-C>lo0x_kNi&SUTU8;;ws@8{S{!#*s(+w|K43;$yAI`=Pr$ZlEl`LUJV z$~|wrrNX6a+jga>4mJ0md31l2NL-4#-5a286CIIK8#M(kLru1IKq~5pX>~wsmV@{e z12IFIkBUAblf?ED+E)o_K7oX-0Ldb;&=GY$gE*`N3I7aIRY%+<$suvdQ*_a_6m51Y z`ijU^01*I+8am=h9+J35C=A^WG%NF=RD_3l8}A|C`y_V#vAbqeJ;!A$4?Z0*&h*mw zeve`*SMsRc>|$fr_*Q4{Y&706@Z7zwy9&om^J<%W&A3)!j@Cr7LSyQp3;8Hlgx5tE ztkD>f*wrA30*$FH3?k7O4}m$nVe&1Hmo@{e>UC?pYo5;MfV3}nM-J~i&11*@8rA)_ z&(|M&q4(D9^$a4-Th8y`YjvmgyQ%BGw%@&Ps^OF4Mm}Y$^1ehDe?Nfd26y-V4$6Sq zhUQONg!w(6`TkSS=VmG2non}}@t+l$mf>hH>-_8NS5tBtu6eu0>_)quSs9ieeNVmf zziWK6U|r0~OYL%dZR!^#3Izr#V;|aUD=hb;y$O-%KP; zwE)=wiY9PxJ#;#m#KjhFu+tGMY(WCof#i|c>j>Wu7y_I1AhuOOnqzFMB26Yp*GEog zUXIMaxh1lF-!YemylQBxim#_Gs-=jH?mKm-MEW(9rigI zZ@9F)uGgpKdrp0++bFHhP=ohNP8;7j|2*_2- ztQrsWja%64^mJ2wUOjl~WJ|lf3s#2yJh-IwJ%{E?rnh`EL^XP*ZZW^DgG*Q3db`qO zVX<9d>NfYhgF(=!TlJnN9Bw>fb6Sh<^Xv^LovB;cy5Z7byNAjBFZi#ud%Mbl@A~xgFl(`+v&Aou;4$yAysfiV%mQ_AE zW8ZQ+<%k7gx~bmN5B2qY5!Kux@0`K(J_BP1zAd}x)~-bB?RKi|(|h0VsNc3hkN5S$ z|bE zHqhw(cwxH(-mGZ8W7((o$9p_YcsRvzs#))9i4Zmqe=S#Q=7NnJu`BJN9W9m z&CI7{?*4GmHdCiVu;G>S9$DkOD>VJyE_$3+^9JjP5{EGza(2L-euv@Cp}$)TRqk$m z_E=2WC%4YMJOA?XIol&E!-6~N8dSUGx~{ij^t4*1Ex)@p_;Tu`eM`5p<63NL=AXB| z*j#75QE#qgp8B}g&|r!P-wAhqoKSV*=tu45KBzyn*(#6xc;j~`)+>WbuJyZD>xBJZ zPEL(hckktMZZrZcAZMkVK^`7R}e);_7)wSzKXt&o(yLAJB<&F~xgYhs&2RjORR*KbtEaX(ufKix+am3H#M zbYs=J*=~iS@~(cqA9>raON`^&lTKeo^=UM5zrB__y|tScZE||soq8nkV8{;nr`X*XC&L7s>!WnU0TPcmkgO9};zo-dM{pwR?*Xt&1n?6f zi2w-%*#zT6qmuwWdjU)$P^`a>7#4v-O!t8#kxbMP#;ZY+Ndi`b1n7vfB!T-utOUpu z9WgC5b%(;^(65;PGo|MqD0^+tfQWI`=GMN`XxXv4GiI+i);M5oo0o0sRrv^=7T?PFTJ=8u{_Q#M^^Z0@)4n<_g4b(e4bwl$_HMzz zgo~qFI8p=_R?04lrMPNaA&Jj1kaUveI>Njbi0N^Vpjsd+ao0wYOk!&d5`o*I5^zM| z36M|{0jFCdjZGqmoejtu9WmPmB$FhYWSx#^TpJ|pBuLaDG$%^DJcQ;roC2^ogd`i$ zoI^;GLy}GsjpoFIM4ko-iU-+(=8(9a0kJ)-?4lbZ`o*D`e1gO{%-QX@^Eiwov1dWD zkVLTqEj|L`aSkN>2*@r>0TTW5AWjJ&ak#2|#T7MyB!Xlw2AtPepCpj7@N6yyj>J_cfw3=(q;k zvFP)?3zn)4{fi&8Xf&+-x>6wvOWXSl`_`{jgUPcdzt4&D&7C;Bc=4XW#v$LFDyM(# z7VB4UWA{~8E?-Uk*)}5hu?V_^Gg_4nA18_)>GW|5DvBpKC3G(Xv8N`+*}PGzd4NvX-(Avzpw9~*1Ztb6iHvKW`LCtD6eYaMq z5c#9#q-r8J4U1~1{rJ6aKMuKG?)gleMhj;=+vJ#P7%{p{m(i1k9Q*Qebm);9>nB8Q z>bE6)V3UBfg1L@C#_SZr-54BhRiMT%uR^%KeH*{K~tZuM$g@F`Iw2!?G#+#-zsdnLc2l!TRpUvIdWL+j8Hi zmWWD6^Afk;t+1d*bC)KluB+zrA-!yLsL3p19N4HSgWojE0SdeZ6;kcemSq zwvBr9+dafS_~DhO;R&Vg9ZOjeZ+2tGA=3};qX&K5eBby|#L)$zkHSNqnIGu$Q@CBm zVlz8$V$FWtFP&YVear1>jc3kjEez8OirvV&ly*Mq>AEMcjy#FDGvRx#OY_xzlTP*= zd2(RA&LIhD->2+dY1zF=tt|cq?eFHL>WI$yI9K$q;BG%Rqk3+ov(e5Ud{cwBeC=W% zl@oh4KgG>@-&D&E28HMLw0-ows{X-P>)>IoIjwg5mDNu#+1Po*!6wDqJzvzfRN2m2 z<)({E$1yt-P^`#4hE@0qmXYIFe0;8gL>vdXhPNjqrq?iEy}J%b+cC-VqpNMxV@DEp zWPdK(XcR6X5TD%rC`R&VJ0Crc6(jjm@sCmU6X17 zUo}6~ta%Ie`>&wT@yfa`f7NwZ)MJ!Moto}@tC&A^T{^n_&8eSjExA)R`u*^s6>Uas z{`E0oyqV#chF@aV?a^P~G{<`DqEZ)Yxc+sy)yD0;tBJ&Gm=LFf{hRlAG11X!aaP!X zy}F~0RPpciVbocj2W1Mb?0Vd(d;WnN3)|VxZXegUOzUQkeP-#l9kHf=pPl=S{9BH! zAAXv@llwJfp0Ds=bB6k%2w7CHfhaLsF zgXNthlf(|A;C4^D^2}nR-ahH)7t*ACfhv0M=Ed8`ZNL9!&(z%4Z$dYBd~Ylktm`_q zrk&4)nr(Hreo9{1?)|Xg(cha{o?ShvL$E{Zh$|xKCS5b9^RSQhhNmnJJ8Yd)B35x!Aj%8e!qUEQ`_ z-%{GX_3CTYL#__G7jUhg=OvNF=4E;`%9vm4#Y6vZLw8s%HgGJcvBrO*o3;I;#d;o! zYkI$QHb<1u?e%`f#^@I>empC?<7(cvNKqlJv%lloikHsSo}}fy$J)(P8mz9g_uj?S z#zB{N4*Whkx-f0yx~m~SJGYGg^A}#bk`lv+GxQP+qOFN|E2lOpbDHSei*^UB_t?jLfu?#H;Z-MV#k zUTb*BKB0kr@w%sS%&O&&fA{{<$wA{sZi{d;^X*&Js>zt`9_tQVkG>J)TytyL{s!$% zUf*XVoNl9ej=6?6R#xA%Xwd%6ufOaqcPOAw2pvTf2EXnr9@cSj=?j z`+ZvL)sA`Q9dyce?lLi=S=#2Chs-t%O`KCp=hD8_s??>A3v{QJU1+Zxvi{=X<|3EP z%fFCv`KqbK#Mif)^m5&*df`24yvKX5Rl_?T`LH5sM(KqPHpMDG>lgUfsv(EV4(K+t z(fj&=rME?g9=NouWsMpWlYeP7?}c{rrs}qQy5jrhhfW9F!asV)%oTx2fWU8 zpEaQ5^zU8XRazY~{@XUQZRH)`uTxg?UHc`dS4#WCrH(8;}x#z5 zQln?iWwJFt1+Tdzyw+~sqRxqH+imEa)A!uA3$tq~^i55FHt%efqCotG=h1ZS$Bnxcuxn zZmFO3M^DjlXyN>7X3B8Gar@1L=RJjKS2M3eYfGg!j9=Snj>DBX?$w_+HOLw)E|%Hw zBJSwzu`kNJGJl<$y(Fh+gJ&l{7pr@Jh+~^hhN>^2Pa3$H{c3L5x0_b;K8WZD+-jKK z#}l4XFlOQ^*r28C!<{9Jr8eK@2Ox(a2|%H%D~$KzzAW-FNWfkYJza5@#Ptb?6&?vIRJvlqK9GD8_k|$Ebw%TY zAhAzDA`XHW=!z#K9?w8r@a|1fQdhK%2hq<4iHQd>L|sWB2_ykYAZ1V&iO+Kos|z4T zsOtiV=?jnyl5)DD`bCgrlF*AFCc5G}Nnj3$T{1{TT`@Zu#O5VPHi;QpcnKtvB;pcC zCDgSBB$}K_cHMN{IoVlx@_*qNt(E zG3ufjBiCH!ABr)uLWwJpI$upzBEL0CB#C{?5?6uLMv1FHJl>HEL$12ILJ^PKC;j&z zF(kIS;^Q!kbpnaI7f1tLvDpj6=L3jpI7lO1(Q`P6=|_-wk|rp}8zh;;+Z)7AR~#S- z`~;Hz0kzxfiV`D0Y(9hdjX;{_y5bl~CP`d9%)b_*Un4zCqdb7bMtC;sBn%n@IDBEA z#sJRZC_xT^MHAcsw!zSjL?Mx1K>|ji*miI?iEBQHl@EvuhSmoppQNw^NJm|fLK6E8 zByCT%5~tB1-F3yn(MaR-1H_Fb_kaVJ zBaLYxNG{X#!qALCnq-owF(B?38j`@D%;g8t7enI*V)F~6kffik=sXrAlO%2|$N*jO z9V8-5&ro=d1Mt)pJI5i3gD!~Sc#y%mqW^f19Fjzmq1w|WQURPk0oY4dm`_APS3QuR zi6GwS?LD+RpTz18JUbGDnhFxD1o2D(8HM6WJX9cwsUV{rifNtOW;XaHh&4`d1^;!O~n z5+LDML8gLS0?8y%v4zty$=IH-k|2I*AVC=W%ODP=Kr&c+u&%g!6(onm=^97~M)4X* zq#;Ny$sCN?br9FmAW_#rLNR6}`6O;PK;~o2Zh*v=0m-@ovOrf%y8_}-7Nn4A7U_yQ ztV`br#Qi2nIK07rC6E~20$B>L-U9J421z7Yj$Y6krsY8VZiB4E%%jJWNrE^!5tzYu zKmyBy*xm&ZsQoU8jR{B=$r|*OW130gbRT3LdU_uutO7_bNfdgT1>#TrzG#AJ~DSn^3stAMyn0Xe8E zR!jj&Cdng-$3-9zB(N$-Od!Y+oS7sx)j-^*f*i&CnF^9gqN)gT9OoEGm?enkG>}A$ z*EA4^>L7;GK~7=3ri0{=B$AxLc+CKbtO4RT1LPd$Gl^?W5Q`v?B%BvPAo(QeBo}cG z&IF0I0tuQ4atUKf;!z94HW(xoV;T&iZw=xe0UxHrVQ0Lj3(&jtys0}?eGQP8233KnIwfI_b|$H zLBi^R#LWfCg2zZ4Y(YFjK_0?mp&&UV;e0ak7#9QHXhhZrF`17vPj$tx`5>+hK$1wZ zF%~63@<}YhKwiLOVIZ*$LDETH%Eip~3hqxl8Uedp0e+3b%#cvOF-X=KkX)R0XF(E3 z!q0-dL+8qa_%s2@Ciws-odYp#3Szql&HMx>EybixCJ9eh-w&NBj;l?e9e|ZSl6*zq zUL%Q3GZ4c!Am1<>-hgD1M6o#qsOky|4zmYwy9!bWKVAiKZ~!SJ`Gv}-B3BNHT_7%O zx*{YHRYf)jaKDDS^~AL)0IrSz*+`*KDa7V$C?%gHVk+_!7ndd@No)%M+bIABVk+}^ zv;+uRfO<+QM9Ko>(RX4Jd`O}&REQNDa8@Regp!m|h+#)Td|H7d9R)E`i0TWG%hZ`^ z7NVST3UQqznZ#}ph>1eXUIY@@8YG*fqCzxY3}Vv;Bw{g$nL<1v$s}Dcq~9m!5a?kK;4!gT~&oxyF}SXQB5H}QY{st^HOMa_<&kNA-+>VO)l%~2!O5jD1e zwm^;4mZ*{Hq!8vUp{-Ce)fpp4ZLJX1ouF+LVj8tAMuOT-A?mb(w#PV7T@>OjwF5@M z8QM`H7E)a?2GmX{e-%9M(GxuiS_L2DijhL1-wVVx0>lkB#r#Fb* zYNY9b`c{LOx`Sks^g@jSB$*^afViVhlE6M7E|DO8F~X4`Hhn?zNct&6+chAWBr$71 z24Jj7!aP9S*MfLrwAX?-^aD|?0~rkOuLH>;i6<{9-9>fbHK;k+8#3TyD z8)Fa!l24LEG7_V(0VH-HNWcb=Q5Xjj4^I%QjUb~j5*tDE2Z3ae_$fs7O&|#*p_@R) z!9OHEgF)<~LHyyLXb{sOAlW1n;h)VQ$t3vf9``oz4@uxq5SJ|=Q{bO1AU4B5@<^t_ zKU+aENn*BwOox9+!n{D-V?cu7pBNB_;UKDQAi?m@Hjo^Wc#;tKXFEuwH;DIkkU5x{ zu^_G^K>T7sLNPZ<@<}XqVDXtREW2=J83_>D1=D{4s^UkL9zGxeNTOH-H&+7D9|dAk z8EL}d!W}3kfy8Pj(kz7wcY^r%f@F{^hYNRsn2rVs-377|E+k1NvD*z20T=ED2^<5G zO(NjJI1n2@kcc>tH5gJO)SgL_3!=MD)b5HVhm8e@w?&dDWUG%%4&y+)>w|1WlSy(& zOpMUvX!v~(NaT2?>4+tCi`d^0#kl$dq|;^aC75*q{(a0=uSW(JAJOc1NnAgS=iX%PKjkf?QNPdb((k_3`?bC4^joiog5 z7Kkmc>(}6)3rJ%c0^)fQw3k?Y&mf`40+5JvAg{4b@D@dXA=8`($;Es< z50XHVNAeESGYQ0J5lDC^kPoP^6Nu?zkeDQpPgpsaCYi+j0!SX*Mn?vQgG8`VU$q-$ zvjo_Ux9s0=Azpx4n@JMKColyVgM}brOF=vrffQnnE&_2_24c7vmVy}Qi4+o#RUo#@ zKuYR~Y0E(LBS5l94E02vVk$ri`E;b5p7 zwi`hl)`7%q1gWYgK9b~+xNicn)DxRGfkdtcQSrNMHS|Q!Xb{&ZkVJf)P+-fXslxE}^-j(!~m z$s|!70cnAL9RUf80rBQHd7SjbfdmkTZ6GGR0d>|B#>YT%NCJ+5w9yl1Ng}s{SRDsx zrza*H2XT!Bi8u-3f;OK7$tQ8)?Mp{J@#+*v><$pO(;%JD=F=b^J3$Ibx?tS-##Mh8 zNc>q4H$8!M4*ntWJ_phrEhO>T4PtU0q=%jub{@nu4kU@B7y8cUb;%^|X&~#N#xG+hdSL@Xuoq{WBniB;oMS6OaUwxF;Y>;U5y8vml;NL6*ZmPeDx2ffzmm zSqc9<14$-HB#D53vOxmRgZO2G2>6G@CJDsiImjCL=Q&6wNjk|o_~!*k*aeWF7a&pa z4~fG?5ZfG(jqpznNDfIBNi_WP5+pJiB>W}F7Wjw6^%98FE07rY=M_jkNiNBD_~$i9 zYzj!!YmgoA4~a)Ah}#>GUGUEv5dAceLXtT6Cl@4vBrX?ZFZ@H|lMdqf7GyvC^A^PP zGKk?jkc05gJCJ0OM3Q*;=RHW^6%fDoAV=UI5}T_a7JS-#6yEpL*P9@TBuQvb z0Z2ZHUjfKPw1*@%1H|G7$R&)|4-k)AAn7EjXkj6U{%w$;LXdQf7fAw%?N5*^7_Xlo zKA9j{B-b!rzd%gyfQ0`7xqTgq8;>t`yfvVqb&UnSdB5 z#cUH0k2fIMBqf!iaRm_lT#$$gAcjiugd~B)r6NcfrC3oB#OEzY9*L1sv^51WeFqX_ z3Q|rfK9VGpxSN5PD8*(okihpKD&B@yREnPFAT}RByeom2DaEkLAekgdeCt<9DU2;Z z!ajloSb$id?<5YNK&<%v*Q%(!21pJ`ObrlA)J_ul8N|INNDb6p6T~$SL}dkHh1#t^ z@=4-Jtd&Ah3ncanh<7cJ+DdVN#N#W7i8V-Fw9pzvKOZEC#1<{I0ZAYUumNd+7LxdU z1F@r&twN^XK|HZHK+!}gb~Xe_CNXRTVy6_oO+W$*K+>Cl*eiv3QxKaUAVEz* znkz*LNhXP{9Y_nMm}UnORtS>_OTn#X@_K$X_72 zB<+;K(Lt|IgsT##vIBsNQoJI_2XJc+&`~MYHb8=$0TY~r~K@v%NC`Ab;5K|S1A6J@QN^y)NnZ%+Mh&#N) zPsjp`fmk_%^o38IL2QbHWRUd3jBgE+NfO!`WB_J7Ntix}T^kTj%=k7S4hA6EB!e;I z+k)hfM6?ANiWyH5SpvkR9f%iZd^-@=k|22`-k5XkLGnpr+JlV5oFj=X1>)`kG759f z1;oP;MAZRgG`zvxGy0`L3_F7Oq3^CB2_$~5Amh+?5}z_47M(!+(f3Xure#6WNhV@u zbOuQ#3F-_IfSExOXathg1!M|(+7-mc7$mzZ$W-*y4J4B!!VP3PdP)*j4#cG!NDzA3 z4aA{5NFGTrdfFW%ha{#uNCf2#sVapWDWe|0g_1);Q_J^{vipg z0^-sSBntlN2jWl_B#&ex{L>#Kha{#yNHqLI5?KwzeE`T7_-6o!t0jnPAV>`SGY}-7 zB%WkD{No7{TOGvP6J!VcL*h{b#AFc2F8F5l-j}?g3 z5Rm=w&kzvPS|AxD2jQQgAju@5LqX! z;GdBo`6Tfq7vUctkXTy~Zy%6L@DGVceGrpTAgS=rC=mSyAW06PuZ#!DA&D6e@)%wriEIYq?ho=5UhxNUwFgm6 z0Lg||CV=FV#FM;$S0Km*o)Li%@0QwgGpuU4YsPEyA z$pKx862K|g4Q1ftEpngI7r$fIgHIJP5$(e4xh_0aQi!br?sHp54 z{GFe`$e>JVwzsUc@6@OZwiAcA1XgL?abjM?L zf6vhC<5s9$fr-QHt@r)T*6LTe!vOz7$^Mb&U3w}u-rxCiS<>?6K`-7nN^=_NQ_kWIo(?Qs_R+@{xGxRzseqpQ@aLij{^t=~f^mJ9? z07+yU5R-)M`3T>|3M0mNx3h>=PxTnb{^5yWK~NI8{Qu?!@c zB#*>ICE6|r3FNIp%yN*5D$#ibh)pMuxD_B~D)F5plf-i+NF|l%zX~L*Ge}k>h=oej zS%Vo=MI~latD-g3YAVrqEz}Zip;lLkC)64$;kXW3Qzc$ettwhl1UP}1*8SW zge1%z#BM8y6TGn%#GwyJHiE2S^@?3%s)( zB%dT^J4i?Pha|Qih;Gf+f$s_^0LEPaVlE6VAR&gMGRbtv6jGG61K<$V5uov1N z9-t1ue4q|Q|Mx*XF(0Ud(0l4&%!mCbF=r@BjM|S9hhk=sL=FRSI{@N^xp4r*)eEGM z#2a(X2SnoPs?M;d7ZC!@bM_2oQ@SAbu+0 zdjuqbB%NfON|+~r_>2SzN&xXk`%ZwE`hY~80GWvPktCD2C4vN?eTg7}qd*Etrl5T% zL2P_M;!c80#koY1N#c15WV%X}I0F(k8pQ7mND%ye7Q|r;NWfW;VECIPhs5d}NC@WR zIgm&{kPMPJDpCDB$p0hnt>dJ)+O^%DVP+U)aCZsr4grFDaCdiir)O|?Xc8PehzCy6tS`FIoMu#~`CC^HzGTPXc{p=^}mVLskQ$=DmE z^=*{zn2%B}Nr`_4Wj6Ei4$A00CrGM_C6zq%A`!33S`bWwmDe3N^ETDhxq0H)s za$d@h^v`{i^8Hap+(!wgf24enlJ5b^68h%>%F+QS_oXajem+F0HxQ-FBa{{FosUq0 z2cf)^vWmU)G0J8s;g3<)uy;ynHyEY%6O?uI#uJo8Lr?;rqO7Mko}wI|+m=Qhqo}(bp&k*hgQZe30^7$|2^)8?q{XH}4EWPmoD4ZBydJWmQ_3robd1%gOV>Y$|vT0WR!xlQ0`0lOq+vI9!Z%IjN%vMxg%xPcPM3|phODt zOpSt4{(F>nQUZfK-$zCHAfbatG#}-Jl(<2jB(YEqOBoys zC4P|SsFZ#`pk#}Uk}$|KAT~NsOQZz0~@*vOH zxF`jGM0qYHWsv7=rFLqR5<#AYsZnOF zK?zKQQYy$(BMnOVwI~~M>4nFXcY29!@yst0*0W<^P~5hYNoKx$H-Y$%7N z#Lt0JJIK=_2m4|jW}j?bMj|J+9&=B&KI0(UfSH#I+mKO^ZN$8jZOj{4I7O?U$Xz{FR+d>nmfY zFneXE(stQt%#|vXaQGM{Y^*{FGnl(oQTiQ6XsX{Pow0k zg%Zxps)h35G-uO$wF18NUqY|cMp=4>I5TP!XBoXBrQTVTGIdZ^&@XjRg3qD6ld_7Q zsf)5%N_btAHS~>?cIQ!Q*F#xH@6KFWIfr#{MIDI2A1q<r=f20(=f|9N=$}ak+G0Gz;=cVkS zf0{5#d)e<~_t87D`#IJ(#U7w zLMJ?aXEDEc>dTz;tdlwAiE<8e+S6R-jAx6?Sx@Zqm~)=?GUq*eWG;9TU%*`SbeFm0 zIU;k}llmg&il@KKRnKXeYo1J(FxNd{GB-SzWo~+MUB=wc-44j&O?xeMU^7o>oxr?- zkNFk9kbiC1{XQU;=Rx+sIGffc3(V>l@z>MrO~68>3+d1^TmR;rJGt)1ak*k_s{SmX zSfE$`{i}##BBi4`-YR;sCJqdqc5h@>C7$jrbk2u>VE^%%H&uBSaKNvdVXsGU2uYTu)q%k{Q^XZ7uXE~#JTizvEcA*y7p z?%lRi`!@YM^jwSm;OUkoT7Z9?N}kns11>1znfC*N1J_kim)?FIP}lSEQ9y8F zZ*N#89eQ@{Lf)=ls!@R2v`NVltgcC(L}}TnefADLBmN2M@LHZ1j|29q()|=Eq;=0u z?Ys1Hxz^UBcU1v*(3c(h!unUC20mRM1CQU4@4CF8#cB_&G$5_L*=6!Rv-L5 zS2ZvZ(^Qqu;paJ3Fwi?SLfTjh#-1PpZHydIYGc#WoMsVvL@QeK=-Rhu>mEJhoS~K) zkZs_g1dj5L*12`B9y$bs)${YLxgF3sq!(>z-NWVj+(3~cM&$v&b*X**1Mk4b zRvYg|bjN?#X;b=pOX=npxK_?4oQ!^&ysZ?Bw5`9NCr3bFHvfoSEW5;L<@m8OHM-tF zY7h|EJTU%XKc68D>D0At$M(H?^$!~2$26JpF`%1Ybafy}J`YttQOCO8`gnc_4$K+o zJs|n+8Qz`8yO#!@Sne0G*X)aEzyyAO)q6nui9XXfCymIcNW#Eos$59JO@6LKlyq^k zpDU$0wWeoy-M}J$?~f538gZzrUL^3YCwg|~S)$z(;~~2@$|UOaeG#S1pX#~sK49ji z@yPBlijhoX=iXUKqJi^y)O9vHa7FJ#$S+K-lopAbl-_Kk|< zP2RU%`MBXwCou%9Z$yfk2s_q^JX>vYqIhr@TX$*M#SO4dwK~>n#|u7 zQ(feZ7_uX|zl$S%Xo6J!uAD07uHU9hjRO}2{Oe$q)!Sv$1DPxASaefTjcHcj2><*2 zK)?THqcu~Ddebmqf&b0KU-oDE|8D7DX5gIn|K~cb35ayUhb@>5&r*ffc|gk%Kshp)YyjxURcFJd()7`LHqxIw@3W%7{-WJc=(3&`v2WA zn*%|LXnwKIMEn$cvp+oLRs|Jt|MfZI!0Ke9x2>6=qo(}K{Hm-KR`MMhIP)gYSw=-1|>T137Ax}ryj-i=DE-(Zhznzl*f z+kz{eX(6WR-wH`&S`4fT;abi0m1)XDX}J(|l{GDnHy*!s&&89ghKcd9s;vGQqa&(1 zpM+>i%mtO}l4&YTnmXmSX^BnKMaMnUl9(0;EgtBT)U>$x37uctPiCSbB~~mx$e*ZpH!yth0AqUHQ&M1&FxA>;AazaTEx_7^UyS* za+#I}zb3U)&*nBQE&gg+qE8+)Rh~;j*Lu_PS-f;;tu(>-9UfcOW4 zs)<(+O*PF3w{7+pws@J)?wD4@w9II|HJSJnwX|9A`3rP9>fJERx~j$+8j-H zK9x+eQO%`LtHntPw}aYrp*Q5wrP#f)R2O3&$K3%mYX83$IhsSYw`7Ijn$ke3hPYkfK`6qz)z-iHmw-i2GhC)G5(5J95$NR z6RY`C0(Ro7>|R*4q$C`*czv)+TMCYw)*q|1rQsLT2AEa`?X+nFO)IPUx64{L$i#AJ z3rrhqT6we)rVTNz0@^HmeVlnz5nqQ{bz&%1m97Ng>LNZvE$z4XE7833f0&7t5m#Bn z;g+}x+I!PRTD+=gwM-jjS~axlXqrl+O{%X<`E+HU)h= zrZvQG20CV|%T-7tXa)LwZ}IetTEA`s}xOgYZKk8yqlgFur<5+CkHX;7_u&hfGu1 zZXI&7!(kIc@uLti2lj|*%4}H_{_xS!PhC9}j?ucDvZf8gUyr7fkB*3nHyj@5#K7kS zntE#lJdM!Yu9FsVB;p&3cnU3m@F@7rv~w13G}u*Bj$whSks{cPR(6io$BhRvqE zK;wVc6xeRsTLd+3D(uqvU7rt#>aJ<98%?Ly-%Xp2zsKVJfu@$sfW4-DL{q^t;fQIU z(R38`z){ODfXS`2v*3(r?jRGtL%e8WFq$g!JzO;{ifOaauA%7@)wDVIH!WT?)8?Yx zwRq9dRPa2wZ}DQF(F<3w|EQDelsnB#rqNMgK3G- z)H93VBbs_Osih6aPZ^?pfKM`uxETK{A{M}=v<#QvXEZIfC0>e_%?e3l+A_54rlmD) zIocae+q&BM3QfJR0*cr?O7FIaD-k!uh`0jEVA?9Q=V$+Z!hqv>+25Sj}9 z8CscE7>)m3o1nF6B@r~YHba}JjK30>vcy~P^Al0ma%D{0ieJFAa%lYT+6IM8tAd~m zx5L+H`cyS-2YwE;Z?M(SR6(8na++2{*Z<0J7vwgvz9rs`_Qnn%4NTjE_7<%ewxMOX z7yq4UjnVkuwGWEm6vyg|hbp)qzR^ZLtxY?i`4ZG5k<)SL9C@6OZGoU};@VJAuE2#Fen!O#20Y z9a?2gcm^t%*vAr|MT=}&UrT%rEh<_~ zY=4V)9zVKi15CSs7R%BOMAPiQ2zn5$&k&1uNyq;+gIa1A5q(1LxK>OOV?-% zEaDsdP#6FUO?!(UX4;RYy(6rG2f-rKe#2LOq1bTK-s6{y6>(Lx7|nbC;R9lP#F5xl z7V&rdXlSFbt4;d@KRTK|YfSqSzf~0G3wEt(AMsnG>9Y<^v;PzHLmPwLVDbLKcMmXe zqluppd!dcR{*31BIr_V=X`4;+LyLhnj(A&5)0danrfs+Ucs%V&gr?69(*n>^MQCo< zP80QwrldvOWtzUxY_e13ZqxLQW{YWiObbT45rfG~A$v_@Ig4u(+GMnSrbR{DY}$S_ ze~o`MWoY6-ix?ekw`qsa)P+1Vcb!1fwcJr}VtN4WlxfE;ZA`SYrky|wAbu>gX=u~% zPn#ASZL%9t*LUYF!#IcuqayIRXc=lZOpG=I?UHHn&^nS>!u|}>t)&v(~_X|H|?frIwpitfCp}wmJBV-wA-d7N2_9K z??h;BR|>@IpwC^4n38Y~i+InpRA{-;<`VC|X{>Q@rAC{F_Q13>XlYD)Xj)pdbf!Hr z?JKn3qA>nHkXTRU3A@tqCjk-ld16|6v;edp(Vm)?0nN|iJwwx8k`b*v=Z!`9FD#yp zs>L`4grmK*c$v{kn)b>$>107HW#Vf~oE0sUgp1*gY1z=iOnYlub~GJmmY}~gEeBdI zG<|+EO~?IE!pq^kY3^KzVJ3bsF*jOu+r@rI)9lZKR>QQ97B4SaDYO-A|72P|w9*#u zFVpg)y`;BR5%05U`j@@9Ja@ZRBkKE=y09SPG-mo5e1FsQPh3nlEdY)5uCLK1psmG^ zX7LK6O*Ab8O_eT!HrcdTXarqF`4ft!tKrzejK2#0264EFajlSIXd}?{Nn(kMqm8k6 zNlhz()*tOB;w3{sg&Mca;_4J`m$6)hCI19Dl~YG`4m`27lHGBBfFs&1sT5=s~n${UDl<+O6Wm*@sFw<(A))j3C+HI(V zrV4gLtAy3{r>mYt?2f2H?m&IhdZ6hTeh;mIX*~&R&fJHFrs-dj2_^gh8kyD`EzGpW zru9M71+G3#q*1=BFX9ca#CTi8erTa+PobG<{n5fq)7?vgt^xe1k5#5EOdE*Sz_ga8 z4MMAe_8eN7HWi>==4o3_@`~$UulOcv{1sIp^Isw(85gX zYT9Uv=ZEcP+8B!`t-DvF|Hl$&Od*l5JuKol{3>Vx*q)}1$Je+AV|$r40bkd3QLw$y z0@ywgKNK4k+u!0%!VfcTfN7J__UZaBI?g~7r{F7b2v&EkF|Min2{Uc5Y17bja7IWk*3YT*ZfF|9TlOuU2_Rkqu}J&(TF-m%)_r_HJo6H=c8pr)Aij% zH0{Sf;48z7*vS@e0e&c&cH1eYEyNEqZK`QMqBYX~pA~1CiHq>_*=5soG!+u=jTrH@ zd8Wl%j8@jJay+IjK~urHvYBPtQv5K}zB6r^#nZ*k_s%#iw}=vFTf`Ok+I4gVG{>}+ z_$owKKyyu7g&$^`PFw`NPsR0puP}l6rmex(*F9-EnJJ!oEq^smx>Q)5TLP=IBgVCnKVhaVHtlD$7`p#g5=W;;jB68rLb0W= zOHJF1A7(`&GI5PX z+=*5kO;td}#;yql_A0x0rSae-(Zs>{inbL#mkY?DuXuACV#o{%`>Rf?wo#ck~*7%<_@jAW^!4t6OOuJzbby7KR+D+4RuDD>@Eqomvr(-XoX^d~d<-5#3vR}hspbXv$A})vwYh-}Re`+BIHT#P_CYFL-U*2h%he-*Iq}Z4 zKk*l%X-@oR+DCl1CY;9ly@{Xjm7%)mgK2-^@55IQ{chT4eC>AXjXzA&tW)dM8-JSS zhqjC|RDqACX`R`AeDclceU_`)8i_wTNND3{i#S=2JNZmb5!qAeXi#JK1@=L$M7#o5 z;TjYrK?x`crJyuuWujIhYUN>hh(o6p#{9L25_?Y2hnK2P~g+ zyE5QpgiMebvOreI23qE(Wo8Hq-&FYCHnp*N-uvdd0^T2jarbSf1s_g3`Ek2+%ICU0l1g=BMVP_E611%{lFH+QYO% zX$R5{qa8#$gm?a7HNQ2VHGeffN1nXe~OobUR6Fe{rzJu>!4$Ou5P>G6EhAL3qpBmM{ zsR#9;AwQ>oJSe+c2er*mlCyScCL!mn@(w8m3wI`4wkarOb$X{LAe!|4x$Uj^xCXAnZ%?(ir3<45=ef7!n2 zj~)rMLh~wdwJNhAhm-}NrC)1xeA3!3E#=bEtqq{1Sz3yvrB_;MwFR`2Y8z|^t(Ma2 zsNJv!_JI~RX)%))FKMxo)+QYRtvxyhT3e*GL|S2a8qUC3IOpciFVyNJoQ9pC)s=f- zGt7hepw*QN;YXMZQ(y+ngt0IVhJ#jI&LYq6Kuh=LLQ`l4&7mc?_IiM;HtPXk#riWBo0o4>*Kuc%^ZJ;f*gZ9t? zIzeZJX`vtZLnH`*AP9yiaF#gd!SmrlQ1mF5@vgv5PspjDgzf{l2jLJLh9htkvOreY z4qrh=I0;%MnGZ6<62eO%J-%+~Yt@YI*x!NFXel5e!~tHXbj5Hx&S{dmF{*WIELLn#&S|F*#kENn<2&UlUP#J$YHWTB#p4R^iTKKpPw!;qCr4@Es zyr{*B`(QsDfJ1N?v|#ZV`~s)pJY0ZFa2c+^HMkBp;4a*Q2k;Oc!DDy=T1NO1v~*BQ z1>eDM8vpm8HG#jwpO6yLKo-z4J}uj;4fUZBRD#M-4xTeVUP5JBUjYh(mhUBjq!0^Y zgI4N2gJNY%<69-G6X|3 zhz`GUczz9U;4R#OYj6RyysH^BhZfKZTEhjsVR4MwABTf*2oA#$*a)j(G(#VbT?|WL zDO6^5SApsQ)pd;jhZ(ta6<2j9b8I|#Whw};H6r6_Ga1fTl zW@@<+wo%X;tUulN89SRw%>%uY_6A+QtbmoU3Rc4!SPT4=@;BFllDH@0PlCxX1*XC@ zm<}^wCU{^Ld*c4lm#({0gt(4ZICtSRdi+ zg59tO_QF2c4+r2pT!4#k3ABFg3S5P2a14&aVK@T)pf7ZWijWI(LQQ(K28@RZFcEsY zJZVk`#c>bD?*Sb+TDOH(P#B6pQTPUmL2)PnB|$fLOM`CSmW6Uq9x6aZs080a9>@pj zAT^|guizf#J%lIhTiz#vxd}{z{2Yf?V3&a&S8s(xXo*29z={*j2R-onz&Mx+(_lKx z1P{!DxiAlYfTgeumct5I39DeOe=(*5&d;z3Hp3R!3fo{i?0}tc2AVPj|H6)drL<(R z=k#&DG^}Lj?!u0L3#+9vC8=W!jy$nI_wsggjNS>`AvZ^wJdhXi!E&_T&T1VCiSSRLowc!BY7WzX^=nZ`!4#b7{kN~ufD+y@rR%*xs*+I*; zE>fAxa1}1VQdj{iVJ)nK4X_C|gO+e@g>5l8Kvd&EaG7K06}Sf1;WpfbZLk9_!8s^Q zuM~yp_%mQ8c;Gwu9^!GZi4O@tE2)yfIP~$*or;dcb^xuO>I9wj2(Bw=Nt9MVX~k1t z&?={apcPA1!A;@<*n&_9ia=5L2Cg%jTCkK8vO)(6?Fh;7-;?eG{0@J>pYRbr!C$~D zu$*_nAGR~zT7VP`T41C#JUO5fw1AdS1FF+?T8>i_YC&zN3-v+EZ(fl0SBT4eiU;u_ zAxxo+VW5RABVn8#!Dyw*b9ezaATJxVzM}}}!IK^;&4+N%^BX;`NkL|*;CD_0Svg$o zWlk@~ug*{=fe}z28o(p+xd-19Z#GPZDKHg=>Py2goG#E6x7EZuGs72bzFbOI_LGs8Bf8alZ=b$I zH_~>89?%ndL39X#m=GIkKrtuQDn}LM^Bbb)YWPgRGDZQh}ZUHGz6?oL*W)FJ+>Ub+Gl|YkIRWx*k}$^@QpZ zEp<_F7Fw7VMp5g2un4&q73&RspfBiYm>yO&CG+~wl#JpN?=daZ(-Yl6UrxLgpx3Q8 zg5I#!8`V|WrnjgYz!u_8)e=0t@q7>T0`g$cCG%`D-AScR!YS~;_YfH(fiA0xLNy9* z27zQ28KOZd!l@wxWTPOx;-^>oGC(L=7<>bH;Y1|He=jxL54%AdwwRTFm<*4Ao@~{p z)eGq*y^^Q9#Ci?yA^v^%$W^Bw6%T-wkOV@Bro!}~BA9R#&`WE2No_HFppk#M$yD!p z>9wnaa1>5~UXeNndMiqALEVH~a2xK!bNC3K;48=ojY04GyoLAh6Jxyro`BwzX#sjW zMsLHk0lnx^XmsgB5liX!Yy_Yz@#u$TE5bE-Ha&5FJ7w1_XlMZs-Etpez)J!Z3wQoC3z- z_kr%v1zMA7PRImlATA_@Q*2ueYhW$>1nXgg%k$!7P>_2nekmvi`9X7~0B8ybJy&W7 zN6Bjy9daM^DnKlzfPUvG3Or#*pMst(X+dma2qjGz=<&ak#{$C2Q*pMk109J)C-BF+ zG`}>q0K|c~5FZkQR^w}>eLv7Dih-bo@>&=l17d;}zh{ITaD^%L3!H>ga2n3QSvUvh zVHs?Pt1;LKZZJpgfEKN9hApric7fKSYwfw#nxBR9FblNyXc9~YEfG%wNkL1#yFqv8 z4SgV#7ON*ZYdf?+8$v}3W53Z!Fc*$iSf>W9Bl-%ob|@wMM#Rscr2_E@Cxie9gvg*r z`o-wZl2FR0+ttOnA*YX~CBqt;m!x9}uy@68h3V920%!@Zmh5VYu2$q~wXIgyzM^og zp1losK#OJ{g43$iG++&^_1r!g6gRn^?m7+q=O~GFP|%9i|6;S&n*Q@<@47iHqH*R_ zOd1jg91@~B)tn1MtAnizRq!i89>@m;Aw4986reSfi69%qhZ_N$rJ$$2 z{+aW40mI2K6g0#`Kn17ti`Ws>)KJhiX@6orK`y8Vp`dMAN!S3YfYLMuEe6zcSr%*f z?1*tAHmXJc-t+GC>?bimYx$bde_FrS5jsN{Xv&3>OyxOkaKehOrFd1K3>;;q>;=_D zQ{9Po1b+|gg?&CcdAt9^^le0h#?SWVdmv3#m7UEjz;ea%*##ca6sK027nRxO8&=J=cB&S9 z16m$c4zwid%Xp)|$cwaY@A@Y#Uves-s)yuiQh6LxeBu;L}4piNXrtCF0; zwGc?h7Y)1<-?6HMbZ;4qpYOzLq=T%E1N+(FB=DU{;pokMwrNd{GE%`>i&GP7L2alD zT6d#`9+^RLoIK^{XMz<3`Q?~Q+U8c_P9$}s<2(DMZ_oH{_id>%tU|?P>tO4G=9GG* zg6Z0(r8GNX7g#xNZ)>!6CX@&o7v}(wl`eKF^O-UCBkT`Og_WVR-RY6HXwsc+nyka< zdPh@FI(|ei(f?WlBhlL;`QRKF>f=|2EYf{4|I$}MS`H&!JDXFnFXO3~l-Dv)WvXOG z(6x!v0$JzKstLARU#j^8wDc}_N#{OBSLmT6z{4IY4IQdB!t9}7Scd!NDfIM2_%CQ zkV^Y&N*ryFsJ_kz`r42OvOs3Y2u;n%Ysk<^wg&) z6ow+8At?qWpef~hPlYP9322wld0Xdi6xF7U~VK5ZJAQaS-gTd+cLHI+Ak=Wrd z0!G1Dh!5W@)pt0vzymX3226)(psx&5U@}aCiD18G_jx?NA54JRFc;>)5(tM4upYL; zGFS@p!P));{zBDy0W5+aVKFH27H}eN#CI}Vj;~Bs!V35aR>LY-2W!n=gVj86@^I{C zv`wHgeg?Pi82yUy0U^nc6SkM%zKtA}V39ZR|5K2Qv zjaoUJL!iXRKs7%KN8k*chLg}962mXh4Nkx*I13sIRaTABytx9G;XEV)#k~NR;37PL z=kQG9{}ks5Jce8F2yVhdxDWT>F5H3Ja09NxHM5GV@GV2WG@&@MD$wzr?YGdbSLKf! zClgr}q)0D8U8UB&hF9asOaT0$PR+_jEnkqJh`MJJ z6{5gg!gC-xzO3}r;8Y?3zP{7P0cEbjoCd_kS7o$-AST2B-|cEZd^dmMfm)yzhTy9b zA{D;ApCpEapbQd03P=vgAPMM(f-0|gPUV~9zatNIer8ZFV!V%x(&40s4B%E5>+VEG zXa-H8KGcIcP#b!Yuoku|Xou19Of9QIxH9M&RRt&yKYYF$HY zajdpCz;6tVpb4lP4Tm!{4>kV2<8z1bRk#8d;RNi3me2wecP;FJ-LMOG!VXv`D0CH8 zg|Eb}faS0Z!eJ3;9<>7H1BSwAm=5X{Rcacj=cd3U zmA?Lx2n(~pw^58X`wIzhQlyWCBi`4lujtVtkTGL z^3`yu!fs{yPX#*>{wa|(b+a;%uVGPl{*$kH#8+toADm7z5G(p8w|i+XD=s5exQ;>c=_IO#Nm9X0;SBqH!HUlYhTQ>P$}zs6hJ z><9kYf@`(aduNp=AXc=*{RwnlDd68X!rUuGbfV`Y}4MN?%WRQ=54SQG`7=0 zL#fHR5j3~9z-HJ4KZEjCe&oR$uMv*-aQkJUYO$~Oe+sMB>Jh~|4#z+}sw3r5I0A>@ zARK^o8h>@^Dgyh!_pq6n@P0UKyds`5y8s#@WqJ;FzzqUuVs~q5;p}E^Z@RHQ&0hX#m|Fv^1F(!3N(ZJa1Th!niU+? zQV|tFzA{tAR1s;9K#7`zbLxEHj|TVPF5H3JZ~@N4IXDZa;Th?41+)l%0cdT@3{d$l z{yh!v)9nt}sPK`wAGSnl`dQcbYfOZFl-FnyG zYCW#j=4v=~E0Lv0`MhhAlwlI60IH!=DODmDheQA(9_;LkQ>zDYMS~*-zGF5PJhO*5K zC2oY%)EkJ%c!u?z^d_JS_4e3y&=z#GX^m|OEucBHf;KP+20|y$7!1Iw!W|(Q&_S;L zSZ&w7szax%AA!Em3wlBi&{3p2wi|Q?CG3jr0*ccc^j%5QxDUR%UAodJFXgGU8eVPJ z-4+f0WS9zd2v5hlbxa(Fqp#u9u#+Uh5SR#qVFHYUu^@d6D2}G?NbCq04o+U7woUgB zhT@08X#51Auk51K#3brTh&grQ~~mDU0d+c}Mfm!eabRu4Nn1`=pw6@QMq=mVKIaYw(Y=f zhk5vGu&ZGSXiQgPlTwit*yW%*AIq>y&DZy_Rrp1*r8WK%YC<{K%7)GG6Rd@Gu+jYW z*bT4=eg^4VEG&H+Bqa}_O70`P3wDBrY7cfd>;;vh2DuONN0HUC1K=Enj^H1LL!fP^ zpdqa)PTXVoxZW@Dzu=#M<8TtrfEuK|CN+_65mx@!u~*?HT!Bh(S^K~5aq}W#RJa7X z_oK7FX1Tt|=R~^!%0!u6gTmA*q7K7*e6(>-X3Fp&y$Y`e}z61I|Fe4b-L6nSBsy+ zQ+UW$W$M)Q8CnGryuhl3ud%vDYLEXbzV-;sXvJ40UZJsDx!z#k!8Ej$pz9_lj>@P) z9OdVhs3TJdR&Qn;$NF~JjUXxnmqCkmoQe_6`?ikrJmDdEq($69oJ|l7^y1chSPOdR zNpGK)fMO5;Mf7^n*Em{$R|s1W3P66)>#cdA9NWr39(*mf&W+V;MY$j+jJIv z*1smA72Y2~3!me_A5>0PAirb%X{6TP#YPVaWc(xH_=6s6{1w2Z2fPDTM0;09Yo)Xw z3AAe3h5bw>AK)+e6O_3!UP=Lyt6L<_-Wc>iNntP&NFPaBi;6B`g zyKo9l!X3~uL@n>u@^Y=N)^hLLpjFtnKr63zfR>mqgw3FLq4aED%NW;yR%mObwpMJf z1g+lIvUT@4{+xl?a2m99TkFcdgIO>hJTMm2N_CxjL-Rz-7^6clM1~*;gaB~5TD=m< z!t$fyM}cUNPM40cakOCx#KeyQArK43P-u5(3=N<@+(fSq)u1Zqb)zbv*NybrQ6@&I zHfVck*!3mtmXoEP-|MjYOe}S2`k{+naF*B1I=--M25vhEh;g5zxM@ zoW@(N4<{pyt$g)@CZ^66JFz-~7Yb~SRqFxU_!E(?V z$AvH(Jg^qlfZo2I29seFjDTSf3PYd|tb&!W0+zvI2!}=RBP@U)U_Q)q^JgyTHEq4F zJqu>S444j6VG2xwi7)}i!#EfVV_-ClgyAq0!a(^BhCwh8dP6Vh0o|b+bOCo~{&a$l z&;i;*J7@@cBTsMU=?%SFP!n__(YYcq)Fv$7>C$kzx(=Ey<)mx7(#TiWE9|7#5HP{r z-dh%m&WpgA;ymY_J=V|?@R^_{%`-7@~ZLRT_T1(cDm zE=}Q{wq3i9vt5<#3kqxeow!azA`{mS2C%I^^aGXinKELy*`SDuKt<0PRn$3>ySj}?B_qD!V8<&ind|dcW*m)M?gyXSI zc{pKw_umPXfp#n3LYz!xwcGh_Q)|?%zHyx4ljiv%{&$3(xX$p-*8cCCsT0Asb&e+M zZ!OT6s{+p0YMZ)QWBLh{XJ5k7bsX_6!_mE(_EX=D@vTKmOjkiFWT}PKVpT#dkgft0 zR|hTMe55PvkMpE8of7(bcs&pg7?#<0!1d?+xNyhijk%)nzyjyI~jTT(J|Y z^9hH2UM0lYfv^p>z-G{~S`qS-X#wn3!aAmJ$F9Qa%c`!5g}x)G@KbC%1p8qh>;dU} zv5J2XdjL*?;v9w}8vmm>$Ke>9fM4J&oPpD3&tcW2I%!mSDCAz{Gd1KQi8g4AUq(>J-7|&$@doaF5H0t;>Cy9 zpm_H|@!SQ>Nkj%ZH>*X#pt00Mb1p<;T0t?e%IqWQB4PbNL-mUAXUGp9;4e_&zk&*T z2~OqS;Hy%U?e<>9WFznd9)s@ssrEtms?;NF7RZSI5Ss#Y3Fcc-?G0*`Z(&afX9DG` zyqx$>qoh64_`krJK?cvUnl#ZUJSr%GTBV4u;Rgy;tA7XY7W}Cb)}*U z7434mIMEn>#kRDNjIau?4$jfDK7KvWMT>I{;p{z*)ovSK_unLFpVlN&FE|l=t#ew{ zRm?w~Mitlh?5Q46Ud~Z;3EQ1RbUwCexC*m9ufG3jw&%uHLe$-iltk8>vU%WJ(0*PH zwA+=1GLV`$1+dy1oOz--QV=vrOJGZbv#k_SC2SHy@vQYH>md-;s4XNCg`1@BQ%8$&>Y$ZF#appC3K&z4MJ-u zO-8M-Euk5-07Y&GMW|$Ztj-gqiKl~7Dd>jQ8FbGuC*iL6U0^hf0uAF(&~Og{=kVQE zf?6`0gnjUJ9B+&54LZp5z-mtDeYl>cIk!*y5gr7CVIT~E{vb{0TeH&}q4;5-%1GC@ zX>D_>@R2wwd<3WhiaZ>g38_}4Lm!6bWT=yg(x~fI5l2^g9hAnQ>09zl>_nIjQ(+2B zhDk6%<3Aop5rrat=}$wGKEt*-apF>l;*yEi9>l7!d9Vc*!H=MVcffL32n%2~d*LG#9!hXQc2NmjUcPi|}aaydfQwbFsQD8)QPTII`GGEHZaPYSl zEyh=-DtHP0G7D?FwnlQ%3w7pk5%BChci5i{2kUcp0iE< z&urI4hND?Ve}^?c)b%RZCfUDLOxw3XM5S!}of@izYLO93%Ws!{fyD zt*}!O4Wae~Cr{<$R%^6Dg*qEf;A`VASl#KAuXwU5)TxLvc6_HY%IhpR4f)R+p&p>Y z?*EX13Q~_a`|d@2RqO(&b>~49(FAh}Rpk}$pSGz&%1@QjZmxabsdQXj|2dgBJ>eAW z^oF|LDNve|*y&bn)9&c(#@a14{$J*+-Et>5`Cr4|tnt@Ac?Fz((m6WKLen^^RnD)d*%bs=nj*ruQs=1TEDMST0y`XJQ*tZv)0-dzJ-L4^0 z1(k=k%hD*f_b8_B`tm5IadWy%i8XV5k78f;mQ%Th#QU=ARS{1!q_^$(#bd91^u!+it^U@b-qD|0wZ))&uv6_+RycQ-~_)^uTlc zW8gH#8ICXaeU<6<9c$I@%Se%_;IHUT=CAPeb$SK%jgRhZ{|!yw_hWOVq{FnXg7v-O z8t8k0F6TRe#sAm+pU))x2!FvJP=i7~U{hm%$8IH~(a;~X$Y%glCZkVmQ@TGvX>{+u zmRYA#3M*gTGxp;#kE4g{`rirYmE}NCB>h^BqbsbhO;OPF>pJ?CoghQ6H|sU$Kq{hN z-O+2#YPBA(E1i?aVtoA~j}vz6TQ}k>&=WA-RBVGy4%tCJhF2RZLs`&Muu`C>V2MHR zaV7-4$EoMX)k&|Pv4~CuR0-vy%RBwdMSHBia3sOkyP&$ZYzyu-{LznXs6f3Gs<+KD zgMQ;cufpk-xD1dU^a82A9jC);yPo-`!s>R5UMx)uOW2+oo5sRv$v+LG2HmPj3Q0g~ z0Vvn)eU87G3<6203KR!bLcau11g0@=YDGAx1y1EuF$kmFqC*RK{vRn5gw%Lzcgf0m4M#e)fY+KD9VJE5%d~db-LjQf-sg z*R)y|$JwsQr|r(I9DTV}rCNb{R}F0e-s}HxHZ~`q$)WDmHT_@87(WMNtk!GnRncbH zrqBc$LnCMi4WK^M1Kkn1LHex3Ux(G#bA7`e208|WgWVh8A8RGx+#HyJ@7y4mh_9Oj zVK4}KfzvC_Jpmm^T2i1|>I|D6(YHoZL*#3(`W0WT*Cc-e>V?aYMdPpC>=E3DqHqb0 z!Vx$Om1)I6?0$%ezYn_?_P|C^!9}P@0NcXxH=wCE*TYZH8{O&Eb%fW#YM2Mrb^fmg ziC_{!9Wt7T)x_(G)mP^U*ikS7bi5b>gFy>W^!;!UzIN6A(nzP_>Id383bI{$hi+^o zgueLQp$d9Oth+sbvQS7ntX8G8#X3(eo035X!bPx!p(}nUR*AddcY@AvOX<l9Pc}PYO#KJB?jRE*qzv{5Qd)@8;W(lj7lF$ zco^s&@o?-&(ESAU=y?3GaDY~i#*Tq;(15r)_{_zhqw$}GqvQ2->@=7Hlc6iEnu>K! zIK2pK1#t%$2V=m)_L(pPzJu>!Hv9ndVIeGlWv~>MKsYP{Rr*Jb=VH)$oK@zl#w+lb z!w4d+#IAvGe4#HGnn=FuBzFhi$MG)b$#kE#TG|ZN|~0_!%~V zZo4ayFG{4iyU{hV3Sl)NwPzdvRp^k9uW(k--l4;Gajbgb44i~t;DnCF2O#VK13n#GZ!>kcMz-@IA34N6!w~;4)-^aN;DvYR||3IUq3{(fF%|cL``8 zy#uPyEvzEnge!0ZuESNh2Dc$8IH%Ej_$sIbWFkMO)y)ZO*VYkn6uyT0Av^#r_bMUb zF}#G4L_9~~FYup(#!wSet$s#WPeGny>l4--(C#@5CZOq-?HlZCXiXmPuz$h__zm8} zAE49o?^vBx!%6FoN8l33ifk;SNeYP}9%vm;RQQW+`k@|w(DC6N8I(iQQk+kg_AT0L z({)C?Phnc;69oE!pRyK~4J4dN<6q50C5VC;4BpEl>>Dyu1^&KVvI3%`RVJM>(!x_` zdmPiH#lT;T4YBl!qaKJ&I2Oc&*Sh}uvVgd3h!6i+;os103D{l?n-H4_bdpJeRUz_a zlM&VhYB=$9_{~H(9i)a-kP<5E{GS3x5t3tHk~j@k5z>OLfWN{@Q^Jh!cVg0HAex{WG)Uw|3m!omge(k%_@ty81Oq_3^C}^9b%jyeiadi3m zV)5md4}FPozF%y{w=XVk@7J%f2u^0L$>e7$a*qu4Jg5|5-Pd;>L^UN`+X_<4G!aV^ zt_3h+wS$r*< zk*2s6u)`=+{y6kXrt3REWqhU6wkr6|NZ$n87#cxCXaM!09@KU7rw+7&a1yq}wt!}! ztD5F!bseW`J3W@uwVx)L(<38^GXjQ#zU$qEq4?_VFl;EOoXLcTV6}9kGd35Mba%pO z5A8tRuH8@v9Y1Vav^Jpow$c?2z&hhC{Rfy2GeEkw>k(^5;&yMpk`pfp;BS%-p%?)?$< z(QNNS9*VES^bEq&VH!+@DKHr(!9*1_0mj2P7z@fkiBthS8Ci`#A9PE04t5^Qh3i() z@9VP=mxaP`n?|G*k<)ZtXrxah5Rx;9=ic_#M8u;wwdrYI0A=ZD;(7LOFRJkVK3~4ov;J8!!8T&!Rp)VKCBZ*+Z9(< zX&wI%zVbb2wmB7eN7^)4-xajY_59!2aFWQr8-F2u9CUt{e*!cgE@98Y88{6(;2fcq zX|WdxUx0IP9(s}XExK0A>*1BNKvjE#z7x8y6X_aU1qsdu`8Uy2p=O|S`8|Pl7jA)e zS#4MN4uliFMOcU1+qV5CVO2nJ^v;wMw_wZ2sICCl>l9HuyRt>jT&u?s-R>j(NRicV`G!w%KIY9gZjx+1?9K6EwNmchTe3wXnyQmuWqS=YTK4EmZr)2 z`o~XhU+^|nkoH;S|D$cm)Ad39iXlfAr3(5UMgMGb=rJ6wxFn2+Ie)g zkl5sw9z|&yVz~(tnzwtYg{P++NgW(i$uA|BB}l#56cxL7U5+*FeqNI<*sn>h?74Df z&*SmC8k{s)uiiacbfx6G=kCP%7`s-pzc=&pt0%?P;6!dMLsfmorT>2Z$pw$*1^AIZ zPxd@qkg!FiH!J2Uob=?4CI8xzoh|B`%Q1_b+dnyro;&z(Da-t4()!bWz^D8#xD zqfnPP@hesEr=>Zw^Pj6t&up#x_3F{Q@!;k8>JN#YCSpr2wzTiky?6T_t$UmuJ8(#% z`o{{frC@e4WY4qQQu^O%QvJn?Zfq&!&CL7EMdeh8JvZ!5{Xy=9Y|5EEcYeC$6p5m- z>0Q(H`)4-nJ%%m$$&T9f>Y1%e*H*1v!|Ua56Z`OuCTyW{g|g@JuB6taj5PU5v}fRXp7OXDGxi51Uo~dMQ&ASTe5AD#~`I%0n;)93r!K6SlBX+ zGxN0)Y}t?T8bPJW$x4xsBRT`w`07AoX-NYqhM&$k2LF7vVLh%6*YJ_TV-sB1HHvItMT$Nx&kg`+fD>k^# zKCDvG81jb{^Wu>2t!jp|We7965+ z($c36$ka_)vbE{=Vdt9iTKHkjmX9TbXuP#LG@cAxRIg$Ifw}Yhix?Pf@Qw1bv*4lX zZNm;M*LbUr*szEykYR;lLcyX?QNnoyQmS!ig+ogVojPm}YSJq}z(2IE#@pKre^OR- z8Qp0|&A8Bf?fLre7yqMD#!)x>vS|kdd-l49AUGvL6-d05V%GMVS+Z>xkv)p0mKL%G z58e;KD}YGDsNk#?dHRg)n+8NK(~W>o|K_&~?49SJT|Ex*fj8W_W53?feH00G-LyA% zt1s?vA?nc~>(%h4qs_yB~qza5FAeab!nOBfdIAj69q>MM(=UYGWY}9s9u`x?w?E^=F zRN!-7_Z<#_Nv~B(Eq_xC-YC(e+E)IzUGR+4B1>;_6(Tok3Wse3m2B$K-=Q|Iyk~9<=c?D598$c#@n6+i!&6D@Qi$*b;^p8%#hN%Qc^}l#v zDgi4c7Zwo?TUEZX##vv-MQT^mh!;PkOAZKCFW_CumQyx@72yO=}wH#9Ef#S zfI_3~cH#a3--gGo018=Ej038I`nV9Jjw-KUjgCVlyWycLDy4c~o-H~KOS?S?ZprH) zjldoT;3@VmLC{S>4?@io2HlT3+@hm9=_1&nfpVLIEVT)QyiN8wQ2qu_1?zd@w^jTM zlw~I%rGXeZ)Nh+J?v5X;X;oV+6zd9K#c(eLdjk}8xHlAIg5b!~CkW2$uaknas(w9nZZ+Nw;LWxpAv#pS%bKdUW3({S-z%Pdp^lw@bUolC?(Mk?cTXZ z=kA^R^i8}oE4k5_N1h@CMh20%ijp3;xpuSXf?CQ!fOw-^C{%0wpE~Q|i#^UMZr?8e zLTe1@{eYgmI}GR@8QVCQonL*sJ2Av90NsJgF68VAUmfh(Y>;m`On;tD!yN7 zyFfJ~Mp_(sLo?a*a7|%-y~NveiQL< zKxne{>9u{_mc6ZLbwQIkU0vakXG^DfD6sytA z0HM(annccR(0-2_yW4#HSA=+#j|XTa2YEQ`_CEIF!z>O0WE&u)NN0WfTz`La7A;oM zgVgi;0kHw(RER^v5{9?$O$GJnDb`Kl+a`H#(G}wg0)oCJwLHVQZ9cvJW|@1qz66kX z$?#kQi0b`tMy-Xbu7*vX=Ld3Q{2ZZGFrGLh>y32=^GeJJ_ zf?Cxd7WFcC`Zg0pRZZe%{o`@LDxJoMtKy{=p{=M@fN&|e0zy(ay6fo-r@qmWlPOltGR?2@iRS_$yQwfsBu@60JHj%=EH|<9GF2ho z)JI|!GJ&!{EVLEf97LVS`(y!!o$MY#(E4NfZ1k+vA%e;mwtnp;HTDxkC8x09_0w0t; zw4rw#ioPQcJqfM^^h%35h|B^%AYnrTmZ-PYE zQLtA;JOL<0fpW?{e(*bw0V7Q)8vt1o1_+gWBGJ9bk$3l7nIJXmD%e3HZVwbJ zDH9%d9Qx1Kv#V~KP~rihlCSzC+@G9Mca#Y-55#$=!fSS{#{#Efaq3=gPP|aiO0V#) z$2MQYlc%CuJvN0vq4nlOVmXyERd9BQsV8~n8Fo6xT>}Qy#ZEr zX+Xj9E#XnvV0B2-L|WAuuxN)TkpYM;Al2>Hb#~tL*APIs@omt6O>2wAh&u|;FWBcG z>{bn!O%UDC?%_rxY&9Xf24_>zaRy#Z@Wm~z$q6ruH4L_5@ZZ4j1# z{0ILFHy$LTgIW1tkN`Gqv4&bJRlz=o51=w5PcWjktDHjEW5 zHit-N{>kbI`LABhK`}z^LdckM;qyXSwv zHK2t}&$;LF$BheSHcFeOl8SHzh_c*;6w1%MGbb2#=FDw=Ne+QI8_9&VLM1pH;^r0` zJW6oZhBTAhp5c`>*Z1fbhoS-8=bqDyt*;8f+-}B>Rn-LR+?z`xTwdnx#D4Wllc&Lb z%(u-IY|ALv8=DrA65bzotM8W3Qvy(YC9l6UAU0@ybllScy<6O0CCW*3?JKrG1c``i z0)oI55Kn_5OOJ@{}lWR8I3jXP;luu8f#uD zg5IROj9pfN%t^;Y~^Os`Y%uzL*F&=f;^Ne>tB zrpQ=W!J92uld)KI%RV_ROg51r2iGqho%Fj{pc zhWSoH1XkLYa?)kp_5xEH22in%9TjZhBt$Lyc9aJ2i%(H^+Sv)dVvWUxjj9tnKM86^ zjeI^yC|xZbJ{76*|28_M;q|qXg4Lb|O_p65p|gTjScis}>MV_}m>bo$Hudnweho~q z*!9(ca(^07ngIn-f`omQBIEwbf7}}=Xau6ziY`D2Sr1K$BX-k)JB#D~{kp`RGKQYF zM0P&3Oj-q$_S1#Zxt+Tp5 zP6&(x<>z!Lv29mG{uT=k)&{X}LuNpjeqALy+T_;YQf0ONhyoPH8?q3*N7OYyRsB5d zKjJiDc-B$*QFu5<^gTI!S;yF!ts4)LmxaI`+LaB>k1&q&Ou<$?2KW_b3a;vzcxW^e zO2;UO3g)l1@`DISWH!$SvpvjD+3msx_dx)*-k z_rvR8Uopf=@EfDDp@RJ!TirQxH~evhBN_A$(WY!c<#u__*dV-Ad`F+I>O zYG76-#%Af}_K?)(_0DnA5`};KMQ);l@fpPJO8t&ll1bj4kO|=#OOqR+!-F_wzStD7 z#C}Ipd4m_L5+kl$GZs-A^37JJdS)#8-yhtK#gNdd`$9V)Kw}TeY;+d70i&6Czw$P5 zvUh`oX7`dTTT%N13m0Fz@Iq|9IQV6bY@=Rq)>-I7#HVCD-HP7QOkL~fw~EzH_o6@* zpQ`rvh6a|!h`A1wg3yGXiKCt@cS*U=QJ}g;O~?T5V&EEn0GHMf=k+g?p{E_B)xBtR z?fOWNnyx?uHtMmV6o_oWE??lBXN89}ZjPc!J<%1F0HFZV%MK5pei%0- zSge$&0rmSpw=)j{T?BBc0r{;K{oT%6D{V}OO5Pv1`^#a-8~X`*%FfJ%yfdq%vuWfc zfFiXL;8XE185*mehle5+@vxFW9+*{9V4uHfN<7aktq zAz(fpbC>O zHcu=X5P7T)qyj zzKTB&T1(viRGJJonrD+T8$m`3XPlA#ClJkS2Yt};U&v+iNw%wiA7;$rzCs~WR~zMK zEK0WM#?EIczA)DWA8r75V=ZOn_|4cOB2>WC8Naq#1o86hX`fl<%{mw|7b)9a<5Xs< zKc}##DUbxvZXrsOClX6a?~6R@c-U#oH98BLhoNH>jZq@}jXgW#kJSNhoH#idYiP7< zMtPbCW$qTy3y}$bGq+^#0^VW=?0Qo%)yTve<%z*#w7W2_Y%)QOJYU_BGkH)(yC;uUelh2mK$tn zzU2wh*k?v9gDj1#-Ns-M1yA`mp4o4j>}B+?%rs~MSa+WX)^JqBskCiqdgG^!N>OGA zd^kjSjN?`JWQ;Tu4f*)iBemU1+I!?nM?UK9a{&D_IKBc$war)s%Q+wJ4EHL$jI*7t z_*hAcFRfhCB+Q3p^1u0{Vb6BY7Yw>#z@sglq*EPjUhc7K$4i7L$AWoYtSL+yVpId8 zeK9JU{Dw_hklFkhg)R?wS8=$DQ)%&#B1uQ8-L~UmfE6UgEI?M!$o9AT`@f)B&~T%L zGY&wx4yy2pY&}w+)DaW0{GwHtag8Z2E!ABB`nibGB_>KSNbRSD+}jVXAC4wrnM#9o z3{XNAqw~#V+aa-m{3yQqL_Q5)GMbj0;6f2VMIyMI0~a|OU~cVcS~)%ecB3RL(D{Ca zvF3*5Q=~X_t||e;Hz}vB5k*hC$_fkS2G!%O4br88m|_Oelk6(bIK3?j#PH0?vAjJ+ z!I~~X1Vc8+3zi5j#=08U#;<_(W(gz-!^Lthh1!0{n`%q3=*>M93A*4tc&dW+S&AH) zF?dKN6!W8wmccA=8S)^yV^Gn*<=c;3*>P=ZJ=BWgDqd__JEXdHUnXdbwW3@LHU&h# zVQO-6vT1}`n4w^GmkaTRS~I03dJmU(2d`W&R#BxiNSRiO4uFu0J^faF<<<)k$S#s0 zLubOpS&hag;o-tcRKNTR!B=OQK#l~up?54}W#;D0;?fcIL43k_B?5xmXThCBK{|7Z zR7gufC`-;wP$M^i-Eu<=?aw8dkD*cqfufd0x!jwrV6LlBmv6Hr0ck>q42UhAQNtvl zUs@uEH_Hj)l!url+q(+dAh$`4P!r3!8gD4H8vwcLTFjB=gcDDF*Z13em)6K)Vwazy z>l~~?fb##R--6V}4nz}J$u*fO!+NiQPK{;?Hg%2Q*fo1apxNTT|Enmu)XoJo|{l-x_eS=G|UN|K}-HWmN5s(5<$BB(+5AW7xSS~;){l&{mA7{of~xl)JR z3sH7@)5&Xzh~i7RN8UhrL;R})#SUCLp1WMhaOUx0@f3;}*2{XRgCNp;)da-VuEGW( zNI&T+w6P6dq+W%si~%=_s~Wx+EODZ~Pq@g#>V3=j7J(k|dUrzY0z^tSNY3g~;(k7Bhe<}%ys2&1AJ3F~3aH-aSc zy5MC%4w|@nHKa~Vo>TMwITOjSL}^B>w({vWZfBQpiqd9#e?8fVq)B<6e*U6BP@tcr-i#t@oZg+27cZV9{kT;nY! zpT67x`;@js(w@8pl%x7M4&ROz(r!6gcx4HO!$wR((teh=?mkdyCv4;4rFWNAd$Caz zhNu)7Kz*|jv&=_4RNDj<&$Uz%+@se)e}|TC+F6t>&5H^rKy1JzeCes3GrQLBX@Zbq zP6n~A6emtzf8Br7P`4u{6#Y^tJy6uu@o;bl3JT@ydQCsvyF|H;gG}4n(WRs)$Mgy< zCzsd}P|;r57PvI-dV#p~W^~hFJha)262}8VN|Gb!_~P|9Uk$M*RS>It1}M{kqP~TP zbs$nbS<3EiM%tJEGD#c@2M&p8K5S?xiK8Nnfe(&ouy5fSZ^LI`khO4Ks7m*>-TqjV ztv4nx#jxcPZG){hDqFu#rce(JbNDx8^-}lIT4IY3YHX%zb~`p}ix4C4Ei(J9!UzYm zEoAGqVk8$^g(%!sAzrki4Y$EetY0O08++{w+P0aRIKqmKBVl6~_f7zJ;WkL&0Z=IU zq0zjIjKHJ|KTIg9)fk09F}SUkP_`AfYUBB2w4Dj18i)A59?~$M&DaYjNLvuQZU=D! zP>O>8r?!c4z6(zMG@&d5g!cO$RWC05TeH>?6C@SH-9fCo50qj+nK4}3BCh|xrA#Q+ zYmnAK{EM!Uwo9sM8pZS;cd~;Cr3xU(r%%ugZm9fc=#>N$qy>myf!L`ZM;X_9e#txI z>gSbF*x7LOMz!mLwJdz~icQ!GDS!g?n%8|@w8H5jZ!wlv4-k74ctR7# z>OARw$OLJ<8Cu>04eHHNoW6YV3O}WfHld6GN-9tc^MOJN>se!7yPY}mt4t^x0ilR& zUdLKb7j5i++yprS;`}{9d>tsZKq2E(M{hiO*iUx zh2CAxzdiutmsXyhIR3I*!QSnFZNU&{C6k39?KrMVPS)4JVk zN;2k9LS2sEJNb|)Fr#^w%-4WXw96LptN`|IxoS> z?}B~W<1ShDtD$vPJ)e4?b}#wveWvpgLw8{U!7;PVpitqk#Hn3Euwhh+Es#hxDcUk4_d}i4efwRdKGszX;7{vxv?=32RuUU!_V8@e`oLI(Q>@{J65sN<*A9}y%y}fj1mgWQ)XxZKv zIT$QgHM@+s@Dz|Mn@q*atr6!2nrpO{i>~9s-tQC26hC!TvinVsNgU_5D+w?7V7 zE9QaJHI-_H2af|7;U|Gh=B;l){I(@G?%$?knK(rT_u(E;B7vd~I<8B z7^$t1zJ&iJ)IQw4{h5;QdZUskhq_uWNkwO34k7|x{vh18AK(ylP>7e`>MR~SP=uVo zeo6`ytx-aR&#%n}Q%nU0@eb2?Jy<`ci8O*oUpJ@Ek)N3QY$j6qfr*7J-^N ztYWGV&6o2|mQGC|{3+yOms5pcIf&rMDjkBey2Fb7bw~)-T{$C(duWa}^8+T4A1xc2 z2WQ}=9m3>V`Ya!O+g_|y2R@f}HRxe}lyhvB$&x~O1>4@0eSxSoBahdy{y_J|O~ zyf<&oj?ieAsUE?B~R1<^lm>pYL6G@4efk{aS0UghG z7&^8K8EhPJq_F^ujLpE5a+6dS?btLrqWYhYyR!aA;GiD8tYF8FpqA(G@Rc6ot|0l~ zD8?|}hz57Y6zA%-wk+CY>Z0*LX@3+xY0j$>%E+sKm3Yvv79IVe%Apr+uOdhYE+V_r zz*Pg6{iKI3*A(nz709DQy5OJ@hxIadHtm$)t*vlfYOR|~hl2G-&YFUuhmBeiJEZvBcWDMv1b-NHU-8m0iGCCyEPEf{l)rKMrk&OVP+4e&)9 z{E(D7=ZxU3OS>hxvXv(+z3pA(bE+s-afW*eo<*#|^X_ey1dE|fyd#aPooh-wnS9|; z8c<1BAr9W@Jax_uZ!F}D0+Rn8g2)%p8n=7WeInkerTH`r;B4Kx_cHbs%Wj!zrCwi^Sp$1KeS7WJfN*sQh`c8H>Uy zT!bR*!$W&K(2RpTFFEH|PEt0y>FO!zP@RiVNz_wxUy_Fmd+K^3&v~&D;tCdRW9Kfx z(Qj}Gm5@%-JFz(Wfh^s5m*9)ZC^SpZxu2|mqbvta{;%RxzhrYZ`he+>93}Zu6_xQ) zl?M-`g-}Syo4K=U_4GhHxhsJfm*`|XubQ&BWZZ5F>d`4J=s$v9Y{OazDQk>NBsRvl z?gPb;HO3{P$T2Q4tHd^=Qr@JR{mAL0ncD|*2m*|h)TaMUQrldqd*rwnh>|T+~{HNp5r2jeWXlOIT22)2MT!=-@-jV z4KENq6(}^%pmK6FEBK*;&0i1QqUhQ=dT5F_>J8BTtYJ2>a>g)QqYW5$@N~LtfTmC& zV=-Qc5w_hRR+s(6T9^TgytHIHwr)poP%$762vqE zIOMC}vVEs(m4JebdJ-x&7h=z0Rwwx!BvgmTQaLU@bt0b(p6xC+Q5+upARBvm4x8O| zpI{&BJetSTX~cXCp1fBxcf=EEZX>Q!35(Jj7he|Is9m3;&n^qDddGT_UE2QH<>s`6 zMY|BOgeyopA7!3O#6!~jw~zieGHbN)sFFQ+Q*teHghK9HT8Dv=*}665eQOMJp-fD$@3O#-@N)HT)S{ z?Fk9ZdB#3?!Wr4fOS?DtPOCwaVn>1(L`|XbW6xMEFO9eUDle^4$kAs3#rk4LHx4U5 z3=qXXytL&j&lsGGeTf7Fv^1H0dB)azp)JC5N$wTA4{5Y-%T^;=Tr7l{v*2@<4h($> zU{GHkeAYTc8UJh62x0k{W&Y|4cexhc6rhFmA(&Y zbsre~uA@jmY(blE@22FF$9%APMdgy$(dRiE3R>+LPCIjAsX0wIv!cN8llHe}JZGDU z`x0Q}29FaR=DDTKhztV;&W6*OrS*U~5@hPCz@4s8ObfblZ0p=8U!vaF9xZQ2-rf*vQm~PELX;h)$7fkDm)^-90jj1PP zzUzr6K$MeHaMeRyb38{DkLzj^6r6i&0;hk@^+qBn9l%04axi}zH*CU(Sjy!Pr zX9YlfA$M!AtND_>pvpD_3b`d;PcBd@ms=z8f!adWvExhT<_8fCc*!dHK{N?3Sr7cx zrt#vo)p9Ah`eOV|3Qm(L#+L6>w$Bghj|C|Jd^Wo(V(yhS{6}ukvr^ zJOE-K5UF~v@_m`p!gkDP6Jp347U2(!7+{c+SBWh8utDKe+>Rg@Htfxuec&|p4ciDr z)xtN-Wj_dZfPgf+%wPI`aRpkgFcBPn!@d#A3&0@T_qtSzPW8(7!C04BK7GSHD}vWo z6n-CnZQim_D#Pt9i=+1y-mlbf?yAd0;cLD2oHne8mCBUzUkq6$0t4}ibro* z%28na%Q0$I2`Z(XH1N0y!|EM7PrM4eW1&}p>GDnz$;B;pAs#EYJb0DMGNDh&yPTvD={4 z4*V!-ZNSMcaf@%hmUk3Ak@hcl=hMH(EUC~R(`;2fJsQSt%;vm!VVOD6d3R#5^VKP+(ulT z*4~8i@-y2^2WE49kISO0~ zYf=D#648=-!7@VJWF1}SM!7sJwQ(AUc;oujFDy6^JZ67k-CCf5ae=tC%}n5fmUfT_ z?seK8h$gS#mHM)5?Y`)P0?CwP90#NTin6&>%C&p3X0{xHN?iZKwAE46vo9>EDgM6u z!ou)dZ}(Nwg`e@^2YRk)IA5g{_!~1?!b@@a$`%o?vR~P*>d*#RYY@)QQ3IB{GC0_w z7AH$@-_pM97Z=n5u`&bvkI=7d9|^71SJtBjO7C4u!pyVw{P{{&3pxQ4vlAVZ*#V*D z1ds3sE4$8$+Vq!7*$Z6V@Mb!AfL68iE4x}l6QjEMm6gLRpf!6oOAH6e+RD=>t<^u! zA*}jwjYF;?c%(V>{10}bHky(t%uuinM1A0=B%ZguT)qw6>Wn#|EpB9_NzZaONs%3I zb!CN;RSVNNs+-~AOdXuir2;@#n#83b`dKjTTx#Vr1h{; zii7)fd2lY-%uQzGGm%$?o6G_U!|XL?qGP~^zs{^-6HB?7 zL&;u-LN?EHNUa_Fq28eq)d%FEZmK8-i4Xi_ZVk~OIWF}Ln50*qR_y;c*t-_0EMr=0 zl&oh%^imcQwx=Q5E-lQQ3}$1SVj`O5ZR+1E!sM__ijcK%b=F#``v^+brcowk8jBax z@j~|>nucS^cN;+(you@uptTFvc*)I^FF2F;-r0E&Yr*WHbQx3DXFiSc z4Iz6CRWUWMl67wiA#h}M8eZ(B7o19;b+v3mLr;vUnLqrD%aauRw70r&K8)WU8V4NR z=I5aeez<7dAHvGmJiSq{Re__@NTvl;cR)e_d2@0{` XoRA@2ialU+@Gp&{;S*2- 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 Date: Tue, 7 May 2024 09:46:42 +0200 Subject: [PATCH 24/49] chore: format your ass --- apps/expo/app.config.ts | 2 +- apps/expo/index.js | 2 +- apps/expo/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/expo/app.config.ts b/apps/expo/app.config.ts index 39f31a6..bdae87f 100644 --- a/apps/expo/app.config.ts +++ b/apps/expo/app.config.ts @@ -60,7 +60,7 @@ const defineConfig = (): ExpoConfig => ({ newArchEnabled: false, minSdkVersion: 24, packagingOptions: { - pickFirst: ['**/libcrypto.so'], + pickFirst: ["**/libcrypto.so"], }, }, }, diff --git a/apps/expo/index.js b/apps/expo/index.js index c8b44ef..d1037fb 100644 --- a/apps/expo/index.js +++ b/apps/expo/index.js @@ -4,4 +4,4 @@ import "@react-native-anywhere/polyfill-base64"; import "text-encoding-polyfill"; // eslint-disable-next-line @typescript-eslint/no-unused-vars -import crypto from "react-native-quick-crypto"; \ No newline at end of file +import crypto from "react-native-quick-crypto"; diff --git a/apps/expo/package.json b/apps/expo/package.json index ab9a73a..57a0034 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -111,4 +111,4 @@ ] }, "prettier": "@movie-web/prettier-config" -} \ No newline at end of file +} From 6b098783aeb97db53ce6f73394a7228bd043cdca Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Tue, 7 May 2024 20:12:03 +0200 Subject: [PATCH 25/49] chore: fix typo --- .../src/CheckIosMarketplaceModule.android.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.android.ts b/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.android.ts index cc72074..dd69225 100644 --- a/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.android.ts +++ b/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.android.ts @@ -1,10 +1,10 @@ import { UnavailabilityError } from "expo-modules-core"; export default { - isDevelopmentProvisioningProfile: () => { - throw new UnavailabilityError( - "CheckIosMarketplace", - "getCurrentMarketplace", - ); - }, + getCurrentMarketplaceAsync: () => { + throw new UnavailabilityError( + "CheckIosMarketplace", + "getCurrentMarketplaceAsync", + ); + }, }; From 684c08b7b6a5a843d78c62f7426088780762d59e Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Tue, 7 May 2024 21:11:49 +0200 Subject: [PATCH 26/49] refactor: ditch context menu for action sheet --- .../src/CheckIosMarketplaceModule.android.ts | 12 +- apps/expo/package.json | 1 - apps/expo/src/components/item/item.tsx | 191 +++++++++++++----- bun.lockb | Bin 730554 -> 730018 bytes 4 files changed, 147 insertions(+), 57 deletions(-) diff --git a/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.android.ts b/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.android.ts index dd69225..35d00a2 100644 --- a/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.android.ts +++ b/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.android.ts @@ -1,10 +1,10 @@ import { UnavailabilityError } from "expo-modules-core"; export default { - getCurrentMarketplaceAsync: () => { - throw new UnavailabilityError( - "CheckIosMarketplace", - "getCurrentMarketplaceAsync", - ); - }, + getCurrentMarketplaceAsync: () => { + throw new UnavailabilityError( + "CheckIosMarketplace", + "getCurrentMarketplaceAsync", + ); + }, }; diff --git a/apps/expo/package.json b/apps/expo/package.json index 57a0034..89304ee 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -68,7 +68,6 @@ "react": "18.2.0", "react-dom": "18.2.0", "react-native": "0.73.6", - "react-native-context-menu-view": "^1.14.1", "react-native-gesture-handler": "~2.14.1", "react-native-markdown-display": "^7.0.2", "react-native-mmkv": "^2.12.2", diff --git a/apps/expo/src/components/item/item.tsx b/apps/expo/src/components/item/item.tsx index badd332..c2b2bfa 100644 --- a/apps/expo/src/components/item/item.tsx +++ b/apps/expo/src/components/item/item.tsx @@ -1,14 +1,14 @@ -import type { NativeSyntheticEvent } from "react-native"; -import type { ContextMenuOnPressNativeEvent } from "react-native-context-menu-view"; -import { useCallback } from "react"; +import { useCallback, useState } from "react"; import { Keyboard, TouchableOpacity } from "react-native"; -import ContextMenu from "react-native-context-menu-view"; +import * as Haptics from "expo-haptics"; import { useRouter } from "expo-router"; -import { Image, Text, View } from "tamagui"; +import { MaterialCommunityIcons } from "@expo/vector-icons"; +import { Image, Sheet, Text, useTheme, View } from "tamagui"; import { useToast } from "~/hooks/useToast"; import { usePlayerStore } from "~/stores/player/store"; import { useBookmarkStore, useWatchHistoryStore } from "~/stores/settings"; +import { Settings } from "../player/settings/Sheet"; export interface ItemData { id: string; @@ -41,6 +41,83 @@ function checkReleased(media: ItemData): boolean { return isReleased; } +interface Action { + title: string; + onPress: () => void; +} + +interface SheetContextMenuProps { + isOpen: boolean; + actions: Action[]; + onClose: () => void; +} + +const SheetContextMenu: React.FC = ({ + isOpen, + actions, + onClose, +}) => { + const theme = useTheme(); + + const iconMap: Record = { + [ContextMenuActions.Bookmark]: "bookmark-outline", + [ContextMenuActions.RemoveBookmark]: "bookmark-off-outline", + [ContextMenuActions.Download]: "download-outline", + [ContextMenuActions.RemoveWatchHistoryItem]: "clock-remove-outline", + }; + + return ( + + + + + {actions.map((action, index) => ( + + } + onPress={() => { + action.onPress(); + onClose(); + }} + /> + ))} + + + + + ); +}; export default function Item({ data }: { data: ItemData }) { const resetVideo = usePlayerStore((state) => state.resetVideo); @@ -69,66 +146,75 @@ export default function Item({ data }: { data: ItemData }) { }); }; - const contextMenuActions = [ + const [menuOpen, setMenuOpen] = useState(false); + + const handleLongPress = () => { + void Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Heavy); + setMenuOpen(true); + }; + + const contextMenuActions: Action[] = [ { title: isBookmarked(data) ? ContextMenuActions.RemoveBookmark : ContextMenuActions.Bookmark, + onPress: () => { + if (isBookmarked(data)) { + removeBookmark(data); + showToast("Removed from bookmarks", { + burntOptions: { preset: "done" }, + }); + } else { + addBookmark(data); + showToast("Added to bookmarks", { burntOptions: { preset: "done" } }); + } + }, }, - ...(type === "movie" ? [{ title: ContextMenuActions.Download }] : []), + ...(data.type === "movie" + ? [ + { + title: ContextMenuActions.Download, + onPress: () => { + router.push({ + pathname: "/videoPlayer", + params: { data: JSON.stringify(data), download: "true" }, + }); + }, + }, + ] + : []), ...(hasWatchHistoryItem(data) - ? [{ title: ContextMenuActions.RemoveWatchHistoryItem }] + ? [ + { + title: ContextMenuActions.RemoveWatchHistoryItem, + onPress: () => { + removeFromWatchHistory(data); + showToast("Removed from Continue Watching", { + burntOptions: { preset: "done" }, + }); + }, + }, + ] : []), ]; - const onContextMenuPress = ( - e: NativeSyntheticEvent, - ) => { - if (e.nativeEvent.name === ContextMenuActions.Bookmark) { - addBookmark(data); - showToast("Added to bookmarks", { - burntOptions: { preset: "done" }, - }); - } else if (e.nativeEvent.name === ContextMenuActions.RemoveBookmark) { - removeBookmark(data); - showToast("Removed from bookmarks", { - burntOptions: { preset: "done" }, - }); - } else if (e.nativeEvent.name === ContextMenuActions.Download) { - router.push({ - pathname: "/videoPlayer", - params: { data: JSON.stringify(data), download: "true" }, - }); - } else if ( - e.nativeEvent.name === ContextMenuActions.RemoveWatchHistoryItem - ) { - removeFromWatchHistory(data); - showToast("Removed from Continue Watching", { - burntOptions: { preset: "done" }, - }); - } - }; - return ( {}} + onLongPress={handleLongPress} style={{ width: "100%" }} > - - - - - + + + {title} @@ -147,6 +233,11 @@ export default function Item({ data }: { data: ItemData }) { + setMenuOpen(false)} + /> ); } diff --git a/bun.lockb b/bun.lockb index 04f3e9f4fe8245b91a0ab950820b88fe9df7c8ad..0b17cc330910b273a811b02d1654bc56e9b86fe5 100755 GIT binary patch delta 127832 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 yHKaSaN@?(huLU1f@;ly*i~I2=XX@j zc8jY_Tg!?E1^}pA^hc9iPtBW<1#_X}? z#;3Na{kcwWMeH4$d;W--hRp+<3QkU=*m-DU9_{9b3`rVhu9FOzmbBTXbCb2acdk7D z#pE_0aO)`?55qISIir)dk+q-JPpI|_;CT6i$j>}lJ|FnDrDyZO;Dt6yg<9;+x{(HB z30{q<_R5kc0hv7%goh!|COLOc@_4vdk1gtJhKr^C00@`{03KC|S7|Q>IlbHi0JZTs zA0@nyTswc+Q!9^-!J?|**41=~yHEt*Lazt|5H`lq5|OpNRBeH-yY}4{+OR+u3I+ad zfzB^*bb{PdnP%Cf#iz1KH(6w`f9Q)~A4Hrx${Vq8WrT6hKrZpY#$3kUD|lttLUhrW zHZR1OvbO8I&RRuoH(9yJQ5olWv!9T#oc!ifgbE0O$ zGiHD+!-4{jc={Vv4Os{E7(ztzTr_*B!D7t8b;@fGrWbKKmw*TH5~ElBe>?qV;qS~n zSY2@~yV^2dI&XvPihUl1u%l%fcx#%877STBI|3sS1yf-udn&g?XJyDbF2!p#5tnko zOqF&3T14?Z5tPHp5v`L2SAPgv^owxj#;)%^%p@QwFyL*PN>_$69Cc^d^ly-<@Qxstj7u?Xv2` zZmZgyd(;|2Ay^TPQXN`}wh^im`?_KpdEM=!_PD?Ev;CB(s`-ytm5+>7Wh|l95<)sD zsy$wTafAd875o{Fr1+_QL|U_4tN_L0CBu0!`P){odK_hz>r5H;D9GDa9tgd2oWXz8 z^aZa+?MM?803Vc>NJ~G)6sZ<#%?zhp_$(RgOW_ICqS3qpaHs7Y-xgTN77SlT$~F5n zr@2LqYd5)yetasx&Z<>IFY;RjRlt7ADqT0j1k5OVsJXrD$JDLYbQIv>U2-&j5V@^J z<8>&!C}KQ~SL+%gM!g(A1uWPrHRqbx^zlFU zQ-wziee6y%Be0oR@YS#Ih@*PHNIZF)q;d`(rnblYKqagjp)Lk_VA-PJ=qA>9Micp{Y+hpr)Niz`)GGhxy9z`3s z0B_|5d{<(OIw`j%r=@ibA>TRdG_n;1b)`e?OObogKm$tO3hw;pZ}zk~0qc?3^m_ul z?yD5GP3M2(>01-<&oZt5_S)QJ5;Mnh?CwJGL-md{Xs0e*t)A)TPF+(?ODeky z?dd4EuD*<3Wen&kO8z)+7aZYnSLINr4?R(*R>dj22Uig}Qedm;s^oRUBD9N)jwn%C z6-0ld1;cs(*n&!f3p^R(`=ljjhOr+C=Gj9&$iG6iV1w@-GAYZ%nVOAsfeYnY8EG^S zDMc*_Xv{u)OEEXZs9b%$qh$pI<|P4kCh5wX8crswJuHPzw4kuwmnQDP{<*4XNSH5q z@9>xfU($nHcQ6l4HDt9HXVEgrkaC0zljrZy9hp-lyOZZR&|}z5abiCvSJwr`@rRnX zFsJa%q2PTO>q_z*3^!mK;5a-#F(|)PnR{;#6*i@6o+Y14fRibH^l87&mG10=P>YmI zzwiG>{5E3hS6=If_>pwT_Vq9V54XtYl$Jt zaZA)?jm+d%gUUP_iE$=WHL`Ex&*^fZ>oTEbO*gCd*D(7m|5(mHNvDt$xc5ycJ_Ra! z1$8MG5x6Ms&a9U(Kd#>N;B`{krjH{KOWGQKcFrpn%d6~s7yLuGgCct z+Nuq$JdWmMo~lOWpJpByG87L#)j86bV-S6r3ar^mPmX1Sg(;m^^{UciGxwwB`U1T` z=OzMbfBlV$oX{;&d9RX`ewy->_avBX0R^8#kK3r+X`Pqk$>TJWf4W8+PwGl*Kj^6H zDV=jhCbJuTIH{|J4aX{{bS`>Relyvg(v>m6X8P6DQ0$RZ=k5#d+#i0xfw$_F`Aett zQ(1H&kf~*AEu-hm+0AmS|0R)rlyVrN7l3&C6Cvw{{;nk_Oc?+jvH`}BvTGQ%tU`sXWna3rYGGxQ)Q0|ho zY1(->rK+mR^v;yjZPE=YGh1OO1zY>;Gum|^Zuwms+x9nO{GCig zm2|p@QD!A7nVHnYf&bEOW@=`pgc_B~4$q7#D=^m|65Z7he*jEMMTBMmJxK+@vrt58 z{#DQFE%VS69x@f)l<6)z`#&aR^{YT%Y40pMRhm&vX=Xhy^Xk>)86#iG7)_1ot$W$- z=on$1G*kL{94-G%Cne#BSyLoa4Q3CQnZf?^P=L&wH;GtgYN~;$7Bdel^VDfSJfn%% zq0{BhCdHMBNu*Jc8a*HznGx1OisGBQN76JAMsKJfcst(kT$B}1qWCYUnyf&E`p=BI zI?9k)Evr)qnbiLeme_PQK-o?)1um3!3&O1qXZ+{ci%gVMBJt$^bow6aNj<@Ac*O$yB{sQy{EtmNW9IZ@F@QiD<+ zW+)B8I3&a{GYkBSBcQa~KR7{kq7+q@j=;aMfON*jyq5vVW7lsx3>@Km-z>)e!-Ppz zF)5VH43SA&m{jr))0U+jQO&67&#X)`D|!>t2~8HJ7+0edW@c=ZEN5m<#Wf02ogPwW zcg$1gZ!(zwJw@u!)Bnj#WkS$IE;&U$A7y^_G2^30V^@bEN@6nT|AR^V7c-Vw`D7L$ zMU#K2?M9dXMBG8`Ty}qgNWnE)`2;eVMnCf-p0?hAlfIk=JQZ%;_M7Inj2}_Kh1NWU zdm5&a&wm+w2UkoT))bg z>*dbd;;-(!$Z6-i7l1tPAWCQO3iSCo#wQL1x)|yK+zy?zJ37m?Vbx_E|5ke|w$%9r z0w?Y1+zZrFXL`QAz?epp-%EtmW_**2%5UEyF4hU2sJp^x7ae`)1#UR9KcpJ&QbU)r1Qg3`vou@ipYET+0gVuZHEJf{a&n=1q{cp zJXNdmFIxOc=Vn-Dp%G0NoBTTI^RR2@%uOp~w$QUzz)5ywi8Z^Z?PqwcDpt#Ld;Eu8 zvyi}u{zTxS&2AOfgCq#G$O;pnVBLQ{U?52@gq{dFE_OH&15hVc zC7L?X%xipA^b=xSNTnAXa_K~~D_a+y<0Nslpb`V*^B97z13rPSiil!}CRx!UQ@_k- z`2T&V)@MXo@ai6eP4_LIArliR{j)&!GajZQNIN>B(pStrLg-50L>y=%n!MrI=_$J)zmI`S%y4Pbb3}YRuuGA=b#xy z;a_#7>Ha}oA?+F)y7pDqP5Y}2RsN=PHa@}kd3XbUWmuzIRv~Axn^FPccer>KA8aV{ z8)9wN_&QB~Kv@0s^3R!nL>^}9NZE9wL*Iaf7hV6xYGa2*1;NMK(^r%sqUe-EA7=b#BisgbtHo&tipimOHrhLCM3g+JVBPj3XV-5a@D-^J zNMlYxl8zP>zX(W!(MeLgX~_bS#TULE3&;SF2yE^}8cUpUtwN0~F|xAM(^B6Zr;{%8 z+dO(=srS<+IFW~yK2&?yiTYWg(ZI)0#6{c2nGRa%OXXhUEa%-+Y)&3RvX3)G z=EM+H@{roL;Zr(5)7Q`%7KBHeVS z8NqmVFE}5g&!Qd@ANWM5-14!9`hf07<%WPp1U$VSEPG6DeM3&Z0{wgqWwC+JV)gW6 z#N7@B^!_}BVg_+!o;T(x&>94O?MY3n!Sk1Cxi#o^37@cM7VVttQ*Gz>QS}93v8pni zHKeE3=)xou&GMjyp9)iC9=&tm>cSdvICV#k^Bdgqw49BqoZ1CqB%y>GeMm8d14{hO zn=?vGt{0(X)aB!wZE%1@9Ip|FIQ$GBi^%47554J~Iy81WDq*J?N;5#Fu2$qf|GDK4 z>hhW43f4t6BC~(syZcGodW3uyi6gxA;oXF$<5-dONKC0&*iOF9KZ@;S-X8V0a3UMd z*bSkQ`JfC`%9q+86<|(OAyVgxgsSh;CSA0t#mU|Vf+|5-DdGT?ugtaK?0%K`B(rVA z#1sd!^}y{fqaTOHxbG zLDV%oQ>~A_{O#(n0hfB1A@0x%Ml8#;3!#`_AgiJz8b7io#xb&QTX~pAl)SD^RSTf; z(X(YZ;D+CUJy&|TYX!Rq2yA&5z~FIR13zT;gQfr-=C`a;9Rjtr5CK^p9TH7spC8eL?s5u-;Cq=Lft&yw$;mPcLS{GA%|5#! z%X2pp1ANM&45*xI^s$e97SFk^)x7tj6bF4j?Vshy+fm=mc-UJb&iV(Pnq2)aL$PGm zchba|m{=JQV;UgYG_ILqKdQF<;|gY(muzl$0svOw<3FtZty!S~zX1T}ZdhFi3*$ne zPI_0v7eMj8uIuN^6RX&5=42T*YJNTz))dQ{TPbi4>K}%;0J_9Ky3)$pP-gXUha-FR zUNgFs@cwkB6e{Cb40o}E+?@3;#+CqJC$qZ!42`qHUNDWik-#FthnhG;;)eRr3TJ3# zsPp~K`bEYVRl{*>zr1mUdM;F0!y#0%X`BLxTxfIV!a6-(8#Xbks(rXQKD5R~A7fkz z2v&zNf8H9oyW=I^JBBV}AAE}sRd)p!9a0c0eWSL-&$yXWt5JC4h6B^SwZGvspd8W8 zl1+=^DinFVRp5dgVQ&j{1m-Pvx7i%n8uY%#mmoHeb=Lc}EB3qPV2h6PD{N5Ge5kzv zV|?U89odTPUZu-Vs||WjV-_b?)mT3G(0v2UMh+@#1i_^@Kpl;G|9`PN`DvR`-`$X1 zPM;4l(8OH@p47k%aDKj$g_8aI54EUObAhB2JKxo5KpYT#=!V^UaihR@=lC1({Q_kv zwgI15W8jK3&Ry?k7!T#d%uwrC=gt?3zd;U|DL+Zv9pHx`9_O5qdqFfRuM_aZ8ra*S zj=x0X%1=N4dhhkDxdII#FZ2DWUqR@0ky_|y>>MEH)iBNftJ~f%g8&pOgMI<@vY@`3 zApsD~%~sbNXa=tehyeuC6AYPy26zDPd^8mgZIkk}&O`6Ze&#I?eK+ly@>IhU@53w5 zP*43MZTCvlu@Iu5iDp=QAP9xu_{?y1kPZ6dRzq1 z#mNo1H3pyRQUY#v&bMXU#fV+#UYUE5d=sWU5KJqI0^ifY^t>pBbuE|*6$6Vlsv!+i ze6y>=g9ENzRTbgq^sGUV#o)l600gsq|Apfpt#MCDR}f(0+chY4AxvY84?LaUYRvc1 zJMj9qBE>EQN;_)GIefaU%1Zm)%}r_NXjwy=(jdG#?ve2-LREe0_HOKPbvYcL75fRk--^hzQWI1zYC&$s!-!usdHxqzy zFuo?w@uiRxUn*8RH(-kD5LBL4j~bW$U*=W2z8)F@4tM zx5w|}qWC~5M_tf|9rZ1Pk*n#2nplZfM7YBjfmg1T`EJrAjbNTkY~%`?{cQm%H?L1A zl|Z(`AvCQlo?YsbM@2j%@q1ZFK@56l9(SH_dSPqOiCbw1o!FyLMu8sA$m>w*ChcuuB)Kz@s%xqlUAMa-y&=>r!XsG?U0eO3)i^}-O z2OHQwJ0)0E8NBXi)euHm3ne@%>tBQZY%nK2uNoD^w?!yLqi(=_jGOD)Uz=7ldEL2Z zsxH>Z-Bhb97Um8txNjP#Au;!W>S78Vtw0;0R-C1FF{7z|1-1=Y8opOVKS;_Caw>Gy z4OyK z+<8oSjNH_m?CoE8-h{0QO_S7^ewS!Fu(DT!ObFDw8W%T{QHi{cA6vhicHg8%5V}zf znWjPw+a!G^#HdSoNh-$nM_5zeau5!DA5|XGV3-;?T0=H=2E7-cMu0PB!>4BMG@&JJ zAYG`Scl+mjW+#$?h(63_1#z*OO1bUEr|njkSSK1w90%K-~eS`pm}a%IwkG4*L0 z>qAq0`Fp7LNK48Wgx?cdQHdaU35a&J#k;}KMrvozHqWZeYtb$U41~+F*t;o3GlSrb z#M0d$*!(Qc9jJKzYO<>gl5e5Xco^K;N}X{3U6I2sQRllW$wzzYzyba$Mk6Zg!?Z`* z(do+iMSSp}OBMKEr)hf?u;{!FbiRsyxZbs+hVO2Tp@!G6bSczH;@N0espSEew|!OZ zBJxw3VymLsuuin3DwOfy2)PP57}|c6#f}!7#IFojbOfbVm42UPHH36#0+JPcgngj} zT@&5;Y%@cGJK$MWLp*8`0Biy9uyFab)dw%FRsi6RO%b%B8mPH9g7#N~?{y}E^wr^7 z-i)Bg>Y%DuXW4YKbt4npN0nHEnk<$W`)*oYUB6p9qARry1}-vA<*RM!Lq~)4A-NBB z)9@$cVp?`5+Zy_iA|vqq)T(&zKCn|{j{$uw3?TzQbuN_RW~;I6q2bSx#2|<_yoNp| zFm{s+hc=GxbMVggomQ_A4LQzP2Ptexk95;b*adXiU74C7Hxs#_D-Agy;4 zzrX28^J`)_V4AOZH#WuhP}ti~ESTs#)wB3rK?uQtoqCgR2|tjX=gty#br!A2RGQupf7&AR&X8PTay z_281qkd9hYhQhzzS`RA(8K=}99zb8}f$4$=N>6lh2dkOwYH#a|{$L51=|nQ=Zf(nf z^sqiwScAx=0jT)Tl|?iU5$r7%d@c}u5!u|;04f;E+SCSM4b!7CRUW8u^b~YnJ%m;OBH*EdaCWcJrci9j@1mLmhib&$ z$=%pxe)j{T5J$nVgoY|4Ze7G-S`2X_pzJW?;o}CLtiPd+$&W#a2t$Vnj|8*88Dol~?-~f1|`6B~hbqU+QjuY7=jD2vp&(S~mpQy{H-< z#?TQOarsH^E{*aRezF0Vy|9QwdsuWGK{Fa+LIwbWJ@u}G_t%X~`83C#MKXY+)xGFQ zLw&3v)>3ZZ9^ck}T=KPVY zXKQh~ph{jIIFgo4#ImhSW6YR(F(d+<$8$5T*w?CU;&K6;2ZWKTIK$k=h<~d6nLeZF zYhz4v^eA!;$F9PZQ8Ms5aWsX7LtMnBcXx2cg>dNn<&?KMbp9WsrH_5Yc5CF-S;JZ9 z2XgXuAdca1`o9SkYS;ulRi~v*gozd>15%p+RT@H1n?P-}iYAYyP^SZjQop7k;HPM* z%a`Pco?~p2go8goT}-znt!#>hCk~~9P4zJfAFaZYBAY>GvO+Z=iwoj-*1(9bVCqeLoRcaL@w)5h&p`MzibfM~paBnQacwGZ=E%IQn8nK|608dH)30|DRZ3K-iG= z!FhX0i#N0S75?;U>PsjYzZcmJ|;F0Od$)L?aEj;NT-_sGKbylk!SqtV99p!RL`yR=Ae7A@-l7Pp~29k6rykzR8}-$7LTBet$Ij^c z79ecVL-fp@=L_a@Ed&S*iKE7Us*;vbAAT<|X6r#!g5iFeLkXSHNp4E-ER>8x7sOu+ z&6T6**`T*Wx!IFB_Q{$NqbNh28K611hIIqi28KHSgO+UZkYf4^sF2D?z>n@QI}~+EqdNr_8fgHXE|f1 zEeIQK#;kVQu!V`9JC>rz?x1f}DXBfr7$S?#pRlEhM!jJg4-sLPj^ zmF-d7s?~I>>*l&y?X=0d^~t&i#$idVdWfl+j)$S+3OO}>@*Ehlt#0aB^HhGH#^5LS zFy-MT}wHYr^5TO*my9d*u6qYehlF8{V!Eo zCm)D3mtb3guQXSAbLxU~SBl~vRr;JSZNpnYomEl>ryl)12P zy6^Kp%_ZvOPhSAAn_U^%{h*<$x9+6Bn(vSDy3Dc?7*O!l>adN^Hm-qm_ z+rPkNKA$h{V>&p0`sCB(Y+zS2T%Wa+(hpo33kcRT-Zd6=*pt&nYlfJM5=WHebqaaB zEMe#=bIGQ)l&?SPCMzs@?yJ1PKWE>EW{6bP@9lBjYWvK;b;Mlq+gfUix`q#`_06?= zwi{Tj_!2WjUYgk-zD1FB67^E~OW^Y62P@406;Q&6_360k+b{9^g3Toj*HIcH76Az6 zzCY#q@`W znIqU6Y@pe?(V~I+hK6t3q;80dspwWFs*Dw&*#P+XTI8Y}gP=p4s60Q!B|0wJ znTa%U5QZRcNy0)0E2}K80TCs_BHNQ@Ft(DUP-+u*(y|c3qMhqf-f#g0IWy}3N?7zZR-6~v#O3vJ zR^eENz`R~cBClak@_zt=&D_mDKR$P1T!FADW{4=1@cra{8wTbXJ18v9TrzJD zeMMd4kE6#@kw*{m$YDEBo#A>n7;U~KUEAm&#SF(x%F}S#ZU^b&a3C-QpQm9-YjX8K zx4h+b?aewm4kbLg--bHWKJ)b(c3n++U41aZn7w{qagZ910AonDF?FU`3wbDLnn#^f zYiXfhe`$k_A5+t+g5*JGvK$E)SlJ-;*!;lIh?`D64-uk*1|_NqR97 z{8Ij~)XU{N^nc#CWd4#`4Trnn#(<%MM?v80Qs(5If0nsu|)m`c(C!K^xWQT3JE&Nv;G;vTH|QcR6;LHJk5JkuP+>VB7?s;=b_ASS z-&HJ1WnF=apB8{$Mq_d^ziO8sp@h-c{W^41x>h^dUVFLbX80G?H||hT6-|()r#fF^ zXm?B_uJhSB1YPH@qPRR&V&#vspa>TyaP12)a#I}un$ zGp|2BF6Xp&i;e?rVs1ZCqK!#a3Al#WfM7jSwQh)R*XYnFK=ADn*hs5J;W3!?JJcHw zV>;-{?r$@nIop4^bsCu^CiX!~D`KFrDxZ>@*g3X!vmaJ;E_>@7l7a=ON6*kiKsNwz z`qrdhQwHWR4(+~$+kTpC$AM=SpOFGNTT?Ey*UQK53?V^8GcMRUZ8a8# zDfKMP7zmafG-Ic9 z79PVW{g%EtjU11Sq}&h#UR1;e>2B-~T;33);(!C98%r)w;&>2v{{`v%r^nqMyuIOB zJs|v%k^?ecMG30Mbd7#IY+$SO^@3)i?t=^T6?F~I0Ks!zrD5a{ zNG@=FwS6v<$0Vrl-PCjvCPL=3;FBhku(>qkA{|7TcF{$8ISI2PFaL8kuDd8576;qy z2S(29$LTw4+(7@`7pZC-AeCPtvw5_iFVeI)^kGGZk=%pD#?3hR70#4*GDaf{`STFL z-@l4H9S6*$uf>onG;1J(^1b8br!h16Z6C218yo|3PzxwbbpErUw*-l z#%-v^)yG%6W~iTfx{jDU;b0|>B=4ypRj=#Rg`YB2*MYW9)lbmOB)@5(t%-bpRFbB# z(bmhuo?Un0U=yIx<7xWRR#k6-Rp`}5y#x5O+;qLC zw$&|aG9Aix6qf+g`PCnkKDu>aH2Pp0?&EC%h!xY}e!K?+J1Acqwaqs~9PekJp_Ovq zmZ^Y;Rvz`;*lg2Vb4f{hHXXisLjV*;)w6}hjC@me*f=x50F(ZO%b5WlH@PcJOwdHhX! z8*_<{4$WY{?T)mke{>)9`{#@6@0bB<(klRH+uxx)GqFXazD2^{D9ZReh`6O&t#5HZ z$xOY`{tvXr3U2Glkibr(?=P^|+`dE4XM&ZbR>(cfN?v03@eYN|LNLaP%5DZ8Mej=S z?{>4=j^<@6@cOg76p*TP58A}o3;^sM9jw$Tx`oXt6-?%=qwaSpbPM<|>MnW3gI@6p z^4FKe?v^Uw|F&q#k9m5{U5bcDSllU1V^Ilhtw^I~D^N2bjS^8)doqol;@x-`<;=86 zT{ng$x0`klEpT`S#^pmAeT~OpY{+Lehy#`nos9~<_oOvyc6(%r(#8tiw3%6?ipq&zrtNl_ykN?|%1CigyWk>`N+pn(@^4fQOh7h?2pDnpn?(PA z?h)q=?e8(oz|EAwAkwp3GJgI6Tn#L{;*8%hp>5}btXtEir1t7j=i{*ZLHh++g-zz< zABM<=@K~XlBGdm&ORyt5f>Qbq+)OzKrUa!d!81|;TnyQ#UdcSXj07v0S!K!rQModi z=QGgifn4_mdue<0>HfiJ=G^SFoYWMkenbw4%qP)yen3mWUjLG&lFi_JR2IpPxL(Lcw zyW2k7Z^;W+xPmO}yMLoR$Xm>qZ_~t@7(}8<)0V*8;kSRw_mCHl2>ubtQ>G@e;W3fD zDAK>bbCY>(T>T0XI6h^{k8iMHC}-oLxohJ-xIk?&t17n z>^9A;jbhG3*d`l^#x%)+gc=*8E}O}&(+UL5KDRRhb+NI=Ym44bsM$&=ZKbf5tkk=k z5X(@=(NE~*N+8_l9_3yIZkqOls;<(P%C!isV(k%=iw3NM=jcG5M-h;@u}aQ)7E?gg zS0mHmJKab#R%Z)rN{LdrW@^58o2=_|s=WqzA@o9O`hM{kIHBOym4f@foTB zix00U5)l6vQxmE+P0^y)RBU4g4m5BhSmoRsnz0d!m0YxbBQ~V7T2wVE@Kzc)uPQIz zb}Dmswl=4`@~euY#06{-7WQhv+>rid&HC&swmbP0%9E-o%Zo?v;}P)(Wx-3;Y4awy zSdCGYeYdGi=f(EvHJaDdd@2HWop*Xm_cy`O90UmFxqD%n9>a#CsLGyQ_e<9*mA~-EF;rD+BN6*8Kr=S$b85G~rTLqY z)Rgp=zHSC}lv{WSmHFq) z?nowzf#ayjNej0?1=`RBemIk6D>ljsy;A|Iza5L6uIJZ8U?t8fLNzqr3XixnE!~QR z1#WNzyxickr*B*JO^vatZeBah_(4vwob<24fm7a5zXZ&83tE|gPUZuUrzGLnsYl{Q3@K@zJEu_yU|IG_p+%0@y7-hE7N_1c`*Gf zhkk59Z#Q${SWBEE@)6tpKmSEbcEaer z0z^UJ629p9^Xe-ue>Fqc(xshP#d&>_06U9Xw)1{8p@116OqEo48PzDC?Iau{G&SDm z6S?n#wwM73UIBh=zcAW=$=Ppai0vqGN6EwBqWX6=LyntEE`6dtsB3ruh$4WP9cyeA zJ@j1(GeiMez6*%?e3n9AO&8v6VBDE5W`O!A;eAoJk&QIJkNP>rT+;nBJxAllaS9@C z;Ns$Uz4xKOJVlAoi4%bRO9TdD{_5s|SCT6(=3w)E0_ zDwc#3;;pdeVkWBlbl2*(f38Qqg$T)2z^CnLdJ?=30B%S^g*Q3qP7(yOE4@oXk7uo@ z)E;D-;(2lpSVtzdWtGzk%gCZXpUUpVnsW6f8Abf1VeR!#W~Q@F;_wF)UdCP8QG3C= zDYOmXxa0ZEUVT_#&0JccW7k8T#{Lmi1nsHJt$w*E zbRVQuQp}MO_vsrOPXL_N>0z6}5how-d5n#8IJx+50dV7feQ1DtZmkF?L|`}a$$q*YGu{IbEOWhDB(8a2JMJ$5Axz?s+~jcpLOMP-RXTu)c$%B~@v~WO zstQ@uF3m#+QH~ugd|uRvo*sY`I7>9v``HwD!&aJB}eDfkdL2^1K5 z2&!9rO2dWj971R^2$fj;%0GNxV|%aaV|c!Ok&NnR(aMJ0k6_e8Y^Y2!=oSY^wj_hA zjM=&JX8Il8S>RiBaRG)6bp!;Az=&iplnZT5=5fe+xFbKEUsZG11v+;aKBU)S*!n}Z zRR1tC;N)+HJa$^4K0j4E-Ee?$(kakV?Q1&HH&hBJ0sx-eflEByYdjhczTi*C!!fb= z@d{Slr@+1wO5`oi@?aj0s-<9mQBR9gKn|RdOHBdVf;uk7?8#?BT>?_$BS-`kE-p6K zn#uEZKYT$93+dk{(zPQXw(yzxhW_S9u`^k9h0GiH=O+R-I#BXako$!L-8c#{pF!5g zAjL1SP-K(hRw%u2O0GitFl4@V1X7$p)fm9XNh?g_43{#W67S?hY!v}>1m}5Ep~E@7 zi+wu)urS%wJKZtwosaLP+C*nMc^pi?-m z643^?brz7?w=VRRpU9SfdI~i=8??fR`#NnYHqvJloO$VOTJSO0n3J#{bs9-!_VW1X z$R*d$^HC9u5mv@x5bCn)l{}^Hi1tZst<81E8t5YG8fO8532?_Sw91#*$hClAO$p9L z|JqZSBR6Vv3IbT1dY%Fy+R{=yjOlJttVX0q9Bb9R5Z{o2N~~lg+M(H@jR8xv#j!&R z>U$clLH0<5y3?xDAVPGU9Ae`0w8@inZFr9b;>-6BoO7p_fXEbLrWR+gBZ&j;XTZr4 zp;Ba9Rj=olTW7#Pl_~F8$Q{!DN}NTcaT?7$i*6fvX4(yfjJ#9XROZMj> z@IMzO@ADYzk34D49llnCqR&GpXA+&qT&$;ac*xJj_!?b`YK1uunzHJSujgM!Kq5Y+ z4cz2CBhH58Npjs%{>ap%`8Cro0YU}B>r(6mkfTX4T7oaoAOeV25smn>7^UJD<1gdo zqN3G?C#OPIo*#y)Xqr9c-;0ywMeG)QM0A%e$6v$8y?Rh|nG2_-F(-LjAUJgqr17QY z7lG~R5_AplfkR44w(jv_*NZ0pgG-`CSWFh)-dI<&Ew$d&$jz{@&k!*X7+MPpC>5Ivy}ShSb|^)8QXyyZjGtgX5qWi_=BfH}xrdjMf`F*uCUS1=E-cYJ+}ve)?XnMg8m!ci-eZN5{MzFq+(#sLAI zkEE#4j|-m8lPVAp%B^1+x_A|Sc>SwDKzzU5g`)ZIUbOHk`cUOCVd4|;nI76HJ`{Kj zjPsx8f3O{}?3%v4Hra>1qC)0XZ^otp@^btA3_@1NnvThpFg}-mXfYa~XC@b<{&5Y9 z67w4NAnF=_T*C?owT7ja-1?6TQb3p%q>GeCslLs_CDI09d0O=scz}Gh{x87ah7SLd z#VS%XWm-k%yDnCdZLW(|}RzSPZ<{!UH?@^cGT_fCrhfuXIeYpX>`OufVZ-NiR#d$DRHxZ)BxEc?T-C+Q5 z%bptr-qJf}D)FO5x3b>Z?Vfp#a+x-EJZZvhH0VpuZbR!=^OxE-`q9n0;irc3Rqa@N zv%*q0EdVg+4y^ci0J1}Sy;7+%(dVneinF)ODN`zIW^DjXxuahsKda`#tX=&sIIBsZ ztT(~7ZJ$2lHA_SXA^=c_rr*_<&b-X!tVh;2mB7ovwEs9Tr3T;z?wxofaGKt!X>&P508RwOmT=F|C@^77x zBm{fB?qN1mhzS9nsC#Hl#*-YZKofdFiT5z=dtOlEbUYCz`t2Uhm3^ux)r0AG1hqo% zBNzfA?79ywpVl4k+{}rJ9hz1fTIu@WPCfe!>)EeM zoi(I>G%{u@Yf=l1GEghn6=yzCL4MGge6G z=5R}&LbDvBkMv$u0Pp$nPLopBp5E?ru_)eoDX{6v^JQB*lq#GOgdcbt_x$5~N29vW zIolZTB7>z{v$na%?>gFQ4%K*|uUe?dTsi*n6#~v{hUfdba+kEIG0tsb2e%2Hp0JBn zJwSNfhW@XmC# z=@9NzVnOXITcI(z{8WxEn+hKM$=DT^kN2{*r6+Wlzdp~?5qM_;+1y+(>GS+^hC^}q zfyKt+>9ya_UaI2V@qy%r*Y0~3{ie6EoOJ4ue$S~#x&F>QsrB1jds@HEeXvY!?}C^c z{2N}7JUp$7P+d>!y4ES`$4F0Wnx3wA-Lu=%`l=?^3Qr09k_viS7pJ|2ts7fcC?tQ2 zDvjJh!`@BO delta 128840 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

c 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 From ecebde991c96abdc7924d3f0abe5daf4faa92b2d Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Tue, 7 May 2024 21:43:36 +0200 Subject: [PATCH 27/49] feat: finish action sheet context menu --- apps/expo/src/components/DownloadItem.tsx | 178 +++++++++--------- apps/expo/src/components/item/ContextMenu.tsx | 96 ++++++++++ apps/expo/src/components/item/item.tsx | 90 +-------- bun.lockb | Bin 730018 -> 761904 bytes 4 files changed, 185 insertions(+), 179 deletions(-) create mode 100644 apps/expo/src/components/item/ContextMenu.tsx diff --git a/apps/expo/src/components/DownloadItem.tsx b/apps/expo/src/components/DownloadItem.tsx index b6e3006..f62ef9a 100644 --- a/apps/expo/src/components/DownloadItem.tsx +++ b/apps/expo/src/components/DownloadItem.tsx @@ -1,13 +1,13 @@ -import type { NativeSyntheticEvent } from "react-native"; -import type { ContextMenuOnPressNativeEvent } from "react-native-context-menu-view"; -import React from "react"; -import ContextMenu from "react-native-context-menu-view"; +import React, { useState } from "react"; import { TouchableOpacity } from "react-native-gesture-handler"; +import * as Haptics from "expo-haptics"; import { useRouter } from "expo-router"; import { Image, Text, View, XStack, YStack } from "tamagui"; +import type { Action } from "./item/ContextMenu"; import type { Download, DownloadContent } from "~/hooks/useDownloadManager"; import { useDownloadManager } from "~/hooks/useDownloadManager"; +import { ContextMenuActions, SheetContextMenu } from "./item/ContextMenu"; import { mapSeasonAndEpisodeNumberToText } from "./player/utils"; import { MWProgress } from "./ui/Progress"; import { FlashingText } from "./ui/Text"; @@ -17,11 +17,6 @@ export interface DownloadItemProps { onPress: (localPath?: string) => void; } -enum ContextMenuActions { - Cancel = "Cancel", - Remove = "Remove", -} - const statusToTextMap: Record = { downloading: "Downloading", finished: "Finished", @@ -45,26 +40,28 @@ export function DownloadItem(props: DownloadItemProps) { const formattedFileSize = formatBytes(props.item.fileSize); const formattedDownloaded = formatBytes(props.item.downloaded); const { removeDownload, cancelDownload } = useDownloadManager(); + const [menuOpen, setMenuOpen] = useState(false); - const contextMenuActions = [ + const handleLongPress = () => { + void Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Heavy); + setMenuOpen(true); + }; + + const contextMenuActions: Action[] = [ { title: ContextMenuActions.Remove, + onPress: () => removeDownload(props.item), }, ...(props.item.status !== "finished" - ? [{ title: ContextMenuActions.Cancel }] + ? [ + { + title: ContextMenuActions.Cancel, + onPress: () => cancelDownload(props.item), + }, + ] : []), ]; - const onContextMenuPress = ( - e: NativeSyntheticEvent, - ) => { - if (e.nativeEvent.name === ContextMenuActions.Cancel) { - void cancelDownload(props.item); - } else if (e.nativeEvent.name === ContextMenuActions.Remove) { - removeDownload(props.item); - } - }; - const isInProgress = !( props.item.status === "finished" || props.item.status === "error" || @@ -72,80 +69,77 @@ export function DownloadItem(props: DownloadItemProps) { ); return ( - props.onPress(props.item.localPath)} + onLongPress={handleLongPress} + activeOpacity={0.7} > - props.onPress(props.item.localPath)} - onLongPress={() => { - return; - }} - activeOpacity={0.7} - > - - - - - - - - {props.item.media.type === "show" && - `${mapSeasonAndEpisodeNumberToText( - props.item.media.season.number, - props.item.media.episode.number, - )} `} - {props.item.media.title} - - {props.item.type !== "hls" && ( - - {props.item.speed.toFixed(2)} MB/s - - )} - - - - - + + + + + + + + {props.item.media.type === "show" && + `${mapSeasonAndEpisodeNumberToText( + props.item.media.season.number, + props.item.media.episode.number, + )} `} + {props.item.media.title} + + {props.item.type !== "hls" && ( - {props.item.type === "hls" - ? `${percentage.toFixed()}% - ${props.item.downloaded} of ${props.item.fileSize} segments` - : `${percentage.toFixed()}% - ${formattedDownloaded} of ${formattedFileSize}`} + {props.item.speed.toFixed(2)} MB/s - - - {statusToTextMap[props.item.status]} - - - - - - - + )} + + + + + + + {props.item.type === "hls" + ? `${percentage.toFixed()}% - ${props.item.downloaded} of ${props.item.fileSize} segments` + : `${percentage.toFixed()}% - ${formattedDownloaded} of ${formattedFileSize}`} + + + + {statusToTextMap[props.item.status]} + + + + + + setMenuOpen(false)} + /> + ); } diff --git a/apps/expo/src/components/item/ContextMenu.tsx b/apps/expo/src/components/item/ContextMenu.tsx new file mode 100644 index 0000000..5dea4c3 --- /dev/null +++ b/apps/expo/src/components/item/ContextMenu.tsx @@ -0,0 +1,96 @@ +import { MaterialCommunityIcons } from "@expo/vector-icons"; +import { Sheet, useTheme } from "tamagui"; + +import { Settings } from "../player/settings/Sheet"; + +export enum ContextMenuActions { + Bookmark = "Bookmark", + RemoveBookmark = "Remove Bookmark", + Download = "Download", + RemoveWatchHistoryItem = "Remove from Continue Watching", + Cancel = "Cancel", + Remove = "Remove", +} + +export interface Action { + title: ContextMenuActions; + onPress: () => void; +} + +interface SheetContextMenuProps { + isOpen: boolean; + actions: Action[]; + onClose: () => void; +} + +export const SheetContextMenu: React.FC = ({ + isOpen, + actions, + onClose, +}) => { + const theme = useTheme(); + + type IconName = + | "bookmark-outline" + | "bookmark-off-outline" + | "download-outline" + | "clock-remove-outline"; + + const iconMap: Record = { + [ContextMenuActions.Bookmark]: "bookmark-outline", + [ContextMenuActions.RemoveBookmark]: "bookmark-off-outline", + [ContextMenuActions.Download]: "download-outline", + [ContextMenuActions.RemoveWatchHistoryItem]: "clock-remove-outline", + }; + + return ( + + + + + {actions.map((action, index) => ( + + } + onPress={() => { + action.onPress(); + onClose(); + }} + /> + ))} + + + + + ); +}; diff --git a/apps/expo/src/components/item/item.tsx b/apps/expo/src/components/item/item.tsx index c2b2bfa..91c37a9 100644 --- a/apps/expo/src/components/item/item.tsx +++ b/apps/expo/src/components/item/item.tsx @@ -2,13 +2,13 @@ import { useCallback, useState } from "react"; import { Keyboard, TouchableOpacity } from "react-native"; import * as Haptics from "expo-haptics"; import { useRouter } from "expo-router"; -import { MaterialCommunityIcons } from "@expo/vector-icons"; -import { Image, Sheet, Text, useTheme, View } from "tamagui"; +import { Image, Text, View } from "tamagui"; +import type { Action } from "./ContextMenu"; import { useToast } from "~/hooks/useToast"; import { usePlayerStore } from "~/stores/player/store"; import { useBookmarkStore, useWatchHistoryStore } from "~/stores/settings"; -import { Settings } from "../player/settings/Sheet"; +import { ContextMenuActions, SheetContextMenu } from "./ContextMenu"; export interface ItemData { id: string; @@ -21,13 +21,6 @@ export interface ItemData { posterUrl: string; } -enum ContextMenuActions { - Bookmark = "Bookmark", - RemoveBookmark = "Remove Bookmark", - Download = "Download", - RemoveWatchHistoryItem = "Remove from Continue Watching", -} - function checkReleased(media: ItemData): boolean { const isReleasedYear = Boolean( media.year && media.year <= new Date().getFullYear(), @@ -41,83 +34,6 @@ function checkReleased(media: ItemData): boolean { return isReleased; } -interface Action { - title: string; - onPress: () => void; -} - -interface SheetContextMenuProps { - isOpen: boolean; - actions: Action[]; - onClose: () => void; -} - -const SheetContextMenu: React.FC = ({ - isOpen, - actions, - onClose, -}) => { - const theme = useTheme(); - - const iconMap: Record = { - [ContextMenuActions.Bookmark]: "bookmark-outline", - [ContextMenuActions.RemoveBookmark]: "bookmark-off-outline", - [ContextMenuActions.Download]: "download-outline", - [ContextMenuActions.RemoveWatchHistoryItem]: "clock-remove-outline", - }; - - return ( - - - - - {actions.map((action, index) => ( - - } - onPress={() => { - action.onPress(); - onClose(); - }} - /> - ))} - - - - - ); -}; export default function Item({ data }: { data: ItemData }) { const resetVideo = usePlayerStore((state) => state.resetVideo); diff --git a/bun.lockb b/bun.lockb index 0b17cc330910b273a811b02d1654bc56e9b86fe5..f2d0bcd53a04756648950e6fa1b4372f1835fed1 100755 GIT binary patch delta 186324 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 z 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 T7mxlai{UNt8$*+ig{=G^WNqy0 delta 166438 zcmbTe2YgjU6aRe+7w(}3r5Ow))CdMby@8O>dy%TN05{2n1ky;MLn0_5P4EC0DMA2I zkt(7fN)bdrDGE{oQ3DnPv7(|V{J*n%Zt&rK|DVtMd42Sm`R&=Aot>STE$8HJKhS91 zM~^RR)Zo|c-<~=e{`$d>eq9psRmW+A7u*apO?_N5QiE@P8_4wPIx zxJH?Fn@cKWvsEygRI8e60L$8Jc|NECO-@bqWm01w|4Dg5R#x`p44?&RhGi&BniZrx}TKIN6&yMl`6%uoZ3+ zl_nj!Ec`Q6I(VK@2)zjA-@KFjpD1t(Gl}KCfy%&qSqa`0Z=x?DB{?UV{%y8kZK{q? zX)qruBe?_>ffLpEZMNRkb@@gFi6Toa!QqeougL=g7|C<~&CB$86S5Zd<4f zP~@uqpJn*caloWat%`w$^J?nn2}$0Rap?O@sJ2v+H!EUvig!#Guqf0$Obd<%i@ZXx zl-B`^MJCr$W6g7e(K#=5Tw-o=CbO5CoR-XFX4j%)rY&zm3Le8hkJr%_NRMx#aCNYl zGCL_VJ!ec((@ELBv_zhasH;s|qn=hQ$f7Q&DDn%>#g~$^yqTHa$+qOQBwuE7cGfp_ z8NX;)#N3JZSD*vI`Qh40a-k@lmk7oBc{ZNQ9F9pzkN2iz*%E#6Ib%>D)taK!4YY|T zLg_niC^Q7x7Aoy`KCavU`eXB)0^PK-0Pw=z6O=BZQV*McAR<=-$S7?=cQX~iwuEEKg%rzPBE&7@c+DhFrv{a zsLb{E(OPi8`vdvGI~3coaxI- zPnqDewHl}uY7CXB2!l#}@<95;G@C7JknZp_?IcRt(}7sThdhabZWe6@mHvELIl0-% zgwfAEY&IM>FK)2S)(~2Ah}QH3v_5zLkZ2i5>P@t@7wOW;gL}|B=}wM&W8f-Ksb96D&DIzinWzW2&Znnv8dTc%&4m$xKXucJoPdfGZh(rQUpnZD z6TqVJ5wMKBKUfqDhcCd64vvIw0@s30fHsHb4uFvnG=zpj zofiG7i!R>^m61$=N`q<$Y62Y!#-sCELPe23+v_Q+2(AnMt+Qo0D7h`q%X3lG4;G8e z$+p>u+}ynJ6x5?2mI|UsPYc(FieLw{F7$jSJ@Vbqn&5>{5m=RW^`WD|GJy6_ssAuk zEcQK9Aoc#4qWf7qRY%iq%9}|1pJ=BWET%vNjkRbOXdUo*I*^g>fQq8?Ec&a}ZWUB4 z(gqp>y^Gh!N_{91n>QKCNb~knD9$?c8J!OfK+EJ(uuB+dwl6iq#y^?KshQr<4J!M#~p z!K;h4Z%lttuZHI-7hib=D$YFvDpUVsB^@24{=}5zG+&pcT9LC*8Q6zVQJ^(cGU<_J zmSxq9F_)>n?96mVA{!Jhrf#uZH)sfz5v3-lV%d0GWpEYnUB6z2pLF6xq1YcTq)*8y;`k7I#fnHKF60MUON~35O`(2E`J&sz?SdSY1#v^FH(galtkc9zZgitca^b0wxq5yPO+ zQpyF-hf2Gx)?B{2QP;l-6(90tW~OIG_$DoVRd+l#D`K)YHO0oMKS6Z*w=9WA?|^}v2;7&H~y0NUAl-nSY|1O-2B(~HnYPzkfuP^p*- zjfCD>q6K8Vqcsogh#uU~m}~8!xkq;EN^e35&%6y#akS-7G0#G%m|_3Bx;#FGq4Q7R zOz_}YAUxM(cG4vq1*whMNG`1t%Rtww~|+`Es(VWS?s~=RePUSa4e${ zM>@&q#7yn?YX!6P8Ku~Rk6YydPY#?N0v+$?xy)ztgVNq*%d2St=A!Kfp$=_Nc`k%*&y4T)RV0CCJM=MOV$_3%MXrt`-fWbrcg;T9Lv*@vIh9S4r?!Kbt(2T(3k8js@Db7AC!EJ2(zSs57y0zj9s3+}n@1Uu4 z{GCNx-q2I=D)bS`&sgO{f6$5?vPQN8K{AqwSVTsi?TwH3#;5r9p{)r1^QIoi6{z6# zKk5O6(Xq74^o>sE2$-8a{wF;r2hdmqZMEoj1WCnZP?@4HDHnyF1Iv`m`9%xPfXbW> zvIHkv&wE+4HB{s_wD45w3H}{gOX9x>Ml5g|S`nH66@jvg6$L({V^LrUl+e$c1(kZ) zP*J3sg>(PV&&zMcUt)S{j+}JQTF=+~trcEuQMPKy*~whlAa7!lH+v28 zWuQ&}(Q=*!=StX&g%Rgz{I6ci`+>#O-S6s=Mp;&5c#Xg2&-MsgqVzJFO zyGk?}@#7LlH)WfZA05 zb~W;OP%$-^5J_63p3CV7lDRMC)`}$hvb4g)m<%Ks%ZNqmVKJHG6vM78TNy0vZaa0{ zZzye7Vg6Dsj5N$iXv7AMg&>h_Dyep489l_XH`y6EX_FH; zvW=x&8V-TV2--s>I{t5q)7FRV%KKBH(vFM&F+P0Y)Wdq9?1+rz}&q3JP=Jr zbBr91BALFNtmM&?ZKW#f5g&z;*7GV=(IeSr)eo$GH!A4oSvd)r1chyXRlD-?)G0D7 zn{8M%-Enr3FHPk3weVKzRkS7QYgefl5SW#cGe#-~HjsfWcMJ_=3dZ=jAfCWI09fKX zaP9giSmyjs6p}ETl$z31y#B>U&Fc+nIv(oZX>Jb$o#IOQ@y!C{)7cW9T5(i51Q_bU&?(0h3xv=I+Tad}(7(h#+0tF`QQ9bK#zUF{A|LuJw24h@Aafr{@> zg-W^_1(jVy7pPdOF;slL4piNV{28u&_gko#%GubiwvL5h@zv{KnS#W0J;PU+NhuG! zD2PMBrYZY%A>^wgt{z_s>`6l!zL+t7ElmUZb7p(W9-N(fFL?lPh`CXeSsKPV!B%*^Yu`7j?G1uFoc#+wm-4atA%}Uqhu` ztBz_Mxp`yKGjKSY?M(_~qDptt4eb_XuM)uvucZB88Tcgxh-VD!tPOJvDp|1uR1CTc zDii%7^+b`!x@wnv0xYiiSU2sO%b?{YHmbr%!?IB6Ag8C+@N=ka8b62gy z;?7WUN!`KEj7UcM2~-q+$D*%7rK9;!$qLy}8Q@WTLORA* zWX5d=2ivVXp3KP^*%a`$EYruElf6_Fg|-eUw#0u|uDnF=7!|e&DO|G9?tPq2Oy6Lb zo}%hdWx)(>!NAo_z2W+Kh($MVViO`7J$NTGf0N!`W#s59+=Fpiq2jw4>uTn~E19(9 z1fN`fZbl)QvZW)nCG#x>$8gn~G(N>Ouic`9dCk)oE2923sAAp4C{F|ROIGP_UVd&HE@E} zA=hCtMYedbgww?Iv~iM223yYukCCN?d;yk@9=t{itc5LjF20eIBkPLI_FJ;XmJc+v zU86uWI|i)@^^Vg52Uzrd%4Le0q?nG#dby#Nyc>~vp#M$u;xZ5B`M@PfU`z3Psy28= z+8A|(@I6?>Ke(wXWA#&fr^V(07agXqf_YbM`v(QY$M%ocmiz)N3UDJU(cC=m*a=F%oXq41vCwuN zNC%lv5m+560t~21a|nH~HPzqGa8&NL%@#pROO!wV%olJ(z(0Tj8ft1LVc_$zL zO$Bkyc2E&Kn}(76xhbYo6{f_G#@ffeYP#CuxN%&D498U%)cb^I#dk zE3-6S3YCzV2o*)+p_R!8dFP(d0-m5ic3;z<)$|Nh1l63apUVkQOtl9rF1`gS&!cH4 z7E8_4SAhGT(-zqXl{8q3=Q6M|m_}kXAw7LuGHLAY9BZ#~6Gk3S8F6|Rv&;zOl7T)4V7YI7%g^=pbog31n9{E;*5p zQFzfLm#tSX{6qo>)AvukNu*TkijLe=R=v|8;}?A*L78R$8llZxmFGB-5A8 z1w>{Euyo9OC!d6KAkB5Aow&q>b$Y7zK_$p`L371a55D_L^^Q~T5MQB!2=ryi4l&Vo zcB6LggHTaq3sih@rB(i%g|n^a@m6^st2_!SdyG03F1L|Afh4LwU(pY~hKk_RP!YTj zDo(%2!b_kc;AyDTOM!~h4z`|mu%0)v@S{*^|1<-s0}UJqxJ65my~Oa7*k4Q-xHO)% z)k@&j&Oh)$i<@$B&WYGH9Z#;hT|3zeP>Iq^tK0xfy?fjA)C3N@flq_}-eUO*3dsP6 z=EBHGx>~d;R7MmGm2lm@Q)4GsEcHvi9??~(bmZBk6_^E;sj3T=5!ZiPm$xH|WQv!* zqvw38MSW1QWNt4QNl=ZU5=K=ld=~+tz;{sT_>_hBLPhf(P_f)AP_ckP$8t*i`z>w3 zTPy|QbZg(!_$E|3R2jYLINNAlo|`uZMmoxYiX}d>){xY69fk$_bo?gn*8+;5GSUH1 zNu2GVqDT*@jMQV%$Dm@NH3xP57c4pjDi$6Mtt4yE`yXgQPoRK|H13dIBfdltshAI~ z2c36VoAy_zjJWNGy59F-={WEWQi4@q?hYebHn(*L%VyzeMphTv1}b>RQ52B)Ukf86 z34)5oE05`s&IOCfx*gXEY6@6Jei|(G$6EL)s95g7_M_=Yw&dNRGPSKyM5ZJ=H8DPd z7a!dbiwNttyUbm)6CM*vY6W_6(yTCHyL?534Bxl(+QZ9m5 zK*cgSP#I|oRO-ooUcR^sgx_$=Wgt195&t5XH>4A!qZ^;;k@8_;cD66k=F8$0G%w25 zp3w@(#|}OMw>tu4#KC8E2Qgsj*!8)kSb9QsCf@)A_BVlj%{HD(=Br12nQHgRTs?<3 zPiRw(J+Hm^Dp(Xd0~JjJC-Vp24;Ng}a~XIq{4Vt+npQz&pD~R=iK6jP>3CX!?q>+J zHdwx4Qr^FzP&Zr*l?Jo%J`ohSB1i#?(~PueZ>Yq1Td4R%PSkq*y_SG1h9U+Cu* zcrJ2XS9QAtsEYp+R>6R;^+b$?`jZ0@1KDR7RA@C5bo1X7f(+MaYWgvC1Q$ zqTm<=N+OznL)WkTgPwc!X&zQJz~U1#tmosPBEK(GqM{izMB;y-Wpdw-xx!Cx1aQ((r=;h|*A%u>e`vhOqBEglu^ZGAOLCPnIg1;yLa>y}fmhlE zKG_Mp^lr#=wf;*-Jhx@0r=;-7k8Rc+oiN5gC8zhWa1*E~_Apeu`=`IP1x`Uj!8@Q* zz7Q(jodT@|?G3F7ZDi3PsMP!AFXCSweEyg2=v}DH4d-9c$94h@CH&?>WiIzyBVsvC zmgh3E2{?&LM85GUuQ?pb0xv-&A#J9<%=vHZVkHq}C67^WRK-FWyxv*=`(xT^mQhjW zB=9ADR(4{9+=V?&ximcPa+t#&uA3Y9-a~!=Mfv~V?>?F%R}`F(!xaJ_`=%KV70%C; zcBnN+%@+gw0WAIJK&hXbmjt8ofc0P?ROY-RRKjs}SuH5w8%?e98c>Or59vtijgx~F zAD#{ai-kHu#i?Je;85Y41C{b2P;r4N5m{VG1va6NShzG)Mm`6@k`JPx;tQ3ak}m=YuOV2bK5%|e(IwFmi1%97)Vy9FI)sL&HEzlM!BW%D)M+U+rZp3IBz6%yP@mxtTIz|z6TP*EW8DPZ7Y zDggmvO1YKbq;CtHQQL&-`b8lQ6@`IMcq&;6zZ|Cfne5G(LL#<>*2>idRcq;ne0`(t zc>*_RO)#lw8o0rfk&vvsumlGc<3{tTpl zE~ixS-fmDa*>wvCM)WhgPH`&hLe17RT-W=izILvoV6o6C>V-jb9@Cb|_GYLP!P}He zf*aYup{OrSUDRhj+E80KcMBCnKww|L0xToi_qeu9=?EQu{9R45e6YEdaxwiZs2aI- zvPuKX-tsc_C9y37OZde>Wq|XLD^ZdKm2xkXC)QhBqrKut>hrLRa618;AimLuEfR zEJ~+^&K7M1m9+2z&t(rASVRMhZ$RDyi*u8_!0P*ci)A(1Z|wQQ(F;3=S9z$`l11NL z_~Ma8hnG0ckI(bBZ`$zMYjZ1{J6AHp%;>v2sQ>flw$>Qjqjb!%u`|{b{Cw9u+CDtD z=JNO&Ux#m9RON21&il8WSy*<{>C>%CtV#;s^y=@wzqupjg&S8kdGda|6Eo&?;+ZEHwNN;oGdcPHW&C~s=1?|5x`rQfp*1Yjj;gYxe&Hgsh zyoUI7&Cc~%^U7ZyGrWIjwTdgQSFQHt*)eZFm%qDn`kajeo0vP!6&!uZ9Mvu|XyGhd z^P=G6M>f25`14)oU+88oYS+$mw~jI|veHwqT?vdk%D&0suymIh&{XRC`Z9>fh z{j0gV{qWZM;n!bnXI|(Z8XB>6X1TEF4{8QX7MRSZ`meIx{ps)HFAj(@-R(2Xy!MgR z#%~|_`2l=55B8Y(AqHbVk6DI1H#>t8hllK+JVDqJ0}hJ*->p@ z|KvlCyJr?PuHcTZxp?RGy$fz#{P@n|SIwkW-MUqN7^C#4Qv*7 zz94;7C;Q}`i=J#}cfWpnO3LpGdyX_uKUFQLvEB5K_}F{v(1#m-`S-{xY38-3!rd4D zd?E4OwO{{Y1`UpM?_M;s>a#!2`NC{BI6Nre7azO7uh*l`@lVVo3UBB9^~|6fFYcOF zGHzwed}J&dd^)`F`)}u5ZnSjyA8E^GRw})*_QH$vD*Uy6v%^v0$IqYq;EN;Xldsyl zy<&gQOd1jyG=0dBkWshHM>7VU8vNZ;nYrffo>At3HsR*-Ai)1n?-QpkKK7g$%2a>Yz0>^gDFC)E{xv(@HY0~t zGbeS3+}UlY+wNYN|K^~7r=J>R_8sU8eVOJDD=w(VT`R%s7a?%93k;NcgX-71`~_h{}7|GvnqPY(~cJLs=S@7aqp z;`ZeC`R3~?i)-yFymzkg0LQhLV!MwRb8Xi8633rAHu#^~wcGqwCh2x^^G&DM?Y`9S zsdIn5-EL>(s0;S+16L-*tZvok>=V1}Pfv?!`P!O0(Srvkq;!%P1fRH1Fm zi|-XQH$&sY-H*k_Kkq5;iZi>#hbj#lcrKNEtJIy5P1efJ$|{p+Hmj5<3IFrKi%;2^_icJdvo~6Cu-KI^})G$X1Byi?x{P5znDAq z^B>IviPgdfT`X$&P|coG_BBtRVC&p*d2mGZvWBm<|El%qO<89B5n~TN6#e_iUN3%Z zj!FtO-M%2RZ`*M9!V9BvL(=Y@HG|rQn$>)LqkcMYdDg~|8;hRU^6A8z=O1ZtY{rWj zJKaSSdW_DhI&_%#$MqAgzt`~7swbv5>iqI!JwI7;eBg-budiRa%ADlOa9>O)zj@Zl z__xe!zNl`4HxK_cET#Y10SV>LHC#2~ol>h7e^Ptax9k3G+wa)!B>zi4Y>UaSv};g! z$fN(}F5dLrvAVs()*fzq`C(hF@1LEw@AR@V7jG>c{C1h~=IxH5?LL3>z~upN9o~@s z(lggK)HqPIchdEK7rOl0cJaV7liIg9d*PTj&QwQtcO=Yvz1s@3~0?2AP!YBy?g$aih-fG4{hj;Ycov(Hnt zEA3mo=KQBWnC{Mz;k9$SJoeiUp_R6mDM+34?AvED@4oT(xhwPQw(K>fVWTxaHR?RM z!-~BJJC`%tbq)_|*niKOzV)VbFIVOE(4XgjHQh|=JlG5$y*;SQn+IJpSM2iEw{Pe& zWmoL4=7rINt35HX!I~DIZo6A)(v0eL)_%3>Nm{ON!8p9J64+T=!}(<&1*@a?m!wg-O1a->zB(rGQ8p3*%#;3yBj-fj`7IR z#YW+?+ut}-xBHl{{8z^x{l59;ob6xyU>;3A?H=;ljgLCze=^ZrJ~rI_XQ^WoM(x@> z*gP;c(!C{r+*2P9iv7j>dF<_=X9l+%UGeA_Bi7W-d%WSZzIZbzCd%v^!*VgMTeX*G z@9p^7zvVaXpP9JxjTJqg+EK2?*Uv9_J;KcE9cs2qnd6R|zNy8K8D(pkM^oCF;XMwR z?$k-{Kv0@_se^+mm+w9_A?bYU8qKLZf}V8+B+J{#mhuzt$l<=v=ek zua(;w?i&}gWX||Amp?MUqHyk@$GSwEKJ?@7Pb?|l?sAXzW@N`nq3d2uofA>6qObY* zj_W>Md@O8PyQ>X9*pfM8(N`_s@q8Fr+I+2Js5`vLE2pYo%lXs1)_IOOsmmPG-8IVW z)^%`DO~;iH{eJv0W61s=U8}yh8E(GTHPk%awOX}Te)b&83P0nE`Ly|SO*%g`mbJCv zmfNvUnBm<=nTxv5F|YLq-&w8aTD$x2wnzJnfAqPJ%-y|0-6P8Gn{=Y^T8!!LJ*ryQ zpK3Szd{m#I_tv((zG`&F!efn2`gdeMZZi+`u4V@HK@M|qA%?8~W8I_XFYaVBGB(s4 z%ztzGOsW<=cirWtVSgQ5(f89|hn`$kI-x;!mHB^`8S-McYC)Mj_Wbzxg@`vi2j{)L ztYgtB^XDfb&B(r?K{dBbST?HpKWXp0Uhmq1Pe1s?Z1=>R$QNGfn)GY+O^vrcV>Ito z&p-Y~?144)XYBc*ckf@8FX@yX(J1DpTi(YDUu^2V_4$nnEiRZD-NJ*i-dXr`tRpOT za6yZ>UW0Cjnm?ys@E>$J+nGU=+{W`Ro2@0Ax)Ns5n;zpFs2S)XGymzR5+!Z6cIN7d z(XKSO)@EUDwDB68R48p0P4*aXGi4*KnEl?t!lS{0*dULd~6YdH991A)s`G@k{@n#kO&|qv8!bZJ4Pb;hW837VmF4H@e zen9O&CCspi9^-G2=ulGi+L9BF)<|^71j(E^m3~J-VpX?7B{|yk06A0-eL-Cm!ep*x zpeQqBQnYaruBmDx@(gYx#ZO9!1V^7>GdM5S^%8|0%+=Y^j&Fj^6?`Ed#W)P< z{J~K)JIh6h7z2l!=`kMS=1e@oZF)b7asxU7g3Yj59%C6uBvv$W1LKs1^t1k<+B(d{ zB#-08P;*6Ytm9m$S&$oRl;=<^F;KxQy6iEAgSvq#D{t5kX09+}9p8tU1!k<#fO|dh z1gCOd6C^eu`WASMYoH+@<(!V5wawuCSXV9=f>CB%cC_=I+BW~C*7g{qWgY!jot(mcxA4~bq_RJ%3Z$4_=Lt^*wfyo1RP$ zQmj#_q4qk5QfLsUjcU0VE=|?H*U((CJ=Pe8Zw{slocLvr&R#<$;z=A@@A~7B5|zc&5tw--i&qZi!_6G#yZ+IF<1CwT`x8vDkbt9mz$VFcg7mg z%uN?WG6gvv*VCYmYCau@o0vnH1SH<4kfVBYbH%(^ z$DrnB!Q5Ea5|VIBe@Gde;y7$8GwxQjGpL2lU%j0@#?iBdIrLVnRESui2i*lZP+@_QYQC^tx)(xnn!M`E)$B^lE}q997(WFLSe=t`Smc^)H}YHdL} zJtu;s+Y&0Jt^?g4*modtLQ*%YNi)VTiBk7B9h9Pwr2OANF(87RED}lPrD0Rq_ zj%`B_cEq9w+nB+#W1V-vE5Sx1T8LW88qNtZ7`~G|#(4^67>uh1diC>%bh1Y~(_@)k zDLYPCC*{vOFnN@4##87h>nWL^Wo#)(Y>fX;^f*51Wv+ND)+o{Yzv0vuq!u67Lby>% zT-`oIgYxg`eawPgv5xb7%;2|UjlN_g84F7rHkb>N{D{h+10Y$PNEt*>zrJShJF&*L zzIs;a{~eFx*S==KJF$*V{mkIqv5tBD%%PC)`^!{A>|uhC;ZTv)XWcr90xD9IhuDQ<1{wfW)&|ME7`%k3hWgv9@*% z;sORLn(A?l28}RRZ;y5zhD$Nywne)lN6>}hw!&p7t_A~7QT{O(E?bq|g&V85q){S8 z+TMnnt>n${+H6yF8C;s;M#tN1Ny0g=#^c+)@#B_grp0Z7qba5zn#id7@US2ev#4J8 z`E0hKN=7xNoAiywv*D(wr?xQxJu~3+0&xy5Tb>#{lC6`lL6R8 zmv07*^@lvgf`ZSfUXA&1>BTkffRw66`Zzr$rTqC_>>gJkaE?D@AS)@E;OXK9--1Rf zrF-GHbCuHP;FJkmu}o^Fdb+)st3_`~{% z!eLQMa5&DI=8ua*PdLnW0uEbh7fFGeq(prUr_)NONy@0Zqh0U9W%xt-AilxmfC*N? z>BjCU0q>g)H$jQ1HI;cV7um8D5)ki6> zvGU@CuPSufNWi;Z$+Ov3DP`N^05AIsF>ndE_f*-+nf$Sg^6j>>aQqQO>^Nq!2SNz) z4?K>KpD|a=h&7C7^&&*zk_o$lBK;vHQF|h+&S2hK9>*Kcn!yueje8Wzx?%TwPuQdE zv&|J0PMoc4sx6x1joD`Kq*%wT+2+tmvBrSsbnM&wMKjnMgE~ob$%>9M&zVCf$GXeR z(HazQc%0qmpz%nSt>@;L!Lwo=d*+x!SH&8&p4S!QlayhtGFc!V1$WzOp_V&XB(!*G*S;$Jj|W#^J8QQ7GUmqtkM0iqx)s5(qs%Y-3+;7Tk<=+*xi0{}}6P`Vt2lEo=qsQ=0t+_6fy0 zd#pg)aX87#FqdE)S5}w>OJj}7E4AYjCQCf7I8ayJcmu4KaqRaZ=u^O@MXu3xGDShJ7DIoC_hA`3Nd~FRQO=mg^D1N+HK*_ZMH?)wVJs`(P_K-zsdO&HbJ1;Ry+ z3`rnSU%U23keG}fFxeL%>0L#uJ7&E$U~$qg##5qe%YNi_kT!$_(09epMAw=d0=-CB z#DOe*Fqt2u1CPy)>x3XPBq!P^_e#KcWJ9Ans3W?l`EacRHI+Lc*I6l-vy4%7qn65L z5l-F@6zgC876}@zjk^AFy{gZEc7OhRgd<36FPpQqAkp3?Coba$kO$=S=kKNFYx*(( z8)22vAZ=S2%Q}#rA=!>!v5?->wR&AY({ni)WH}0Ma|EPPgSwWfyh-b>+dTo2nbo`S zk3oGv`q?9IXltnxxbXx?ySU`c=Rl$hJM;@tZtIb9XV*OtXKgOcT5Z<(N~hVWAQ_Cl zM|uY&Dwa~&tHzc<4wMab-}?ylXM*ml|2e1w?bJY>RkxCMCgJD)t$NPbuYS$d*ng2T zWE-o+WGW@?VA-ZEhM(YZeFhq-PC>3FZ%Q&`?RPDP%k&raU@mvc`YqeX@jD5oDFpE6 z6zL5_&$m=Hxh;U3rjuc-UDTUOy)C=ssU%2O&9?(hmcq^Sub#@{TlF1%k}fOh#+U&T zOBl)>-UG?Pj9qd(?w>*8zQy;Ht_HisY2}7>6kH>oac9SA=2IyL>EJ50C*W{lghX4A zOfta*8V{2GxKqmZxVM4&g8c1olvLL#?t7GUk`jHvl55!CH4C^5o%OCbw*A(-?#=O z7O?xhn+XW(83!L~I^Petqy%s)P^{R(JyAH?6x+$zMTxkpzB#>VwL`O2QKj}-l>k2 zZ>2xhuJMqX;hrF6LN(myKr&pHKWw2rsst#~j9U=x`UQ@gMf|48Ct6KCv*SVisjtx? zkj$lyslPztE!vMgC$vT-{N5e*s8S&Di2GijPl@zQBypO*bb|Sw$4pf?sohGiIHN(L ztjk~Y1L_GJ-E2Z4iK<%Wfz^$w6JxYifUivsr%S^1EMKb&p)y=}G z(XMznu19$n@-mz#sjr()gCs27YUf?)GcA>@&Gq)c&(yv4dT!$G)LG3}>ipJUhUdDB^5ZnLfS-e1EVPvv>c;7-Sb41{8p!o>F&V}^~b$NCj5r@dcz)D;u|qfTqwqd>m_QmaeRx&RcP_$ zw>p54L$2-iosL8h&Nd&^4J}x-S=`Qo`YWBtl1AfeIt=uJo(y_YJ(GmBA7okMUs%hC zJ-=rcNL%l#$>)}`43D-p{@(-+*Wkmg? zcfs5%EGD#`2M!T4`HO(tQ8$ie-Wbj<8zSw^U5$S))-)M*pg*JzP6VfY*>w-rQYGdORho|^xPiK-o3PeM>;G9?)u&k1 zDV$~fo3Neyg*A|WJD{Gi0#Q)9vIi^F64OmPrndxD!CKl^73-;u$NT z9QG{4VT(79MR#zsEx1|qKe}Vqw8l-@t|C0XQyvS4A5` z?_v{GL;BhP8mjdujB*2-t4FdhG`*)^Kd}MY<}tnkiTWxZ7>{yeA1lq4hB^2tC_DRM zR(RuWI5kGU*NvxEwcFWP$ZPI_a4n?1zla-N<9T3ffoA^KQ6&T@6a5P(QrY^_-00%4 zpc!^6$_)_R$Ywj)Qr>^Wmi`Zrh*KLrBhraFx+aFs4j{j`Hd{lG9tD%&xa;(<*vY%< zZYAvM+^2KRGEg(xbGBpL$3P-YZ%4|x>}oaV(6Kej4Uk7{BqDij29hm;zN`8Y)Dol< zUFDK`BnUy>0U(**lK!Gq408)mra<>zs+1m!M(sgLjJC)`U>DVgB=Pq_GLx#RtFl{W zp|G%x8%A3ShjA=$`wQM-j7KOPqB;$0gB=XJ`pw{S>XL63NSsF9MK~@R{({}Ks8iam zuXfF_=cC+!fl@{599qV%RuevNVWX8?#%>Oq9OKHTw5eJ6Q5!dmm|1UsE0opaWwBvG zx`O)fjMs#@9`~!DUZCQQmGPTZTN|KZIlE1E0JL4_aqcKbN3&x~P{>=QoM=Z(d4KSG z=sK^wHa`CKj@{$@xV+u0J}JgA^tH&@S#Hqzm=lQCq+>lOXM`>0*%A#GN>KP(iP6M!;9Vl05>`#z!iz zfzXMg_7&kMXV;qVaZIf0U$LK|pQ&oM^`n&I!Dk+$PBs0*Nu*Nlx<-RkB&#Fec93{6 zQ_hz5+u~<(dsOEUoLJUXBMmN+S{(h)dyJPs(kEN}E$q@kEy>=TWXcC?1C=tve)AX| zKr$SCK9~s--(n9u!Q(z{)x7UpC93P%Zly>kki@Tk|6|Mn%ATmHiiuMo2`=7(bSIUK zc$8kvI3{QnTnrD&sA?BMjX)TXlvyf7yOe$f-XCNQ2)~~RvJB6cGlf!9CB2XuS{|>s z`SNNgpV54Xas8BbKrY6e=W%>p!$0(hJ=R^jrq)>9R`|tn+*XN-H1{5m1hRIlMKgFF zsvS}-6Gm5%=w4pJ*6~cJzu+UjnL0-)`J1(&VVIUr0+v?+=|HiF6)luH-fK`#?|!~e9X{JQPfRc>1Won+h+I+ zBl7-@lJ%O-eU=uWZ95z|A%^oMAX?6+hFwOo1Yc=Z=VYkKU z(l=naen*&5rBQJ};Y$NSgHc1D^)`d_ik{Dx35^^33r^!fZ#UL)!r>A#{|S;y-7@M0 zQ0qv&90!?U<2{b&BmFBr<=ftLV^HOe%v8}0|M0}7`aRVenr%#efuV#Tr zlgVEJl1XIk%ken*8qmBnC&sAUTt|bxKNtwI+9PcfsBiHI{su*Z*zkritu0#UpdxLP z-==|BRk-tbAFhi8jjMV~gsE%5I5@QvQA(}^Nl5F{_Lujc&5m+=^q9+-MY9x;EX(Ht zWTeGBlB})5*7X@kf5cffDj=I|Zu9_2sG}9?r!>NpH|2;^Sca^@3#;pUPD~tUUkmOK2?^%y?du#kLJI47pbS1P~G@h6f z199{L3(||@r{RL^k5kf?^D{xAZ}w@ z_8WTH5p(RNhL~Cn#B~qUQr+#eh}C`Q1tt|FIgoE6xfa_3>K15Y{0@@gs;?c5gtmGc zr0&~{_d%j5+dVY>9VAONW+H*KZl^V6yFzlw28mW0Z3l@=9Dx4*D1OE?yPLMxroW$D zMpH6KKusA!?_wkY^BhQqM_SJJIFEP2yr*IecjrJ0KDIH&fOO`Q`7Z(u4s`8q z)#ZV0lj~VZ_(Cu*+V~t!ZPnzH9e2mBc6Di^2i^B|!)+C4%eL!Qy!D&lac<~_BA>;$ zzNfU8zc7oFaCb@=`7=HLJM!zG{#uz&qTIa#T8EJsUN1&6hN~c%aGU|uu(!2g^?UEJ z2L*}4k=bdt4W#$}`5CPDpk8JiUkSJBV=1WLv4e)IHcYSk21usk{)9Gp!s*^9eew1-NY+72zt&^i0o`|8&wzl;uyavvfQ}P!oiiY7iIm73 zs1??SogpCUKpEKeDyW?@+jnqUxEQzgpnz~9#yN2i4thSuI65T9p`Duh zC2j|XfJ7bUpM`85NY5yWyFUeq)wE)ZP8cOds(zW`o^ax`99>)BvmohLACvgl#5x6d z5A*r*D7$(;TS0yMwgJ?Mn)v!-9C<s4_gNG~YjTCakv`~vz3q+-?|7E2CE3^??3I9*Ge z=|hmt3KAMlUm$=a&O3u-b;eoPc{~T=WW^QG5vvxuXZ^#k|Z!*1U;@L(9b@Q-q^6GG=2riG;zoA7b8p!=ukwvAt2EmcjMjN zDJ(*Eng{27irlajtXzwcHbP$Evq)Ud|?0}>~@|Gas+)~l4d zWKIG}Z57PMI*|0Hb~(mbP{y}nHn*zzeG7Q$xhG37|SRW(Hy^d1$Y+3 z*FQLAaF$jO?RgvAAJoVn(w)OX9;`L2Q{4Q6o}{^U2X{6n9fc%)B!L?1XG=X!f41Gf z@)kMfFvVg;7Am%-|A4II#q4#@(R0G;usF&M(B_nh{S_n?^;xay1dZ4QV-Y_{#iqJ8 zEdt3jvY}&d(`4d*I~Wh@#4{|i*W=m+;yq`1hV>7uL=6Km(PNSx7T3rUFNX=cz1@D!o3JxK9sBNsKa(RNNi>I7tJNiK;lc<{+B_L^-B7^ zcMx2MN|*jYa5_x&e-V5jPrC`3hJ<_U*`~p%**M{;)C(d)jQwXm`XICn+DG6LGAG&yS*R1d_QT#FS?oyLySXh}3gotIXSDkmoUBE~&f%>70=>8$F|J83 zsK|CZqFwu8t(RAKVD&2-XUZaK8q~bH2=6lsKZtg&S&S1?WY}KRMpm06qdBM(y|5=@ zkdr`SD`u1BeuAmD7Tgg{_c%u^A*YUyF;*yI%`Q7XZsH8YlL$)qm4uRlorDWI_gPG6~ou_?W3)hf2KQS+t1^vH4Z z36O-Zw$=jB{Wb72P!pcn{rO{X3Fiu3RqX{`?Lm#yVv`Q1bBpAIH$bvL;J6IP7vfX;6$}9G^ zF0r@DWUliRa?au=x%!5{PESPi1L-$~&%;TVPQSM*+gOmtEZoP?H%d$48oVld0O2y= zx+!iqoPPR`Dhs*Sro?N3YIEWA!;^5jL6z4@Y^rHIoG#l0*T*cp+s5%aadI!V#HL~i za2)gO9P{9`tSWB=+KqtIvNpkK)qaNSq2#yT9H=)FPS-nGTvla^CC``(m!WN)9VI_w zDv1*pfMd&MIbwH-c6i@lQgOGQ2A~2t|Ukz9|)4Sj^$*73-;~D_s`|ecMfJLyP zZfTW*J_d=pytkpzzfuiEvMA#E>P?+&RD8JRf~+q9PTyy%>FN4@X1GL&Y(rG{&Sq~@G1$Sb0Ok^m zYuh`L?F)m6pHjPv*^#h)b?G+PCpGKZBPV`UHv!fv-2*#NmzH~%^sm{GuvY0#Sgx1o z!ng-32R}A~=Q;K7EnY0is^dYUct+gtQ`4XBWi_aQf)(GBSPNN-6%?nwigCU#BITD#aJta>`aTR1iYt6aSqFOMRo!gBgXy75pD3|PiPIt zN4ixdGyg!88!%QhG{fGDav#-MQ!N0-hag#YwNWY`)5gRx*^Z6`i80Hm$zW2lRgS|96Yyf$PZ^@2L9{IL;E`YEec zvMV6zr;_?sywNB6dRQ&K&RL%jAq{ZANEbhn>+e_A)l7am!Fl-;mi0X`&RQo(nOQN; zF+%soIQO5Vd~b{qeoBWRDMYY;#ZA833i@%Ej ziC0rm{;mYnMLs?>PQpp5Qp=N3{!_ax6U1#0gUkb|PZW)J;bcw2m^(bqUq7{*m-fXN z5ua(rF#pOZH$XH|he=~ENVH_@L+5{h^!7m($mVCXDo%gVUFO0$`8#kP+?Tng3=wXoD>2r475al?}TpWopW}nwvWaeOj$9Y~#nVGT| z0&53GHF|+$+vxO%-C$hSGp<=N_;-Soztq2|(}Ol~GDv;9;#_|bC6C59e}Jw$8snOX zlRTuI!3SaB`lu2Bmi#@@&bO~HiI-!Hs#mpGrk$TBm<$>y_s*^_rCeNW)i;sZ&r-HKk4;_>oPp#p`Z16Q6nFy zGc`5Z1d8JZH?0EtiCEd1C1qBlXs9XLz;#yor< zW3>HE$G2+XTuAA#>oLv?^7ML)s}wO)RmF@ysEgfj{Ej_;i*a@PLq+Cq(Z*^xu_f!u zO^H#*Z&?zB*pD0=7MYvOI#|Pe)H~`tJdwp)t(MMm zZe7~htu@w}AQvQ~(Ob-eAju)@aJZ=W*Np+naHY4C;cK1llFLgHYQ+p5TpgRVl#(nC3Vc&aQd{Bh;D4B7@u zXRyYfu-fKCm9tejDwn77^l}b1o^pBX{3uXXraYd&;Vatc2q&GZZJhH+d53>x1qQRb z0*b>Jb@=&ZNq4OGN4cs7N#4-6F=s*IPcF5oir|Nx#VqCgVdwE6khH`6OzRfw8STj1 z--9Go^UVRtG2|hcR@q1Ogp-gh;rE_K0!XBjad3r$)-x=@hUMNvsP{1HwSCy3zIeh~ zZ+e__9%jsyQ2#2-N?{sTqM|UPVX9ZA#fC~+P396+z5`9M-r#fFg&k`dtAoMQd}$yua|`gkO* zDvCXV@K5;-Wcesa@3^D*DP_?B;U9R6X&^Ba`$3F&2&5xSvfaNR@o3tyZ)(PGNf#q` zF6e)9pY#1kFh~g9l?v96bYyo1>5++zp9blX$>w9P^^6-3J_L6D8H~a;kWiOjhZf(xG0R z-;|a*_ymj9Qy^`IF!Wjp5+Bu`P?le<7TFp-1=0hTrDOp}bYojfyL%wZU_?)=nhvx2 zYPNedwZ^6V-e!0iNY3W;OZ$?cS{kn`Sd=@1WZPEKAND0RK_U&=)A+hI)L~wFImTHx z45@4Qi-R!BuKqB7zQ+-U>x5#guPK&0ST6(QG)P3^IdrfLBxce1w-9u{ zgO+t2ws_IdANC=G1Zk5M;R2soh^#fk<0@N^c5-RvN`UKWuFj7(wn~}qhxc=LK;jI= zYp&6mAJP^Rmhk7hcvlUQT@DF@tA&3+GIch6tZ&0_Z7V1q;LZd+`9GpQr9^wDID8p? ziCa#z1THc8EJ!|lT%>MFZsH5Eg`4<$VKB^_8d7)hAY{Wb_?`I zEtZb$Ets;u2lG3>|MiZnKfgI#pZap);9cQda-H?VEB?1hb<>T+=Z$v5F86h>85ivf ze0asRo|F4kavDE3p^csW-;?9H2p)uNer4sk!dr~>oqb7Hx%<_%S+YpQOj3VMdLe6`n{D)RsRGQjQ#9!tH%3kWpGk?Dlqx}hRNr5OovqY zKa}B+Dt}rT4yp2gnw~**NX0AvtJF{=GywliGvpR12tm)mK?6D09Hm;FhL)Eq8E*Oi zj>@$W|0!4(S-pR0W&eQ!ZQ;wzL8@d+%U4yQNGorJYQSw!b{fB!}0e^({X2qZL<307gE=_J$1m5!dODm2B))2v*o z2;FP>s;Um}hfDv8c%`!b{|+kiYGb-pm}w1GRqf_E@EcJ+3e;cO@bD2(;P^Y$0QeXu z5UFyMzg)y$W>Nw@$$vT>`Ai{@=hK70A=S)yhaZ?hu)@Xh-%+`S@SmEhfhx~C(ZB%s z+c=(@8WHcJxF&{8;lfP9!@HlrQB~!}dy>F7cyS+4UL*$&smghY8sNO%3$)K`p}-+k zl9w)lqpE6Lyif@oXyxfBpaNcs1P-b4ywnJE#4SCb++qU_bAJpdcejAXn)X07uwJO@ z_ck79+Q-WKS$TgS{gd_#;6JUzji~ZB^Pesc|3I}8BT+Rt%JgZqz}s0Cbl8LA87<>n_9kFvZ}`L?L~X)mt*A4r(0prcig zYG7Ad{%ooS^|ybeG3HlQ#k;^YupX$|?`eM0!1kOY=@3+FeG96N{$Y9>s)*c<^3OBc_!#4<#wVCg zMr-5u0IEZ(_NH5YdQf2gl|ZjM9x(^~iEPbiHrfU)unJXG<*yo-)*-(g)xdY4DlbMg z;P+4+RaFCdKf?;%N0r>of2z30xKuOPZ+WT8zc4*uysE0hLstH^l}lCcu<19(Gn7!l zw+5sd*%8ZERrwt?|6``#nO{}a0DdrDRTbfr#!WKmnz@L@&VQU z`!`^DP4XhE5MdRhYT#naOOX2%nGff{dE>(oGj6WW1=l@)DkZM5lEPpmt!}HDW zNmK)Lri)OOKaJ{;s=dXQm#X|(%Rd`z=f8j)pR)p~9G99dGhJ@wRaG-u16R?@{1=99 zF~6#+_FgysPt5=*gl}5G|BhlQ5{n8^HBNMH!c;wz;9dP0xPJh=iv|uSBI^wysD~!DC1If(AM%*RlFTs zMORq)KUMG0A7(I^q36!*5U>Qu!T0g}yf~mETXO>YYN>-*0GO|D7SB5qViClAaJP zn5i19NnWTf|Ec1+RxVY&^NiOwJs(xQhN#-R2-P7y2W^e2oi=EO);^kq-t)$y8sRml z8t8-SkgB7;#;-FSi0T4(i{)>%{GF%{soI;2s-J17&i_nQ?av7z{z^O!XpF8zwWjM( zb@&RZ4z{5h;7(Nj@1Y9mhp7Dbp*o~0{~Xn;`5#cdc|U{7FO<=c^qhmLy$fov{u*Hf z|J6s^qZ(;fR26!w&{Q4vAs>i@@xG`+d_Ag=4m2*+KyEaClX0o|V9O8A_$z^`gJG7J zs-s&_z1B>z{8&^2n{4?sR1K!1I;0BmOe>#-YG4nen)zd<^HB{v!;w%&3r(L!)!?(J zDm;(Mai#G!sQh0vec5y!D*r-Mhg9uswtQ7p{VkO|Bao2e8vqq-w+d3_-$I4nH7=F^ z`>4u4L<4)k_~)o1`K6T~M0H5z|FxBup0b@B14!Fjfm9Vc8t-IWDjse8O5-DJF~s^ZPY&!*~Nh_#z&e$smIF{mam&UnUO38@NFtw5@VCYVk( zUR5=aDaNJBr&+$Ls-1M>Rh7tOc>apObZcM+s)5Y33Q{%v5UPmGw(`e}XIXwOs^e^` zlO)H=t7;AHzas;WAA&-i~!wg3OlQ62B1 z!Hdu%*05B&_?+K&p;6DiX(0b@UUe4t_TM#k3q%WKLSX;;)cZ0MyZ+s2T|3 z1&KNcLDf(V%h%Ei6%MJ&!%%fx&+_M^>fi$77os|(^1Ilyx$z7oRB)LAsXAR>44(qX2<&Hro~_;w=69Hi>-R?ACu2fM@aRaG5~HeOZ5Q{ZZ6EUNrCR7*O+@)J!b zp&nO~;Hw*WDKf=y8mj8|sQACA=0DZ^?z8fUl?a<8Uqs=SZ9 zChWKJkPLGOv4WbGKbxvz9V?fr!*ftITo={rt)|ACqk#*ICzlY(9$YWOicPjrZ`DySZLlxp8^aAuVRQ~%>9a7~Fpjwhcs5av-R{l3y zdH(&41I_$>LyBCv4dA48DAj;YSzfAvokr#Vr|~~)+xh=5K&d&%@r*fERqcTqTwPQi zYFblQ8;+`~OGAC*|4}pkR}NLmwYeIRSH~9`|2x$liNLQZ8jGraZ_~b3KSK#QUWcmT z0jAfZ3gHcCLv%E%<9}E){-+x}YkS(f6Kn!fZR#{M@I7_96;xF@OfxQ3{z1!26`6-D zFID7bS^mGH+Ki9NU;8hRFjYgdDUieC*6>_Z9nMn)Q+-tTtd%b@E>*qd#-B&!x7Nzf zrh)x`wgT$?ZAA@qoi!{~e!b}{sCNJBs0Oqh)db!`byU&H7ePf7sDZbw!aG*sJydH~ zV&xyBI;3i_)bdhw^f{___M_VEhfrIvDQ(XUxs$svChgi8(9o0hBkN&E;?w0kfyne=C2~-WAZ+WR2Y-o9@8fuKHp$IE) zYUNVZZ)SO^^375CUy7>ZHpVYUbz~@U8HpQFg)Gquq^dX!RYSv#|L>^k-(vNp$|s>r zFvD}3ff43VRpmI+xKt5Iw!Bp3cc2<*isi?cjztx*yHFixSJqzzYIveKR#k1jsm7)1 z=zhyfHGpZBud4Fqxxk0byWNC9aIC`W%{A% zUQ{#t#PXk7{tMHCsMOce6pQ<3>(A^x)rfQ%E<$AX@2vvs(<}X$G zV9QGt!J)>7Sw0EXz(y(lnsG8fIvUj>RYNJ}c$bw=uyU!^FddcOy{1!5??ctzG?Zw2 zW~1_-kLr*rVoo8E<3cNtwj#eBy%7Bz)eOHx)zMd|4yo5gEaYotWe<_nM8C0OsocM{ zyj1;thw3HGNmK!>sh4^GXIi;}{{syLCQyd~Y2aa~CUh>Uz1q+QDph&7X`{N8{d*b# z6v)Qr_;;!XE;7HWs`?kh)p0Xafp1}cRaIAow#M6L{FOk}a68LOm2YqPzf(2X1wVBd zi|Xdt2i1W3TK)f|8D}d{#r{;(n%`gzNHw5ArZ=MUyV=U68bBhdJ)3O#F{mPPC#t2G zZ2TUSBg12fe^YgoUg_{}s)p_}UR5=aX>gTKM>UX#Q1OS&zpASJM*{w=|7;REou5Ee zFwZKSP1V7Zl&gar^ONfAd=6EI%dGqbRPC)mbx2izmGRZeYyZ7y4rfzUSZn1{b+l0x z(brIQ__~!#m4CzXRaFDoW?ZUvcA|lgvEH=;sTzJC)eQHbs<;x!zqjH^hfLJzA@RTa`};LXuHto&@M z^E#DsH8>tsM-xyj*%VZfm})v5)dgxcihqXZF%mkesv5|GYXI}DTq?c*Rl^QdhYPK| zs>*MXl|N(pEUNaFqbh$sz*+wn46FzMzCcHHdaO0wXyu!%{54dER0Gh_-%JA=h^d1c zOb4Mls;cVUB5_`Aotv`G(O(u0^ne8}``Z6qBe0tJTyx$4Kb0vq&P zg^EKOcr|4C>c_aMALG*FT-pxRk8xE$#>GuZ_oeE`xT+uHs(y@1k9Fz7Sp67R^c_aMALHVK7Tr9nALFWijH~)FuIk6Q zsvqO3evGU7F)n?nz)}4eSM_6D)sJy`dg*&p4ynGEtA30t@Hsru&>QON$GEB=-;-BA#>HmP<6AnU+9cJFaaBLYRs9%O z^hXX07?(?0=9}P>Rs{8T;mdttu7H#;$m8~O3L5MS_PFMM_y+s@9_Py= zAL4Ptq%}NloixJP`SPg&X-4lN;V(j>Lm`)V zT(6fQ#Uim+2le;1a7TXe4RPr&0dil)rKQJBor6o{%aHwZAgw&E^<$7yk&=zR{@ymO z)yq`MTnos084%@~Z34us1I*gw>+fsFG*zceojh z>IRyLb{jX)Ooc#1Amc1c?#6YH&<&6RkyzGy zJ)}@1c|D{DT@8k$6hgL$^knT{frM{_q`m^_?Qxq#ibWy{AaNcywg8g839?J1kH=m3 zDkO3q-?E0E^Z*oUgP$_;ZAi5Bj1R`39ONGc`ks)lHjgY)IAlVxsL)kbYiQ6D? zn;^s4IGZ4$+aUv9r}HE>j!0pEY{utSk6W}ElJX`#ry<@EZd*Q`hrb0#cnz0PMEx~f zibax6GQMQD@+2~Zgi#J>Z{UQ07+?yI#lQy~zy4sef~ zw+@i^E}&fCUe|LyAn`pw?s^)zk4?^%!G-RE?EeEYjZJID8lJgN{m&gKw zwG9$q0?968fZ1#j?fVLm08t(6*(@lnm`mmGWSCk7eVsbzalYTKnA=Gd5Kzo zvMyyJ$F(kNsdWaDb3nDuK-N=BB>qcZSoQ!a6?n22(MpB#r^#>dxPD$h-d9w~_d+(Z zxFU%MAxS>SW){~62|WY}3xaInPNIuip-6*Z$X4zp!H|@%Aw?qFxR>}L;fEnre+P~1 zV!&!7<_ILI81exFE{2qegzY5cyWPAmsFZUQkPPtcWd=KOi9ZHu@D8Me8N36j5GfM* zgc-aG$@>nH_AX=}cSDiHhK7+=q~Fxu|^ziTnvtE^>tX+HOdxNbYXP zG4329nLk4k_CStv4ch~W`32(N3pv4^V=tskq(J0H?i?RMa>^meA3=U5J|gkIvTM&T z3A)Z#PJBur6~E$BRD#b*;`1>i?<6GcW5_AuBa&DFY4HiUo{- zK+xdqoFKw;08roS)&X3+7t-KMNCU4M`6Z-6q)4Qp*PZtjB+my)`wG&?>$Zy|20>aJ zgf#ZLNe3aJ!H^P>2(N2?2vR6A>ky=g*X`kqnKdB^WsoSsQwE8t z1@Rw&v?Dx6AY~#+1)P!{+|oK+;c{vN3gps>cpb$hz78a8H5a02uN$_S3sHs07Lm?g zS8ELnIB12iOpCE~iAh|z5hO=BEp%+3DeugBmTt7n!Mf|@& zZe_WCfuuBMv%K;Pn`H#6Qw|Bg2%qF~d`7XIMT$il{0d1XKEFcJBOpa0qlwQ+NaV$k zw3CoA#7Cr5q(uc}9Pz1uWHy16h@^Vms#UB-OjAhIDad%Qn|cbLGLiid??l)4dTpO( zfc)!mne26~f5RodIV9^hNSfDuDpDa5`#aeC{KJ ze?UT8K*~j?5yI1uLXq6lL45)bf@QEhZh@v;20g9Y;ta3r_a`L0B_#h($V{*MO{7>P z=?r8RqnrUrkAy_L&j=o2vS%QXt%Aa`!-D(!9`$Aq3noCyZy`U2j=X@()~fO-jbu^f zVXDNmfuwrznaf!qpE8jMA7mb9fe(^%Ib@f}0k>esuysm2vNJ75|?H6beqph)BukmEVbeI+d~WbUORNwx4<&3F{j z%xFmLgZShVpIX$4xe^jq8=sfBlGKKjiEI&BOH}JXaymm&>p<4CpWkEG#m7Jz>|$vO zXr};DArkf~WCJ^V7bLF>q)0v+iSzrA#IBHCTF}kJ`2$F3H^{UPAX|vDNTEp7hmftr z`9ny`RgnE6+gL%3Cp;Dsp?&ZsEr&shMRti4(egQv^zM*p=RkJQvPfhPNK{?OPFk)D zDHYi-@-8cQE+q46NY=TKT|`VIrY9t}9^?a7upXpLLtiN#`6*+F%Gg{kI& z0tx36iXR!?`3lYeh`#~kXD*lx6rAfJ1tR5KFfV{qh$LSCImreS$r}i1&=7Kp?bHyG zcmt$Jq*Np>0#e)O=0`v>2Sdt5!hEjR z#gLdGklc$Qb$#w9kus5lCXjkQH~V}}$(%$;zDRwa`>hE+@k1d=O(6|@ZdFrAg-BR4 zNJF0+)(nz246;R}k~otSzKeYByi3pspBpQ^*ypxOoA}&?m!eI5 zZj!W_&%GmU?sLsspqKdEROzL}N7};YT3?1yv?t+`_99$u(cXkhdJW-{#u2V|=(S8++J|tVE^-{hk802G`x3DBkW!KT zBHSffcYtKx3CZdJ89=Z^Vp1Wo9U%h=P)A6a$Z?TDKG(GqB-Pb{QNDvy&)+NKvH`{W)L5d@C-=AHISLa=Nd?{$S#pt#3v4tJ{>YG4)O@`5s91uiMkf@ zDDk-#QYx}vWDfD^1Ic_4lGO*2MSMhJW(-)HS5M*&*$O7Uc z5{`joDh|f)sGLhpVYl+Xz zkes=Y#WzFN6CaWICm^$K<~~;7cHhi>tU@3<0kFX}x(Sds4-j!9V51vzBOq};VA@T* zl-kTR2XQ42T>y!q5#JWBX9+Z0D3Y5%M_aj~iKILUNf->-##L-EBs?499|C!k3)m1y zu}FbP5sQ-uNq-8GoCw*$MNA~pK^hE&?Bp^w6jCZuB=Rm7vSE;0{e&}Sj#BKwKYZID8d+}j`rh>u9h5=g=b$XCQ?1SI@9 zh<_yH5b+raDHbUZIZS*;LDHA<(&hG1yma}N_=rR7UR_#7cVw?j%ribRePpJYhp za!6V-q+ zB)to%Ps{H@;@3jL-h(sMlYp&~%;Vmu8YchP&^I()W>GzxOH#zPX8V9*e zBB8H9A|^m0g51~%kV27Iz2#{Vo^5cDv~_~(k93q6v^BOiA#e-1-bcYkeE%7 za*=jHuGig=GLhW7AstvRk(|wtgnJ;Jg50uuAn~t3{OOSBAa`Rrq(Y=Xq;rt--3!Uv z0!h9X(j~~P6G?m>(qJm2TaX($6%x7?QX~=^Ifb=0g4?rT{gd7&>OMEgQr6SoGkp9F+B=apu z+;qqQ;xio*Qv@j&8AyC)K*~gNXFvuKACa85Rcj<`dK0xqa$Swz0U4n4B7t4^ATPlN z6FKP+_M9}4xXna|vg4$~h}uKwaCVpU7Gfq%VsFi&kHU9oF?ANb-pbw*NqH9%@i1fr zd+T9H_BF~S1+Y6Ynf*&m6|23i)$I|514m^X5! zs8-@pNW^83&73KhK|+r~c8P4^Olb)z6q(i%vNg!PBa-qRBuXuB;30HDo6dYXd12S=C31+Uc7zm*lxw{XGYiL#NCy&M%QNkp@pgeq^^i4aqqTDH8da^XnN%{GX7tXCURAUm_JE zEfzyga(*p_=O97B?x0AqNZeA0KiJJ*3P}%!l#A2|cE4RuUy*)D(m;Bz z8SGXKgp`U5ScXsSV7F))wK78>r$xeoUBBg!m>Q7$<&e6xBT^=k^gN^*7a$cPsV_hp2D?ond9@%BDB`qk4UyifA-<4_+(xLiQ51f zz&_jniHU%eiwq2Qy$T^^BDsZ-L9`>1b1@`gBjl!Fw`?OMz6r#?36c=(ZrlW^5GfED z66}1NA$d(9$(tcVgWWoj#Ac8NuR(?fyOFO!LYqU1M3REtd0QZbB57M7w+6fIA}NYlH)OnCm!ETaBu}DcgB$=p+q_>dIR@xcOuG|ID^N66uR#5pV2Jtz{>N#tF8=5qCW4^k$Q{T^f?Ux-G`9S7)XK0 zV&=6QQYezV8?uC5Cz8?y(qIo{DZ6eDB)lu6NMtz?+Y2ccN!ts_C1N7!-5@PKf~;VV zeFTZT3Q{7nlJm3#QYtd51hSg*R3tMNa(FlAX+G^NP{xKx4C!|1RBXj=*lGqE9{0U?; z>-90?3GEHZ`j`=JVTX$pio|{b*~$+81d?(M@|^nAfMg?RlTG zLHYr+`V9S$b3wYBIem`q;Y^V3r5EW(oCo{S68b=0MSu0NpB6u1Ex&-|T?a|~0kDZ8Ebg}5_&x(|4SmZpWQD~C=&H0J_p$SUqVs_LiUS%MKr&Hgx>(k`U-N0 zXo?hz#2$nkCQ`g1^nF8oMxo!blF~9}EVId>fCugqC`l56D{w1OE+PccvFZ|vQ%=gkOqD?=_sT^q(r2l-!(r5$r}k- z{5-p}5%YSU{hBxmGV2&Vjs0$qd_r%BM1Kc~@Vf`UW8Youcb`g|_+7{2Xj8wNEp6s^ z2c^yZuIu;cC4M(wdMRy7TlihC6X<0`Oxn`#enMSjO7J;u@DF_c+{*8k{QxOVp-=yh z^x4MmZu}9FIR;W766JU70HQJ$lKc~-9dQyV6KU`>qyusK8Im&&QY6xeIQ;^NzY~)7 z3nZF2iByQRD2H?=PUVoiR7iA$)cu4d~NGwq~2`LmgEYgFx zR6tTDK(Z?!J&BA+_(VwDDM)W(a|%){QZ5olbbf=RPlDwB2I)h5L?S0c5`KsDB|g7H zN=5vCK>8D(KOmV?AO#`=h|g(AOd2HlG-M$05h)XC@F!#t@%a;yb2p?&C1`>Y{ zB<&0&f%u42K(br-`}>CYvnTn9PCEG#@H&s@)il!>&c z2bsuTs0YcJ0Vxrg>~~YogTy}wDc8?ir7>NI?{2?qT_3%NSxM75Kcx3EC%!`VO=Tw1 z`#3Kep!YNC3(#qt2dFEYMT@5|ppOi$91S5U4@2@BLS`^}k?=<#N#T&0j6NJvEE3iT zGK(umBS?BCWQ)inepl;4NaUlC)C(bx`rRgxQjv(pkU3SCCUbUh9rsyNf6u^5`Lft& zzp_3tbMW@_^WVO?RlUoEcd3zies|$TG@J7nWSZV*FCcJwHyob@iM|4oO<1mgREQiF zaReqBlJ__yI~uZ(5Q!wtg~VM6d78z(5)%3Zq+Db%Ve1Sj6v^!jS;AtAq|AdP#6XrZ z@EAz=e2BjbWH~2D7f7*4fk-al3cUPV0NK(NvVw4R!zc1dNNP98O2Q>lDiU!OWVPRo zy$X_<4cR4<&)j1nF;79J#X?^4yLUv&M54Mw*0O23LvkEszsPzvOAknV4kW7wq=4-r zQX!IkHDm+PxEhkT5E9oDvXN-?gd{G4l#6U88hV2h`ZOfB7i0^Yr#GZfB)>OgE1O3o zigkT;1&9Hdxei%1dCxE7NBEF|?>$PS_*61fDDTh4aaN#x7f zAf+N{`uy@;PN6>dWIhLJp|>Hs*a`8Fn5B@YzK{=yMqfyo$bOOCRku~nGH_M`crPJI zz%hO~qDNqAdYFa(2l@>Ylzz*y zOUwMO`K{;?rYSwj^+9@!CBF^*juSz8oY_gg=QJ3Bp5Xo|{efkd{)qoL#+Z}O7_-JP zqMxZD68|D3_D)DSb?$^zh{UBrPO?Q(A$c!B%0*5Qv%4UPFGF(gg8WX*L_*g>62?PL z6SMJjq<)C&cn>6gBP9DCNP`e}P^3a6E*;V^#LZ8K32`^x2T9oiDG+H!eC~&YzYa;hA94xt z5h)gFFb&dz_)LSOZ-o?zv?M+cKqB9Oq&)y>MSMg`MOqx@G;0&$F3f;rZi7tAz$Yri zy(1E{9TGJi(vE1%fRu@3>t_c$F!u)`Id4MZWg}KjyB)$#tKMd){+#iO7?tp|n0*PgHmO=_e(jJBMU`=O3Qi>rZvmrfM z(>ajvosi>MklrD#>*J7Ok;RWg;zHa}k@R;U1Li{dgt$d>A(8JwPK)#nas8fvl#1j( z0qGy&eiO-j50W$wG9bjQng@y51xeLoJOe}Arcy3dWg-##AcI2O*nNuW^n*gC~{ilR%Y=fBxNte{}p5eQT+-M{t=`=WE4BG%xywXb` zMIxiwKTkp;KZc||2^quw5h)dEkqsHgT4X~qKY^5pq_P%IL1IcFvz~&CX9Y#dM4}yJ zB0I`Ka`r(Ei%br2vvVNvpF$QdgrpITWn8Q7=FIDl-h+oUod`(pWykT!jBhIID!q?3 z<$pghlTM@Fa#}3hPm9^hX)%MEA}L=$;`E+m275FY5`KX92QTCX_4CbSkBSr@z$f7a zd}h)9LP+|TkO7MzkKnTi68V*Uo`yWiK7JZfD&l_zGKYvi1IauHDG&L0)IW?p}U=>iD@~{vQJHL;gIF!41G00!25g z$hB|m5B2xFggdrB3$4;*N1(@CVixuIayo1jSKX4@zSAzKj=LDoLd5a zl+&6|o;-@?D+lp#NZ8iyl}=GJ`K!;G(oKPJJu%o{>b`91zsh}ifuC8|@t^BnZsafi z=b-(k=FqBoo9X+jM(712$K3VLQKlwOnKWJxr#sDLeqg9mk|#}0p5*ady~qOCFi>|* zL*lY;k>c`tVC-QlUFDcRe2&nnm)e!RTvU(nf3bo;r~0pnh6U$WI-i4{E55lh+zPHg z5M03p0l4A4+x(ILOg-TZdYQ-SZXM~5`q!fN2n_YH9hHl^7!ChtU~1oyK4FCBFl?vC zwHxK{;_v^C$5U7Buc#b(VDGSCzkXnwp|W3h%^m*s{%bz5CCUh?vau>ROI8KDKn=AF zOm)LW6Z|)O!)E%uf%Tt@2Ie-TvYUmqy!vb1)6c2x^_;h1P=}6OEnZ%xu92sF7Aa2>RhQjkD~4!k$R^muvavMz^XdU%+Jg`VS$l4_W7lODO^62g663- zq=LBt_V4?r>Uh4aJS{E_@dj!?^%#|Zo#(B*D6|O_`WcC*j!Wy|?^C(dtjgtqWBI89p7sg?KV7eLbVJTH zem*m0QC|sER)dYs+r_T2h$K(GbIe^+Jf2~&zzQ4-T!O;>Uzd+>11nQ&?7v-!UQnZ9 z-S>Mv7tkKtfRq1UyY9m)7-{eFKmcs?(QU|TRer9hTzRd^-D9RCBc86OY=e-VH2%&z z(`3!F$N0~7VHp?>|!EAw9)y7t{^$x&0dfK9LI+c5qre_wA{-Z{R&zA8ZL{d1ke zrbbO3m6Dt~qWD}Ni}26oud>tMuUx{yDgKzi)SBCH|Ixr2s=T(>HN5WvpC>{M1+G|6 z^<=)UH}q+M|6BoAI>&#h7T_^87<7KPZ^H+@{5-n?`XSKUtMmNN1#jTiusF1GPgMV3 z9f9fyR7c?dRs4m7XI?igUbX~| zL*~Pq15YDkUmN4^1M03EI1U>_Jl%|aLq=_B4A%x2zm~Ynp#HMpVg1rWj-ystzk--M zeBd}{jJv64nT_T*JYl$#!eYiwyibzo3VPZD`2YgyRq{~zhr+L=MR_$SRcz+Yw(OYo)3K8 znBt^xHNa+C$NXldK*PNL@GRFTIf9HeB>lXxU}L=S_2e4!8`H8CRttBR5e8cVYgpxr zjYYy%V>+6^SSe2{Y>fcNr7#VqHI^^HaT!c&+y;9|fTNZ9T~7Mt0Ac;x02S6K>~({e z8*59x$XJwBZbzQ?Vu7Qb`L!pv(^z|B9mv0Dtb?(R$C_UZOwsCsjXFo?A4gYn>`FS$ z9J?9Q#p7CIR~fqsHV~%sKGs+)>4j`e?YZv8cw6sT!&H!pOS7R?3 z>}8HUVNb%;cW-08NIwPBagEjOO?o~|*N1D(?;6q*=~b?MjKz_@TO;9!Hj zT_E}z>_hrJ+l2j$#ltSMj{6(y3u|fYI%EA{wTulg)*qIw(Q#aF>^jm<)%8@yf1tqu zzCV&E#fdH^63FCke&|!P*-e4Abd%Bi6y#un_v!p5ikb zPe+5pt@6#VD~;V^ECE(zdm+i#VAyVB|1dTLR$}Z{n3gyZYtEo`Q5#`?LpA?eKwZ^F z8XQKtg?16gD62f2bZcYD=Enz0o{q-ufa$uBghd-0XMX>HO;;#6?lg8Q=^3z$CL~gU zD!&bT&>Sb2;|SPHV-sNt;Ye(&UAWTBZxrkeSX1W$T?V7@GrA$K$XNT@*MThiM{r zYX8**s=@g{b)1TY8++0kybIRIDrXxT4~sCrr;JU2H8nqHY$B|=u^gBNGYM-YruBc? z94C{GvId_q#wP`ywpMvDOan~A+8bM9es{w<8G8<9C;|nOsen@i(m=qh6mkoMZ1S#6BTXL$72 zTXn24IGywb#`2BLfHgGsB1}^1f{>2z2d^dnV9=VI4rq#U1`-xH+cjD2Qo9xUG2=f>v4 zGWr_a57g`yU?;G)*a2ftk}kn?d}WohNl&%g_CaG$!KN8IWX!>)8~fT=4y*(HMr-{K z12xfw*a9w@x~G?!<08`9T)L+pG4?d+H2ic=KWgk5(svs>W^6G`b#+_*&e*f0U*+c1 z13eyK#D9r7UX6Zlj?aD?rCt!-qQtVbP)jEDOzh$JKqZ1uJ8Cy>JCeD&;(VvYy zPkJ;R>-fc3F6pru2Fne;032uRS7R$+9gUqdmIqsCH>V0?D`8I?I|WlzS7A$F*P(xy z-)hoV5dHyZ#%Y6V$XsdgPh6 z*FXfpz%89iY~DBX)p|Gz8Tj)D_!=&9__XxmI~IEC;4rbv+ot@w|qO zgXy;1(EPTLPBj*8>~&awYp+p;!L7jWSTNnIFEsWB>El{Nj>a%0w<*Jt+=^Ume%nd& z3v>gliLp0fXQ*%++7zaVyoF`MMxf2jFQbUeGe8}enB&`|pEuUR9CyHW7`x0^G3;Zz zrnfY<6Sk9Ue=-_r>>bkY8f#_jUD%#lod0rc4OH9jVFz)%1C27rU8HkiDQH`m_T&55 zhe~jCG`|l>?>5#6rWt>T?S+j+qs?zO>HBC;$CWi$f9>Es*!>1Oo8w;C1IA*EeFU2U z8;5o=rYqxv#=08&7&g=Db~E+~>>*=U87rlK&n$zn2KT{c8|!ZDQ`m50J&b(@(?vwb z)y6(2J+)>4d3qY#PxemOM6?%7k^TZpg=GlFnd1S{ir4Fu~w=q=RsL03B@XIO&`G+{w@( zFrDw;V*_9_&?J~TIf31nWs&{XsLmGlF~?lN`~mSJo>Eb#iT0(d@f7CONkPm%W1@x$mu zW51DB_%qQ-#(pQQx{sohjr~Eo9HwImOp`l}orKLs?}n-PPx=p3oj3R_`pma&?!*Nr`FjIWCWx85Audqhm@&v(axTd!cIIcgxS zG$oEljfKIU;O4XtHrv=aFfGY5usO!+!s40nbFjyZ@fEaZDSpdfS;qJ}+LLhwFDzC7 zA2)a&@C&R#x94A;AHO3Dec;>=%gIib0G6HV|l7PCytp{pg{1AdC5vF5SB8u`=D^ zHX4g2uNSgnn~W(xnYy~`Z8p{!HmN4-e*pLzP}d0U$}9`bR&(qE8*ew5H(=UaU17s* znYNo>H<mg&oGOh84qf z4=6U))BJR8-)XEDtOl2FUB=%r)*E&%Oqb_(VVZD;-aOVb_`W&n&0__f=$ie3v1?(! z8T-&!9~ghJA>g;$nBHV|rDa{7_ZZWA%x=c^!W6-NuuFqD|8;#XF~|O-M`OA^e{7EY zGIGxtOh>8t4Ir;8pDx+^V4BJGq;<8^@wxd8glS22+1+pK2GWYEuBKo7_4;p+L0u9L znB$G4-?Hn%moSa`CYUZhy0{!Pzne+xPO0<$kg){Pb?8LL*Tx2`-1f|2V?%WR)%mG& z{2PObq&L8HK7VU$DCvVVsB^c>*f7$XiB8=k#)gx=mAZO+eH5lK+(LS!vG2_<2{sg# zp;PUILERD+E}c?87`v796iywTLO&Y2&3tqU{bXzeY59o#Y-}Xy`b0(>?-ygENGn>} zPvv_3hk9=3zc?0Ao99<^OeVe4!hh1(9kADoRT$HL(N5PgoHCX|T2WOrelw;$q{(UU zzZ)B?`>&uz`iH@Bq}8BCdfM2Xq_1Uw8t9+KQc1sOgE?dDE|@+ykiR|x)t(toTDN1B z@pnuD6Hec$SCG71^BoD{$Gd7Yb88yaxXOLrxJJ1De0T#_(6~m+z=yL<$u`59W0zo; zVlA-Cu$EXP)(UHlwZSgOqOi7DJFGp{0qcl$!mhyh;3e=mOJ_6&>wI~ z?9zk8)mTrg7uFlQ28+Y4#rk0JSYNCk#t$ZWzVNzV8`o%_@h#~x>o&c=>qIkYy(z^ZNxTVo3YohE!gYWR_qOI8@3&L6MG9Q!rsPqV8w1?n;P{q zc9DD^`vCh8+l}qP_F^AlCD_N#Q!4{wExyzG9Lf;eXd*LUrdD!Jth{E)}a67C$)&c8?b;6>tE3p`? z3)U6uhFyilV%@PG*wt81tQXcByT+|;!kqh(?1%NouEPdk*JA^*8?Zr`zG{9M)3?j( zu=Uuh*aoZ++k|b#UcKkpVXtFbu{W@7SO|mHH_oA$zGe1fUASmp zh3OmSx9f1l*g>Kg)7Q(dV6S2uutIDjwh7yey{0@BH(~mQIS*Tjt-@AgYp{ImMeHT) zWo#|B4qK1Cg1vyX!dhc(uqFD&_&MxZOkYv!E9rAEeGPpsb{?j$pBrEoU=6Wm_&$!+ z#m>d*Vdr7zV;5izu{u}?zWVlgAlvgPY!$W|TZ83eFJd)c;=h-%wXRubwu4?GZ@>z% zO_*LDzlQ1M?^f&$Y#X*6dlP#LE5hE!c3{QWPV7Bw7xq5(0j6uTF3Gyw>hgLF`wr6` zOt;Um*ti-VSNq}`H8aMOnSkAbC1E45k=S5N@7H@{*I-#R{5Uobn~&X$C18WGL~JNF z3>%K!hK;~RVxzFzv1IHHY&4dFjlst1UCcNVcVem7UDyO{BBqZ+{vXob13t&=|Np;} z8@Xd|sV4TS5lIl#-dpXK+N-EdZSJVOsd3R-wW(QZ)~r&ql+u=>6m9L%n0-AMIizrAqt8?afpVJP#V^zqD#RB z_!PFm=kN(5|09?Qvq1;m+#q$O107%whMo{XSB->sG5ZJ;f5gia6&*&sXQfSiyEazkFw@xG4pLm)k501xOmKLzM7{XK`j;BR;W zvp`4t_EElt;RDdoypG~0!xWeb(_lPIfZMeFUAPA~;aAWxy^iH|3SS&_@_qpKFF+^m zhu}DzfUn^c=+ylToP}?7l_Mnyr-Iaw2GT-0NDmd5-zq~Ds0z=RoOLgwMN;|%w1igB z8jj+p6Zm|PA9V6w7>Ymy=+wP9=%hUw%0O8!Kkma`*atDRxlYq{dOjM)z%JMgdte{v z6#XCsCZonkcoL+<+!a|E_xrTJPSAB?{uk(w{0Zn_T!-HFA$KrqO7QZ>@my|50!cxq z-5y8*sUbaNfQ*m{GD8;7!FE=76?Ax=6Lesm8}dM2$OrjBht`EbXVN-@jsl%K7Y}Cq z>99E(N(j;Fy)m;+;A9E^kz$O`Q#b!%t<4WTGRKpw~oIzxWW&}~5L z>F8KT#X1@eNlN?cJUA=73OWbYxoLBgPZU(XoKV%(5A>)(Dwg1IG=+bZc3mR6TOJ&El6)Yyye(0HCL_D*@9lptT+A` z(6;0I&>ucbVvPt3%IvLyc>&RU3`<}hdOATMt{{bL`V# zI-J5j2Kf$Dq%4&{I}K0a89WCUlj=Xn+<~;HVy9sYo_=o~~IhOgiV41r?QS8<4ftD3=|kfAVIDHK|v&>D2; zx)^&ntyUCrgI=a0ku?ce8(Lu2zD8%}DIK(S1D&IGhq6!(%7e~Pi^6M=mu{2}S(xw( z8L-K87@Gu=!avMEPvIUsgzKOKR~@j=C@D??xANU8J!ZUadx&{^i{LxF7 z8h??5-`3AI3ntzUr7Qt!e&2%zcygM13lU=CQ?jGYG`g3d%2g3dvg!v^>i zbOxG%$TC3|NDp60`p2(1*_o`SPLg9$=9IsP@R9CgZa2GfWOJCh17YcjyH#cjx=LH$CEma z90TKEybfb^>^K?vf{q(of`O z6TU9c6}mxp=n2gs5R!m)02_if__S-(fDBfKs$PCngW8}2ww1672Ekp>nbsdL8pgu} z$Ur7_43!yPg;3BDl#ZOV@zxqr!uQlvF#6iA`~fb2_EEKOdKR?Z>D7+^3RnrNU=PeA zP$T3=M39!w^SyG4)D`4cU?ujYkdNs&KNJ9+92JB@@F6v}5Q1pRUC7U2H|&LdupbV= zVLic*U^ormz!^9T-@-Zg4!(yU;4)l+pWrH7gP-9#+<=?#3p|1+4BJ;oJO>QJT!N;$ zMq%1w?oG|q!9E1P&)l^C?@S1Pz%959ci>0Rk(7?0w!${hG1C%Q3d>+Qd<-6jV{;OH zA9D}TX-_A32Xx3&18PDz@I;9byZ&1_@? zN;U=A8gxD~3HwT_(u*7+KlHjFyTU%q2VghU!CnJ;P}RL)3QUEuWMVjIPhoTl+FxfH zN#RY}MZ5pakVWZS5fBMcPz(+c>0vkm#~=-EeYX^TCTp)sra0xC$VR~{ASVJkwQu1=}9P@8*8v<#=K1803#IMk% zKf!)D2!~-8bRo=o5%a8ZqSK4YBEQb}a5>~-#SOcHHT383`VFSDm zqhJ7N=l^F){v$l4Hnr>jGhBxoa1(C9ZMXw>;U0LmlEZ5RZb*q5K?m%epg(QZ7lnF6 zSRc|-(hQ)_RIb7ubnn7FNJ>ovfd^7S9rXL6dzFHn2kogJ1?{8nhPBWDo$ES`xrCt~ z3H66G1WpU-AUzyMaSsf@PoJ0UAXD2h&w-;f`7xLb(;zPio}#&82sak0Kvj4HHWGFx z=&ro(#;*h2hu@Hv_Sb!P-DU5CXLpDukusnw>P?_BRDsFpybh(I6wDxFGhq_wlC|zs zKcy*3g6=u%YO-z)r=o^*;Wr)Vl5ZGf1KqoQUBjq7N*%$1?4Sb{-DQ0SIjHJfkQ;O> zG(SAR{}Jd`=WWnMPF>O*24kp&8gP#q(IMU~_yw-ZPA9Jki!n!{qpOczC8oQLy35!J zT0nDX1oGQWNk0YMVU&Fy(t^2QA3IR$q0pF&_af3)sf~j86~g`tX59oVj(Z7+hV&F* z85szmmfqI-uN4Zdp$#;H%1{OhLkjqjj9i8sBqDSN?n9UYU7#!I4qOlD1+_uf+FWEd z5Zs_^X){4r(bmFd$c$ccZLOxjkP=csYDfcVAsyVI3GTyV&=oUXDLVS)&U6;3XS!*m5qV$C!2*0svdbR&B&}AuIj?%rS&Y-H+J*FK{k=(Y# ztu?fPDo_n{RY`i?k={W zj&A9Ugfx&A(m@8$5p!nHA(|

8A{mu?dCn}}bIIDhX;i3}v?t)My7fj2-`jsAe| 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 xjQt5(w`?A401rS>lwj2%h-@!3fy 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 From 3bc17a622190407c9c137a8b91e9f972053aabb4 Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Tue, 7 May 2024 21:57:31 +0200 Subject: [PATCH 28/49] chore: comment out social links --- apps/expo/src/components/layout/Header.tsx | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/apps/expo/src/components/layout/Header.tsx b/apps/expo/src/components/layout/Header.tsx index 07b6efc..8f20f68 100644 --- a/apps/expo/src/components/layout/Header.tsx +++ b/apps/expo/src/components/layout/Header.tsx @@ -1,9 +1,5 @@ -import { Linking } from "react-native"; -import * as Haptics from "expo-haptics"; -import { FontAwesome6, MaterialIcons } from "@expo/vector-icons"; -import { Circle, View } from "tamagui"; +import { View } from "tamagui"; -import { DISCORD_LINK, GITHUB_LINK } from "~/constants/core"; import { BrandPill } from "../BrandPill"; export function Header() { @@ -11,7 +7,7 @@ export function Header() { - - + */} ); } From 2d98413ea87733a61d8a22366c3f910a13ec22e2 Mon Sep 17 00:00:00 2001 From: Jorrin Date: Mon, 12 Aug 2024 20:54:09 +0200 Subject: [PATCH 29/49] start with expo-video (broken) --- apps/expo/app.config.ts | 1 + apps/expo/package.json | 61 ++++---- apps/expo/src/app/(tabs)/search.tsx | 36 +++-- apps/expo/src/components/item/item.tsx | 6 +- .../src/components/player/BottomControls.tsx | 24 ++- .../src/components/player/CaptionRenderer.tsx | 17 +- .../expo/src/components/player/PlayButton.tsx | 35 ++--- .../player/PlaybackSpeedSelector.tsx | 7 +- .../src/components/player/ProgressBar.tsx | 14 +- .../src/components/player/QualitySelector.tsx | 13 +- .../expo/src/components/player/SeekButton.tsx | 21 +-- .../src/components/player/VideoPlayer.tsx | 145 ++++++++---------- .../src/components/player/VideoSlider.tsx | 13 +- apps/expo/src/components/player/utils.ts | 10 +- apps/expo/src/hooks/player/useAudioTrack.ts | 40 ++--- .../expo/src/hooks/player/usePlaybackSpeed.ts | 12 +- apps/expo/src/lib/number.ts | 3 - apps/expo/src/stores/player/slices/video.ts | 25 ++- apps/expo/tamagui.config.ts | 56 ++++--- bun.lockb | Bin 761904 -> 876520 bytes 20 files changed, 253 insertions(+), 286 deletions(-) delete mode 100644 apps/expo/src/lib/number.ts diff --git a/apps/expo/app.config.ts b/apps/expo/app.config.ts index bdae87f..e12b1d9 100644 --- a/apps/expo/app.config.ts +++ b/apps/expo/app.config.ts @@ -43,6 +43,7 @@ const defineConfig = (): ExpoConfig => ({ }, plugins: [ "expo-router", + "expo-video", [withRemoveiOSNotificationEntitlement as unknown as string], [ "expo-screen-orientation", diff --git a/apps/expo/package.json b/apps/expo/package.json index 89304ee..757e58d 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -21,80 +21,81 @@ "browserify-sign": "4.2.2" }, "dependencies": { - "@expo/metro-config": "^0.17.3", + "@expo/metro-config": "~0.17.1", "@movie-web/api": "workspace:*", "@movie-web/colors": "workspace:*", "@movie-web/provider-utils": "workspace:*", "@movie-web/tmdb": "workspace:*", "@octokit/rest": "^20.0.2", "@react-native-anywhere/polyfill-base64": "0.0.1-alpha.0", - "@react-navigation/native": "^6.1.9", + "@react-navigation/native": "^6.1.18", "@salihgun/react-native-video-processor": "^0.3.1", - "@tamagui/animations-moti": "^1.96.0", - "@tamagui/babel-plugin": "^1.96.0", - "@tamagui/config": "^1.96.0", - "@tamagui/metro-plugin": "^1.96.0", - "@tamagui/toast": "1.96.0", - "@tanstack/react-query": "^5.22.2", - "ajv": "^8.13.0", + "@tamagui/animations-moti": "1.94.0", + "@tamagui/babel-plugin": "1.94.0", + "@tamagui/config": "1.94.0", + "@tamagui/metro-plugin": "1.94.0", + "@tamagui/toast": "1.94.0", + "@tanstack/react-query": "^5.51.23", + "ajv": "^8.17.1", "burnt": "^0.12.2", "class-variance-authority": "^0.7.0", - "expo": "~50.0.14", - "expo-alternate-app-icons": "^0.1.7", + "expo": "~50.0.20", + "expo-alternate-app-icons": "^0.1.9", "expo-application": "~5.8.3", "expo-av": "~13.10.5", "expo-brightness": "~11.8.0", "expo-build-properties": "~0.11.1", - "expo-clipboard": "^5.0.1", + "expo-clipboard": "~5.0.1", "expo-constants": "~15.4.5", "expo-file-system": "~16.0.8", "expo-haptics": "~12.8.1", "expo-keep-awake": "~12.8.2", - "expo-linear-gradient": "^12.7.2", + "expo-linear-gradient": "~12.7.2", "expo-linking": "~6.2.2", "expo-media-library": "~15.9.1", - "expo-navigation-bar": "^2.8.1", + "expo-navigation-bar": "~2.8.1", "expo-network": "~5.8.0", "expo-pod-pinner": "^1.0.1", "expo-router": "~3.4.10", "expo-screen-orientation": "~6.4.1", "expo-splash-screen": "~0.26.5", "expo-status-bar": "~1.11.1", - "expo-system-ui": "^2.9.3", - "expo-web-browser": "^12.8.2", + "expo-system-ui": "~2.9.3", + "expo-video": "~1.2.4", + "expo-web-browser": "~12.8.2", "ffmpeg-kit-react-native": "^6.0.2", - "immer": "^10.0.3", + "immer": "^10.1.1", "iso-639-1": "^3.1.2", - "react": "18.2.0", - "react-dom": "18.2.0", + "react": "~18.2.0", + "react-dom": "~18.2.0", "react-native": "0.73.6", "react-native-gesture-handler": "~2.14.1", "react-native-markdown-display": "^7.0.2", "react-native-mmkv": "^2.12.2", "react-native-modal": "^13.0.1", "react-native-quick-base64": "^2.1.2", - "react-native-quick-crypto": "^0.6.1", + "react-native-quick-crypto": "^0.7.3", "react-native-reanimated": "~3.6.2", - "react-native-safe-area-context": "~4.8.2", + "react-native-safe-area-context": "4.8.2", "react-native-screens": "~3.29.0", "react-native-svg": "14.1.0", - "react-native-web": "^0.19.10", + "react-native-web": "^0.19.12", "subsrt-ts": "^2.1.2", - "tamagui": "^1.94.0", + "tamagui": "1.94.0", "text-encoding-polyfill": "^0.6.7", - "zustand": "^4.4.7" + "zustand": "^4.5.4" }, "devDependencies": { - "@babel/core": "^7.23.9", - "@babel/preset-env": "^7.23.9", - "@babel/runtime": "^7.23.9", + "@babel/core": "^7.25.2", + "@babel/preset-env": "^7.25.3", + "@babel/runtime": "^7.25.0", "@movie-web/eslint-config": "workspace:^0.2.0", "@movie-web/prettier-config": "workspace:^0.1.0", "@movie-web/tsconfig": "workspace:^0.1.0", - "@tanstack/eslint-plugin-query": "^5.20.1", + "@tanstack/eslint-plugin-query": "^5.51.15", "@types/babel__core": "^7.20.5", - "@types/react": "~18.2.45", - "babel-plugin-module-resolver": "^5.0.0", + "@types/react": "~18.2.0", + "babel-plugin-module-resolver": "^5.0.2", "eslint": "^8.57.0", "prettier": "^3.2.5", "typescript": "^5.4.3" diff --git a/apps/expo/src/app/(tabs)/search.tsx b/apps/expo/src/app/(tabs)/search.tsx index 0f77f5f..c6d15bf 100644 --- a/apps/expo/src/app/(tabs)/search.tsx +++ b/apps/expo/src/app/(tabs)/search.tsx @@ -105,24 +105,26 @@ export default function SearchScreen() { scrollEnabled={searchResultsLoaded ? true : false} keyboardDismissMode="on-drag" keyboardShouldPersistTaps="handled" - contentContainerStyle={{ flexGrow: 1 }} + contentContainerStyle={{ + flexGrow: 1, + alignItems: "center", + justifyContent: "center", + }} > - - - - {data?.map((item, index) => ( - - - - ))} - - - + + + {data?.map((item, index) => ( + + + + ))} + + - + - + {title} - + {type === "tv" ? "Show" : "Movie"} diff --git a/apps/expo/src/components/player/BottomControls.tsx b/apps/expo/src/components/player/BottomControls.tsx index 7642e49..030befd 100644 --- a/apps/expo/src/components/player/BottomControls.tsx +++ b/apps/expo/src/components/player/BottomControls.tsx @@ -18,10 +18,10 @@ import { ProgressBar } from "./ProgressBar"; import { SeasonSelector } from "./SeasonEpisodeSelector"; import { SettingsSelector } from "./SettingsSelector"; import { SourceSelector } from "./SourceSelector"; -import { mapMillisecondsToTime } from "./utils"; +import { mapSecondsToTime } from "./utils"; export const BottomControls = () => { - const status = usePlayerStore((state) => state.status); + const player = usePlayerStore((state) => state.player); const isIdle = usePlayerStore((state) => state.interface.isIdle); const setIsIdle = usePlayerStore((state) => state.setIsIdle); const isLocalFile = usePlayerStore((state) => state.isLocalFile); @@ -33,25 +33,23 @@ export const BottomControls = () => { }, [showRemaining, setIsIdle]); const { currentTime, remainingTime } = useMemo(() => { - if (status?.isLoaded) { - const current = mapMillisecondsToTime(status.positionMillis ?? 0); - const remaining = `-${mapMillisecondsToTime( - (status.durationMillis ?? 0) - (status.positionMillis ?? 0), + if (player) { + const current = mapSecondsToTime(player.currentTime); + const remaining = `-${mapSecondsToTime( + (player.duration ?? 0) - (player.currentTime ?? 0), )}`; return { currentTime: current, remainingTime: remaining }; } else { return { - currentTime: mapMillisecondsToTime(0), - remainingTime: mapMillisecondsToTime(0), + currentTime: mapSecondsToTime(0), + remainingTime: mapSecondsToTime(0), }; } - }, [status]); + }, [player]); const durationTime = useMemo(() => { - return mapMillisecondsToTime( - status?.isLoaded ? status.durationMillis ?? 0 : 0, - ); - }, [status]); + return mapSecondsToTime(player?.duration ?? 0); + }, [player]); const translateY = useSharedValue(128); diff --git a/apps/expo/src/components/player/CaptionRenderer.tsx b/apps/expo/src/components/player/CaptionRenderer.tsx index f41b94c..e9bff94 100644 --- a/apps/expo/src/components/player/CaptionRenderer.tsx +++ b/apps/expo/src/components/player/CaptionRenderer.tsx @@ -8,7 +8,6 @@ import Animated, { } from "react-native-reanimated"; import { Text, View } from "tamagui"; -import { convertMilliSecondsToSeconds } from "~/lib/number"; import { useCaptionsStore } from "~/stores/captions"; import { usePlayerStore } from "~/stores/player/store"; @@ -27,10 +26,10 @@ export const captionIsVisible = ( }; export const CaptionRenderer = () => { + const player = usePlayerStore((state) => state.player); const isIdle = usePlayerStore((state) => state.interface.isIdle); const selectedCaption = useCaptionsStore((state) => state.selectedCaption); const delay = useCaptionsStore((state) => state.delay); - const status = usePlayerStore((state) => state.status); const translateY = useSharedValue(0); @@ -56,20 +55,12 @@ export const CaptionRenderer = () => { const visibleCaptions = useMemo( () => selectedCaption?.data.filter(({ start, end }) => - captionIsVisible( - start, - end, - delay, - status?.isLoaded - ? convertMilliSecondsToSeconds(status.positionMillis) - : 0, - ), + captionIsVisible(start, end, delay, player ? player.currentTime : 0), ), - [selectedCaption, delay, status], + [selectedCaption, player, delay], ); - if (!status?.isLoaded || !selectedCaption || !visibleCaptions?.length) - return null; + if (!player || !selectedCaption || !visibleCaptions?.length) return null; return ( { - const videoRef = usePlayerStore((state) => state.videoRef); - const status = usePlayerStore((state) => state.status); + const player = usePlayerStore((state) => state.player); const playAudio = usePlayerStore((state) => state.playAudio); const pauseAudio = usePlayerStore((state) => state.pauseAudio); - if ( - status?.isLoaded && - !status.isPlaying && - status.isBuffering && - status.positionMillis > status.playableDurationMillis! - ) { + if (!player) return null; + + if (player.status === "loading") { return ; } return ( { - if (status?.isLoaded) { - if (status.isPlaying) { - videoRef?.pauseAsync().catch(() => { - console.log("Error pausing video"); - }); - void pauseAudio(); - } else { - videoRef?.playAsync().catch(() => { - console.log("Error playing video"); - }); - void playAudio(); - } + if (player.playing) { + void pauseAudio(); + } else { + void playAudio(); + } + + if (!player.playing) { + player.play(); + void playAudio(); } }} /> diff --git a/apps/expo/src/components/player/PlaybackSpeedSelector.tsx b/apps/expo/src/components/player/PlaybackSpeedSelector.tsx index 955b608..ea9c5fa 100644 --- a/apps/expo/src/components/player/PlaybackSpeedSelector.tsx +++ b/apps/expo/src/components/player/PlaybackSpeedSelector.tsx @@ -44,11 +44,8 @@ export const PlaybackSpeedSelector = (props: SheetProps) => { ) } onPress={() => { - changePlaybackSpeed(speed) - .then(() => props.onOpenChange?.(false)) - .catch((err) => { - console.log("error", err); - }); + changePlaybackSpeed(speed); + props.onOpenChange?.(false); }} /> ))} diff --git a/apps/expo/src/components/player/ProgressBar.tsx b/apps/expo/src/components/player/ProgressBar.tsx index c7fedfe..ec9bbcc 100644 --- a/apps/expo/src/components/player/ProgressBar.tsx +++ b/apps/expo/src/components/player/ProgressBar.tsx @@ -5,19 +5,19 @@ import { usePlayerStore } from "~/stores/player/store"; import VideoSlider from "./VideoSlider"; export const ProgressBar = () => { - const status = usePlayerStore((state) => state.status); - const videoRef = usePlayerStore((state) => state.videoRef); + const player = usePlayerStore((state) => state.player); const setIsIdle = usePlayerStore((state) => state.setIsIdle); const updateProgress = useCallback( (newProgress: number) => { - videoRef?.setStatusAsync({ positionMillis: newProgress }).catch(() => { - console.error("Error updating progress"); - }); + if (!player) return; + player.currentTime = newProgress * player.duration; }, - [videoRef], + [player], ); + if (!player) return null; + return ( { paddingTop: 24, }} onPress={() => setIsIdle(false)} - disabled={!status?.isLoaded} + disabled={player.status !== "readyToPlay"} > diff --git a/apps/expo/src/components/player/QualitySelector.tsx b/apps/expo/src/components/player/QualitySelector.tsx index 5f766a9..d449c77 100644 --- a/apps/expo/src/components/player/QualitySelector.tsx +++ b/apps/expo/src/components/player/QualitySelector.tsx @@ -9,12 +9,12 @@ import { Settings } from "./settings/Sheet"; export const QualitySelector = (props: SheetProps) => { const theme = useTheme(); - const videoRef = usePlayerStore((state) => state.videoRef); + const player = usePlayerStore((state) => state.player); const videoSrc = usePlayerStore((state) => state.videoSrc); const stream = usePlayerStore((state) => state.interface.currentStream); const hlsTracks = usePlayerStore((state) => state.interface.hlsTracks); - if (!videoRef || !videoSrc || !stream) return null; + if (!player || !videoSrc || !stream) return null; let qualityMap: { quality: string; url: string }[]; let currentQuality: string | undefined; @@ -77,11 +77,10 @@ export const QualitySelector = (props: SheetProps) => { ) } onPress={() => { - void videoRef.unloadAsync(); - void videoRef.loadAsync( - { uri: quality.url, headers: stream.headers }, - { shouldPlay: true }, - ); + player.replace({ + uri: quality.url, + headers: stream.headers, + }); }} /> ))} diff --git a/apps/expo/src/components/player/SeekButton.tsx b/apps/expo/src/components/player/SeekButton.tsx index 54be900..19b0e81 100644 --- a/apps/expo/src/components/player/SeekButton.tsx +++ b/apps/expo/src/components/player/SeekButton.tsx @@ -7,29 +7,24 @@ interface SeekProps { } export const SeekButton = ({ type }: SeekProps) => { - const videoRef = usePlayerStore((state) => state.videoRef); - const status = usePlayerStore((state) => state.status); + const player = usePlayerStore((state) => state.player); const setAudioPositionAsync = usePlayerStore( (state) => state.setAudioPositionAsync, ); + if (!player) return null; + return ( { - if (status?.isLoaded) { - const position = - type === "forward" - ? status.positionMillis + 10000 - : status.positionMillis - 10000; - - videoRef?.setPositionAsync(position).catch(() => { - console.log("Error seeking backwards"); - }); - void setAudioPositionAsync(position); - } + player.currentTime = + type === "forward" + ? player.currentTime + 10000 + : player.currentTime - 10000; + void setAudioPositionAsync(player.currentTime); }} /> ); diff --git a/apps/expo/src/components/player/VideoPlayer.tsx b/apps/expo/src/components/player/VideoPlayer.tsx index 9fd6611..8a582c3 100644 --- a/apps/expo/src/components/player/VideoPlayer.tsx +++ b/apps/expo/src/components/player/VideoPlayer.tsx @@ -1,6 +1,5 @@ -import type { AVPlaybackStatus } from "expo-av"; import type { SharedValue } from "react-native-reanimated"; -import { useEffect, useState } from "react"; +import React, { useEffect, useState } from "react"; import { Dimensions, Platform } from "react-native"; import { Gesture, GestureDetector } from "react-native-gesture-handler"; import Animated, { @@ -9,13 +8,14 @@ import Animated, { useSharedValue, } from "react-native-reanimated"; import { useSafeAreaInsets } from "react-native-safe-area-context"; -import { ResizeMode, Video } from "expo-av"; +import { ResizeMode } from "expo-av"; import * as Haptics from "expo-haptics"; import { useKeepAwake } from "expo-keep-awake"; import * as NavigationBar from "expo-navigation-bar"; import * as Network from "expo-network"; import { useRouter } from "expo-router"; import * as StatusBar from "expo-status-bar"; +import { useVideoPlayer, VideoView } from "expo-video"; import { Feather } from "@expo/vector-icons"; import { Spinner, useTheme, View } from "tamagui"; @@ -23,7 +23,6 @@ import { findHLSQuality, findQuality } from "@movie-web/provider-utils"; import { useAudioTrack } from "~/hooks/player/useAudioTrack"; import { useBrightness } from "~/hooks/player/useBrightness"; -import { usePlaybackSpeed } from "~/hooks/player/usePlaybackSpeed"; import { usePlayer } from "~/hooks/player/usePlayer"; import { useVolume } from "~/hooks/player/useVolume"; import { @@ -44,6 +43,7 @@ import { ControlsOverlay } from "./ControlsOverlay"; export const VideoPlayer = () => { useKeepAwake(); + const { brightness, showBrightnessOverlay, @@ -52,12 +52,10 @@ export const VideoPlayer = () => { } = useBrightness(); const { volume, showVolumeOverlay, setShowVolumeOverlay } = useVolume(); - const { currentSpeed } = usePlaybackSpeed(); const { synchronizePlayback } = useAudioTrack(); const { dismissFullscreenPlayer } = usePlayer(); const [isLoading, setIsLoading] = useState(true); const [resizeMode, setResizeMode] = useState(ResizeMode.CONTAIN); - const [hasStartedPlaying, setHasStartedPlaying] = useState(false); const router = useRouter(); const scale = useSharedValue(1); @@ -66,12 +64,9 @@ export const VideoPlayer = () => { const isIdle = usePlayerStore((state) => state.interface.isIdle); const stream = usePlayerStore((state) => state.interface.currentStream); const selectedAudioTrack = useAudioTrackStore((state) => state.selectedTrack); - const videoRef = usePlayerStore((state) => state.videoRef); - const setVideoRef = usePlayerStore((state) => state.setVideoRef); - const videoSrc = usePlayerStore((state) => state.videoSrc) ?? undefined; + const videoSrc = usePlayerStore((state) => state.videoSrc); const setVideoSrc = usePlayerStore((state) => state.setVideoSrc); - const setStatus = usePlayerStore((state) => state.setStatus); - const status = usePlayerStore((state) => state.status); + const setVideoPlayer = usePlayerStore((state) => state.setVideoPlayer); const setIsIdle = usePlayerStore((state) => state.setIsIdle); const toggleAudio = usePlayerStore((state) => state.toggleAudio); const toggleState = usePlayerStore((state) => state.toggleState); @@ -79,6 +74,27 @@ export const VideoPlayer = () => { const setMeta = usePlayerStore((state) => state.setMeta); const isLocalFile = usePlayerStore((state) => state.isLocalFile); + const player = useVideoPlayer(videoSrc, (player) => { + if (state === "playing") { + player.play(); + } + + if (meta) { + const media = convertMetaToScrapeMedia(meta); + const watchHistoryItem = getWatchHistoryItem(media); + + if (watchHistoryItem) { + player.currentTime = watchHistoryItem.positionMillis / 1000; + } + } + }); + + useEffect(() => { + if (player) { + setVideoPlayer(player); + } + }, [player, setVideoPlayer]); + const { gestureControls, autoPlay } = usePlayerSettingsStore(); const { updateWatchHistory, removeFromWatchHistory, getWatchHistoryItem } = useWatchHistoryStore(); @@ -142,6 +158,7 @@ export const VideoPlayer = () => { } else { runOnJS(setShowBrightnessOverlay)(false); } + player.volume = volume.value; }); const composedGesture = Gesture.Race( @@ -158,7 +175,7 @@ export const VideoPlayer = () => { useEffect(() => { const initializePlayer = async () => { - if (videoSrc?.uri && isLocalFile) return; + if (isLocalFile) return; if (!stream) { await dismissFullscreenPlayer(); @@ -203,8 +220,9 @@ export const VideoPlayer = () => { void initializePlayer(); const timeout = setTimeout(() => { - if (!hasStartedPlaying) { - router.back(); + if (player.status === "loading") { + void dismissFullscreenPlayer(); + void router.back(); } }, 60000); @@ -212,19 +230,16 @@ export const VideoPlayer = () => { if (meta) { const item = convertMetaToItemData(meta); const scrapeMedia = convertMetaToScrapeMedia(meta); - updateWatchHistory( - item, - scrapeMedia, - videoRef?.props.positionMillis ?? 0, - ); + updateWatchHistory(item, scrapeMedia, player.currentTime); } clearTimeout(timeout); void synchronizePlayback(); }; }, [ + player.currentTime, + player.status, isLocalFile, dismissFullscreenPlayer, - hasStartedPlaying, meta, router, selectedAudioTrack, @@ -232,57 +247,38 @@ export const VideoPlayer = () => { stream, synchronizePlayback, updateWatchHistory, - videoRef?.props.positionMillis, - videoSrc?.uri, wifiDefaultQuality, mobileDataDefaultQuality, ]); - const onVideoLoadStart = () => { - setIsLoading(true); - }; - - const onReadyForDisplay = () => { - setIsLoading(false); - setHasStartedPlaying(true); - if (videoRef) { - void videoRef.setRateAsync(currentSpeed, true); - - if (meta) { - const media = convertMetaToScrapeMedia(meta); - const watchHistoryItem = getWatchHistoryItem(media); + useEffect(() => { + const playerStatusChange = player.addListener("statusChange", (status) => { + const isFinished = player.duration - player.currentTime < 1; + if (meta && status === "idle" && meta.type === "movie" && isFinished) { + const item = convertMetaToItemData(meta); + removeFromWatchHistory(item); + } - if (watchHistoryItem) { - void videoRef.setPositionAsync(watchHistoryItem.positionMillis); - } + if (autoPlay && status === "idle" && meta?.type === "show") { + getNextEpisode(meta) + .then((nextEpisodeMeta) => { + if (!nextEpisodeMeta) return; + setMeta(nextEpisodeMeta); + const media = convertMetaToScrapeMedia(nextEpisodeMeta); + + router.replace({ + pathname: "/videoPlayer", + params: { media: JSON.stringify(media) }, + }); + }) + .catch(console.error); } - } - }; + }); - const onPlaybackStatusUpdate = async (status: AVPlaybackStatus) => { - setStatus(status); - if (meta && status.isLoaded && status.didJustFinish) { - const item = convertMetaToItemData(meta); - removeFromWatchHistory(item); - } - if ( - status.isLoaded && - status.didJustFinish && - !status.isLooping && - autoPlay - ) { - if (meta?.type !== "show") return; - const nextEpisodeMeta = await getNextEpisode(meta); - if (!nextEpisodeMeta) return; - setMeta(nextEpisodeMeta); - const media = convertMetaToScrapeMedia(nextEpisodeMeta); - - router.replace({ - pathname: "/videoPlayer", - params: { media: JSON.stringify(media) }, - }); - } - }; + return () => { + playerStatusChange.remove(); + }; + }, [player, meta, removeFromWatchHistory, autoPlay, setMeta, router]); return ( @@ -293,16 +289,8 @@ export const VideoPlayer = () => { justifyContent="center" backgroundColor="black" > - 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μ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 zxCpoixCpoixCpoixCpoixCpoixCpoixCpoixCpoixCpoixCpoixCpoixCpoixCpoi zxCs1HBjCQB@K0T`ZodAL2)OOxKZ%;F<09Z9;3D86;3D86;3D86;3D86;3D86;3D86 z;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86 z;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86 z;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86 z;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86 z;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86 z;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86 z;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86 z;3D86;3D86;3D86;3D86;3D86;3D86;3D86;3D86@E49iuwOfEzq-P&9f2$FBH$w6 zBH$w6BH$w6BH$w6BH$w6BH$w6BH$w6BJjTxfnbB@zVmW!H-vomWg0eLK&Pe|{M!X| zZrr9#hBob+wr=j<#xFy)PJVs`5@pGhD8Rp`U;F0i5@k!&xQ%~{cI}&oRki0YUcHnL z78*#yX@Hk^I5_!|(OxP~aLR-rD~jn2UZHTINJBz#b767H%9k(~-s+Ng^uAsZNi|N* zOE`0p%xS)q*DJEQFqW5#f>YC)k*HQKnw8T$#55P3RMQ(C5}Au-<=(?3H5c1l1Y8Mo zaY$7+B2+dPpH$}BDwEJ$dULTEzF^aw38(o`y-Vh@SbK4C*Km42tGRgO zzcZK3>c+ZC65|$`%WLJ5;FjW~^O;LZ zex`5fgUuB;mlpS-Iju_yZ#wwMTuF23ai5qgWiA75sJYVSGUA4rD`PGbZn(L!<}%|( zm@8*43vQ&j^5(MQJ~datTsGV&a}~{H$Bi~u$y^TH7<1YtG;cX!thp-Ya^a?$t7eYTIPjdueo~W z3gh;fYhZPY;QVpgA2q~jJuC{1aoQg>vAV^Sx4O-&ZgE^wbADE?1g@F67FMn#u9CTy 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 diff --git a/package.json b/package.json index d353df1..20e848a 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,7 @@ { "name": "@movie-web/native", "private": true, - "packageManager": "bun@1.1.6", - "workspaces": [ - "apps/*", - "packages/*", - "tooling/*" - ], + "packageManager": "pnpm@9.7.0", "scripts": { "build": "turbo build", "clean": "git clean -xdf node_modules", @@ -16,8 +11,8 @@ "format:fix": "turbo format --continue -- --write --cache --cache-location node_modules/.cache/.prettiercache", "lint": "turbo lint --continue -- --cache --cache-location node_modules/.cache/.eslintcache", "lint:fix": "turbo lint --continue -- --fix --cache --cache-location node_modules/.cache/.eslintcache", - "lint:ws": "bunx sherif@latest", - "postinstall": "bun lint:ws", + "lint:ws": "pnpm dlx sherif@latest", + "postinstall": "pnpm lint:ws", "typecheck": "turbo typecheck" }, "devDependencies": { diff --git a/packages/providers/package.json b/packages/providers/package.json index 3b22e84..66d5447 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -34,7 +34,7 @@ "lint": "eslint --ext .ts,.js src/", "lint:fix": "eslint --fix --ext .ts,.js src/", "lint:report": "eslint --ext .ts,.js --output-file eslint_report.json --format json src/", - "prepare": "bun run build" + "prepare": "pnpm run build" }, "devDependencies": { "@movie-web/eslint-config": "workspace:^0.2.0", @@ -64,7 +64,7 @@ "vitest": "^1.4.0" }, "dependencies": { - "cheerio": "^1.0.0-rc.12", + "cheerio": "1.0.0-rc.12", "cookie": "^0.6.0", "crypto-js": "^4.2.0", "form-data": "^4.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..0018797 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,17667 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@movie-web/prettier-config': + specifier: workspace:^0.1.0 + version: link:tooling/prettier + '@turbo/gen': + specifier: ^1.11.3 + version: 1.13.4(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4) + prettier: + specifier: ^3.2.5 + version: 3.3.3 + turbo: + specifier: ^1.11.3 + version: 1.13.4 + typescript: + specifier: ^5.4.3 + version: 5.5.4 + + apps/expo: + dependencies: + '@expo/metro-config': + specifier: ~0.18.11 + version: 0.18.11 + '@movie-web/api': + specifier: workspace:* + version: link:../../packages/api + '@movie-web/colors': + specifier: workspace:* + version: link:../../tooling/colors + '@movie-web/provider-utils': + specifier: workspace:* + version: link:../../packages/provider-utils + '@movie-web/tmdb': + specifier: workspace:* + version: link:../../packages/tmdb + '@octokit/rest': + specifier: ^20.0.2 + version: 20.1.1 + '@react-native-anywhere/polyfill-base64': + specifier: 0.0.1-alpha.0 + version: 0.0.1-alpha.0 + '@react-navigation/native': + specifier: ^6.1.18 + version: 6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@salihgun/react-native-video-processor': + specifier: ^0.3.1 + version: 0.3.1(ffmpeg-kit-react-native@6.0.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-video@5.2.1)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/animations-moti': + specifier: 1.108.3 + version: 1.108.3(moti@0.29.0(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@tamagui/babel-plugin': + specifier: 1.108.3 + version: 1.108.3(react@18.3.1) + '@tamagui/config': + specifier: 1.108.3 + version: 1.108.3(moti@0.29.0(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/metro-plugin': + specifier: 1.108.3 + version: 1.108.3(@babel/core@7.25.2)(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-svg@15.5.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4))) + '@tamagui/toast': + specifier: 1.108.3 + version: 1.108.3(react@18.3.1) + '@tanstack/react-query': + specifier: ^5.51.23 + version: 5.51.23(react@18.3.1) + ajv: + specifier: ^8.17.1 + version: 8.17.1 + burnt: + specifier: ^0.12.2 + version: 0.12.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + class-variance-authority: + specifier: ^0.7.0 + version: 0.7.0 + expo: + specifier: ~51.0.26 + version: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo-alternate-app-icons: + specifier: ^0.1.9 + version: 0.1.9(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + expo-application: + specifier: ~5.9.1 + version: 5.9.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-av: + specifier: ~14.0.6 + version: 14.0.6(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-brightness: + specifier: ~12.0.1 + version: 12.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-build-properties: + specifier: ~0.12.5 + version: 0.12.5(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-clipboard: + specifier: ~6.0.3 + version: 6.0.3(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-constants: + specifier: ~16.0.2 + version: 16.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-file-system: + specifier: ~17.0.1 + version: 17.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-haptics: + specifier: ~13.0.1 + version: 13.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-keep-awake: + specifier: ~13.0.2 + version: 13.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-linear-gradient: + specifier: ~13.0.2 + version: 13.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-linking: + specifier: ~6.3.1 + version: 6.3.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-media-library: + specifier: ~16.0.4 + version: 16.0.4(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-navigation-bar: + specifier: ~3.0.7 + version: 3.0.7(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-network: + specifier: ~6.0.1 + version: 6.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-pod-pinner: + specifier: ^1.0.1 + version: 1.0.1 + expo-router: + specifier: ~3.5.21 + version: 3.5.21(ga2zmoy2dqxl2qdy4qnq4p4acq) + expo-screen-orientation: + specifier: ~7.0.5 + version: 7.0.5(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-splash-screen: + specifier: ~0.27.5 + version: 0.27.5(expo-modules-autolinking@1.11.1)(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-status-bar: + specifier: ~1.12.1 + version: 1.12.1 + expo-system-ui: + specifier: ~3.0.7 + version: 3.0.7(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-video: + specifier: ~1.2.4 + version: 1.2.4(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-web-browser: + specifier: ~13.0.3 + version: 13.0.3(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + ffmpeg-kit-react-native: + specifier: ^6.0.2 + version: 6.0.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + immer: + specifier: ^10.1.1 + version: 10.1.1 + iso-639-1: + specifier: ^3.1.2 + version: 3.1.2 + react: + specifier: ~18.3.1 + version: 18.3.1 + react-dom: + specifier: ~18.3.1 + version: 18.3.1(react@18.3.1) + react-native: + specifier: 0.74.5 + version: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native-gesture-handler: + specifier: ~2.18.1 + version: 2.18.1(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-markdown-display: + specifier: ^7.0.2 + version: 7.0.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-mmkv: + specifier: ^2.12.2 + version: 2.12.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-modal: + specifier: ^13.0.1 + version: 13.0.1(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-quick-base64: + specifier: ^2.1.2 + version: 2.1.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-quick-crypto: + specifier: ^0.7.3 + version: 0.7.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-reanimated: + specifier: ~3.15.0 + version: 3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-safe-area-context: + specifier: 4.10.8 + version: 4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-screens: + specifier: 3.34.0 + version: 3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-svg: + specifier: 15.5.0 + version: 15.5.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-web: + specifier: ^0.19.12 + version: 0.19.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + subsrt-ts: + specifier: ^2.1.2 + version: 2.1.2 + tamagui: + specifier: 1.108.3 + version: 1.108.3(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + text-encoding-polyfill: + specifier: ^0.6.7 + version: 0.6.7 + zustand: + specifier: ^4.5.4 + version: 4.5.4(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) + devDependencies: + '@babel/core': + specifier: ^7.25.2 + version: 7.25.2 + '@babel/preset-env': + specifier: ^7.25.3 + version: 7.25.3(@babel/core@7.25.2) + '@babel/runtime': + specifier: ^7.25.0 + version: 7.25.0 + '@movie-web/eslint-config': + specifier: workspace:^0.2.0 + version: link:../../tooling/eslint + '@movie-web/prettier-config': + specifier: workspace:^0.1.0 + version: link:../../tooling/prettier + '@movie-web/tsconfig': + specifier: workspace:^0.1.0 + version: link:../../tooling/typescript + '@tanstack/eslint-plugin-query': + specifier: ^5.51.15 + version: 5.51.15(eslint@8.57.0)(typescript@5.5.4) + '@types/babel__core': + specifier: ^7.20.5 + version: 7.20.5 + '@types/react': + specifier: ~18.3.3 + version: 18.3.3 + babel-plugin-module-resolver: + specifier: ^5.0.2 + version: 5.0.2 + eslint: + specifier: ^8.57.0 + version: 8.57.0 + prettier: + specifier: ^3.2.5 + version: 3.3.3 + typescript: + specifier: ^5.4.3 + version: 5.5.4 + + packages/api: + dependencies: + '@noble/hashes': + specifier: ^1.4.0 + version: 1.4.0 + '@scure/bip39': + specifier: ^1.3.0 + version: 1.3.0 + node-forge: + specifier: ^1.3.1 + version: 1.3.1 + devDependencies: + '@movie-web/eslint-config': + specifier: workspace:^0.2.0 + version: link:../../tooling/eslint + '@movie-web/prettier-config': + specifier: workspace:^0.1.0 + version: link:../../tooling/prettier + '@movie-web/tsconfig': + specifier: workspace:^0.1.0 + version: link:../../tooling/typescript + '@types/node-forge': + specifier: ^1.3.11 + version: 1.3.11 + eslint: + specifier: ^8.57.0 + version: 8.57.0 + prettier: + specifier: ^3.2.5 + version: 3.3.3 + typescript: + specifier: ^5.4.3 + version: 5.5.4 + + packages/provider-utils: + dependencies: + '@movie-web/providers': + specifier: workspace:* + version: link:../providers + '@nabla/vite-plugin-eslint': + specifier: ^2.0.2 + version: 2.0.4(eslint@8.57.0)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6)) + '@types/cookie': + specifier: ^0.6.0 + version: 0.6.0 + '@types/crypto-js': + specifier: ^4.2.2 + version: 4.2.2 + '@types/node-fetch': + specifier: ^2.6.11 + version: 2.6.11 + '@types/randombytes': + specifier: ^2.0.3 + version: 2.0.3 + '@types/set-cookie-parser': + specifier: ^2.4.7 + version: 2.4.10 + '@types/spinnies': + specifier: ^0.5.3 + version: 0.5.3 + '@typescript-eslint/eslint-plugin': + specifier: ^7.4.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': + specifier: ^7.4.0 + version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@vitest/coverage-v8': + specifier: ^1.4.0 + version: 1.6.0(vitest@1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6)) + commander: + specifier: ^12.0.0 + version: 12.1.0 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + dotenv: + specifier: ^16.4.5 + version: 16.4.5 + enquirer: + specifier: ^2.4.1 + version: 2.4.1 + eslint: + specifier: ^8.57.0 + version: 8.57.0 + eslint-config-airbnb-base: + specifier: ^15.0.0 + version: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.57.0) + eslint-import-resolver-typescript: + specifier: ^3.6.1 + version: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.2.1(@types/eslint@8.56.11)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) + node-fetch: + specifier: ^3.3.2 + version: 3.3.2 + parse-hls: + specifier: ^1.0.7 + version: 1.0.7 + prettier: + specifier: ^3.2.5 + version: 3.3.3 + puppeteer: + specifier: ^22.6.1 + version: 22.15.0(typescript@5.5.4) + spinnies: + specifier: ^0.5.1 + version: 0.5.1 + srt-webvtt: + specifier: ^2.0.0 + version: 2.0.0 + tmdb-ts: + specifier: ^1.6.1 + version: 1.8.0 + tsc-alias: + specifier: ^1.8.8 + version: 1.8.10 + tsconfig-paths: + specifier: ^4.2.0 + version: 4.2.0 + typescript: + specifier: ^5.4.3 + version: 5.5.4 + vite: + specifier: ^5.2.7 + version: 5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + vite-node: + specifier: ^1.4.0 + version: 1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + vite-plugin-dts: + specifier: ^3.8.1 + version: 3.9.1(@types/node@22.2.0)(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6)) + vitest: + specifier: ^1.4.0 + version: 1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + devDependencies: + '@movie-web/eslint-config': + specifier: workspace:^0.2.0 + version: link:../../tooling/eslint + '@movie-web/prettier-config': + specifier: workspace:^0.1.0 + version: link:../../tooling/prettier + '@movie-web/tsconfig': + specifier: workspace:^0.1.0 + version: link:../../tooling/typescript + + packages/providers: + dependencies: + cheerio: + specifier: 1.0.0-rc.12 + version: 1.0.0-rc.12 + cookie: + specifier: ^0.6.0 + version: 0.6.0 + crypto-js: + specifier: ^4.2.0 + version: 4.2.0 + form-data: + specifier: ^4.0.0 + version: 4.0.0 + iso-639-1: + specifier: ^3.1.2 + version: 3.1.2 + nanoid: + specifier: ^3.3.7 + version: 3.3.7 + node-fetch: + specifier: ^3.3.2 + version: 3.3.2 + set-cookie-parser: + specifier: ^2.6.0 + version: 2.7.0 + unpacker: + specifier: ^1.0.1 + version: 1.0.1 + devDependencies: + '@movie-web/eslint-config': + specifier: workspace:^0.2.0 + version: link:../../tooling/eslint + '@movie-web/prettier-config': + specifier: workspace:^0.1.0 + version: link:../../tooling/prettier + '@movie-web/tsconfig': + specifier: workspace:^0.1.0 + version: link:../../tooling/typescript + '@types/cookie': + specifier: ^0.6.0 + version: 0.6.0 + '@types/crypto-js': + specifier: ^4.2.2 + version: 4.2.2 + '@types/node-fetch': + specifier: ^2.6.11 + version: 2.6.11 + '@types/randombytes': + specifier: ^2.0.3 + version: 2.0.3 + '@types/set-cookie-parser': + specifier: ^2.4.7 + version: 2.4.10 + '@types/spinnies': + specifier: ^0.5.3 + version: 0.5.3 + '@vitest/coverage-v8': + specifier: ^1.4.0 + version: 1.6.0(vitest@1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6)) + commander: + specifier: ^12.0.0 + version: 12.1.0 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + dotenv: + specifier: ^16.4.5 + version: 16.4.5 + enquirer: + specifier: ^2.4.1 + version: 2.4.1 + prettier: + specifier: ^3.2.5 + version: 3.3.3 + puppeteer: + specifier: ^22.6.1 + version: 22.15.0(typescript@5.5.4) + spinnies: + specifier: ^0.5.1 + version: 0.5.1 + tsc-alias: + specifier: ^1.8.8 + version: 1.8.10 + tsconfig-paths: + specifier: ^4.2.0 + version: 4.2.0 + typescript: + specifier: ^5.4.3 + version: 5.5.4 + vite: + specifier: ^5.2.7 + version: 5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + vite-node: + specifier: ^1.4.0 + version: 1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + vite-plugin-dts: + specifier: ^3.8.1 + version: 3.9.1(@types/node@22.2.0)(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6)) + vitest: + specifier: ^1.4.0 + version: 1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + + packages/tmdb: + dependencies: + tmdb-ts: + specifier: ^1.6.1 + version: 1.8.0 + devDependencies: + '@movie-web/eslint-config': + specifier: workspace:^0.2.0 + version: link:../../tooling/eslint + '@movie-web/prettier-config': + specifier: workspace:^0.1.0 + version: link:../../tooling/prettier + '@movie-web/tsconfig': + specifier: workspace:^0.1.0 + version: link:../../tooling/typescript + eslint: + specifier: ^8.57.0 + version: 8.57.0 + prettier: + specifier: ^3.2.5 + version: 3.3.3 + typescript: + specifier: ^5.4.3 + version: 5.5.4 + + tooling/colors: + devDependencies: + '@movie-web/eslint-config': + specifier: workspace:^0.2.0 + version: link:../eslint + '@movie-web/prettier-config': + specifier: workspace:^0.1.0 + version: link:../prettier + '@movie-web/tsconfig': + specifier: workspace:^0.1.0 + version: link:../typescript + eslint: + specifier: ^8.57.0 + version: 8.57.0 + prettier: + specifier: ^3.2.5 + version: 3.3.3 + typescript: + specifier: ^5.4.3 + version: 5.5.4 + + tooling/eslint: + dependencies: + '@typescript-eslint/eslint-plugin': + specifier: ^7.4.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': + specifier: ^7.4.0 + version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.57.0) + eslint-config-turbo: + specifier: ^1.11.3 + version: 1.13.4(eslint@8.57.0) + eslint-plugin-import: + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-jsx-a11y: + specifier: ^6.8.0 + version: 6.9.0(eslint@8.57.0) + eslint-plugin-react: + specifier: ^7.33.2 + version: 7.35.0(eslint@8.57.0) + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.2(eslint@8.57.0) + devDependencies: + '@movie-web/prettier-config': + specifier: workspace:^0.1.0 + version: link:../prettier + '@movie-web/tsconfig': + specifier: workspace:^0.1.0 + version: link:../typescript + '@types/eslint': + specifier: ^8.56.2 + version: 8.56.11 + eslint: + specifier: ^8.57.0 + version: 8.57.0 + prettier: + specifier: ^3.2.5 + version: 3.3.3 + typescript: + specifier: ^5.4.3 + version: 5.5.4 + + tooling/github: {} + + tooling/prettier: + dependencies: + '@ianvs/prettier-plugin-sort-imports': + specifier: ^4.1.1 + version: 4.3.1(prettier@3.3.3) + prettier: + specifier: ^3.2.5 + version: 3.3.3 + prettier-plugin-tailwindcss: + specifier: ^0.5.10 + version: 0.5.14(@ianvs/prettier-plugin-sort-imports@4.3.1(prettier@3.3.3))(prettier@3.3.3) + devDependencies: + '@movie-web/tsconfig': + specifier: workspace:^0.1.0 + version: link:../typescript + typescript: + specifier: ^5.4.3 + version: 5.5.4 + + tooling/typescript: {} + +packages: + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.10.4': + resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.25.2': + resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.25.2': + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.25.0': + resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.24.7': + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': + resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.2': + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.25.0': + resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.25.2': + resolution: {integrity: sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.2': + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-environment-visitor@7.24.7': + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.24.8': + resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.25.2': + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.24.7': + resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.24.8': + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.25.0': + resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.25.0': + resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.24.8': + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.25.0': + resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.25.0': + resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.25.3': + resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3': + resolution: {integrity: sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0': + resolution: {integrity: sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0': + resolution: {integrity: sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7': + resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0': + resolution: {integrity: sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-async-generator-functions@7.20.7': + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-class-properties@7.18.6': + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-decorators@7.24.7': + resolution: {integrity: sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-export-default-from@7.24.7': + resolution: {integrity: sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-logical-assignment-operators@7.20.7': + resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-numeric-separator@7.18.6': + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-object-rest-spread@7.20.7': + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-optional-catch-binding@7.18.6': + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-optional-chaining@7.21.0': + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.24.7': + resolution: {integrity: sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-dynamic-import@7.8.3': + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-export-default-from@7.24.7': + resolution: {integrity: sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-export-namespace-from@7.8.3': + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-flow@7.24.7': + resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.24.7': + resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.24.7': + resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.24.7': + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.24.7': + resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.25.0': + resolution: {integrity: sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.24.7': + resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.24.7': + resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.25.0': + resolution: {integrity: sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.24.7': + resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.24.7': + resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.25.0': + resolution: {integrity: sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.24.7': + resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.24.8': + resolution: {integrity: sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.24.7': + resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.24.7': + resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0': + resolution: {integrity: sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.24.7': + resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.24.7': + resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.24.7': + resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-flow-strip-types@7.25.2': + resolution: {integrity: sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.24.7': + resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.25.1': + resolution: {integrity: sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.24.7': + resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.25.2': + resolution: {integrity: sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.24.7': + resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.24.7': + resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.24.7': + resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.24.8': + resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.25.0': + resolution: {integrity: sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.24.7': + resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.24.7': + resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.24.7': + resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7': + resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.24.7': + resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.24.7': + resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.24.7': + resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.24.7': + resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.24.8': + resolution: {integrity: sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.24.7': + resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.24.7': + resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.24.7': + resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.24.7': + resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-display-name@7.24.7': + resolution: {integrity: sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-development@7.24.7': + resolution: {integrity: sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.24.7': + resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.24.7': + resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx@7.25.2': + resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-pure-annotations@7.24.7': + resolution: {integrity: sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.24.7': + resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-reserved-words@7.24.7': + resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-runtime@7.24.7': + resolution: {integrity: sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.24.7': + resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.24.7': + resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.24.7': + resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.24.7': + resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.24.8': + resolution: {integrity: sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.25.2': + resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.24.7': + resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.24.7': + resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.24.7': + resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.24.7': + resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.25.3': + resolution: {integrity: sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-flow@7.24.7': + resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/preset-react@7.24.7': + resolution: {integrity: sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.24.7': + resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/register@7.24.6': + resolution: {integrity: sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/regjsgen@0.8.0': + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + + '@babel/runtime-corejs3@7.25.0': + resolution: {integrity: sha512-BOehWE7MgQ8W8Qn0CQnMtg2tHPHPulcS/5AVpFvs2KCK1ET+0WqZqPvnpRpFN81gYoFopdIEJX9Sgjw3ZBccPg==} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.25.0': + resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.3': + resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.2': + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@craftzdog/react-native-buffer@6.0.5': + resolution: {integrity: sha512-Av+YqfwA9e7jhgI9GFE/gTpwl/H+dRRLmZyJPOpKTy107j9Oj7oXlm3/YiMNz+C/CEGqcKAOqnXDLs4OL6AAFw==} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@egjs/hammerjs@2.0.17': + resolution: {integrity: sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==} + engines: {node: '>=0.8.0'} + + '@emotion/is-prop-valid@0.8.8': + resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} + + '@emotion/memoize@0.7.4': + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.23.0': + resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.23.0': + resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.23.0': + resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.23.0': + resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.23.0': + resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.0': + resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.23.0': + resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.0': + resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.23.0': + resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.23.0': + resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.23.0': + resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.23.0': + resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.23.0': + resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.23.0': + resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.0': + resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.23.0': + resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.23.0': + resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.23.0': + resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.0': + resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.0': + resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.23.0': + resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.23.0': + resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.23.0': + resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.23.0': + resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.0': + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@expo/bunyan@4.0.1': + resolution: {integrity: sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==} + engines: {node: '>=0.10.0'} + + '@expo/cli@0.18.28': + resolution: {integrity: sha512-fvbVPId6s6etindzP6Nzos/CS1NurMVy4JKozjebArHr63tBid5i/UY5Pp+4wTCAM20gB2SjRdwcwoL6HFC4Iw==} + hasBin: true + + '@expo/code-signing-certificates@0.0.5': + resolution: {integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==} + + '@expo/config-plugins@8.0.8': + resolution: {integrity: sha512-Fvu6IO13EUw0R9WeqxUO37FkM62YJBNcZb9DyJAOgMz7Ez/vaKQGEjKt9cwT+Q6uirtCATMgaq6VWAW7YW8xXw==} + + '@expo/config-types@51.0.2': + resolution: {integrity: sha512-IglkIoiDwJMY01lYkF/ZSBoe/5cR+O3+Gx6fpLFjLfgZGBTdyPkKa1g8NWoWQCk+D3cKL2MDbszT2DyRRB0YqQ==} + + '@expo/config@9.0.3': + resolution: {integrity: sha512-eOTNM8eOC8gZNHgenySRlc/lwmYY1NOgvjwA8LHuvPT7/eUwD93zrxu3lPD1Cc/P6C/2BcVdfH4hf0tLmDxnsg==} + + '@expo/devcert@1.1.4': + resolution: {integrity: sha512-fqBODr8c72+gBSX5Ty3SIzaY4bXainlpab78+vEYEKL3fXmsOswMLf0+KE36mUEAa36BYabX7K3EiXOXX5OPMw==} + + '@expo/env@0.3.0': + resolution: {integrity: sha512-OtB9XVHWaXidLbHvrVDeeXa09yvTl3+IQN884sO6PhIi2/StXfgSH/9zC7IvzrDB8kW3EBJ1PPLuCUJ2hxAT7Q==} + + '@expo/image-utils@0.5.1': + resolution: {integrity: sha512-U/GsFfFox88lXULmFJ9Shfl2aQGcwoKPF7fawSCLixIKtMCpsI+1r0h+5i0nQnmt9tHuzXZDL8+Dg1z6OhkI9A==} + + '@expo/json-file@8.3.3': + resolution: {integrity: sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==} + + '@expo/metro-config@0.18.11': + resolution: {integrity: sha512-/uOq55VbSf9yMbUO1BudkUM2SsGW1c5hr9BnhIqYqcsFv0Jp5D3DtJ4rljDKaUeNLbwr6m7pqIrkSMq5NrYf4Q==} + + '@expo/metro-runtime@3.2.1': + resolution: {integrity: sha512-L7xNo5SmK+rcuXDm/+VBBImpA7FZsVB+m/rNr3fNl5or+1+yrZe99ViF7LZ8DOoVqAqcb4aCAXvGrP2JNYo1/Q==} + peerDependencies: + react-native: '*' + + '@expo/osascript@2.1.3': + resolution: {integrity: sha512-aOEkhPzDsaAfolSswObGiYW0Pf0ROfR9J2NBRLQACdQ6uJlyAMiPF45DVEVknAU9juKh0y8ZyvC9LXqLEJYohA==} + engines: {node: '>=12'} + + '@expo/package-manager@1.5.2': + resolution: {integrity: sha512-IuA9XtGBilce0q8cyxtWINqbzMB1Fia0Yrug/O53HNuRSwQguV/iqjV68bsa4z8mYerePhcFgtvISWLAlNEbUA==} + + '@expo/plist@0.1.3': + resolution: {integrity: sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==} + + '@expo/prebuild-config@7.0.6': + resolution: {integrity: sha512-Hts+iGBaG6OQ+N8IEMMgwQElzJeSTb7iUJ26xADEHkaexsucAK+V52dM8M4ceicvbZR9q8M+ebJEGj0MCNA3dQ==} + peerDependencies: + expo-modules-autolinking: '>=0.8.1' + + '@expo/prebuild-config@7.0.8': + resolution: {integrity: sha512-wH9NVg6HiwF5y9x0TxiMEeBF+ITPGDXy5/i6OUheSrKpPgb0lF1Mwzl/f2fLPXBEpl+ZXOQ8LlLW32b7K9lrNg==} + peerDependencies: + expo-modules-autolinking: '>=0.8.1' + + '@expo/rudder-sdk-node@1.1.1': + resolution: {integrity: sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==} + engines: {node: '>=12'} + + '@expo/sdk-runtime-versions@1.0.0': + resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} + + '@expo/server@0.4.4': + resolution: {integrity: sha512-q9ADBzMN5rZ/fgQ2mz5YIJuZ8gelQlhG2CQqToD+UvBLZvbaHCNxTTSs2KI1LzJvAaW5CWgWMatGvGF6iUQ0LA==} + + '@expo/spawn-async@1.7.2': + resolution: {integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==} + engines: {node: '>=12'} + + '@expo/vector-icons@14.0.2': + resolution: {integrity: sha512-70LpmXQu4xa8cMxjp1fydgRPsalefnHaXLzIwaHMEzcZhnyjw2acZz8azRrZOslPVAWlxItOa2Dd7WtD/kI+CA==} + + '@expo/xcpretty@4.3.1': + resolution: {integrity: sha512-sqXgo1SCv+j4VtYEwl/bukuOIBrVgx6euIoCat3Iyx5oeoXwEA2USCoeL0IPubflMxncA2INkqJ/Wr3NGrSgzw==} + hasBin: true + + '@floating-ui/core@1.6.7': + resolution: {integrity: sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==} + + '@floating-ui/dom@1.6.10': + resolution: {integrity: sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==} + + '@floating-ui/react-dom@2.1.1': + resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/react-native@0.10.6': + resolution: {integrity: sha512-/9tXRdwhPFUQhReb4XLWMClVDIi1620+pHDxfqPXXkRrH2cTIb9AJu3Cg7XszbXNArPdrPsB7OILrq92TOVVNg==} + peerDependencies: + react: '>=16.8.0' + react-native: '>=0.64.0' + + '@floating-ui/react@0.26.22': + resolution: {integrity: sha512-LNv4azPt8SpT4WW7Kku5JNVjLk2GcS0bGGjFTAgqOONRFo9r/aaGHHPpdiIuQbB1t8shmWyWqTTUDmZ9fcNshg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.7': + resolution: {integrity: sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==} + + '@graphql-typed-document-node/core@3.2.0': + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@hapi/hoek@9.3.0': + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + '@hapi/topo@5.1.0': + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@ianvs/prettier-plugin-sort-imports@4.3.1': + resolution: {integrity: sha512-ZHwbyjkANZOjaBm3ZosADD2OUYGFzQGxfy67HmGZU94mHqe7g1LCMA7YYKB1Cq+UTPCBqlAYapY0KXAjKEw8Sg==} + peerDependencies: + '@vue/compiler-sfc': 2.7.x || 3.x + prettier: 2 || 3 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/ttlcache@1.4.1': + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/create-cache-key-function@29.7.0': + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@26.6.2': + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@microsoft/api-extractor-model@7.28.13': + resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==} + + '@microsoft/api-extractor@7.43.0': + resolution: {integrity: sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==} + hasBin: true + + '@microsoft/tsdoc-config@0.16.2': + resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + + '@microsoft/tsdoc@0.14.2': + resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + + '@motionone/animation@10.18.0': + resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} + + '@motionone/dom@10.12.0': + resolution: {integrity: sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==} + + '@motionone/easing@10.18.0': + resolution: {integrity: sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==} + + '@motionone/generators@10.18.0': + resolution: {integrity: sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==} + + '@motionone/types@10.17.1': + resolution: {integrity: sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==} + + '@motionone/utils@10.18.0': + resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==} + + '@nabla/vite-plugin-eslint@2.0.4': + resolution: {integrity: sha512-hXLv7XPZLKP54AHLI6JzlCRYptf34rBmT1FyRBi++iN5ucjO7CEf5etV3DfQ2rfTpgMbY+3hoCAfwilA6lyWdw==} + peerDependencies: + eslint: ^8.45 || ^9 + vite: ^4 || ^5 + + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@npmcli/fs@3.1.1': + resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@octokit/auth-token@4.0.0': + resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} + engines: {node: '>= 18'} + + '@octokit/core@5.2.0': + resolution: {integrity: sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==} + engines: {node: '>= 18'} + + '@octokit/endpoint@9.0.5': + resolution: {integrity: sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==} + engines: {node: '>= 18'} + + '@octokit/graphql@7.1.0': + resolution: {integrity: sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==} + engines: {node: '>= 18'} + + '@octokit/openapi-types@22.2.0': + resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==} + + '@octokit/plugin-paginate-rest@11.3.1': + resolution: {integrity: sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '5' + + '@octokit/plugin-request-log@4.0.1': + resolution: {integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '5' + + '@octokit/plugin-rest-endpoint-methods@13.2.2': + resolution: {integrity: sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': ^5 + + '@octokit/request-error@5.1.0': + resolution: {integrity: sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==} + engines: {node: '>= 18'} + + '@octokit/request@8.4.0': + resolution: {integrity: sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==} + engines: {node: '>= 18'} + + '@octokit/rest@20.1.1': + resolution: {integrity: sha512-MB4AYDsM5jhIHro/dq4ix1iWTLGToIGk6cWF5L6vanFaMble5jTX/UBQyiv05HsWnwUtY8JrfHy2LWfKwihqMw==} + engines: {node: '>= 18'} + + '@octokit/types@13.5.0': + resolution: {integrity: sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@puppeteer/browsers@2.3.0': + resolution: {integrity: sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==} + engines: {node: '>=18'} + hasBin: true + + '@radix-ui/react-compose-refs@1.0.0': + resolution: {integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + + '@radix-ui/react-slot@1.0.1': + resolution: {integrity: sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==} + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + + '@react-native-anywhere/polyfill-base64@0.0.1-alpha.0': + resolution: {integrity: sha512-OF3idcETV622AyFvvK54ot2EG0G43tZTZJyWtFHtrEKUmoUvSuC5DOMeLino0TwBQJn2s26MBnIPVgokBJb/xw==} + + '@react-native-community/cli-clean@13.6.9': + resolution: {integrity: sha512-7Dj5+4p9JggxuVNOjPbduZBAP1SUgNhLKVw5noBUzT/3ZpUZkDM+RCSwyoyg8xKWoE4OrdUAXwAFlMcFDPKykA==} + + '@react-native-community/cli-config@13.6.9': + resolution: {integrity: sha512-rFfVBcNojcMm+KKHE/xqpqXg8HoKl4EC7bFHUrahMJ+y/tZll55+oX/PGG37rzB8QzP2UbMQ19DYQKC1G7kXeg==} + + '@react-native-community/cli-debugger-ui@13.6.9': + resolution: {integrity: sha512-TkN7IdFmGPPvTpAo3nCAH9uwGCPxWBEAwpqEZDrq0NWllI7Tdie8vDpGdrcuCcKalmhq6OYnkXzeBah7O1Ztpw==} + + '@react-native-community/cli-doctor@13.6.9': + resolution: {integrity: sha512-5quFaLdWFQB+677GXh5dGU9I5eg2z6Vg4jOX9vKnc9IffwyIFAyJfCZHrxLSRPDGNXD7biDQUdoezXYGwb6P/A==} + + '@react-native-community/cli-hermes@13.6.9': + resolution: {integrity: sha512-GvwiwgvFw4Ws+krg2+gYj8sR3g05evmNjAHkKIKMkDTJjZ8EdyxbkifRUs1ZCq3TMZy2oeblZBXCJVOH4W7ZbA==} + + '@react-native-community/cli-platform-android@13.6.9': + resolution: {integrity: sha512-9KsYGdr08QhdvT3Ht7e8phQB3gDX9Fs427NJe0xnoBh+PDPTI2BD5ks5ttsH8CzEw8/P6H8tJCHq6hf2nxd9cw==} + + '@react-native-community/cli-platform-apple@13.6.9': + resolution: {integrity: sha512-KoeIHfhxMhKXZPXmhQdl6EE+jGKWwoO9jUVWgBvibpVmsNjo7woaG/tfJMEWfWF3najX1EkQAoJWpCDBMYWtlA==} + + '@react-native-community/cli-platform-ios@13.6.9': + resolution: {integrity: sha512-CiUcHlGs8vE0CAB4oi1f+dzniqfGuhWPNrDvae2nm8dewlahTBwIcK5CawyGezjcJoeQhjBflh9vloska+nlnw==} + + '@react-native-community/cli-server-api@13.6.9': + resolution: {integrity: sha512-W8FSlCPWymO+tlQfM3E0JmM8Oei5HZsIk5S0COOl0MRi8h0NmHI4WSTF2GCfbFZkcr2VI/fRsocoN8Au4EZAug==} + + '@react-native-community/cli-tools@13.6.9': + resolution: {integrity: sha512-OXaSjoN0mZVw3nrAwcY1PC0uMfyTd9fz7Cy06dh+EJc+h0wikABsVRzV8cIOPrVV+PPEEXE0DBrH20T2puZzgQ==} + + '@react-native-community/cli-types@13.6.9': + resolution: {integrity: sha512-RLxDppvRxXfs3hxceW/mShi+6o5yS+kFPnPqZTaMKKR5aSg7LwDpLQW4K2D22irEG8e6RKDkZUeH9aL3vO2O0w==} + + '@react-native-community/cli@13.6.9': + resolution: {integrity: sha512-hFJL4cgLPxncJJd/epQ4dHnMg5Jy/7Q56jFvA3MHViuKpzzfTCJCB+pGY54maZbtym53UJON9WTGpM3S81UfjQ==} + engines: {node: '>=18'} + hasBin: true + + '@react-native/assets-registry@0.74.87': + resolution: {integrity: sha512-1XmRhqQchN+pXPKEKYdpJlwESxVomJOxtEnIkbo7GAlaN2sym84fHEGDXAjLilih5GVPpcpSmFzTy8jx3LtaFg==} + engines: {node: '>=18'} + + '@react-native/babel-plugin-codegen@0.74.87': + resolution: {integrity: sha512-+vJYpMnENFrwtgvDfUj+CtVJRJuUnzAUYT0/Pb68Sq9RfcZ5xdcCuUgyf7JO+akW2VTBoJY427wkcxU30qrWWw==} + engines: {node: '>=18'} + + '@react-native/babel-preset@0.74.87': + resolution: {integrity: sha512-hyKpfqzN2nxZmYYJ0tQIHG99FQO0OWXp/gVggAfEUgiT+yNKas1C60LuofUsK7cd+2o9jrpqgqW4WzEDZoBlTg==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + + '@react-native/codegen@0.74.87': + resolution: {integrity: sha512-GMSYDiD+86zLKgMMgz9z0k6FxmRn+z6cimYZKkucW4soGbxWsbjUAZoZ56sJwt2FJ3XVRgXCrnOCgXoH/Bkhcg==} + engines: {node: '>=18'} + peerDependencies: + '@babel/preset-env': ^7.1.6 + + '@react-native/community-cli-plugin@0.74.87': + resolution: {integrity: sha512-EgJG9lSr8x3X67dHQKQvU6EkO+3ksVlJHYIVv6U/AmW9dN80BEFxgYbSJ7icXS4wri7m4kHdgeq2PQ7/3vvrTQ==} + engines: {node: '>=18'} + + '@react-native/debugger-frontend@0.74.85': + resolution: {integrity: sha512-gUIhhpsYLUTYWlWw4vGztyHaX/kNlgVspSvKe2XaPA7o3jYKUoNLc3Ov7u70u/MBWfKdcEffWq44eSe3j3s5JQ==} + engines: {node: '>=18'} + + '@react-native/debugger-frontend@0.74.87': + resolution: {integrity: sha512-MN95DJLYTv4EqJc+9JajA3AJZSBYJz2QEJ3uWlHrOky2vKrbbRVaW1ityTmaZa2OXIvNc6CZwSRSE7xCoHbXhQ==} + engines: {node: '>=18'} + + '@react-native/dev-middleware@0.74.85': + resolution: {integrity: sha512-BRmgCK5vnMmHaKRO+h8PKJmHHH3E6JFuerrcfE3wG2eZ1bcSr+QTu8DAlpxsDWvJvHpCi8tRJGauxd+Ssj/c7w==} + engines: {node: '>=18'} + + '@react-native/dev-middleware@0.74.87': + resolution: {integrity: sha512-7TmZ3hTHwooYgIHqc/z87BMe1ryrIqAUi+AF7vsD+EHCGxHFdMjSpf1BZ2SUPXuLnF2cTiTfV2RwhbPzx0tYIA==} + engines: {node: '>=18'} + + '@react-native/gradle-plugin@0.74.87': + resolution: {integrity: sha512-T+VX0N1qP+U9V4oAtn7FTX7pfsoVkd1ocyw9swYXgJqU2fK7hC9famW7b3s3ZiufPGPr1VPJe2TVGtSopBjL6A==} + engines: {node: '>=18'} + + '@react-native/js-polyfills@0.74.87': + resolution: {integrity: sha512-M5Evdn76CuVEF0GsaXiGi95CBZ4IWubHqwXxV9vG9CC9kq0PSkoM2Pn7Lx7dgyp4vT7ccJ8a3IwHbe+5KJRnpw==} + engines: {node: '>=18'} + + '@react-native/metro-babel-transformer@0.74.87': + resolution: {integrity: sha512-UsJCO24sNax2NSPBmV1zLEVVNkS88kcgAiYrZHtYSwSjpl4WZ656tIeedBfiySdJ94Hr3kQmBYLipV5zk0NI1A==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + + '@react-native/normalize-color@2.1.0': + resolution: {integrity: sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA==} + + '@react-native/normalize-colors@0.74.84': + resolution: {integrity: sha512-Y5W6x8cC5RuakUcTVUFNAIhUZ/tYpuqHZlRBoAuakrTwVuoNHXfQki8lj1KsYU7rW6e3VWgdEx33AfOQpdNp6A==} + + '@react-native/normalize-colors@0.74.85': + resolution: {integrity: sha512-pcE4i0X7y3hsAE0SpIl7t6dUc0B0NZLd1yv7ssm4FrLhWG+CGyIq4eFDXpmPU1XHmL5PPySxTAjEMiwv6tAmOw==} + + '@react-native/normalize-colors@0.74.87': + resolution: {integrity: sha512-Xh7Nyk/MPefkb0Itl5Z+3oOobeG9lfLb7ZOY2DKpFnoCE1TzBmib9vMNdFaLdSxLIP+Ec6icgKtdzYg8QUPYzA==} + + '@react-native/virtualized-lists@0.74.87': + resolution: {integrity: sha512-lsGxoFMb0lyK/MiplNKJpD+A1EoEUumkLrCjH4Ht+ZlG8S0BfCxmskLZ6qXn3BiDSkLjfjI/qyZ3pnxNBvkXpQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': ^18.2.6 + react: '*' + react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true + + '@react-navigation/bottom-tabs@6.5.20': + resolution: {integrity: sha512-ow6Z06iS4VqBO8d7FP+HsGjJLWt2xTWIvuWjpoCvsM/uQXzCRDIjBv9HaKcXbF0yTW7IMir0oDAbU5PFzEDdgA==} + peerDependencies: + '@react-navigation/native': ^6.0.0 + react: '*' + react-native: '*' + react-native-safe-area-context: '>= 3.0.0' + react-native-screens: '>= 3.0.0' + + '@react-navigation/core@6.4.17': + resolution: {integrity: sha512-Nd76EpomzChWAosGqWOYE3ItayhDzIEzzZsT7PfGcRFDgW5miHV2t4MZcq9YIK4tzxZjVVpYbIynOOQQd1e0Cg==} + peerDependencies: + react: '*' + + '@react-navigation/elements@1.3.31': + resolution: {integrity: sha512-bUzP4Awlljx5RKEExw8WYtif8EuQni2glDaieYROKTnaxsu9kEIA515sXQgUDZU4Ob12VoL7+z70uO3qrlfXcQ==} + peerDependencies: + '@react-navigation/native': ^6.0.0 + react: '*' + react-native: '*' + react-native-safe-area-context: '>= 3.0.0' + + '@react-navigation/native-stack@6.9.26': + resolution: {integrity: sha512-++dueQ+FDj2XkZ902DVrK79ub1vp19nSdAZWxKRgd6+Bc0Niiesua6rMCqymYOVaYh+dagwkA9r00bpt/U5WLw==} + peerDependencies: + '@react-navigation/native': ^6.0.0 + react: '*' + react-native: '*' + react-native-safe-area-context: '>= 3.0.0' + react-native-screens: '>= 3.0.0' + + '@react-navigation/native@6.1.18': + resolution: {integrity: sha512-mIT9MiL/vMm4eirLcmw2h6h/Nm5FICtnYSdohq4vTLA2FF/6PNhByM7s8ffqoVfE5L0uAa6Xda1B7oddolUiGg==} + peerDependencies: + react: '*' + react-native: '*' + + '@react-navigation/routers@6.1.9': + resolution: {integrity: sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA==} + + '@remix-run/node@2.11.1': + resolution: {integrity: sha512-KCQPLSd5Y3OLCoJUQxxTGswALL1gZ+OgL3bf2ap6kITIp1AUZz3T4jqCNVVyWllVAU9gpCtrONaI+SiWf+8b2w==} + engines: {node: '>=18.0.0'} + peerDependencies: + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true + + '@remix-run/router@1.19.0': + resolution: {integrity: sha512-zDICCLKEwbVYTS6TjYaWtHXxkdoUvD/QXvyVZjGCsWz5vyH7aFeONlPffPdW+Y/t6KT0MgXb2Mfjun9YpWN1dA==} + engines: {node: '>=14.0.0'} + + '@remix-run/server-runtime@2.11.1': + resolution: {integrity: sha512-j3AlrZul0javvPR6ZWdN32/l12t1E90sLeZI/k+4HpT0ifjqJVg8uG6alRJ0LLN9ae5BERYEslUebUqdfejSkQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true + + '@remix-run/web-blob@3.1.0': + resolution: {integrity: sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==} + + '@remix-run/web-fetch@4.4.2': + resolution: {integrity: sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==} + engines: {node: ^10.17 || >=12.3} + + '@remix-run/web-file@3.1.0': + resolution: {integrity: sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==} + + '@remix-run/web-form-data@3.1.0': + resolution: {integrity: sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==} + + '@remix-run/web-stream@1.1.0': + resolution: {integrity: sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==} + + '@rnx-kit/chromium-edge-launcher@1.0.0': + resolution: {integrity: sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==} + engines: {node: '>=14.15'} + + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.20.0': + resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.20.0': + resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.20.0': + resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.20.0': + resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.20.0': + resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.20.0': + resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.20.0': + resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.20.0': + resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': + resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.20.0': + resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.20.0': + resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.20.0': + resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.20.0': + resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.20.0': + resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.20.0': + resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.20.0': + resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==} + cpu: [x64] + os: [win32] + + '@rushstack/node-core-library@4.0.2': + resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/rig-package@0.5.2': + resolution: {integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==} + + '@rushstack/terminal@0.10.0': + resolution: {integrity: sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/ts-command-line@4.19.1': + resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==} + + '@salihgun/react-native-video-processor@0.3.1': + resolution: {integrity: sha512-LBHmH7dp+gxaXZFaVc+OXwLxhHI/zrqyPO7Y7e0NL0k7/hG3ern/y7T4jlSl8lLjz20nqi1BU3sIE+QBEqNJxg==} + peerDependencies: + ffmpeg-kit-react-native: ^5.1.0 + react: '*' + react-native: '*' + react-native-video: ^5.2.1 + + '@scure/base@1.1.7': + resolution: {integrity: sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==} + + '@scure/bip39@1.3.0': + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + + '@segment/loosely-validate-event@2.0.0': + resolution: {integrity: sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==} + + '@sideway/address@4.1.5': + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + + '@sideway/formula@3.0.1': + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + '@sideway/pinpoint@2.0.0': + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@swc/core-darwin-arm64@1.7.10': + resolution: {integrity: sha512-TYp4x/9w/C/yMU1olK5hTKq/Hi7BjG71UJ4V1U1WxI1JA3uokjQ/GoktDfmH5V5pX4dgGSOJwUe2RjoN8Z/XnA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.7.10': + resolution: {integrity: sha512-P3LJjAWh5yLc6p5IUwV5LgRfA3R1oDCZDMabYyb2BVQuJTD4MfegW9DhBcUUF5dhBLwq3191KpLVzE+dLTbiXw==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.7.10': + resolution: {integrity: sha512-yGOFjE7w/akRTmqGY3FvWYrqbxO7OB2N2FHj2LO5HtzXflfoABb5RyRvdEquX+17J6mEpu4EwjYNraTD/WHIEQ==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.7.10': + resolution: {integrity: sha512-SPWsgWHfdWKKjLrYlvhxcdBJ7Ruy6crJbPoE9NfD95eJEjMnS2yZTqj2ChFsY737WeyhWYlHzgYhYOVCp83YwQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.7.10': + resolution: {integrity: sha512-PUi50bkNqnBL3Z/Zq6jSfwgN9A/taA6u2Zou0tjDJi7oVdpjdr7SxNgCGzMJ/nNg5D/IQn1opM1jktMvpsPAuQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.7.10': + resolution: {integrity: sha512-Sc+pY55gknCAmBQBR6DhlA7jZSxHaLSDb5Sevzi6DOFMXR79NpA6zWTNKwp1GK2AnRIkbAfvYLgOxS5uWTFVpg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.7.10': + resolution: {integrity: sha512-g5NKx2LXaGd0K26hmEts1Cvb7ptIvq3MHSgr6/D1tRPcDZw1Sp0dYsmyOv0ho4F5GOJyiCooG3oE9FXdb7jIpQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.7.10': + resolution: {integrity: sha512-plRIsOcfy9t9Q/ivm5DA7I0HaIvfAWPbI+bvVRrr3C/1K2CSqnqZJjEWOAmx2LiyipijNnEaFYuLBp0IkGuJpg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.7.10': + resolution: {integrity: sha512-GntrVNT23viHtbfzmlK8lfBiKeajH24GzbDT7qXhnoO20suUPcyYZxyvCb4gWM2zu8ZBTPHNlqfrNsriQCZ+lQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.7.10': + resolution: {integrity: sha512-uXIF8GuSappe1imm6Lf7pHGepfCBjDQlS+qTqvEGE0wZAsL1IVATK9P/cH/OCLfJXeQDTLeSYmrpwjtXNt46tQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.7.10': + resolution: {integrity: sha512-l0xrFwBQ9atizhmV94yC2nwcecTk/oftofwMNPiFMGe56dqdmi2ArHaTV3PCtMlgaUH6rGCehoRMt5OrCI1ktg==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.12': + resolution: {integrity: sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==} + + '@swc/types@0.1.12': + resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} + + '@tamagui/accordion@1.108.3': + resolution: {integrity: sha512-BZTzFWj9Tq1hG9xJA8S4xbPt2vEE37DVe3v4sA35RD4i9HCA82vyR+uPsfAxIbAAdmet+1AkMoUbpW0f378JZg==} + peerDependencies: + react: '*' + + '@tamagui/adapt@1.108.3': + resolution: {integrity: sha512-wUOdwkwFzfrVCsSsbRWZrF0M926NJvaxXk085gxR4bzx4PnZ3iGX8GuNvwX6rG3LCP4ljSDNy/ihZlmmQTms4Q==} + + '@tamagui/alert-dialog@1.108.3': + resolution: {integrity: sha512-DMKHbwNVN4xMg86eDEtlTDVXeKiLYcXInDCLuwYs42kE+xG6mCpF60aXnLZfniN/H0zQlZGfdjgpgLrN7TRSfQ==} + peerDependencies: + react: '*' + + '@tamagui/animate-presence@1.108.3': + resolution: {integrity: sha512-wufxg9SClAlFngPsnumzuHq+JrYqtF0EN+r5fhDFzwZzsQorWD/R8TVe3tvlgTiLv6wvWZC53u8IUNF+mVKMUw==} + + '@tamagui/animate@1.108.3': + resolution: {integrity: sha512-jm/k8OBQhEb3B7zXQNbYnCer3GAMoDbty2NYhkZWCd2TKaX8TBwqOt9C+ENsji3kXtVE212C5jw25+7qbBJoUQ==} + + '@tamagui/animations-css@1.108.3': + resolution: {integrity: sha512-Cnj3p9PiJq5yJDw5nbFbwTa+9ARLqAZ4Cp0zFUGKMRZa2YDM/gKZWcrE9vba1m0FGv0rqhSBUyj26O7Kw5WNHw==} + peerDependencies: + react: '*' + + '@tamagui/animations-moti@1.108.3': + resolution: {integrity: sha512-rcajrx2RIxmi7BHL71ZZpGSIyj6T2KgcnqjG83BB7xYgdHhfHgj6Png5tYjGLCsRsD8syD6LKuReKq9XrZNSaQ==} + peerDependencies: + moti: '*' + react: '*' + + '@tamagui/animations-react-native@1.108.3': + resolution: {integrity: sha512-b1D8qJHc1Wb0Sn45HqkjAujxCfadf9Zesurt9v0lD9R4uPYld93gmSyiqx3U7MjkkypGcJW5op1LindF5o69jg==} + peerDependencies: + react: '*' + + '@tamagui/aria-hidden@1.108.3': + resolution: {integrity: sha512-fjeBAtrmBSR5MHM1T7FaO1HTwZW9xiA3VwbDR4abBY3XXLbdek/db42DDIObQjPKEp6sbAUpejVFfdwKvkaqwQ==} + peerDependencies: + react: '*' + + '@tamagui/avatar@1.108.3': + resolution: {integrity: sha512-XY1hU1zvEV41n+5o1HycgaR7VRtsjhurPoKlgBg9YL3vxP7FWVv1ARJqbVUVZe7eZLdQ239KDpx3NUxR+/Ok0g==} + peerDependencies: + react: '*' + + '@tamagui/babel-plugin-fully-specified@1.108.3': + resolution: {integrity: sha512-1BXDL+y1mJ65mUXq+HxZqwvEvtOXhjd9hmfPRerb7O9d4mcfEvMJarLBZTg99lVXC39l/nI0ZVIZDnhWeEMKpA==} + + '@tamagui/babel-plugin@1.108.3': + resolution: {integrity: sha512-QWTjFZtpqdGFB6qkMK9aL+CMbnwZVscDH1bXGRYdyVxgJuO9c5p3Nmgt7watyj1v+nJ6icD9ntf3Ka438Q2eJQ==} + + '@tamagui/build@1.108.3': + resolution: {integrity: sha512-kNFwpXQX1MD6VqIWAaERu7GneY3/1LETH0IyA3DMet5NhnNpJn43WRdJ9QITFRnEwd80YPOXcc+lmbPpHVQbVA==} + hasBin: true + + '@tamagui/button@1.108.3': + resolution: {integrity: sha512-GR31p7+CbPhHAoEeFh6cyPGt3TAA2el5a9gSdbLNp10rdLbo/bYdk2vdOxaFZaXcV0fgX1cZt72Y7rhlOO0fQQ==} + peerDependencies: + react: '*' + + '@tamagui/card@1.108.3': + resolution: {integrity: sha512-yZ2vKWvHSsMXBOVRZbMxDvb5XM+wfp5TnKk8hBabT0bnpGfJgYWO/qC6dV+zyio3YSeDp89vPtRirtxXHkXogw==} + peerDependencies: + react: '*' + + '@tamagui/checkbox-headless@1.108.3': + resolution: {integrity: sha512-H4p1rxPbBmlTDKW0kvOclbnpjHg9+RiNiviWFnJoZtSZ8gIpBXi53uKzWCpNkISMDgX89FM5jVgm0ATMW/V/NQ==} + peerDependencies: + react: '*' + + '@tamagui/checkbox@1.108.3': + resolution: {integrity: sha512-qo+zFsDB6S7w/A1y/mmSQqc+I60tTYfUm/qRiSunFYpdtdo6fSaoXopRx+hXwFrHgMuph/iedcNHaFbRDCxWpw==} + peerDependencies: + react: '*' + + '@tamagui/cli-color@1.108.3': + resolution: {integrity: sha512-ipY167e3YkOxUTljdQ3otU39o6YB8iCAzR98n24D+qrgQSDgBZetdz1/xUzxScOxJNWmkmePKaRRPHH8IvtD4A==} + + '@tamagui/collapsible@1.108.3': + resolution: {integrity: sha512-LNJuZv3gtd37TvvkwDooV96G/bRhZYco5lBzoAROCXFUgGYxpw8l2lto4Ymi3PPUfcwpOAUeKSAUHBW4YiD6hA==} + peerDependencies: + react: '*' + + '@tamagui/collection@1.108.3': + resolution: {integrity: sha512-nGSFYOoLYCg9p7UGz4bgBLy849bCBPlTdXWgXq43pmHCuYIUBPhmpTQ2mDJNQDAUBJShtNc2QILyqC5OCNgYYA==} + peerDependencies: + react: '*' + + '@tamagui/colors@1.108.3': + resolution: {integrity: sha512-qxoRqv6hCvan0WKAYmnqKasoN/iodp7gIanI6dnF6bPpN194igU5fxdcJyomhqY65fAtx0DRZCuixBkz/Q0a/g==} + + '@tamagui/compose-refs@1.108.3': + resolution: {integrity: sha512-3PhDjZl4/tYE+0i/4AR6rWQRZAKVvx79ZVOEPYdZ94wWNQONYWGuVG6XzRqJ84brjXJFXcG2se2/U+bEH5AE5g==} + peerDependencies: + react: '*' + + '@tamagui/config-default@1.108.3': + resolution: {integrity: sha512-QFyGmZes3Wd/gmXHyd3s2bz18rfVf/FiRCTekcaH9KDl15ZJXAy74SZQKyApbSH0keKUpS2QHSy49z4XcR8vmg==} + + '@tamagui/config@1.108.3': + resolution: {integrity: sha512-1HQSc/0lKPS5o4NVkx7QbCDyVQZPkDAwhkl6rCW3tAvMBFNKFRgIWs7/uri5FjjkuLEvxJ5BL3jF1cO1yRvH+g==} + + '@tamagui/constants@1.108.3': + resolution: {integrity: sha512-2NtkGx5tYnt/VNA6KnPJpRyNgwXV5nx2U991w4X13gTYwebjz9keVKkZnTGAaehnZIxySspQ/7fjPknoqndK1w==} + peerDependencies: + react: '*' + + '@tamagui/core@1.108.3': + resolution: {integrity: sha512-xiHyupGbywCNzMaiui851Gf+Dx+NodeQ5XM9hEzv+ILqDf8DpbuLKbwmz8jC7GRebWacyu/z5e8Si65QKd/pag==} + + '@tamagui/create-context@1.108.3': + resolution: {integrity: sha512-CxJSjyLtTmbTfEkyZv/xnCSi/j7ptTSabLQMqZGeaJ6BK2YsHnlZLX2QervwFLHhyMbnPCGdDsXgM9nvHG5+4w==} + peerDependencies: + react: '*' + + '@tamagui/create-theme@1.108.3': + resolution: {integrity: sha512-mqwi4MrUW6kz6AZrS+jWNbDxHhfT4XqzMnpGaRianWhNr6+b4IoJ4rvA5keh92zI5v1/+RXZBUZg3SVLtvIGHg==} + + '@tamagui/cubic-bezier-animator@1.108.3': + resolution: {integrity: sha512-G6XdqMrj69XQ3U8hfYxzvm4792irNaVTr9ViZWBWtsytO9EGRJSZ85wh0l3TPrTW2a+lXxoKWTyC38oenPBNyQ==} + + '@tamagui/dialog@1.108.3': + resolution: {integrity: sha512-+Fa6D0qpMm6OXHwWeFl412HG+LuuRoFFO6ogAwH3iVulu32aW63AVR1jUQkPhqD7l9wLsEjwlVbEAviWqtinWw==} + peerDependencies: + react: '*' + + '@tamagui/dismissable@1.108.3': + resolution: {integrity: sha512-9lP5qbodRVKl+qEfp4LVnO3izfCWLo4ITt5kXUBCZO/MxEtfNy2eMO/1jxVNZhxzzh7cGhWWUYtIpu71F8dTuQ==} + peerDependencies: + react: '*' + + '@tamagui/elements@1.108.3': + resolution: {integrity: sha512-Ee4a1ApG/RnJnPiy0ZeTT70IAxi+0nbsoW9a1Za9Dj0rXFeP8CArwYQ0OF6fXw3D1rQPNzNLNRumOhCV3/KVRg==} + peerDependencies: + react: '*' + + '@tamagui/fake-react-native@1.108.3': + resolution: {integrity: sha512-oC7nqOCz36k7AU4690jD/2yb4h3Q16lkrj21Rx6fnbsPohNYJP2hsbXn2rKjoPxaR4TNnoZnnEvHEJZT/w+yRQ==} + + '@tamagui/floating@1.108.3': + resolution: {integrity: sha512-r3izOth5BnH1JBS4kRoZfOapJRJwnc1YG/6mpaHHvF1JhpbfjzHZZycNOf0Ny/9PbR2pr3Ou/K4CseOS35vEug==} + peerDependencies: + react: '*' + + '@tamagui/focus-scope@1.108.3': + resolution: {integrity: sha512-QScsh2aP0gMA7ClTH+JFbMFGTfzPezFd4+BlvdYTnfzK2jDczeB8YNXSBIvlZUHuLrnLZspItWjstVyO7UD8ew==} + peerDependencies: + react: '*' + + '@tamagui/focusable@1.108.3': + resolution: {integrity: sha512-b11P9KhvKE48/sbS/8vBWU8qyBi2VnHF8nX4SIgxabEsdanb3b4mSqwLhFpjICxhV2KLNK4wQAYZmG8k6aSoeA==} + peerDependencies: + react: '*' + + '@tamagui/font-inter@1.108.3': + resolution: {integrity: sha512-JLIW2FWsmyKKZIN8c9Q0b6VDai94AabioochYgYTNOzd9VESoNRqLfVcLFv+nRX9isc04SmhhN2BmPTiIsjuEg==} + + '@tamagui/font-silkscreen@1.108.3': + resolution: {integrity: sha512-/M/TW4V1n/yeT8eroGVMw2BK8ruM+Af9pYzZ0SdWhzcOEoexyQmfdqPWeC1gswRB3aZb3VsjKTEzNFEnN90o2w==} + + '@tamagui/font-size@1.108.3': + resolution: {integrity: sha512-/EwoxJ93QTvrYiHiSjviqudFyy2Na1R9LFFAFkW/v9Kb79+ADAmJId+FdLCqOku5J3TDhoyGuBPnKzpNKUOUtg==} + peerDependencies: + react: '*' + + '@tamagui/form@1.108.3': + resolution: {integrity: sha512-DQjCi3urB72kHEZTQcFbduRalmvErZEYHuQjWK5hkafKmIv7UzxUxZO5P5I+t8E4KUFTyT/oaS6mSf/uch7yGQ==} + peerDependencies: + react: '*' + + '@tamagui/generate-themes@1.108.3': + resolution: {integrity: sha512-bb82CO6WDuFtaWCbGt8bR31ZJK1D+qN28vCSAx6a3i2yZFbl1HR6nGP4pGsnOn9QvWo0L5tXDec/A1mFA+65Tg==} + + '@tamagui/get-button-sized@1.108.3': + resolution: {integrity: sha512-C8zMmiEsr1Ve7MR4Z3/Xx1B7arWloKoFU7ny7p3JT1fLVXco8ISw5XlOh+ZmaHhRr21xMwNJbIzSGKHtpNIX5w==} + peerDependencies: + react: '*' + + '@tamagui/get-font-sized@1.108.3': + resolution: {integrity: sha512-DEQbKxVghLMJOpOOemtEXa+n6KkL9gHbLHRKH1XwSUzhi9FXid5PhgJl48Kq7FpVo1eIyf/tHYquqD+Hcz/H6Q==} + peerDependencies: + react: '*' + + '@tamagui/get-token@1.108.3': + resolution: {integrity: sha512-cGqutxm3BG+70wmBO1WSVPR5crgdK9+lDHJ0YETtZIThkxekOVc1QNxRa0Rin0Bk6YT6u3SIAzjnoFjiinozzA==} + peerDependencies: + react: '*' + + '@tamagui/group@1.108.3': + resolution: {integrity: sha512-4xsfvofdmWl/y/Rkij7EnxuVk6WCKCPZeiXNLBBaPFe3pcOL9QoBNygI+Yficj5VjhVS2cbI0qNbj1C0Ei2nag==} + peerDependencies: + react: '*' + + '@tamagui/helpers-node@1.108.3': + resolution: {integrity: sha512-tCLF1th1XVsgPYUkbc8npUu/dqah6UrA5er2K6lKO8ijVBAesGQFQfw4r7KpeHTWsewKUPJFSauMSTGAwr6QQA==} + + '@tamagui/helpers-tamagui@1.108.3': + resolution: {integrity: sha512-LhBHZvrU0lAoTMVRgUVpYiAv/8xXRpUxF7U25yeDyNbwKO6Vtu1+7cVBo1lgURynKOGsgI5KfAkyy9Q0YQyavQ==} + peerDependencies: + react: '*' + + '@tamagui/helpers@1.108.3': + resolution: {integrity: sha512-I/s1SBAmons5rZ33LejFNVJ148H6KaUoLWaF7Fz2z+xGjsPKbv7LLzfHOLVty2nQtVOeVvA/csSjjajgaFvxLA==} + + '@tamagui/image@1.108.3': + resolution: {integrity: sha512-9CgQlUe9KH+Jcjr9p6n8CkVhtrpmRpDzY6AAdEhYAiXjBK3tUs/eQLaeU+gIo05b2LYBl3Hb7YMq+HthTRRhGw==} + peerDependencies: + react: '*' + + '@tamagui/label@1.108.3': + resolution: {integrity: sha512-6LKJUY3PKEAU0rcOixGVUhXGGkYFH+1conMDzB+P1robLS3z7OqXnpyByGBpqmL/6QhuL9FpUUj123Yg7OSCGQ==} + peerDependencies: + react: '*' + react-native: '*' + + '@tamagui/linear-gradient@1.108.3': + resolution: {integrity: sha512-QMuAzedefmhTOjmsykg6jSSnz4V9yyRfNUDpWOIxb9RPkNiDTGhUy6FJ/YuTjFF+S9MxW1ikrFMyAtik46r0zw==} + peerDependencies: + react: '*' + + '@tamagui/list-item@1.108.3': + resolution: {integrity: sha512-YnOjNRiOx4grW7k3qD4VQcSrSxPCzD9y4tY6uZC7Nrl1og5cm0zi0UQaMJQqfyTVZQGV5UBGHh6zhaG8h84TlQ==} + peerDependencies: + react: '*' + + '@tamagui/metro-plugin@1.108.3': + resolution: {integrity: sha512-lUF97LE4DcF7am7VMiyHaauERHMzYHcG1zpdRdKJ8N8+1taWF+fIjG8JfeMibmvFW4sP/QSFAqKeuomldOYseA==} + + '@tamagui/normalize-css-color@1.108.3': + resolution: {integrity: sha512-fcJi/QXMYuVaTqerIISTu4LF00KxwQGETdCTpMs8lKFGw/8fubR7P1tirJJz5xQmMokIaS33bYAi5Jy09q9+ow==} + + '@tamagui/polyfill-dev@1.108.3': + resolution: {integrity: sha512-4FM9RmvWNGu9h3ClwYAoBiNbn3pMo5kyb9IyebHkIE+Z1yDE77hOLxjlyZ5AyjiKzW2rJ7fERynW1TnjO5f1qQ==} + + '@tamagui/popover@1.108.3': + resolution: {integrity: sha512-gHbpvVxvW3et+6iQTUdAM1aKef/gIUXvWcV/otX6buE2TbqW4MsCXfXdAcyC7NU0lD18adVti1L3bLO54pk+lA==} + peerDependencies: + react: '*' + + '@tamagui/popper@1.108.3': + resolution: {integrity: sha512-LbDsV3HaU1nn4ltIzNvr0OZltXB2cUH8PAkyIzIK8FPmhJ6UKs5EUl2/OTpSj9FLgAnIO89mbLVbi+4Q8XkawA==} + peerDependencies: + react: '*' + + '@tamagui/portal@1.108.3': + resolution: {integrity: sha512-2v5+FOQP40HFXW42MQdV6zDoyUY4Nsz0GCircgZkSd7t+k1EHHwgrdoWgdcm9jqx6Uyu/2tOv+vUBKurhqg6JQ==} + peerDependencies: + react: '*' + + '@tamagui/progress@1.108.3': + resolution: {integrity: sha512-yBm0EnoVC02uyrnlHyZJL3cZY975cCRJV/FxoGApyHDIsWO+M688W1rsLEq8Hj3WUFh4vgy9UHX/aIg6ZX3x7w==} + peerDependencies: + react: '*' + + '@tamagui/proxy-worm@1.108.3': + resolution: {integrity: sha512-OIiOw6GH/wtSGlaG/SW2YO/LANzafd5WscvfLdvmqnTNqq/Hfl8VAwfk0DLT+OidSCFb/ro8uljAoQMbbBn7mg==} + + '@tamagui/radio-group@1.108.3': + resolution: {integrity: sha512-VpBZuRFr1dzXcDf2UT59tM3n0dPkvUCY19xpl97MEUPlP25VFN0wou0EaFTZbbbflBc0JxLa0D/xvPA4zR9k2g==} + peerDependencies: + react: '*' + + '@tamagui/radio-headless@1.108.3': + resolution: {integrity: sha512-WiAQWgn76JQg0vadM1xd1Mjzdmt/pSHdVR1qqpttjsDjAK9B63GLnCmvagC9mXLcwS64DJkH9x6o7TIa/xdHfQ==} + peerDependencies: + react: '*' + + '@tamagui/react-native-media-driver@1.108.3': + resolution: {integrity: sha512-SJpZnAKlrreSAkOK6M0IOHj0QWxreSKAAkVtoyLK5fw3wd2ls1Qkhp8uxvZ406vy5ZgEPHZHg6tCLlRNqgaR7Q==} + peerDependencies: + react-native: '*' + + '@tamagui/react-native-use-pressable@1.108.3': + resolution: {integrity: sha512-ssXGrZekvPjWdi91Nb8VQOW5jNFoYvXEKwwZhkdbHivipbpT3YgEn/Nhi2iyf6kBI69TsVE2cVg4P4GRiBT2+Q==} + peerDependencies: + react: '*' + + '@tamagui/react-native-use-responder-events@1.108.3': + resolution: {integrity: sha512-QTcd0Ug3cgx+CZ1EoDcVDkUG1H4GTuvJTOGSizyqpGtQAAsTjvO3x8+VsRI3Q0kf/0YjviLFY719ltxuxpkHzA==} + peerDependencies: + react: '*' + + '@tamagui/remove-scroll@1.108.3': + resolution: {integrity: sha512-8GZRLzZvoddGNkA+clKMEEJpOXrFm6vcf/DQAkISpWLyJNX8dJ9Z4PK6aPi4WdOt9VKMt65dfeuvaugNHZc+pA==} + peerDependencies: + react: '*' + + '@tamagui/roving-focus@1.108.3': + resolution: {integrity: sha512-PD7+YjilGkJcf8jxcNCD1yLiL1NLbaJUefT+pl3a0jTDTVKErifNch/Px5TEzeuhg+lC834V9URfBJ2m1NBjHw==} + peerDependencies: + react: '*' + + '@tamagui/scroll-view@1.108.3': + resolution: {integrity: sha512-6URr1GFoZGqeKsX06pFVWMksSa+l7DygvVe5rNqCykb3rwkMQWBipKVIL0+UkU/Nq1WG2SEshaomgCu+5KqFLQ==} + peerDependencies: + react: '*' + + '@tamagui/select@1.108.3': + resolution: {integrity: sha512-0vV702UfjOVkCjXDBWkAEr1WWYoxyhGuRXGphrAUOs/uvttc2AHgj1GAkGgcn6SJAOPzMT+W5sAwZxzChZEgpQ==} + peerDependencies: + react: '*' + + '@tamagui/separator@1.108.3': + resolution: {integrity: sha512-f2Oaan/8GbyrXiSk03efvcZtjuwv8JcLBfu40vozRL90935VRuFNUXiPugBsduqDGn2UViN0Z6lG2Ic/NLXjWg==} + peerDependencies: + react: '*' + + '@tamagui/shapes@1.108.3': + resolution: {integrity: sha512-njwPNM0E80X79qrh78QiWc8cl3lDr8KGMnP7KRJgrL9O8QaYaz2Sp0Mm353cyIhh29h1px1LvRCDyIIuncPZFw==} + peerDependencies: + react: '*' + + '@tamagui/sheet@1.108.3': + resolution: {integrity: sha512-8OI8hy2wV+Uq5VIIIeEiIiKGoRPnEjH2V0YE1vS57BCAJdJyEEWOQwZLRv/HYDp/6aqFCAEKNJ2ap39EVf6r3w==} + peerDependencies: + react: '*' + + '@tamagui/shorthands@1.108.3': + resolution: {integrity: sha512-ebWL7cXAhUFZ3fomdDj/xw/Pjgl346zydLq+fj3ZVuebYMwQomC2de2Z9YS/n6L3vWJFNMEr7KKV7uIU1MCnnA==} + + '@tamagui/simple-hash@1.108.3': + resolution: {integrity: sha512-ZIYZAZxca9t3ZJH8AlvalaIpjszNug9m8s/AVycy9zMksuUhNIPqaG/YZaSLeaPAXBXkqZ/wRjBkhM4Dk8cczQ==} + + '@tamagui/slider@1.108.3': + resolution: {integrity: sha512-msekjl5zzURZ4T2M31sRW4GngRa3SDtdxr+svBmkkcZ1euw74fSKhG6TC+PKZudX/6sp2bUVCDUxjVtp5Ci9Cw==} + peerDependencies: + react: '*' + + '@tamagui/stacks@1.108.3': + resolution: {integrity: sha512-dtVD4Bq2eklCVWPSShV7ASwxjYraXyDK848kTNgOmRpM+sIVB1PVXHgNMAwHitxmnpcmUifDKEsr3TGO7ujZiQ==} + peerDependencies: + react: '*' + + '@tamagui/static@1.108.3': + resolution: {integrity: sha512-v8rxIYOe9GTzOkdX3YyGEbopDib1PXRbEa1BYz9nky4IuPrIvAJ6DHUWuYMZfOhRI/Eh1BaJDhV1n987YsyB+g==} + peerDependencies: + react: '*' + + '@tamagui/switch-headless@1.108.3': + resolution: {integrity: sha512-FhlEfkxNm8pcGKXLGf3bbWcaHwv7RURzouVww/j5u70rm8owRA++7WVpS8zypZUF6kl/nDxmBvljEm2P1ksjPw==} + peerDependencies: + react: '*' + + '@tamagui/switch@1.108.3': + resolution: {integrity: sha512-YwgqOt9odxkkbCbQTFxSoKE1Tw593D9h1jAe6yhDKvbujKx1HdI5o1Q1ylc3NQouBqMOHh8QksYzcX1qpAFERw==} + peerDependencies: + react: '*' + + '@tamagui/tabs@1.108.3': + resolution: {integrity: sha512-Es9r5oS5fkP2KK/WIdbqZRGaqKuOUZ/EpBkg1CPo7uaeuScJAoMMu2tN06pWcG9Nv7G+ZUHyozkF67kLIbf6eQ==} + peerDependencies: + react: '*' + + '@tamagui/text@1.108.3': + resolution: {integrity: sha512-04kf17aTHN70DoeOffi5WGMb0P/k/9XntBBklEgFaUlhsNAjtoDzwWwoY3SIsGycM3ESORIdd2UqfebloTiJtQ==} + peerDependencies: + react: '*' + + '@tamagui/theme-builder@1.108.3': + resolution: {integrity: sha512-psTH+/ExNCAnCmwFwKPHlmeNnkVEQE9UH6RtXRaYSMOC7QX2G/lOKvEm7H8MVLq2KuBHOcSW1EB6dJjCrrS65w==} + + '@tamagui/theme@1.108.3': + resolution: {integrity: sha512-T2LX5S/4QNqXaVkFaAaeA7GcxgfKEgwbGuleLyNUihcP/ippWgiz5C680xoJVUf8VNrSo9+WwKnnchLcExx1uA==} + peerDependencies: + react: '*' + + '@tamagui/themes@1.108.3': + resolution: {integrity: sha512-gkpfIcmTQZeomAmErEhCf+bZhyBaAySRXaBdDDf3RKuc9x4sD4Y/FcviDLqu5i/LCqEJAIJcKzlpe/kg7uMRjA==} + + '@tamagui/timer@1.108.3': + resolution: {integrity: sha512-YVLaV1toDFjVjs9LlOZeN28YJo67nKI4Tx0A/6MIYQJKJ/WNPuc3bJJZWJJVIPIM38PZaZ/sCYjGbF0TisyZKA==} + + '@tamagui/toast@1.108.3': + resolution: {integrity: sha512-VzVFvuuIXAChODSSWg+RakfxIZ9sRagbalFwtvotIBV8XSr+60+VyggyGS9z3tMeyGncS08tzaNIbIj3TJWjTg==} + peerDependencies: + react: '*' + + '@tamagui/toggle-group@1.108.3': + resolution: {integrity: sha512-WLjM3vypWGSyNCNJYWQsGsaP+sCD/jwlPhiCiHKUSyr5PA9EwO14IKUlZrNLgT8A+AKJZxpcziU3590lCFhVfw==} + peerDependencies: + react: '*' + + '@tamagui/tooltip@1.108.3': + resolution: {integrity: sha512-Xkpkz3QFFyu+v7e1ECX6Ks3D4GzldeZGOaOVcUF5CySzZdSnmvtnVqdjredKUPhKSH5yvHuo5knxv/NzsYiU3g==} + peerDependencies: + react: '*' + + '@tamagui/types@1.108.3': + resolution: {integrity: sha512-oFoj7sdldt/TkeUrKnlUA2vbzR2VkMk0KyZTDDM8cnQ7ao0N9WlxWQwzioNgf3ISH2jL33NOcmGc9V4+Kre6mA==} + + '@tamagui/use-callback-ref@1.108.3': + resolution: {integrity: sha512-Q7Gg/FGhCNAkefsFwwpWffzH/TiOyYcsiu2lK9EieMqlIRZkfRX58ZSvQ6+G2CaA+RrSGfQs4juvSflaNDB5IA==} + + '@tamagui/use-constant@1.108.3': + resolution: {integrity: sha512-PQRKtls3bgOSDLyXmGBQ77fOHVJiCh3rBr23NBX5gH/kCnNWVC+fbFg0nrOLfGwQkZGuoLi9IpjEsPa1/L46uQ==} + peerDependencies: + react: '*' + + '@tamagui/use-controllable-state@1.108.3': + resolution: {integrity: sha512-XAckayVU/n1oyPks7WTHpg5iTWK4AgKRh13UkuCGlAW6jbaE0mzqqA7hwIraEj7t5Yk2IJ+lvzLeqXPSBZc1JA==} + peerDependencies: + react: '*' + + '@tamagui/use-debounce@1.108.3': + resolution: {integrity: sha512-LenDu+0w/hv9DTMiXKb9PwoDajkqeu4xKeuUoTo5+zfm/cN2vagm1GeZfjHhoXx6XW88liD/RBmb/eUQvQ16IA==} + peerDependencies: + react: '*' + + '@tamagui/use-did-finish-ssr@1.108.3': + resolution: {integrity: sha512-0vRf0/pfkfXzWyfFjNo12XNd6li0Negq+a/x9BGE+bhW5rWm8cB+D+1rW2lFysWxqHFeAfjSelzmdXmV8RZj5Q==} + peerDependencies: + react: '*' + + '@tamagui/use-direction@1.108.3': + resolution: {integrity: sha512-QiWJ1OKLyyJov0fZaFk89mM4vxGO4yjXIxChc80bpdlvYRcZ2t29JtTfkWjR06J16Q76ZrzQ3ZLPw3KyLScbNA==} + peerDependencies: + react: '*' + + '@tamagui/use-escape-keydown@1.108.3': + resolution: {integrity: sha512-+N/OqMX+Xz4kPrmhBPsrqcsQnNQTwVAeIh6bTIiAicjGpZbxzI3aUNKOPKE/3jj122Y+R0tMuL/U86mSoIHz6Q==} + + '@tamagui/use-event@1.108.3': + resolution: {integrity: sha512-roD8+m63APQxUzQMFK2zepQICW8IIfF/tieMmR8xWwuUkHCqo2iU3eUDLwwkWgi6NAeE9Yd9OP6WO8NHNiMvPA==} + peerDependencies: + react: '*' + + '@tamagui/use-force-update@1.108.3': + resolution: {integrity: sha512-v8jrDF2SEACu+zeDQBP5UwwHQfvtz71H/TKUjcw7D4TeYe7GwGrMwBAxXnD9qqW/7iaLAtW/jknFgpMzk9Dk5A==} + peerDependencies: + react: '*' + + '@tamagui/use-keyboard-visible@1.108.3': + resolution: {integrity: sha512-07M+PBO5n1cdLuPzybmkti+KNdlW88c5W2NcX5JzVnSM8blmY9KLUEfNm6z/Qp0Fs6B8I3sr+ojWvscaxDGTYg==} + peerDependencies: + react: '*' + + '@tamagui/use-presence@1.108.3': + resolution: {integrity: sha512-w7iCmVLwWMLQIGkYZuCwEUjtfj5klz7BxNvR/toFOFLRRKP6F6GNP4L2Zx9NAGtG5FUVjEJ6lkuGHWvFh2HcIA==} + peerDependencies: + react: '*' + + '@tamagui/use-previous@1.108.3': + resolution: {integrity: sha512-iV6Al/kc6NCtqqJanPEeWGIzUcCspw4cx0dMSlIINbG7RKuFqGUyw+tADT9+lXlHEGtgu47j3kmTBeZNRNzLpg==} + + '@tamagui/use-window-dimensions@1.108.3': + resolution: {integrity: sha512-jtjrnxJ33nkPtwbNzPpa3BE/23HKctytCNvuSJ7SmSpSoLU5pyV6lUI4XU8q2OF8faoCRI8LkGwA5KQI+zslOg==} + peerDependencies: + react: '*' + + '@tamagui/visually-hidden@1.108.3': + resolution: {integrity: sha512-6pypsL/ojY11yV+uMEfqbwRO08v7psKo52uKjqeBUlYJ2PQ++jedH3UYazKgfSKTkp3XoLjNyshiSMxcpkCLtw==} + peerDependencies: + react: '*' + + '@tamagui/web@1.108.3': + resolution: {integrity: sha512-T/dN7hzhl9yPwuRy15IbrZU+2lqEJcVuNrNNkj7MwLP3hRHOBD92AyOwxNi6POl6fAXUyw9kLu9oeapXmDLa+g==} + + '@tanstack/eslint-plugin-query@5.51.15': + resolution: {integrity: sha512-btX03EOGvNxTGJDqHMmQwfSt/hp93Z8I4FNBijoyEdDnjGi4jVjpGP7nEi9LaMnHFsylucptVGb6GQngWs07bA==} + peerDependencies: + eslint: ^8 || ^9 + + '@tanstack/query-core@5.51.21': + resolution: {integrity: sha512-POQxm42IUp6n89kKWF4IZi18v3fxQWFRolvBA6phNVmA8psdfB1MvDnGacCJdS+EOX12w/CyHM62z//rHmYmvw==} + + '@tanstack/react-query@5.51.23': + resolution: {integrity: sha512-CfJCfX45nnVIZjQBRYYtvVMIsGgWLKLYC4xcUiYEey671n1alvTZoCBaU9B85O8mF/tx9LPyrI04A6Bs2THv4A==} + peerDependencies: + react: ^18.0.0 + + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@turbo/gen@1.13.4': + resolution: {integrity: sha512-PK38N1fHhDUyjLi0mUjv0RbX0xXGwDLQeRSGsIlLcVpP1B5fwodSIwIYXc9vJok26Yne94BX5AGjueYsUT3uUw==} + hasBin: true + + '@turbo/workspaces@1.13.4': + resolution: {integrity: sha512-3uYg2b5TWCiupetbDFMbBFMHl33xQTvp5DNg0fZSYal73Z9AlFH9yWabHWMYw6ywmwM1evkYRpTVA2n7GgqT5A==} + hasBin: true + + '@types/argparse@1.0.38': + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + + '@types/crypto-js@4.2.2': + resolution: {integrity: sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==} + + '@types/eslint@8.56.11': + resolution: {integrity: sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/fs-extra@9.0.13': + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/hammerjs@2.0.45': + resolution: {integrity: sha512-qkcUlZmX6c4J8q45taBKTL3p+LbITgyx7qhlPYOdOHZB7B31K0mXbP5YA7i7SgDeEGuI9MnumiKPEMrxg8j3KQ==} + + '@types/inquirer@6.5.0': + resolution: {integrity: sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/js-yaml@4.0.9': + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/node-fetch@2.6.11': + resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} + + '@types/node-forge@1.3.11': + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + + '@types/node@18.19.44': + resolution: {integrity: sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==} + + '@types/node@22.2.0': + resolution: {integrity: sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==} + + '@types/prop-types@15.7.12': + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} + + '@types/randombytes@2.0.3': + resolution: {integrity: sha512-+NRgihTfuURllWCiIAhm1wsJqzsocnqXM77V/CalsdJIYSRGEHMnritxh+6EsBklshC+clo1KgnN14qgSGeQdw==} + + '@types/react@18.3.3': + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + + '@types/set-cookie-parser@2.4.10': + resolution: {integrity: sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==} + + '@types/spinnies@0.5.3': + resolution: {integrity: sha512-HYrOubG2TVgRQRKcW1HJ/1eJIIBpLqDoJo551McJgWdO8xzxnaxu/bPKdqC/7okoEy4ZZjy3I4/DwK1sz2OCog==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/through@0.0.33': + resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} + + '@types/tinycolor2@1.4.6': + resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@15.0.19': + resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/scope-manager@8.0.0-alpha.30': + resolution: {integrity: sha512-FGW/iPWGyPFamAVZ60oCAthMqQrqafUGebF8UKuq/ha+e9SVG6YhJoRzurlQXOVf8dHfOhJ0ADMXyFnMc53clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/types@8.0.0-alpha.30': + resolution: {integrity: sha512-4WzLlw27SO9pK9UFj/Hu7WGo8WveT0SEiIpFVsV2WwtQmLps6kouwtVCB8GJPZKJyurhZhcqCoQVQFmpv441Vg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@8.0.0-alpha.30': + resolution: {integrity: sha512-WSXbc9ZcXI+7yC+6q95u77i8FXz6HOLsw3ST+vMUlFy1lFbXyFL/3e6HDKQCm2Clt0krnoCPiTGvIn+GkYPn4Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/utils@8.0.0-alpha.30': + resolution: {integrity: sha512-rfhqfLqFyXhHNDwMnHiVGxl/Z2q/3guQ1jLlGQ0hi9Rb7inmwz42crM+NnLPR+2vEnwyw1P/g7fnQgQ3qvFx4g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/visitor-keys@8.0.0-alpha.30': + resolution: {integrity: sha512-XZuNurZxBqmr6ZIRIwWFq7j5RZd6ZlkId/HZEWyfciK+CWoyOxSF9Pv2VXH9Rlu2ZG2PfbhLz2Veszl4Pfn7yA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@urql/core@2.3.6': + resolution: {integrity: sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==} + peerDependencies: + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + + '@urql/exchange-retry@0.3.0': + resolution: {integrity: sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==} + peerDependencies: + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 + + '@vitest/coverage-v8@1.6.0': + resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} + peerDependencies: + vitest: 1.6.0 + + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + + '@volar/language-core@1.11.1': + resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} + + '@volar/source-map@1.11.1': + resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} + + '@volar/typescript@1.11.1': + resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} + + '@vue/compiler-core@3.4.37': + resolution: {integrity: sha512-ZDDT/KiLKuCRXyzWecNzC5vTcubGz4LECAtfGPENpo0nrmqJHwuWtRLxk/Sb9RAKtR9iFflFycbkjkY+W/PZUQ==} + + '@vue/compiler-dom@3.4.37': + resolution: {integrity: sha512-rIiSmL3YrntvgYV84rekAtU/xfogMUJIclUMeIKEtVBFngOL3IeZHhsH3UaFEgB5iFGpj6IW+8YuM/2Up+vVag==} + + '@vue/language-core@1.8.27': + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/shared@3.4.37': + resolution: {integrity: sha512-nIh8P2fc3DflG8+5Uw8PT/1i17ccFn0xxN/5oE9RfV5SVnd7G0XEFRwakrnNFE/jlS95fpGXDVG5zDETS26nmg==} + + '@web3-storage/multipart-parser@1.0.0': + resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==} + + '@xmldom/xmldom@0.7.13': + resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==} + engines: {node: '>=10.0.0'} + + '@xmldom/xmldom@0.8.10': + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} + + '@zxing/text-encoding@0.9.0': + resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} + engines: {node: '>=0.4.0'} + + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + engines: {node: '>= 14'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + anser@1.4.10: + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-fragments@0.2.1: + resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} + + ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + appdirsjs@1.2.7: + resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} + + application-config-path@0.1.1: + resolution: {integrity: sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} + + ast-types@0.15.2: + resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} + engines: {node: '>=4'} + + astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.10.0: + resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} + engines: {node: '>=4'} + + axobject-query@3.1.1: + resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} + + b4a@1.6.6: + resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} + + babel-core@7.0.0-bridge.0: + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + babel-literal-to-ast@2.1.0: + resolution: {integrity: sha512-CxfpQ0ysQ0bZOhlaPgcWjl79Em16Rhqc6++UAFn0A3duiXmuyhhj8yyl9PYbj0I0CyjrHovdDbp2QEKT7uIMxw==} + peerDependencies: + '@babel/core': ^7.1.2 + + babel-plugin-fully-specified@1.3.0: + resolution: {integrity: sha512-STW+rXLxwCB839gmwBizuipaDBb/iGZ5Vg0bmfynYLyXRTWgofXDrePuW5VvBJq2x8yB6xvT+3J7Z0U79uQYNw==} + peerDependencies: + '@babel/core': '*' + + babel-plugin-module-resolver@5.0.2: + resolution: {integrity: sha512-9KtaCazHee2xc0ibfqsDeamwDps6FZNo5S0Q81dUqEuFzVwPhcT4J5jOqIVvgCA3Q/wO9hKYxN/Ds3tIsp5ygg==} + + babel-plugin-polyfill-corejs2@0.4.11: + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.10.6: + resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.2: + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-react-compiler@0.0.0: + resolution: {integrity: sha512-Kigl0V36a/6hLVH7+CCe1CCtU3mFBqBd829V//VtuG7I/pyq+B2QZJqOefd63snQmdfCryNhO9XW1FbGPBvYDA==} + + babel-plugin-react-native-web@0.19.12: + resolution: {integrity: sha512-eYZ4+P6jNcB37lObWIg0pUbi7+3PKoU1Oie2j0C8UF3cXyXoR74tO2NBjI/FORb2LJyItJZEAmjU5pSaJYEL1w==} + + babel-plugin-tester@11.0.4: + resolution: {integrity: sha512-cqswtpSPo0e++rZB0l/54EG17LL25l9gLgh59yXfnmNxX+2lZTIOpx2zt4YI9QIClVXc8xf63J6yWwKkzy0jNg==} + engines: {node: ^14.20.0 || ^16.16.0 || >=18.5.0} + peerDependencies: + '@babel/core': '>=7.11.6' + + babel-plugin-transform-flow-enums@0.0.2: + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + + babel-preset-expo@11.0.13: + resolution: {integrity: sha512-5oUXyxnIVyDUhG4a306PpT2c9HhKx0tG4LXjpSIA/dERzwGvU8LUxDSD6yCohhRSsPZIoR7u2mnH0PypqFqYnQ==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + bare-events@2.4.2: + resolution: {integrity: sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==} + + bare-fs@2.3.1: + resolution: {integrity: sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==} + + bare-os@2.4.0: + resolution: {integrity: sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==} + + bare-path@2.1.3: + resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} + + bare-stream@2.1.3: + resolution: {integrity: sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==} + + base-64@0.1.0: + resolution: {integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + engines: {node: '>=10.0.0'} + + before-after-hook@2.2.3: + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} + + better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} + + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + bplist-creator@0.0.7: + resolution: {integrity: sha512-xp/tcaV3T5PCiaY04mXga7o/TE+t95gqeLmADeBI1CvZtdWTbgBt3uLpvh4UWtenKeBhCV6oVxGk38yZr2uYEA==} + + bplist-creator@0.1.0: + resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==} + + bplist-parser@0.3.1: + resolution: {integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==} + engines: {node: '>= 5.10.0'} + + bplist-parser@0.3.2: + resolution: {integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==} + engines: {node: '>= 5.10.0'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-alloc-unsafe@1.1.0: + resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} + + buffer-alloc@1.2.0: + resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-fill@1.0.0: + resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + builtins@1.0.3: + resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} + + burnt@0.12.2: + resolution: {integrity: sha512-bbZjGN4Om7dykr8ZcLb0tTO5L2becMR+HIez1ySUGgG/rvK+ePgBEuBA6lMOZqOTsUXhIKFUBH0sCXQ25fq5SA==} + peerDependencies: + expo: '*' + react: '*' + react-native: '*' + + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cacache@18.0.4: + resolution: {integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==} + engines: {node: ^16.14.0 || >=18.0.0} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + + caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + + callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@3.0.0: + resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + + caniuse-lite@1.0.30001651: + resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} + + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} + engines: {node: '>=4'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + change-case@3.1.0: + resolution: {integrity: sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + + check-dependency-version-consistency@4.1.0: + resolution: {integrity: sha512-xghkzKgMxpAfeP9OJfVrErtv8BU4h5kHYQyheHC0j0RYRVNWti0qI3+HkFgWBKejq2UE2wOnoWZlvDKFj6jFoA==} + engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} + hasBin: true + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + + cheerio@1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} + engines: {node: '>= 6'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + chrome-launcher@0.15.2: + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} + hasBin: true + + chromium-bidi@0.6.3: + resolution: {integrity: sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==} + peerDependencies: + devtools-protocol: '*' + + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + class-variance-authority@0.7.0: + resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + cli-cursor@2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + + clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color2k@2.0.3: + resolution: {integrity: sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + component-type@1.2.2: + resolution: {integrity: sha512-99VUHREHiN5cLeHm3YLq312p6v+HUEcwtLCAtelvUDI6+SH5g5Cr85oNR2S1o6ywzL0ykMbuwLzM2ANocjEOIA==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + + computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + + confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + + connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + + constant-case@2.0.0: + resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.2.1: + resolution: {integrity: sha512-78KWk9T26NhzXtuL26cIJ8/qNHANyJ/ZYrmEXFzUmhZdjpBv+DlWlOANRTGBt48YcyslsLrj0bMLFTmXvLRCOw==} + engines: {node: '>=6.6.0'} + + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + + core-js-compat@3.38.0: + resolution: {integrity: sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A==} + + core-js-pure@3.38.0: + resolution: {integrity: sha512-8balb/HAXo06aHP58mZMtXgD8vcnXz9tUDePgqBgJgKdmTlMt+jw3ujqniuBDQXMvTzxnMpxHFeuSM3g1jWQuQ==} + + core-js@3.38.0: + resolution: {integrity: sha512-XPpwqEodRljce9KswjZShh95qJ1URisBeKCjUdq27YdenkslVe7OO0ZJhlYXAChW7OhXaRLl8AAba7IBfoIHug==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + + cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + + crypto-random-string@1.0.0: + resolution: {integrity: sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==} + engines: {node: '>=4'} + + crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + + css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + + css-in-js-utils@3.1.0: + resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} + + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + dag-map@1.0.2: + resolution: {integrity: sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-uri-to-buffer@3.0.1: + resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} + engines: {node: '>= 6'} + + data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + + data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} + + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + + dayjs@1.11.12: + resolution: {integrity: sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + + deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-gateway@4.2.0: + resolution: {integrity: sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==} + engines: {node: '>=6'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} + + del@5.1.0: + resolution: {integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==} + engines: {node: '>=8'} + + del@6.1.1: + resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} + engines: {node: '>=10'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + denodeify@1.2.1: + resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + deprecated-react-native-prop-types@2.3.0: + resolution: {integrity: sha512-pWD0voFtNYxrVqvBMYf5gq3NA2GCpfodS1yNynTPc93AYA/KEMGeWDqqeUB6R2Z9ZofVhks2aeJXiuQqKNpesA==} + + deprecation@2.3.1: + resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + devtools-protocol@0.0.1312386: + resolution: {integrity: sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + + dot-case@2.1.1: + resolution: {integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==} + + dotenv-expand@11.0.6: + resolution: {integrity: sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==} + engines: {node: '>=12'} + + dotenv@16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} + + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + edit-json-file@1.8.0: + resolution: {integrity: sha512-IBOpbe2aQufNl5oZ4jsr2AmNVUy5bO7jS5hk0cCyWhOLdH59Xv41B3XQObE/JB89Ae5qDY9hVsq13/hgGhFBZg==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.5.6: + resolution: {integrity: sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw==} + + eme-encryption-scheme-polyfill@2.1.5: + resolution: {integrity: sha512-z9BKXV4TCYjmar0wiZLObZ0J8HE13VIg7Zq/iyPWdbEfROtxVXEJalknWKtBR5XNezzy15/zWS964TGbcAWlPg==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + entities@2.0.3: + resolution: {integrity: sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@5.0.0: + resolution: {integrity: sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==} + engines: {node: '>=0.12'} + + env-editor@0.4.2: + resolution: {integrity: sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==} + engines: {node: '>=8'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} + engines: {node: '>=4'} + hasBin: true + + eol@0.9.1: + resolution: {integrity: sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + errorhandler@1.5.1: + resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} + engines: {node: '>= 0.8'} + + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + + es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + esbuild-plugin-es5@2.1.1: + resolution: {integrity: sha512-GRcHLUwjmrjxz9bN24ooTedrBrAVx7+F8M1aD7FFB+7RTHkt7FY8tHAQ9znyzsV16+95ojbTyJLY+HPO0OI7zA==} + engines: {node: '>=12.0'} + peerDependencies: + esbuild: '*' + + esbuild-register@3.6.0: + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.23.0: + resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-config-airbnb-base@15.0.0: + resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.32.0 || ^8.2.0 + eslint-plugin-import: ^2.25.2 + + eslint-config-prettier@9.1.0: + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-config-turbo@1.13.4: + resolution: {integrity: sha512-+we4eWdZlmlEn7LnhXHCIPX/wtujbHCS7XjQM/TN09BHNEl2fZ8id4rHfdfUKIYTSKyy8U/nNyJ0DNoZj5Q8bw==} + peerDependencies: + eslint: '>6.6.0' + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.6.1: + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + + eslint-module-utils@2.8.1: + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.29.1: + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.9.0: + resolution: {integrity: sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + eslint-plugin-prettier@5.2.1: + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react@7.35.0: + resolution: {integrity: sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-plugin-turbo@1.13.4: + resolution: {integrity: sha512-82GfMzrewI/DJB92Bbch239GWbGx4j1zvjk1lqb06lxIlMPnVwUHVwPbAnLfyLG3JuhLv9whxGkO/q1CL18JTg==} + peerDependencies: + eslint: '>6.6.0' + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + exec-async@2.2.0: + resolution: {integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==} + + execa@1.0.0: + resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} + engines: {node: '>=6'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + expo-alternate-app-icons@0.1.9: + resolution: {integrity: sha512-PXJThr6pcbrv9pXcxYaK1iOlXiGV/1uOEX9W9a9TzcGZy1wg4MtTbOTC5MqNknf928vQ6+WEe1IlxBUStdl72A==} + peerDependencies: + expo: '*' + react: '*' + react-native: '*' + + expo-application@5.9.1: + resolution: {integrity: sha512-uAfLBNZNahnDZLRU41ZFmNSKtetHUT9Ua557/q189ua0AWV7pQjoVAx49E4953feuvqc9swtU3ScZ/hN1XO/FQ==} + peerDependencies: + expo: '*' + + expo-asset@10.0.10: + resolution: {integrity: sha512-0qoTIihB79k+wGus9wy0JMKq7DdenziVx3iUkGvMAy2azscSgWH6bd2gJ9CGnhC6JRd3qTMFBL0ou/fx7WZl7A==} + peerDependencies: + expo: '*' + + expo-av@14.0.6: + resolution: {integrity: sha512-8FHKgMYo49C5hhgG0ssRRd454VQ82TuujhMdlz7ScJBihEXa89kWKpfk9bXrvetFtrJoAmYuGxsXCJCygZhxfA==} + peerDependencies: + expo: '*' + + expo-brightness@12.0.1: + resolution: {integrity: sha512-Jdi8+9YeixWdg0Z2A/f3YnQ86+iMLuGyqcTi8UTipGotTHZBG8UuV1Gab/2tttOhUK2cfv4Hc2zDbkKFP6F1JQ==} + peerDependencies: + expo: '*' + + expo-build-properties@0.12.5: + resolution: {integrity: sha512-donC1le0PYfLKCPKRMGQoixuWuwDWCngzXSoQXUPsgHTDHQUKr8aw+lcWkTwZcItgNovcnk784I0dyfYDcxybA==} + peerDependencies: + expo: '*' + + expo-clipboard@6.0.3: + resolution: {integrity: sha512-RIKDsuHkYfaspifbFpVC8sBVFKR05L7Pj7mU2/XkbrW9m01OBNvdpGraXEMsTFCx97xMGsZpEw9pPquL4j4xVg==} + peerDependencies: + expo: '*' + + expo-constants@16.0.2: + resolution: {integrity: sha512-9tNY3OVO0jfiMzl7ngb6IOyR5VFzNoN5OOazUWoeGfmMqVB5kltTemRvKraK9JRbBKIw+SOYLEmF0sEqgFZ6OQ==} + peerDependencies: + expo: '*' + + expo-file-system@17.0.1: + resolution: {integrity: sha512-dYpnZJqTGj6HCYJyXAgpFkQWsiCH3HY1ek2cFZVHFoEc5tLz9gmdEgTF6nFHurvmvfmXqxi7a5CXyVm0aFYJBw==} + peerDependencies: + expo: '*' + + expo-font@12.0.9: + resolution: {integrity: sha512-seTCyf0tbgkAnp3ZI9ZfK9QVtURQUgFnuj+GuJ5TSnN0XsOtVe1s2RxTvmMgkfuvfkzcjJ69gyRpsZS1cC8hjw==} + peerDependencies: + expo: '*' + + expo-haptics@13.0.1: + resolution: {integrity: sha512-qG0EOLDE4bROVT3DtUSyV9g3iB3YFu9j3711X7SNNEnBDXc+2/p3wGDPTnJvPW0ao6HG3/McAOrBQA5hVSdWng==} + peerDependencies: + expo: '*' + + expo-keep-awake@13.0.2: + resolution: {integrity: sha512-kKiwkVg/bY0AJ5q1Pxnm/GvpeB6hbNJhcFsoOWDh2NlpibhCLaHL826KHUM+WsnJRbVRxJ+K9vbPRHEMvFpVyw==} + peerDependencies: + expo: '*' + + expo-linear-gradient@13.0.2: + resolution: {integrity: sha512-EDcILUjRKu4P1rtWcwciN6CSyGtH7Bq4ll3oTRV7h3h8oSzSilH1g6z7kTAMlacPBKvMnkkWOGzW6KtgMKEiTg==} + peerDependencies: + expo: '*' + + expo-linking@6.3.1: + resolution: {integrity: sha512-xuZCntSBGWCD/95iZ+mTUGTwHdy8Sx+immCqbUBxdvZ2TN61P02kKg7SaLS8A4a/hLrSCwrg5tMMwu5wfKr35g==} + + expo-media-library@16.0.4: + resolution: {integrity: sha512-nX9iN8+XAoERDVGPpDdUbhFwvfYdBpkgTAxwDOYL7heASYCOdxfqQtXy/jv1+QZpj0epaR6Owq/LUn1lVP3ykg==} + peerDependencies: + expo: '*' + + expo-modules-autolinking@1.11.1: + resolution: {integrity: sha512-2dy3lTz76adOl7QUvbreMCrXyzUiF8lygI7iFJLjgIQIVH+43KnFWE5zBumpPbkiaq0f0uaFpN9U0RGQbnKiMw==} + hasBin: true + + expo-modules-core@1.12.20: + resolution: {integrity: sha512-CCXjlgT8lDAufgt912P1W7TwD+KAylfIttc1Doh1a0hAfkdkUsDRmrgthnYrrxEo2ECVpbaB71Epp1bnZ1rRrA==} + + expo-navigation-bar@3.0.7: + resolution: {integrity: sha512-KCNHyZ58zoN4xdy7D1lUdJvveCYNVQHGSX4M6xO/SZypvI6GZbLzKSN6Lx4GDGEFxG6Kb+EAckZl48tSiNeGYQ==} + peerDependencies: + expo: '*' + + expo-network@6.0.1: + resolution: {integrity: sha512-WXXvkt1H75ojHVa263Jq+qjIyMzCfaoRzHKzOBMuSyDDcma9WpvKJpR1YpEQZH/zDhSfkKvh7Q3wRGOJr1J+dQ==} + peerDependencies: + expo: '*' + + expo-pod-pinner@1.0.1: + resolution: {integrity: sha512-UeyCRXrI13tjb+rtQkjBjgs+eS1KntAgTRnLoawFdMp8s1T2bOcm9P4cIrFlLHt9aZBLLMdHra1TY6LiMI3+kw==} + + expo-router@3.5.21: + resolution: {integrity: sha512-0rqt1ViwZ+a+obODGX1e7krRlRwhxwTHdMdhfpWU9rCLm9B4sr5k77LBAd8V7MRS7FGGZBA93CgYxKfpO/arng==} + peerDependencies: + '@react-navigation/drawer': ^6.5.8 + '@testing-library/jest-native': '*' + expo: '*' + expo-constants: '*' + expo-linking: '*' + expo-status-bar: '*' + react-native-reanimated: '*' + react-native-safe-area-context: '*' + react-native-screens: '*' + peerDependenciesMeta: + '@react-navigation/drawer': + optional: true + '@testing-library/jest-native': + optional: true + react-native-reanimated: + optional: true + + expo-screen-orientation@7.0.5: + resolution: {integrity: sha512-1j0MzVzYpjKQo4BWowQ3ZYwC3OnddX/8k06C8VYTAxMyd8ou1k+rG4tm+GIV2n2RSzc3g7cfPlQwSYr3/SGmbg==} + peerDependencies: + expo: '*' + + expo-splash-screen@0.27.5: + resolution: {integrity: sha512-9rdZuLkFCfgJBxrheUsOEOIW6Rp+9NVlpSE0hgXQwbTCLTncf00IHSE8/L2NbFyeDLNjof1yZBppaV7tXHRUzA==} + peerDependencies: + expo: '*' + + expo-status-bar@1.12.1: + resolution: {integrity: sha512-/t3xdbS8KB0prj5KG5w7z+wZPFlPtkgs95BsmrP/E7Q0xHXTcDcQ6Cu2FkFuRM+PKTb17cJDnLkawyS5vDLxMA==} + + expo-system-ui@3.0.7: + resolution: {integrity: sha512-KAs72F5JKhdIfPR9ZNVlRubTPK9uUuevPy5oYEp12xNEzSQcjZKvypH5NpwJuNWkXzrp3n3vZ+3pXsudA7J3KA==} + peerDependencies: + expo: '*' + + expo-video@1.2.4: + resolution: {integrity: sha512-pBK9mt7vYAbuPQjCSQxHQ7xrNjbmRheJep7JIStEg57O183/JRfP2blKuXniiSt1HBdZYPdoQnGRa3jGMXB9pg==} + peerDependencies: + expo: '*' + + expo-web-browser@13.0.3: + resolution: {integrity: sha512-HXb7y82ApVJtqk8tManyudtTrCtx8xcUnVzmJECeHCB0SsWSQ+penVLZxJkcyATWoJOsFMnfVSVdrTcpKKGszQ==} + peerDependencies: + expo: '*' + + expo@51.0.26: + resolution: {integrity: sha512-7ThQa6CVbiVtk4GNw0E9CewSzXYOeHkcRTCGorBZVcjAu6SuxbdWEtl0RI01/VpRKV+6I+yy/BmGnCl7lFRILg==} + hasBin: true + + exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-loops@1.1.4: + resolution: {integrity: sha512-8dbd3XWoKCTms18ize6JmQF1SFnnfj5s0B7rRry22EofgMu7B6LKHVh+XfFqFGsqnbH54xgeO83PzpKI+ODhlg==} + + fast-uri@3.0.1: + resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} + + fast-xml-parser@4.4.1: + resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} + hasBin: true + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fbemitter@3.0.0: + resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} + + fbjs-css-vars@1.0.2: + resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} + + fbjs@3.0.5: + resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + + fetch-retry@4.1.1: + resolution: {integrity: sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==} + + ffmpeg-kit-react-native@6.0.2: + resolution: {integrity: sha512-r9uSmahq8TeyIb7fXf3ft+uUXyoeWRFa99+khjo0TAzWO9y0z9wU7eGnab9JLw1MmCB9v64o4yojNluJhVm9nQ==} + peerDependencies: + react: '*' + react-native: '*' + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + + finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + + find-babel-config@2.1.1: + resolution: {integrity: sha512-5Ji+EAysHGe1OipH7GN4qDjok5Z1uw5KAwDCbicU/4wyTZY7CqOCzcWbG7J5ad9mazq67k89fXlbc1MuIfl9uA==} + + find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + + find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-value@1.0.12: + resolution: {integrity: sha512-OCpo8LTk8eZ2sdDCwbU2Lc3ivYsdM6yod6jP2jHcNEFcjPhkgH0+POzTIol7xx1LZgtbI5rkO5jqxsG5MWtPjQ==} + + find-yarn-workspace-root@2.0.0: + resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + flow-enums-runtime@0.0.6: + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} + + flow-parser@0.243.0: + resolution: {integrity: sha512-HCDBfH+kZcY5etWYeAqatjW78gkIryzb9XixRsA8lGI1uyYc7aCpElkkO4H+KIpoyQMiY0VAZPI4cyac3wQe8w==} + engines: {node: '>=0.4.0'} + + fontfaceobserver@2.3.0: + resolution: {integrity: sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==} + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + form-data@3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + engines: {node: '>= 6'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + + framer-motion@6.5.1: + resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} + peerDependencies: + react: '>=16.8 || ^17.0.0 || ^18.0.0' + react-dom: '>=16.8 || ^17.0.0 || ^18.0.0' + + framesync@6.0.1: + resolution: {integrity: sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==} + + freeport-async@2.0.0: + resolution: {integrity: sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==} + engines: {node: '>=8'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@9.0.0: + resolution: {integrity: sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==} + engines: {node: '>=10'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-port@3.2.0: + resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} + engines: {node: '>=4'} + + get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.7.6: + resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} + + get-uri@6.0.3: + resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} + engines: {node: '>= 14'} + + getenv@1.0.0: + resolution: {integrity: sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==} + engines: {node: '>=6'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@10.0.2: + resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} + engines: {node: '>=8'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + gradient-string@2.0.2: + resolution: {integrity: sha512-rEDCuqUQ4tbD78TpzsMtt5OIf0cBCSDWSJtUDaF6JsAh+k0v9r++NzxNEG87oDZx9ZwGhD8DaezR2L/yrw0Jdw==} + engines: {node: '>=10'} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + graphql-tag@2.12.6: + resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} + engines: {node: '>=10'} + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + + graphql@15.8.0: + resolution: {integrity: sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==} + engines: {node: '>= 10.x'} + + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + header-case@1.0.1: + resolution: {integrity: sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==} + + hermes-estree@0.19.1: + resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} + + hermes-estree@0.23.0: + resolution: {integrity: sha512-Rkp0PNLGpORw4ktsttkVbpYJbrYKS3hAnkxu8D9nvQi6LvSbuPa+tYw/t2u3Gjc35lYd/k95YkjqyTcN4zspag==} + + hermes-parser@0.19.1: + resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} + + hermes-parser@0.23.0: + resolution: {integrity: sha512-xLwM4ylfHGwrm+2qXfO1JT/fnqEDGSnpS/9hQ4VLtqTexSviu2ZpBgz07U8jVtndq67qdb/ps0qvaWDZ3fkTyg==} + + hermes-profile-transformer@0.0.6: + resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} + engines: {node: '>=8'} + + hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + hosted-git-info@3.0.8: + resolution: {integrity: sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==} + engines: {node: '>=10'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} + engines: {node: '>= 14'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + hyphenate-style-name@1.1.0: + resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + image-size@1.1.1: + resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} + engines: {node: '>=16.x'} + hasBin: true + + immer@10.1.1: + resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} + + import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + inline-style-prefixer@6.0.4: + resolution: {integrity: sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==} + + inquirer@7.3.3: + resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} + engines: {node: '>=8.0.0'} + + inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + + internal-ip@4.3.0: + resolution: {integrity: sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==} + engines: {node: '>=6'} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + + ip-regex@2.1.0: + resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} + engines: {node: '>=4'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.15.0: + resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-extglob@1.0.0: + resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + + is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@2.0.1: + resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-invalid-path@0.1.0: + resolution: {integrity: sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==} + engines: {node: '>=0.10.0'} + + is-lower-case@1.1.3: + resolution: {integrity: sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-cwd@2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-primitive@3.0.1: + resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} + engines: {node: '>=0.10.0'} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-upper-case@1.1.2: + resolution: {integrity: sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==} + + is-valid-path@0.1.1: + resolution: {integrity: sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==} + engines: {node: '>=0.10.0'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + + is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isbinaryfile@4.0.10: + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} + engines: {node: '>= 8.0.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + iso-639-1@3.1.2: + resolution: {integrity: sha512-Le7BRl3Jt9URvaiEHJCDEdvPZCfhiQoXnFgLAWNRhzFMwRFdWO7/5tLRQbiPzE394I9xd7KdRCM7S6qdOhwG5A==} + engines: {node: '>=6.0'} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + iterate-object@1.3.4: + resolution: {integrity: sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==} + + iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jimp-compact@0.16.1: + resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + + jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + + joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + + join-component@1.1.0: + resolution: {integrity: sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + + jsc-android@250231.0.0: + resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} + + jsc-safe-url@0.2.4: + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + + jscodeshift@0.14.0: + resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + + jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-deref-sync@0.13.0: + resolution: {integrity: sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==} + engines: {node: '>=6.0.0'} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keymirror@0.1.1: + resolution: {integrity: sha512-vIkZAFWoDijgQT/Nvl2AHCMmnegN2ehgTPYuyy2hWQkQSntI0S7ESYqdLkoSe1HyEBFHHkCgSIvVdSEiWwKvCg==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lighthouse-logger@1.4.2: + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + + lightningcss-darwin-arm64@1.19.0: + resolution: {integrity: sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-arm64@1.22.0: + resolution: {integrity: sha512-aH2be3nNny+It5YEVm8tBSSdRlBVWQV8m2oJ7dESiYRzyY/E/bQUe2xlw5caaMuhlM9aoTMtOH25yzMhir0qPg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.19.0: + resolution: {integrity: sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-darwin-x64@1.22.0: + resolution: {integrity: sha512-9KHRFA0Y6mNxRHeoQMp0YaI0R0O2kOgUlYPRjuasU4d+pI8NRhVn9bt0yX9VPs5ibWX1RbDViSPtGJvYYrfVAQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.22.0: + resolution: {integrity: sha512-xaYL3xperGwD85rQioDb52ozF3NAJb+9wrge3jD9lxGffplu0Mn35rXMptB8Uc2N9Mw1i3Bvl7+z1evlqVl7ww==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.19.0: + resolution: {integrity: sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm-gnueabihf@1.22.0: + resolution: {integrity: sha512-epQGvXIjOuxrZpMpMnRjK54ZqzhiHhCPLtHvw2fb6NeK2kK9YtF0wqmeTBiQ1AkbWfnnXGTstYaFNiadNK+StQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.19.0: + resolution: {integrity: sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-gnu@1.22.0: + resolution: {integrity: sha512-AArGtKSY4DGTA8xP8SDyNyKtpsUl1Rzq6FW4JomeyUQ4nBrR71uPChksTpj3gmWuGhZeRKLeCUI1DBid/zhChg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.19.0: + resolution: {integrity: sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.22.0: + resolution: {integrity: sha512-RRraNgP8hnBPhInTTUdlFm+z16C/ghbxBG51Sw00hd7HUyKmEUKRozyc5od+/N6pOrX/bIh5vIbtMXIxsos0lg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.19.0: + resolution: {integrity: sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-gnu@1.22.0: + resolution: {integrity: sha512-grdrhYGRi2KrR+bsXJVI0myRADqyA7ekprGxiuK5QRNkv7kj3Yq1fERDNyzZvjisHwKUi29sYMClscbtl+/Zpw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.19.0: + resolution: {integrity: sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.22.0: + resolution: {integrity: sha512-t5f90X+iQUtIyR56oXIHMBUyQFX/zwmPt72E6Dane3P8KNGlkijTg2I75XVQS860gNoEFzV7Mm5ArRRA7u5CAQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-x64-msvc@1.19.0: + resolution: {integrity: sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss-win32-x64-msvc@1.22.0: + resolution: {integrity: sha512-64HTDtOOZE9PUCZJiZZQpyqXBbdby1lnztBccnqh+NtbKxjnGzP92R2ngcgeuqMPecMNqNWxgoWgTGpC+yN5Sw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.19.0: + resolution: {integrity: sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==} + engines: {node: '>= 12.0.0'} + + lightningcss@1.22.0: + resolution: {integrity: sha512-+z0qvwRVzs4XGRXelnWRNwqsXUx8k3bSkbP8vD42kYKSk3z9OM2P3e/gagT7ei/gwh8DTS80LZOFZV6lm8Z8Fg==} + engines: {node: '>= 12.0.0'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@2.2.0: + resolution: {integrity: sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==} + + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + + lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@2.2.0: + resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} + engines: {node: '>=4'} + + log-symbols@3.0.0: + resolution: {integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==} + engines: {node: '>=8'} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + logkitty@0.7.1: + resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} + hasBin: true + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + lower-case-first@1.0.2: + resolution: {integrity: sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==} + + lower-case@1.1.4: + resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + + magicast@0.3.4: + resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + markdown-it@10.0.0: + resolution: {integrity: sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==} + hasBin: true + + marky@1.2.5: + resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} + + md5-file@3.2.3: + resolution: {integrity: sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==} + engines: {node: '>=0.10'} + hasBin: true + + md5@2.2.1: + resolution: {integrity: sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==} + + md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + + md5hex@1.0.0: + resolution: {integrity: sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ==} + + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + + mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + + memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + + memory-cache@0.2.0: + resolution: {integrity: sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + metro-babel-transformer@0.80.10: + resolution: {integrity: sha512-GXHueUzgzcazfzORDxDzWS9jVVRV6u+cR6TGvHOfGdfLzJCj7/D0PretLfyq+MwN20twHxLW+BUXkoaB8sCQBg==} + engines: {node: '>=18'} + + metro-cache-key@0.80.10: + resolution: {integrity: sha512-57qBhO3zQfoU/hP4ZlLW5hVej2jVfBX6B4NcSfMj4LgDPL3YknWg80IJBxzQfjQY/m+fmMLmPy8aUMHzUp/guA==} + engines: {node: '>=18'} + + metro-cache@0.80.10: + resolution: {integrity: sha512-8CBtDJwMguIE5RvV3PU1QtxUG8oSSX54mIuAbRZmcQ0MYiOl9JdrMd4JCBvIyhiZLoSStph425SMyCSnjtJsdA==} + engines: {node: '>=18'} + + metro-config@0.80.10: + resolution: {integrity: sha512-0GYAw0LkmGbmA81FepKQepL1KU/85Cyv7sAiWm6QWeV6AcVCpsKg6jGLqGHJ0LLPL60rWzA4TV1DQAlzdJAEtA==} + engines: {node: '>=18'} + + metro-core@0.80.10: + resolution: {integrity: sha512-nwBB6HbpGlNsZMuzxVqxqGIOsn5F3JKpsp8PziS7Z4mV8a/jA1d44mVOgYmDa2q5WlH5iJfRIIhdz24XRNDlLA==} + engines: {node: '>=18'} + + metro-file-map@0.80.10: + resolution: {integrity: sha512-ytsUq8coneaN7ZCVk1IogojcGhLIbzWyiI2dNmw2nnBgV/0A+M5WaTTgZ6dJEz3dzjObPryDnkqWPvIGLCPtiw==} + engines: {node: '>=18'} + + metro-minify-terser@0.80.10: + resolution: {integrity: sha512-Xyv9pEYpOsAerrld7cSLIcnCCpv8ItwysOmTA+AKf1q4KyE9cxrH2O2SA0FzMCkPzwxzBWmXwHUr+A89BpEM6g==} + engines: {node: '>=18'} + + metro-resolver@0.80.10: + resolution: {integrity: sha512-EYC5CL7f+bSzrqdk1bylKqFNGabfiI5PDctxoPx70jFt89Jz+ThcOscENog8Jb4LEQFG6GkOYlwmPpsi7kx3QA==} + engines: {node: '>=18'} + + metro-runtime@0.80.10: + resolution: {integrity: sha512-Xh0N589ZmSIgJYAM+oYwlzTXEHfASZac9TYPCNbvjNTn0EHKqpoJ/+Im5G3MZT4oZzYv4YnvzRtjqS5k0tK94A==} + engines: {node: '>=18'} + + metro-source-map@0.80.10: + resolution: {integrity: sha512-EyZswqJW8Uukv/HcQr6K19vkMXW1nzHAZPWJSEyJFKIbgp708QfRZ6vnZGmrtFxeJEaFdNup4bGnu8/mIOYlyA==} + engines: {node: '>=18'} + + metro-symbolicate@0.80.10: + resolution: {integrity: sha512-qAoVUoSxpfZ2DwZV7IdnQGXCSsf2cAUExUcZyuCqGlY5kaWBb0mx2BL/xbMFDJ4wBp3sVvSBPtK/rt4J7a0xBA==} + engines: {node: '>=18'} + hasBin: true + + metro-transform-plugins@0.80.10: + resolution: {integrity: sha512-leAx9gtA+2MHLsCeWK6XTLBbv2fBnNFu/QiYhWzMq8HsOAP4u1xQAU0tSgPs8+1vYO34Plyn79xTLUtQCRSSUQ==} + engines: {node: '>=18'} + + metro-transform-worker@0.80.10: + resolution: {integrity: sha512-zNfNLD8Rz99U+JdOTqtF2o7iTjcDMMYdVS90z6+81Tzd2D0lDWVpls7R1hadS6xwM+ymgXFQTjM6V6wFoZaC0g==} + engines: {node: '>=18'} + + metro@0.80.10: + resolution: {integrity: sha512-FDPi0X7wpafmDREXe1lgg3WzETxtXh6Kpq8+IwsG35R2tMyp2kFIqDdshdohuvDt1J/qDARcEPq7V/jElTb1kA==} + engines: {node: '>=18'} + hasBin: true + + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.53.0: + resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass-collect@2.0.1: + resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + + minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + + moti@0.29.0: + resolution: {integrity: sha512-o/blVE3lm0i/6E5X0RLK59SVWEGxo7pQh8dTm+JykVCYY9bcz0lWyZFCO1s+MMNq+nMsSZBX8lkp4im/AZmhyw==} + peerDependencies: + react-native-reanimated: '*' + + mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + mylas@2.1.13: + resolution: {integrity: sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==} + engines: {node: '>=12.0.0'} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + nested-error-stacks@2.0.1: + resolution: {integrity: sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==} + + netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} + + nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + + no-case@2.3.2: + resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} + + nocache@3.0.4: + resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} + engines: {node: '>=12.0.0'} + + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + + node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-plop@0.26.3: + resolution: {integrity: sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q==} + engines: {node: '>=8.9.4'} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + node-stream-zip@1.15.0: + resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} + engines: {node: '>=0.12.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-package-arg@7.0.0: + resolution: {integrity: sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==} + + npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + + ob1@0.80.10: + resolution: {integrity: sha512-dJHyB0S6JkMorUSfSGcYGkkg9kmq3qDUu3ygZUKIfkr47XOPuG35r2Sk6tbwtHXbdKIXmcMvM8DF2CwgdyaHfQ==} + engines: {node: '>=18'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + open@6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} + + open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@3.4.0: + resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} + engines: {node: '>=6'} + + ora@4.1.1: + resolution: {integrity: sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==} + engines: {node: '>=8'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + os-homedir@1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + osenv@0.1.5: + resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} + deprecated: This package is no longer supported. + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@3.0.0: + resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} + engines: {node: '>=8'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + pac-proxy-agent@7.0.2: + resolution: {integrity: sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==} + engines: {node: '>= 14'} + + pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} + + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + param-case@2.1.1: + resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-hls@1.0.7: + resolution: {integrity: sha512-tnAK2nXe8J/Jf66SwY2cUAKKXInLR9hkNhTtcS7t6J4CgkG8LGBfC1GuuXg7kLLbIQLXpVhZrY/tfyhDbqfzwg==} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-png@2.1.0: + resolution: {integrity: sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==} + engines: {node: '>=10'} + + parse5-htmlparser2-tree-adapter@7.0.0: + resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + + parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@2.0.1: + resolution: {integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==} + + password-prompt@1.1.3: + resolution: {integrity: sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-case@2.1.1: + resolution: {integrity: sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + performant-array-to-tree@1.11.0: + resolution: {integrity: sha512-YwCqIDvnaebXaKuKQhI5yJD6ryDc3FxvoeX/5ougXTKDUWb7s5S2BuBgIyftCa4sBe1+ZU5Kmi4RJy+pjjjrpw==} + + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@3.0.1: + resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} + engines: {node: '>=10'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-types@1.1.3: + resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} + + pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + + plimit-lit@1.6.1: + resolution: {integrity: sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==} + engines: {node: '>=12'} + + plist@3.1.0: + resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} + engines: {node: '>=10.4.0'} + + pngjs@3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + + popmotion@11.0.3: + resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.41: + resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier-plugin-tailwindcss@0.5.14: + resolution: {integrity: sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==} + engines: {node: '>=14.21.3'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig-melody': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-import-sort: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-style-order: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig-melody': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-import-sort: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-style-order: + optional: true + prettier-plugin-svelte: + optional: true + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + + promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + proxy-agent@6.4.0: + resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} + engines: {node: '>= 14'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + puppeteer-core@22.15.0: + resolution: {integrity: sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==} + engines: {node: '>=18'} + + puppeteer@22.15.0: + resolution: {integrity: sha512-XjCY1SiSEi1T7iSYuxS82ft85kwDJUS7wj1Z0eGVXKdtr5g4xnVcbjwxhq5xBnpK/E7x1VZZoJDxpjAOasHT4Q==} + engines: {node: '>=18'} + hasBin: true + + qrcode-terminal@0.11.0: + resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==} + hasBin: true + + query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + + querystring@0.2.1: + resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + + queue-lit@1.5.2: + resolution: {integrity: sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==} + engines: {node: '>=12'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + + queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + + r-json@1.3.0: + resolution: {integrity: sha512-xesd+RHCpymPCYd9DvDvUr1w1IieSChkqYF1EpuAYrvCfLXji9NP36DvyYZJZZB5soVDvZ0WUtBoZaU1g5Yt9A==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-devtools-core@5.3.1: + resolution: {integrity: sha512-7FSb9meX0btdBQLwdFOwt6bGqvRPabmVMMslv8fgoSPqXyuGpgQe36kx8gR86XPw7aV1yVouTp6fyZ0EH+NfUw==} + + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + + react-freeze@1.0.4: + resolution: {integrity: sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA==} + engines: {node: '>=10'} + peerDependencies: + react: '>=17.0.0' + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-native-animatable@1.3.3: + resolution: {integrity: sha512-2ckIxZQAsvWn25Ho+DK3d1mXIgj7tITkrS4pYDvx96WyOttSvzzFeQnM2od0+FUMzILbdHDsDEqZvnz1DYNQ1w==} + + react-native-css-interop@0.0.34: + resolution: {integrity: sha512-gz9b0RAyqy5Q/ogPQie8zkWHI+UFhn8JOPELUAV4k2XNkuXzfPRWDMSjQww51ozh7qx7oBKSYDnaCB/D6XgJ1Q==} + engines: {node: '>=18'} + peerDependencies: + react: '>=18' + react-native: '*' + react-native-reanimated: '>=3.6.2' + react-native-safe-area-context: '*' + react-native-svg: '*' + tailwindcss: ~3 + peerDependenciesMeta: + react-native-safe-area-context: + optional: true + react-native-svg: + optional: true + + react-native-fit-image@1.5.5: + resolution: {integrity: sha512-Wl3Vq2DQzxgsWKuW4USfck9zS7YzhvLNPpkwUUCF90bL32e1a0zOVQ3WsJILJOwzmPdHfzZmWasiiAUNBkhNkg==} + + react-native-gesture-handler@2.18.1: + resolution: {integrity: sha512-WF2fxQ5kTaxHghlkBM4YxO86SyGWVwrSNgJ1E8z/ZtL2xD5B3bg5agvuVFfOzvceC114yq71s6E9vKPz94ZxRw==} + peerDependencies: + react: '*' + react-native: '*' + + react-native-helmet-async@2.0.4: + resolution: {integrity: sha512-m3CkXWss6B1dd6mCMleLpzDCJJGGaHOLQsUzZv8kAASJmMfmVT4d2fx375iXKTRWT25ThBfae3dECuX5cq/8hg==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + + react-native-markdown-display@7.0.2: + resolution: {integrity: sha512-Mn4wotMvMfLAwbX/huMLt202W5DsdpMO/kblk+6eUs55S57VVNni1gzZCh5qpznYLjIQELNh50VIozEfY6fvaQ==} + peerDependencies: + react: '>=16.2.0' + react-native: '>=0.50.4' + + react-native-mmkv@2.12.2: + resolution: {integrity: sha512-6058Aq0p57chPrUutLGe9fYoiDVDNMU2PKV+lLFUJ3GhoHvUrLdsS1PDSCLr00yqzL4WJQ7TTzH+V8cpyrNcfg==} + peerDependencies: + react: '*' + react-native: '>=0.71.0' + + react-native-modal@13.0.1: + resolution: {integrity: sha512-UB+mjmUtf+miaG/sDhOikRfBOv0gJdBU2ZE1HtFWp6UixW9jCk/bhGdHUgmZljbPpp0RaO/6YiMmQSSK3kkMaw==} + peerDependencies: + react: '*' + react-native: '>=0.65.0' + + react-native-quick-base64@2.1.2: + resolution: {integrity: sha512-xghaXpWdB0ji8OwYyo0fWezRroNxiNFCNFpGUIyE7+qc4gA/IGWnysIG5L0MbdoORv8FkTKUvfd6yCUN5R2VFA==} + peerDependencies: + react: '*' + react-native: '*' + + react-native-quick-crypto@0.7.3: + resolution: {integrity: sha512-Fw0/N5qwbGAMuzMeF6pS6P6v3R/iZEuqwc4Yim2s/hEqr5lJ+Yeh1JhXPEpDUXI1ndTzV/qUdfji6V8r/B5+KA==} + peerDependencies: + react: '*' + react-native: '*' + + react-native-reanimated@3.15.0: + resolution: {integrity: sha512-yGxOyYAAu/5CyjonM2SgsM5sviiiK8HiHL9jT1bKfRxMLnNX9cFP8/UXRkbMT7ZXIfOlCvNFR0AqnphpuXIPVA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + react: '*' + react-native: '*' + + react-native-safe-area-context@4.10.8: + resolution: {integrity: sha512-Jx1lovhvIdYygg0UsMCBUJN0Wvj9GlA5bbcBLzjZf93uJpNHzaiHC4hR280+sNVK1+/pMHEyEkXVHDZE5JWn0w==} + peerDependencies: + react: '*' + react-native: '*' + + react-native-screens@3.34.0: + resolution: {integrity: sha512-8ri3Pd9QcpfXnVckOe/Lnto+BXmSPHV/Q0RB0XW0gDKsCv5wi5k7ez7g1SzgiYHl29MSdiqgjH30zUyOOowOaw==} + peerDependencies: + react: '*' + react-native: '*' + + react-native-svg@15.5.0: + resolution: {integrity: sha512-/DUPfmSf3eXt59WjG8hlRKVPzqVjM7duG9vJH6UYAJesj3NtYcyFsO5sYpSkovlOwagk84PibcVb92bBwMSmng==} + peerDependencies: + react: '*' + react-native: '*' + + react-native-video@5.2.1: + resolution: {integrity: sha512-aJlr9MeTuQ0LpZ4n+EC9RvhoKeiPbLtI2Rxy8u7zo/wzGevbRpWHSBj9xZ5YDBXnAVXzuqyNIkGhdw7bfdIBZw==} + + react-native-web-internals@1.108.3: + resolution: {integrity: sha512-ZMmDd1F+9kZOOUERPr6kZpi+cQ9iy8ZP131TJ1WyXA+p4REs/ScnzyemBd9LkPP12Eka+1xsMFMZejFLz/zOYw==} + + react-native-web-lite@1.108.3: + resolution: {integrity: sha512-qWDznJM6xenrVke6MJzJ5iKo2UTetXoelQGAKfEckiFx/V5D4dBwQdgENPzA62r3e5uK/ViMeR4Dg/1fhk8k0Q==} + peerDependencies: + react: '*' + + react-native-web@0.19.12: + resolution: {integrity: sha512-o2T0oztoVDQjztt4YksO9S1XRjoH/AqcSvifgWLrPJgGVbMWsfhILgl6lfUdEamVZzZSVV/2gqDVMAk/qq7mZw==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + react-native@0.74.5: + resolution: {integrity: sha512-Bgg2WvxaGODukJMTZFTZBNMKVaROHLwSb8VAGEdrlvKwfb1hHg/3aXTUICYk7dwgAnb+INbGMwnF8yeAgIUmqw==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@types/react': ^18.2.6 + react: 18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react-remove-scroll-bar@2.3.6: + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.5: + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-shallow-renderer@16.15.0: + resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readline@1.3.0: + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} + + recast@0.21.5: + resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} + engines: {node: '>= 4'} + + reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + engines: {node: '>= 0.4'} + + reforest@0.13.0: + resolution: {integrity: sha512-f0It/s51f1UWCCCni0viULALDBhxWBPFnLmZRYtKcz4zYeNWqeNTdcnU/OpBry9tk+jyMQcH3MLK8UdzsAvA5w==} + peerDependencies: + react: '>=16.8' + + regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + + regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + + registry-auth-token@3.3.2: + resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} + + registry-url@3.1.0: + resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} + engines: {node: '>=0.10.0'} + + regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + + remove-trailing-slash@0.1.1: + resolution: {integrity: sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + requireg@0.2.2: + resolution: {integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==} + engines: {node: '>= 4.0.0'} + + reselect@4.1.8: + resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} + + resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + + resolve@1.19.0: + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + resolve@1.7.1: + resolution: {integrity: sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==} + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + restore-cursor@2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup@4.20.0: + resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + scheduler@0.24.0-canary-efb381bbf-20230505: + resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} + + schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + + sentence-case@2.1.1: + resolution: {integrity: sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==} + + serialize-error@2.1.0: + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} + + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-cookie-parser@2.7.0: + resolution: {integrity: sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-value@4.1.0: + resolution: {integrity: sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==} + engines: {node: '>=11.0'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sf-symbols-typescript@1.0.0: + resolution: {integrity: sha512-DkS7q3nN68dEMb4E18HFPDAvyrjDZK9YAQQF2QxeFu9gp2xRDXFMF8qLJ1EmQ/qeEGQmop4lmMM1WtYJTIcCMw==} + engines: {node: '>=10'} + + shaka-player@2.5.23: + resolution: {integrity: sha512-3MC9k0OXJGw8AZ4n/ZNCZS2yDxx+3as5KgH6Tx4Q5TRboTBBCu6dYPI5vp1DxKeyU12MBN1Zcbs7AKzXv2EnCg==} + deprecated: Shaka Player < v4.2 is no longer supported. + + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + + shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-plist@1.3.1: + resolution: {integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + + slice-ansi@2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + slugify@1.6.6: + resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} + engines: {node: '>=8.0.0'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + snake-case@2.1.0: + resolution: {integrity: sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==} + + socks-proxy-agent@8.0.4: + resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==} + engines: {node: '>= 14'} + + socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + sonner@0.3.5: + resolution: {integrity: sha512-yIwaQ4dftMvFApuruto2t7wGyyaPRpj5qYBWYJIz4Z7uGcVn0IfqI/hWN0JyJN4izNbZFuCYZISf3fOGnvSlNQ==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + spinnies@0.5.1: + resolution: {integrity: sha512-WpjSXv9NQz0nU3yCT9TFEOfpFrXADY9C5fG6eAJqixLhvTX1jP3w92Y8IE5oafIe42nlF9otjhllnXN/QCaB3A==} + + split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + + split@1.0.1: + resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + srt-webvtt@2.0.0: + resolution: {integrity: sha512-G2Z7/Jf2NRKrmLYNSIhSYZZYE6OFlKXFp9Au2/zJBKgrioUzmrAys1x7GT01dwl6d2sEnqr5uahEIOd0JW/Rbw==} + + ssri@10.0.6: + resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + + stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + + stream-buffers@2.2.0: + resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} + engines: {node: '>= 0.10.0'} + + stream-slice@0.1.2: + resolution: {integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==} + + streamx@2.18.0: + resolution: {integrity: sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==} + + strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.includes@2.0.0: + resolution: {integrity: sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==} + + string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + + strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + + structured-headers@0.4.1: + resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} + + style-value-types@5.0.0: + resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} + + styleq@0.1.3: + resolution: {integrity: sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==} + + subsrt-ts@2.1.2: + resolution: {integrity: sha512-45yNlK42Z0pz4lAaNYbR5P60M2jmHl+gfAaiJxDIXsXXqoE7TkDCzl/00HgWyZXKkdIU6s8FiNtRvrlOZb+5Qg==} + hasBin: true + + sucrase@3.34.0: + resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} + engines: {node: '>=8'} + hasBin: true + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + sudo-prompt@8.2.5: + resolution: {integrity: sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==} + + sudo-prompt@9.1.1: + resolution: {integrity: sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==} + + sudo-prompt@9.2.1: + resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + swap-case@1.1.2: + resolution: {integrity: sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==} + + synckit@0.9.1: + resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} + engines: {node: ^14.18.0 || >=16.0.0} + + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + + table@6.8.2: + resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} + engines: {node: '>=10.0.0'} + + tailwindcss@3.4.10: + resolution: {integrity: sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==} + engines: {node: '>=14.0.0'} + hasBin: true + + tamagui@1.108.3: + resolution: {integrity: sha512-WZz/VH+T9mCXLakkfqV1EXWsGaL/28O3LSiZpfI76ELmia1tGzXcgx1v5fM0GnSvghPOtkcBGQxIdtqe0rO47Q==} + peerDependencies: + react: '*' + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tar-fs@3.0.6: + resolution: {integrity: sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==} + + tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + temp-dir@1.0.0: + resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} + engines: {node: '>=4'} + + temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + + temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} + + tempy@0.3.0: + resolution: {integrity: sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==} + engines: {node: '>=8'} + + tempy@0.7.1: + resolution: {integrity: sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==} + engines: {node: '>=10'} + + terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + + terser@5.31.6: + resolution: {integrity: sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-decoder@1.1.1: + resolution: {integrity: sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==} + + text-encoding-polyfill@0.6.7: + resolution: {integrity: sha512-/DZ1XJqhbqRkCop6s9ZFu8JrFRwmVuHg4quIRm+ziFkR3N3ec6ck6yBvJ1GYeEQZhLVwRW0rZE+C3SSJpy0RTg==} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + + tinygradient@1.1.5: + resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==} + + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + + tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + + title-case@2.1.1: + resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==} + + tmdb-ts@1.8.0: + resolution: {integrity: sha512-Y1M2gLrN9V0VA06fPQFtYOUpnMT0ySTOQM2gpysj2wXMMI8jUMeoctERt9F0C3lhJ38kwMXuOwZuyHiAtCAAvA==} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + traverse@0.6.9: + resolution: {integrity: sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==} + engines: {node: '>= 0.4'} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tsc-alias@1.8.10: + resolution: {integrity: sha512-Ibv4KAWfFkFdKJxnWfVtdOmB0Zi1RJVxcbPGiCDsFpCQSsmpWyuzHG3rQyI5YkobWwxFPEyQfu1hdo4qLG2zPw==} + hasBin: true + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + + turbo-darwin-64@1.13.4: + resolution: {integrity: sha512-A0eKd73R7CGnRinTiS7txkMElg+R5rKFp9HV7baDiEL4xTG1FIg/56Vm7A5RVgg8UNgG2qNnrfatJtb+dRmNdw==} + cpu: [x64] + os: [darwin] + + turbo-darwin-arm64@1.13.4: + resolution: {integrity: sha512-eG769Q0NF6/Vyjsr3mKCnkG/eW6dKMBZk6dxWOdrHfrg6QgfkBUk0WUUujzdtVPiUIvsh4l46vQrNVd9EOtbyA==} + cpu: [arm64] + os: [darwin] + + turbo-linux-64@1.13.4: + resolution: {integrity: sha512-Bq0JphDeNw3XEi+Xb/e4xoKhs1DHN7OoLVUbTIQz+gazYjigVZvtwCvgrZI7eW9Xo1eOXM2zw2u1DGLLUfmGkQ==} + cpu: [x64] + os: [linux] + + turbo-linux-arm64@1.13.4: + resolution: {integrity: sha512-BJcXw1DDiHO/okYbaNdcWN6szjXyHWx9d460v6fCHY65G8CyqGU3y2uUTPK89o8lq/b2C8NK0yZD+Vp0f9VoIg==} + cpu: [arm64] + os: [linux] + + turbo-stream@2.2.0: + resolution: {integrity: sha512-FKFg7A0To1VU4CH9YmSMON5QphK0BXjSoiC7D9yMh+mEEbXLUP9qJ4hEt1qcjKtzncs1OpcnjZO8NgrlVbZH+g==} + + turbo-windows-64@1.13.4: + resolution: {integrity: sha512-OFFhXHOFLN7A78vD/dlVuuSSVEB3s9ZBj18Tm1hk3aW1HTWTuAw0ReN6ZNlVObZUHvGy8d57OAGGxf2bT3etQw==} + cpu: [x64] + os: [win32] + + turbo-windows-arm64@1.13.4: + resolution: {integrity: sha512-u5A+VOKHswJJmJ8o8rcilBfU5U3Y1TTAfP9wX8bFh8teYF1ghP0EhtMRLjhtp6RPa+XCxHHVA2CiC3gbh5eg5g==} + cpu: [arm64] + os: [win32] + + turbo@1.13.4: + resolution: {integrity: sha512-1q7+9UJABuBAHrcC4Sxp5lOqYS5mvxRrwa33wpIyM18hlOCpRD/fTJNxZ0vhbMcJmz15o9kkVm743mPn7p6jpQ==} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + + type-fest@0.16.0: + resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} + engines: {node: '>=10'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.3.1: + resolution: {integrity: sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==} + engines: {node: '>=6'} + + type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + + type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + typedarray.prototype.slice@1.0.3: + resolution: {integrity: sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==} + engines: {node: '>= 0.4'} + + typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + engines: {node: '>=14.17'} + hasBin: true + + ua-parser-js@1.0.38: + resolution: {integrity: sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==} + + uc.micro@1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + uglify-js@3.19.2: + resolution: {integrity: sha512-S8KA6DDI47nQXJSi2ctQ629YzwOVs+bQML6DAtvy0wgNdpi+0ySpQK0g2pxBq2xfF2z3YCscu7NNA8nXT9PlIQ==} + engines: {node: '>=0.8.0'} + hasBin: true + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici-types@6.13.0: + resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==} + + undici@6.19.7: + resolution: {integrity: sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==} + engines: {node: '>=18.17'} + + unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + unique-filename@3.0.0: + resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + unique-slug@4.0.0: + resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + unique-string@1.0.0: + resolution: {integrity: sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==} + engines: {node: '>=4'} + + unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + + universal-user-agent@6.0.1: + resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@1.0.0: + resolution: {integrity: sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==} + engines: {node: '>= 10.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpacker@1.0.1: + resolution: {integrity: sha512-0HTljwp8+JBdITpoHcK1LWi7X9U2BspUmWv78UWZh7NshYhbh1nec8baY/iSbe2OQTZ2bhAtVdnr6/BTD0DKVg==} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + update-check@1.5.4: + resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} + + upper-case-first@1.1.2: + resolution: {integrity: sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==} + + upper-case@1.1.3: + resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-join@4.0.0: + resolution: {integrity: sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA==} + + urlpattern-polyfill@10.0.0: + resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} + + use-callback-ref@1.3.2: + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-latest-callback@0.2.1: + resolution: {integrity: sha512-QWlq8Is8BGWBf883QOEQP5HWYX/kMI+JTbJ5rdtvJLmXTIh9XoHIO3PQcmQl8BU44VKxow1kbQUHa6mQSMALDQ==} + peerDependencies: + react: '>=16.8' + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@7.0.3: + resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==} + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + valid-url@1.0.9: + resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==} + + validate-npm-package-name@3.0.0: + resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} + + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + validator@13.12.0: + resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} + engines: {node: '>= 0.10'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite-plugin-dts@3.9.1: + resolution: {integrity: sha512-rVp2KM9Ue22NGWB8dNtWEr+KekN3rIgz1tWD050QnRGlriUCmaDwa7qA5zDEjbXg5lAXhYMSBJtx3q3hQIJZSg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + typescript: '*' + vite: '*' + peerDependenciesMeta: + vite: + optional: true + + vite@5.4.0: + resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vlq@1.0.1: + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + + vue-template-compiler@2.7.16: + resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} + + vue-tsc@1.8.27: + resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} + hasBin: true + peerDependencies: + typescript: '*' + + w-json@1.3.10: + resolution: {integrity: sha512-XadVyw0xE+oZ5FGApXsdswv96rOhStzKqL53uSe5UaTadABGkWIg1+DTx8kiZ/VqTZTBneoL0l65RcPe4W3ecw==} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + warn-once@0.1.1: + resolution: {integrity: sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + web-encoding@1.1.5: + resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} + + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webidl-conversions@5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + + whatwg-url-without-unicode@8.0.0-3: + resolution: {integrity: sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==} + engines: {node: '>=10'} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-builtin-type@1.1.4: + resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + wonka@4.0.15: + resolution: {integrity: sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + + ws@6.2.3: + resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xcode@3.0.1: + resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==} + engines: {node: '>=10.0.0'} + + xml2js@0.6.0: + resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xmlbuilder@14.0.0: + resolution: {integrity: sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==} + engines: {node: '>=8.0'} + + xmlbuilder@15.1.1: + resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + engines: {node: '>=8.0'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@2.5.0: + resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + + z-schema@5.0.5: + resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} + engines: {node: '>=8.0.0'} + hasBin: true + + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + + zustand@4.5.4: + resolution: {integrity: sha512-/BPMyLKJPtFEvVL0E9E9BTUM63MNyhPGlvxk1XjrfWTUlV+BR8jufjsovHzrtR6YNcBEcL7cMHovL1n9xHawEg==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.10.4': + dependencies: + '@babel/highlight': 7.24.7 + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + + '@babel/compat-data@7.25.2': {} + + '@babel/core@7.25.2': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + convert-source-map: 2.0.0 + debug: 4.3.6 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.25.0': + dependencies: + '@babel/types': 7.25.2 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/helper-annotate-as-pure@7.24.7': + dependencies: + '@babel/types': 7.25.2 + + '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/helper-compilation-targets@7.25.2': + dependencies: + '@babel/compat-data': 7.25.2 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.3 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/traverse': 7.25.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + regexpu-core: 5.3.2 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + debug: 4.3.6 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-environment-visitor@7.24.7': + dependencies: + '@babel/types': 7.25.2 + + '@babel/helper-member-expression-to-functions@7.24.8': + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.24.7': + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.24.7': + dependencies: + '@babel/types': 7.25.2 + + '@babel/helper-plugin-utils@7.24.8': {} + + '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-wrap-function': 7.25.0 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/helper-simple-access@7.24.7': + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.24.8': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/helper-validator-option@7.24.8': {} + + '@babel/helper-wrap-function@7.25.0': + dependencies: + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.25.0': + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 + + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + + '@babel/parser@7.25.3': + dependencies: + '@babel/types': 7.25.2 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-export-default-from@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.2) + + '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + + '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.25.2)': + dependencies: + '@babel/compat-data': 7.25.2 + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + + '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-export-default-from@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-async-generator-functions@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + '@babel/traverse': 7.25.3 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/template': 7.25.0 + + '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + + '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) + + '@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) + + '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.25.1(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + + '@babel/plugin-transform-literals@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + + '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-simple-access': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.25.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + + '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + + '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + + '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + + '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-runtime@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.2) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/preset-env@7.25.3(@babel/core@7.25.2)': + dependencies: + '@babel/compat-data': 7.25.2 + '@babel/core': 7.25.2 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.3(@babel/core@7.25.2) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-async-generator-functions': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.25.2) + '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.25.2) + '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-modules-systemjs': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.25.2) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.2) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) + core-js-compat: 3.38.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-flow@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.2) + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/types': 7.25.2 + esutils: 2.0.3 + + '@babel/preset-react@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.24.7(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + '@babel/register@7.24.6(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.6 + source-map-support: 0.5.21 + + '@babel/regjsgen@0.8.0': {} + + '@babel/runtime-corejs3@7.25.0': + dependencies: + core-js-pure: 3.38.0 + regenerator-runtime: 0.14.1 + + '@babel/runtime@7.25.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.25.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + + '@babel/traverse@7.25.3': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 + debug: 4.3.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.25.2': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@bcoe/v8-coverage@0.2.3': {} + + '@craftzdog/react-native-buffer@6.0.5(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + ieee754: 1.2.1 + react-native-quick-base64: 2.1.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - react + - react-native + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@egjs/hammerjs@2.0.17': + dependencies: + '@types/hammerjs': 2.0.45 + + '@emotion/is-prop-valid@0.8.8': + dependencies: + '@emotion/memoize': 0.7.4 + optional: true + + '@emotion/memoize@0.7.4': + optional: true + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/aix-ppc64@0.23.0': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.23.0': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-arm@0.23.0': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/android-x64@0.23.0': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.23.0': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.23.0': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.23.0': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.23.0': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.23.0': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-arm@0.23.0': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.23.0': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.23.0': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.23.0': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.23.0': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.23.0': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.23.0': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/linux-x64@0.23.0': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.23.0': + optional: true + + '@esbuild/openbsd-arm64@0.23.0': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.23.0': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.23.0': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.23.0': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.23.0': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@esbuild/win32-x64@0.23.0': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.11.0': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.3.6 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.0': {} + + '@expo/bunyan@4.0.1': + dependencies: + uuid: 8.3.2 + + '@expo/cli@0.18.28(expo-modules-autolinking@1.11.1)': + dependencies: + '@babel/runtime': 7.25.0 + '@expo/code-signing-certificates': 0.0.5 + '@expo/config': 9.0.3 + '@expo/config-plugins': 8.0.8 + '@expo/devcert': 1.1.4 + '@expo/env': 0.3.0 + '@expo/image-utils': 0.5.1 + '@expo/json-file': 8.3.3 + '@expo/metro-config': 0.18.11 + '@expo/osascript': 2.1.3 + '@expo/package-manager': 1.5.2 + '@expo/plist': 0.1.3 + '@expo/prebuild-config': 7.0.8(expo-modules-autolinking@1.11.1) + '@expo/rudder-sdk-node': 1.1.1 + '@expo/spawn-async': 1.7.2 + '@expo/xcpretty': 4.3.1 + '@react-native/dev-middleware': 0.74.85 + '@urql/core': 2.3.6(graphql@15.8.0) + '@urql/exchange-retry': 0.3.0(graphql@15.8.0) + accepts: 1.3.8 + arg: 5.0.2 + better-opn: 3.0.2 + bplist-creator: 0.0.7 + bplist-parser: 0.3.2 + cacache: 18.0.4 + chalk: 4.1.2 + ci-info: 3.9.0 + connect: 3.7.0 + debug: 4.3.6 + env-editor: 0.4.2 + fast-glob: 3.3.2 + find-yarn-workspace-root: 2.0.0 + form-data: 3.0.1 + freeport-async: 2.0.0 + fs-extra: 8.1.0 + getenv: 1.0.0 + glob: 7.2.3 + graphql: 15.8.0 + graphql-tag: 2.12.6(graphql@15.8.0) + https-proxy-agent: 5.0.1 + internal-ip: 4.3.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + js-yaml: 3.14.1 + json-schema-deref-sync: 0.13.0 + lodash.debounce: 4.0.8 + md5hex: 1.0.0 + minimatch: 3.1.2 + node-fetch: 2.7.0 + node-forge: 1.3.1 + npm-package-arg: 7.0.0 + open: 8.4.2 + ora: 3.4.0 + picomatch: 3.0.1 + pretty-bytes: 5.6.0 + progress: 2.0.3 + prompts: 2.4.2 + qrcode-terminal: 0.11.0 + require-from-string: 2.0.2 + requireg: 0.2.2 + resolve: 1.22.8 + resolve-from: 5.0.0 + resolve.exports: 2.0.2 + semver: 7.6.3 + send: 0.18.0 + slugify: 1.6.6 + source-map-support: 0.5.21 + stacktrace-parser: 0.1.10 + structured-headers: 0.4.1 + tar: 6.2.1 + temp-dir: 2.0.0 + tempy: 0.7.1 + terminal-link: 2.1.1 + text-table: 0.2.0 + url-join: 4.0.0 + wrap-ansi: 7.0.0 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - encoding + - expo-modules-autolinking + - supports-color + - utf-8-validate + + '@expo/code-signing-certificates@0.0.5': + dependencies: + node-forge: 1.3.1 + nullthrows: 1.1.1 + + '@expo/config-plugins@8.0.8': + dependencies: + '@expo/config-types': 51.0.2 + '@expo/json-file': 8.3.3 + '@expo/plist': 0.1.3 + '@expo/sdk-runtime-versions': 1.0.0 + chalk: 4.1.2 + debug: 4.3.6 + find-up: 5.0.0 + getenv: 1.0.0 + glob: 7.1.6 + resolve-from: 5.0.0 + semver: 7.6.3 + slash: 3.0.0 + slugify: 1.6.6 + xcode: 3.0.1 + xml2js: 0.6.0 + transitivePeerDependencies: + - supports-color + + '@expo/config-types@51.0.2': {} + + '@expo/config@9.0.3': + dependencies: + '@babel/code-frame': 7.10.4 + '@expo/config-plugins': 8.0.8 + '@expo/config-types': 51.0.2 + '@expo/json-file': 8.3.3 + getenv: 1.0.0 + glob: 7.1.6 + require-from-string: 2.0.2 + resolve-from: 5.0.0 + semver: 7.6.3 + slugify: 1.6.6 + sucrase: 3.34.0 + transitivePeerDependencies: + - supports-color + + '@expo/devcert@1.1.4': + dependencies: + application-config-path: 0.1.1 + command-exists: 1.2.9 + debug: 3.2.7 + eol: 0.9.1 + get-port: 3.2.0 + glob: 10.4.5 + lodash: 4.17.21 + mkdirp: 0.5.6 + password-prompt: 1.1.3 + sudo-prompt: 8.2.5 + tmp: 0.0.33 + tslib: 2.6.3 + transitivePeerDependencies: + - supports-color + + '@expo/env@0.3.0': + dependencies: + chalk: 4.1.2 + debug: 4.3.6 + dotenv: 16.4.5 + dotenv-expand: 11.0.6 + getenv: 1.0.0 + transitivePeerDependencies: + - supports-color + + '@expo/image-utils@0.5.1': + dependencies: + '@expo/spawn-async': 1.7.2 + chalk: 4.1.2 + fs-extra: 9.0.0 + getenv: 1.0.0 + jimp-compact: 0.16.1 + node-fetch: 2.7.0 + parse-png: 2.1.0 + resolve-from: 5.0.0 + semver: 7.6.3 + tempy: 0.3.0 + transitivePeerDependencies: + - encoding + + '@expo/json-file@8.3.3': + dependencies: + '@babel/code-frame': 7.10.4 + json5: 2.2.3 + write-file-atomic: 2.4.3 + + '@expo/metro-config@0.18.11': + dependencies: + '@babel/core': 7.25.2 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + '@expo/config': 9.0.3 + '@expo/env': 0.3.0 + '@expo/json-file': 8.3.3 + '@expo/spawn-async': 1.7.2 + chalk: 4.1.2 + debug: 4.3.6 + find-yarn-workspace-root: 2.0.0 + fs-extra: 9.1.0 + getenv: 1.0.0 + glob: 7.2.3 + jsc-safe-url: 0.2.4 + lightningcss: 1.19.0 + postcss: 8.4.41 + resolve-from: 5.0.0 + transitivePeerDependencies: + - supports-color + + '@expo/metro-runtime@3.2.1(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))': + dependencies: + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + + '@expo/osascript@2.1.3': + dependencies: + '@expo/spawn-async': 1.7.2 + exec-async: 2.2.0 + + '@expo/package-manager@1.5.2': + dependencies: + '@expo/json-file': 8.3.3 + '@expo/spawn-async': 1.7.2 + ansi-regex: 5.0.1 + chalk: 4.1.2 + find-up: 5.0.0 + find-yarn-workspace-root: 2.0.0 + js-yaml: 3.14.1 + micromatch: 4.0.7 + npm-package-arg: 7.0.0 + ora: 3.4.0 + split: 1.0.1 + sudo-prompt: 9.1.1 + + '@expo/plist@0.1.3': + dependencies: + '@xmldom/xmldom': 0.7.13 + base64-js: 1.5.1 + xmlbuilder: 14.0.0 + + '@expo/prebuild-config@7.0.6(expo-modules-autolinking@1.11.1)': + dependencies: + '@expo/config': 9.0.3 + '@expo/config-plugins': 8.0.8 + '@expo/config-types': 51.0.2 + '@expo/image-utils': 0.5.1 + '@expo/json-file': 8.3.3 + '@react-native/normalize-colors': 0.74.84 + debug: 4.3.6 + expo-modules-autolinking: 1.11.1 + fs-extra: 9.1.0 + resolve-from: 5.0.0 + semver: 7.6.3 + xml2js: 0.6.0 + transitivePeerDependencies: + - encoding + - supports-color + + '@expo/prebuild-config@7.0.8(expo-modules-autolinking@1.11.1)': + dependencies: + '@expo/config': 9.0.3 + '@expo/config-plugins': 8.0.8 + '@expo/config-types': 51.0.2 + '@expo/image-utils': 0.5.1 + '@expo/json-file': 8.3.3 + '@react-native/normalize-colors': 0.74.85 + debug: 4.3.6 + expo-modules-autolinking: 1.11.1 + fs-extra: 9.1.0 + resolve-from: 5.0.0 + semver: 7.6.3 + xml2js: 0.6.0 + transitivePeerDependencies: + - encoding + - supports-color + + '@expo/rudder-sdk-node@1.1.1': + dependencies: + '@expo/bunyan': 4.0.1 + '@segment/loosely-validate-event': 2.0.0 + fetch-retry: 4.1.1 + md5: 2.3.0 + node-fetch: 2.7.0 + remove-trailing-slash: 0.1.1 + uuid: 8.3.2 + transitivePeerDependencies: + - encoding + + '@expo/sdk-runtime-versions@1.0.0': {} + + '@expo/server@0.4.4(typescript@5.5.4)': + dependencies: + '@remix-run/node': 2.11.1(typescript@5.5.4) + abort-controller: 3.0.0 + debug: 4.3.6 + source-map-support: 0.5.21 + transitivePeerDependencies: + - supports-color + - typescript + + '@expo/spawn-async@1.7.2': + dependencies: + cross-spawn: 7.0.3 + + '@expo/vector-icons@14.0.2': + dependencies: + prop-types: 15.8.1 + + '@expo/xcpretty@4.3.1': + dependencies: + '@babel/code-frame': 7.10.4 + chalk: 4.1.2 + find-up: 5.0.0 + js-yaml: 4.1.0 + + '@floating-ui/core@1.6.7': + dependencies: + '@floating-ui/utils': 0.2.7 + + '@floating-ui/dom@1.6.10': + dependencies: + '@floating-ui/core': 1.6.7 + '@floating-ui/utils': 0.2.7 + + '@floating-ui/react-dom@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/dom': 1.6.10 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@floating-ui/react-native@0.10.6(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/core': 1.6.7 + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + + '@floating-ui/react@0.26.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/utils': 0.2.7 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tabbable: 6.2.0 + + '@floating-ui/utils@0.2.7': {} + + '@graphql-typed-document-node/core@3.2.0(graphql@15.8.0)': + dependencies: + graphql: 15.8.0 + + '@hapi/hoek@9.3.0': {} + + '@hapi/topo@5.1.0': + dependencies: + '@hapi/hoek': 9.3.0 + + '@humanwhocodes/config-array@0.11.14': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.6 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@ianvs/prettier-plugin-sort-imports@4.3.1(prettier@3.3.3)': + dependencies: + '@babel/core': 7.25.2 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + prettier: 3.3.3 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@isaacs/ttlcache@1.4.1': {} + + '@istanbuljs/schema@0.1.3': {} + + '@jest/create-cache-key-function@29.7.0': + dependencies: + '@jest/types': 29.6.3 + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.2.0 + jest-mock: 29.7.0 + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 22.2.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/types@26.6.2': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.2.0 + '@types/yargs': 15.0.19 + chalk: 4.1.2 + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.2.0 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@microsoft/api-extractor-model@7.28.13(@types/node@22.2.0)': + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.0.2(@types/node@22.2.0) + transitivePeerDependencies: + - '@types/node' + + '@microsoft/api-extractor@7.43.0(@types/node@22.2.0)': + dependencies: + '@microsoft/api-extractor-model': 7.28.13(@types/node@22.2.0) + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.0.2(@types/node@22.2.0) + '@rushstack/rig-package': 0.5.2 + '@rushstack/terminal': 0.10.0(@types/node@22.2.0) + '@rushstack/ts-command-line': 4.19.1(@types/node@22.2.0) + lodash: 4.17.21 + minimatch: 3.0.8 + resolve: 1.22.8 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.4.2 + transitivePeerDependencies: + - '@types/node' + + '@microsoft/tsdoc-config@0.16.2': + dependencies: + '@microsoft/tsdoc': 0.14.2 + ajv: 6.12.6 + jju: 1.4.0 + resolve: 1.19.0 + + '@microsoft/tsdoc@0.14.2': {} + + '@motionone/animation@10.18.0': + dependencies: + '@motionone/easing': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + tslib: 2.6.3 + + '@motionone/dom@10.12.0': + dependencies: + '@motionone/animation': 10.18.0 + '@motionone/generators': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + hey-listen: 1.0.8 + tslib: 2.6.3 + + '@motionone/easing@10.18.0': + dependencies: + '@motionone/utils': 10.18.0 + tslib: 2.6.3 + + '@motionone/generators@10.18.0': + dependencies: + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + tslib: 2.6.3 + + '@motionone/types@10.17.1': {} + + '@motionone/utils@10.18.0': + dependencies: + '@motionone/types': 10.17.1 + hey-listen: 1.0.8 + tslib: 2.6.3 + + '@nabla/vite-plugin-eslint@2.0.4(eslint@8.57.0)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6))': + dependencies: + '@types/eslint': 8.56.11 + chalk: 4.1.2 + debug: 4.3.6 + eslint: 8.57.0 + vite: 5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + transitivePeerDependencies: + - supports-color + + '@noble/hashes@1.4.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@npmcli/fs@3.1.1': + dependencies: + semver: 7.6.3 + + '@octokit/auth-token@4.0.0': {} + + '@octokit/core@5.2.0': + dependencies: + '@octokit/auth-token': 4.0.0 + '@octokit/graphql': 7.1.0 + '@octokit/request': 8.4.0 + '@octokit/request-error': 5.1.0 + '@octokit/types': 13.5.0 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.1 + + '@octokit/endpoint@9.0.5': + dependencies: + '@octokit/types': 13.5.0 + universal-user-agent: 6.0.1 + + '@octokit/graphql@7.1.0': + dependencies: + '@octokit/request': 8.4.0 + '@octokit/types': 13.5.0 + universal-user-agent: 6.0.1 + + '@octokit/openapi-types@22.2.0': {} + + '@octokit/plugin-paginate-rest@11.3.1(@octokit/core@5.2.0)': + dependencies: + '@octokit/core': 5.2.0 + '@octokit/types': 13.5.0 + + '@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.0)': + dependencies: + '@octokit/core': 5.2.0 + + '@octokit/plugin-rest-endpoint-methods@13.2.2(@octokit/core@5.2.0)': + dependencies: + '@octokit/core': 5.2.0 + '@octokit/types': 13.5.0 + + '@octokit/request-error@5.1.0': + dependencies: + '@octokit/types': 13.5.0 + deprecation: 2.3.1 + once: 1.4.0 + + '@octokit/request@8.4.0': + dependencies: + '@octokit/endpoint': 9.0.5 + '@octokit/request-error': 5.1.0 + '@octokit/types': 13.5.0 + universal-user-agent: 6.0.1 + + '@octokit/rest@20.1.1': + dependencies: + '@octokit/core': 5.2.0 + '@octokit/plugin-paginate-rest': 11.3.1(@octokit/core@5.2.0) + '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.0) + '@octokit/plugin-rest-endpoint-methods': 13.2.2(@octokit/core@5.2.0) + + '@octokit/types@13.5.0': + dependencies: + '@octokit/openapi-types': 22.2.0 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.1': {} + + '@puppeteer/browsers@2.3.0': + dependencies: + debug: 4.3.6 + extract-zip: 2.0.1 + progress: 2.0.3 + proxy-agent: 6.4.0 + semver: 7.6.3 + tar-fs: 3.0.6 + unbzip2-stream: 1.4.3 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + + '@radix-ui/react-compose-refs@1.0.0(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.0 + react: 18.3.1 + + '@radix-ui/react-slot@1.0.1(react@18.3.1)': + dependencies: + '@babel/runtime': 7.25.0 + '@radix-ui/react-compose-refs': 1.0.0(react@18.3.1) + react: 18.3.1 + + '@react-native-anywhere/polyfill-base64@0.0.1-alpha.0': + dependencies: + base-64: 0.1.0 + + '@react-native-community/cli-clean@13.6.9': + dependencies: + '@react-native-community/cli-tools': 13.6.9 + chalk: 4.1.2 + execa: 5.1.1 + fast-glob: 3.3.2 + transitivePeerDependencies: + - encoding + + '@react-native-community/cli-config@13.6.9': + dependencies: + '@react-native-community/cli-tools': 13.6.9 + chalk: 4.1.2 + cosmiconfig: 5.2.1 + deepmerge: 4.3.1 + fast-glob: 3.3.2 + joi: 17.13.3 + transitivePeerDependencies: + - encoding + + '@react-native-community/cli-debugger-ui@13.6.9': + dependencies: + serve-static: 1.15.0 + transitivePeerDependencies: + - supports-color + + '@react-native-community/cli-doctor@13.6.9': + dependencies: + '@react-native-community/cli-config': 13.6.9 + '@react-native-community/cli-platform-android': 13.6.9 + '@react-native-community/cli-platform-apple': 13.6.9 + '@react-native-community/cli-platform-ios': 13.6.9 + '@react-native-community/cli-tools': 13.6.9 + chalk: 4.1.2 + command-exists: 1.2.9 + deepmerge: 4.3.1 + envinfo: 7.13.0 + execa: 5.1.1 + hermes-profile-transformer: 0.0.6 + node-stream-zip: 1.15.0 + ora: 5.4.1 + semver: 7.6.3 + strip-ansi: 5.2.0 + wcwidth: 1.0.1 + yaml: 2.5.0 + transitivePeerDependencies: + - encoding + + '@react-native-community/cli-hermes@13.6.9': + dependencies: + '@react-native-community/cli-platform-android': 13.6.9 + '@react-native-community/cli-tools': 13.6.9 + chalk: 4.1.2 + hermes-profile-transformer: 0.0.6 + transitivePeerDependencies: + - encoding + + '@react-native-community/cli-platform-android@13.6.9': + dependencies: + '@react-native-community/cli-tools': 13.6.9 + chalk: 4.1.2 + execa: 5.1.1 + fast-glob: 3.3.2 + fast-xml-parser: 4.4.1 + logkitty: 0.7.1 + transitivePeerDependencies: + - encoding + + '@react-native-community/cli-platform-apple@13.6.9': + dependencies: + '@react-native-community/cli-tools': 13.6.9 + chalk: 4.1.2 + execa: 5.1.1 + fast-glob: 3.3.2 + fast-xml-parser: 4.4.1 + ora: 5.4.1 + transitivePeerDependencies: + - encoding + + '@react-native-community/cli-platform-ios@13.6.9': + dependencies: + '@react-native-community/cli-platform-apple': 13.6.9 + transitivePeerDependencies: + - encoding + + '@react-native-community/cli-server-api@13.6.9': + dependencies: + '@react-native-community/cli-debugger-ui': 13.6.9 + '@react-native-community/cli-tools': 13.6.9 + compression: 1.7.4 + connect: 3.7.0 + errorhandler: 1.5.1 + nocache: 3.0.4 + pretty-format: 26.6.2 + serve-static: 1.15.0 + ws: 6.2.3 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@react-native-community/cli-tools@13.6.9': + dependencies: + appdirsjs: 1.2.7 + chalk: 4.1.2 + execa: 5.1.1 + find-up: 5.0.0 + mime: 2.6.0 + node-fetch: 2.7.0 + open: 6.4.0 + ora: 5.4.1 + semver: 7.6.3 + shell-quote: 1.8.1 + sudo-prompt: 9.2.1 + transitivePeerDependencies: + - encoding + + '@react-native-community/cli-types@13.6.9': + dependencies: + joi: 17.13.3 + + '@react-native-community/cli@13.6.9': + dependencies: + '@react-native-community/cli-clean': 13.6.9 + '@react-native-community/cli-config': 13.6.9 + '@react-native-community/cli-debugger-ui': 13.6.9 + '@react-native-community/cli-doctor': 13.6.9 + '@react-native-community/cli-hermes': 13.6.9 + '@react-native-community/cli-server-api': 13.6.9 + '@react-native-community/cli-tools': 13.6.9 + '@react-native-community/cli-types': 13.6.9 + chalk: 4.1.2 + commander: 9.5.0 + deepmerge: 4.3.1 + execa: 5.1.1 + find-up: 4.1.0 + fs-extra: 8.1.0 + graceful-fs: 4.2.11 + prompts: 2.4.2 + semver: 7.6.3 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@react-native/assets-registry@0.74.87': {} + + '@react-native/babel-plugin-codegen@0.74.87(@babel/preset-env@7.25.3(@babel/core@7.25.2))': + dependencies: + '@react-native/codegen': 0.74.87(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + + '@react-native/babel-preset@0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.25.2) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) + '@babel/plugin-proposal-export-default-from': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.25.2) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.25.2) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.25.2) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.25.2) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.2) + '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.25.2) + '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) + '@babel/template': 7.25.0 + '@react-native/babel-plugin-codegen': 0.74.87(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.25.2) + react-refresh: 0.14.2 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + + '@react-native/codegen@0.74.87(@babel/preset-env@7.25.3(@babel/core@7.25.2))': + dependencies: + '@babel/parser': 7.25.3 + '@babel/preset-env': 7.25.3(@babel/core@7.25.2) + glob: 7.2.3 + hermes-parser: 0.19.1 + invariant: 2.2.4 + jscodeshift: 0.14.0(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + mkdirp: 0.5.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + '@react-native/community-cli-plugin@0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))': + dependencies: + '@react-native-community/cli-server-api': 13.6.9 + '@react-native-community/cli-tools': 13.6.9 + '@react-native/dev-middleware': 0.74.87 + '@react-native/metro-babel-transformer': 0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + chalk: 4.1.2 + execa: 5.1.1 + metro: 0.80.10 + metro-config: 0.80.10 + metro-core: 0.80.10 + node-fetch: 2.7.0 + querystring: 0.2.1 + readline: 1.3.0 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@react-native/debugger-frontend@0.74.85': {} + + '@react-native/debugger-frontend@0.74.87': {} + + '@react-native/dev-middleware@0.74.85': + dependencies: + '@isaacs/ttlcache': 1.4.1 + '@react-native/debugger-frontend': 0.74.85 + '@rnx-kit/chromium-edge-launcher': 1.0.0 + chrome-launcher: 0.15.2 + connect: 3.7.0 + debug: 2.6.9 + node-fetch: 2.7.0 + nullthrows: 1.1.1 + open: 7.4.2 + selfsigned: 2.4.1 + serve-static: 1.15.0 + temp-dir: 2.0.0 + ws: 6.2.3 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@react-native/dev-middleware@0.74.87': + dependencies: + '@isaacs/ttlcache': 1.4.1 + '@react-native/debugger-frontend': 0.74.87 + '@rnx-kit/chromium-edge-launcher': 1.0.0 + chrome-launcher: 0.15.2 + connect: 3.7.0 + debug: 2.6.9 + node-fetch: 2.7.0 + nullthrows: 1.1.1 + open: 7.4.2 + selfsigned: 2.4.1 + serve-static: 1.15.0 + temp-dir: 2.0.0 + ws: 6.2.3 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + '@react-native/gradle-plugin@0.74.87': {} + + '@react-native/js-polyfills@0.74.87': {} + + '@react-native/metro-babel-transformer@0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))': + dependencies: + '@babel/core': 7.25.2 + '@react-native/babel-preset': 0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + hermes-parser: 0.19.1 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + + '@react-native/normalize-color@2.1.0': {} + + '@react-native/normalize-colors@0.74.84': {} + + '@react-native/normalize-colors@0.74.85': {} + + '@react-native/normalize-colors@0.74.87': {} + + '@react-native/virtualized-lists@0.74.87(@types/react@18.3.3)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + + '@react-navigation/bottom-tabs@6.5.20(@react-navigation/native@6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-screens@3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@react-navigation/elements': 1.3.31(@react-navigation/native@6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@react-navigation/native': 6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + color: 4.2.3 + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native-safe-area-context: 4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-screens: 3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + warn-once: 0.1.1 + + '@react-navigation/core@6.4.17(react@18.3.1)': + dependencies: + '@react-navigation/routers': 6.1.9 + escape-string-regexp: 4.0.0 + nanoid: 3.3.7 + query-string: 7.1.3 + react: 18.3.1 + react-is: 16.13.1 + use-latest-callback: 0.2.1(react@18.3.1) + + '@react-navigation/elements@1.3.31(@react-navigation/native@6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@react-navigation/native': 6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native-safe-area-context: 4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + + '@react-navigation/native-stack@6.9.26(@react-navigation/native@6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-screens@3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@react-navigation/elements': 1.3.31(@react-navigation/native@6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@react-navigation/native': 6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native-safe-area-context: 4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-screens: 3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + warn-once: 0.1.1 + + '@react-navigation/native@6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@react-navigation/core': 6.4.17(react@18.3.1) + escape-string-regexp: 4.0.0 + fast-deep-equal: 3.1.3 + nanoid: 3.3.7 + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + + '@react-navigation/routers@6.1.9': + dependencies: + nanoid: 3.3.7 + + '@remix-run/node@2.11.1(typescript@5.5.4)': + dependencies: + '@remix-run/server-runtime': 2.11.1(typescript@5.5.4) + '@remix-run/web-fetch': 4.4.2 + '@web3-storage/multipart-parser': 1.0.0 + cookie-signature: 1.2.1 + source-map-support: 0.5.21 + stream-slice: 0.1.2 + undici: 6.19.7 + optionalDependencies: + typescript: 5.5.4 + + '@remix-run/router@1.19.0': {} + + '@remix-run/server-runtime@2.11.1(typescript@5.5.4)': + dependencies: + '@remix-run/router': 1.19.0 + '@types/cookie': 0.6.0 + '@web3-storage/multipart-parser': 1.0.0 + cookie: 0.6.0 + set-cookie-parser: 2.7.0 + source-map: 0.7.4 + turbo-stream: 2.2.0 + optionalDependencies: + typescript: 5.5.4 + + '@remix-run/web-blob@3.1.0': + dependencies: + '@remix-run/web-stream': 1.1.0 + web-encoding: 1.1.5 + + '@remix-run/web-fetch@4.4.2': + dependencies: + '@remix-run/web-blob': 3.1.0 + '@remix-run/web-file': 3.1.0 + '@remix-run/web-form-data': 3.1.0 + '@remix-run/web-stream': 1.1.0 + '@web3-storage/multipart-parser': 1.0.0 + abort-controller: 3.0.0 + data-uri-to-buffer: 3.0.1 + mrmime: 1.0.1 + + '@remix-run/web-file@3.1.0': + dependencies: + '@remix-run/web-blob': 3.1.0 + + '@remix-run/web-form-data@3.1.0': + dependencies: + web-encoding: 1.1.5 + + '@remix-run/web-stream@1.1.0': + dependencies: + web-streams-polyfill: 3.3.3 + + '@rnx-kit/chromium-edge-launcher@1.0.0': + dependencies: + '@types/node': 18.19.44 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + mkdirp: 1.0.4 + rimraf: 3.0.2 + transitivePeerDependencies: + - supports-color + + '@rollup/pluginutils@5.1.0(rollup@4.20.0)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.20.0 + + '@rollup/rollup-android-arm-eabi@4.20.0': + optional: true + + '@rollup/rollup-android-arm64@4.20.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.20.0': + optional: true + + '@rollup/rollup-darwin-x64@4.20.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.20.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.20.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.20.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.20.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.20.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.20.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.20.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.20.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.20.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.20.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.20.0': + optional: true + + '@rushstack/node-core-library@4.0.2(@types/node@22.2.0)': + dependencies: + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.8 + semver: 7.5.4 + z-schema: 5.0.5 + optionalDependencies: + '@types/node': 22.2.0 + + '@rushstack/rig-package@0.5.2': + dependencies: + resolve: 1.22.8 + strip-json-comments: 3.1.1 + + '@rushstack/terminal@0.10.0(@types/node@22.2.0)': + dependencies: + '@rushstack/node-core-library': 4.0.2(@types/node@22.2.0) + supports-color: 8.1.1 + optionalDependencies: + '@types/node': 22.2.0 + + '@rushstack/ts-command-line@4.19.1(@types/node@22.2.0)': + dependencies: + '@rushstack/terminal': 0.10.0(@types/node@22.2.0) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + + '@salihgun/react-native-video-processor@0.3.1(ffmpeg-kit-react-native@6.0.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-video@5.2.1)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + ffmpeg-kit-react-native: 6.0.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native-video: 5.2.1 + + '@scure/base@1.1.7': {} + + '@scure/bip39@1.3.0': + dependencies: + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.7 + + '@segment/loosely-validate-event@2.0.0': + dependencies: + component-type: 1.2.2 + join-component: 1.1.0 + + '@sideway/address@4.1.5': + dependencies: + '@hapi/hoek': 9.3.0 + + '@sideway/formula@3.0.1': {} + + '@sideway/pinpoint@2.0.0': {} + + '@sinclair/typebox@0.27.8': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@swc/core-darwin-arm64@1.7.10': + optional: true + + '@swc/core-darwin-x64@1.7.10': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.7.10': + optional: true + + '@swc/core-linux-arm64-gnu@1.7.10': + optional: true + + '@swc/core-linux-arm64-musl@1.7.10': + optional: true + + '@swc/core-linux-x64-gnu@1.7.10': + optional: true + + '@swc/core-linux-x64-musl@1.7.10': + optional: true + + '@swc/core-win32-arm64-msvc@1.7.10': + optional: true + + '@swc/core-win32-ia32-msvc@1.7.10': + optional: true + + '@swc/core-win32-x64-msvc@1.7.10': + optional: true + + '@swc/core@1.7.10(@swc/helpers@0.5.12)': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.12 + optionalDependencies: + '@swc/core-darwin-arm64': 1.7.10 + '@swc/core-darwin-x64': 1.7.10 + '@swc/core-linux-arm-gnueabihf': 1.7.10 + '@swc/core-linux-arm64-gnu': 1.7.10 + '@swc/core-linux-arm64-musl': 1.7.10 + '@swc/core-linux-x64-gnu': 1.7.10 + '@swc/core-linux-x64-musl': 1.7.10 + '@swc/core-win32-arm64-msvc': 1.7.10 + '@swc/core-win32-ia32-msvc': 1.7.10 + '@swc/core-win32-x64-msvc': 1.7.10 + '@swc/helpers': 0.5.12 + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.12': + dependencies: + tslib: 2.6.3 + + '@swc/types@0.1.12': + dependencies: + '@swc/counter': 0.1.3 + + '@tamagui/accordion@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/collapsible': 1.108.3(react@18.3.1) + '@tamagui/collection': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/polyfill-dev': 1.108.3 + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/adapt@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + transitivePeerDependencies: + - react + + '@tamagui/alert-dialog@1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/animate-presence': 1.108.3(react@18.3.1) + '@tamagui/aria-hidden': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/dialog': 1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/dismissable': 1.108.3(react@18.3.1) + '@tamagui/focus-scope': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/polyfill-dev': 1.108.3 + '@tamagui/popper': 1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/portal': 1.108.3(react@18.3.1) + '@tamagui/remove-scroll': 1.108.3(@types/react@18.3.3)(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/text': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + react: 18.3.1 + transitivePeerDependencies: + - '@types/react' + - react-dom + - react-native + + '@tamagui/animate-presence@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/use-constant': 1.108.3(react@18.3.1) + '@tamagui/use-force-update': 1.108.3(react@18.3.1) + '@tamagui/use-presence': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + transitivePeerDependencies: + - react + + '@tamagui/animate@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/animate-presence': 1.108.3(react@18.3.1) + transitivePeerDependencies: + - react + + '@tamagui/animations-css@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/cubic-bezier-animator': 1.108.3 + '@tamagui/use-presence': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/animations-moti@1.108.3(moti@0.29.0(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/use-presence': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + moti: 0.29.0(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1) + react: 18.3.1 + + '@tamagui/animations-react-native@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/use-presence': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/aria-hidden@1.108.3(react@18.3.1)': + dependencies: + aria-hidden: 1.2.4 + react: 18.3.1 + + '@tamagui/avatar@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/image': 1.108.3(react@18.3.1) + '@tamagui/shapes': 1.108.3(react@18.3.1) + '@tamagui/text': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/babel-plugin-fully-specified@1.108.3': + dependencies: + '@babel/core': 7.25.2 + transitivePeerDependencies: + - supports-color + + '@tamagui/babel-plugin@1.108.3(react@18.3.1)': + dependencies: + '@babel/generator': 7.25.0 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@tamagui/static': 1.108.3(react@18.3.1) + transitivePeerDependencies: + - encoding + - react + - supports-color + + '@tamagui/build@1.108.3': + dependencies: + '@babel/core': 7.25.2 + '@tamagui/babel-plugin-fully-specified': 1.108.3 + '@types/fs-extra': 9.0.13 + babel-plugin-fully-specified: 1.3.0(@babel/core@7.25.2) + chokidar: 3.6.0 + esbuild: 0.23.0 + esbuild-plugin-es5: 2.1.1(esbuild@0.23.0) + esbuild-register: 3.6.0(esbuild@0.23.0) + execa: 5.1.1 + fast-glob: 3.3.2 + fs-extra: 11.2.0 + lodash.debounce: 4.0.8 + transitivePeerDependencies: + - supports-color + + '@tamagui/button@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/font-size': 1.108.3(react@18.3.1) + '@tamagui/get-button-sized': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/helpers-tamagui': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/text': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/card@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/checkbox-headless@1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/focusable': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/label': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/use-previous': 1.108.3 + react: 18.3.1 + transitivePeerDependencies: + - react-native + + '@tamagui/checkbox@1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/checkbox-headless': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/focusable': 1.108.3(react@18.3.1) + '@tamagui/font-size': 1.108.3(react@18.3.1) + '@tamagui/get-token': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/helpers-tamagui': 1.108.3(react@18.3.1) + '@tamagui/label': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/use-previous': 1.108.3 + react: 18.3.1 + transitivePeerDependencies: + - react-native + + '@tamagui/cli-color@1.108.3': {} + + '@tamagui/collapsible@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/animate-presence': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/polyfill-dev': 1.108.3 + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/collection@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/polyfill-dev': 1.108.3 + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/colors@1.108.3': {} + + '@tamagui/compose-refs@1.108.3(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@tamagui/config-default@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/animations-css': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/shorthands': 1.108.3 + transitivePeerDependencies: + - react + + '@tamagui/config@1.108.3(moti@0.29.0(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/animations-css': 1.108.3(react@18.3.1) + '@tamagui/animations-moti': 1.108.3(moti@0.29.0(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@tamagui/animations-react-native': 1.108.3(react@18.3.1) + '@tamagui/colors': 1.108.3 + '@tamagui/font-inter': 1.108.3(react@18.3.1) + '@tamagui/font-silkscreen': 1.108.3(react@18.3.1) + '@tamagui/react-native-media-driver': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/shorthands': 1.108.3 + '@tamagui/themes': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + transitivePeerDependencies: + - moti + - react + - react-native + + '@tamagui/constants@1.108.3(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@tamagui/core@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/react-native-use-pressable': 1.108.3(react@18.3.1) + '@tamagui/react-native-use-responder-events': 1.108.3(react@18.3.1) + '@tamagui/use-event': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + transitivePeerDependencies: + - react + + '@tamagui/create-context@1.108.3(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@tamagui/create-theme@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/web': 1.108.3(react@18.3.1) + transitivePeerDependencies: + - react + + '@tamagui/cubic-bezier-animator@1.108.3': {} + + '@tamagui/dialog@1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/adapt': 1.108.3(react@18.3.1) + '@tamagui/animate-presence': 1.108.3(react@18.3.1) + '@tamagui/aria-hidden': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/dismissable': 1.108.3(react@18.3.1) + '@tamagui/focus-scope': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/polyfill-dev': 1.108.3 + '@tamagui/popper': 1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/portal': 1.108.3(react@18.3.1) + '@tamagui/remove-scroll': 1.108.3(@types/react@18.3.3)(react@18.3.1) + '@tamagui/sheet': 1.108.3(@types/react@18.3.3)(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/text': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + react: 18.3.1 + transitivePeerDependencies: + - '@types/react' + - react-dom + - react-native + + '@tamagui/dismissable@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/use-escape-keydown': 1.108.3 + '@tamagui/use-event': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/elements@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/core': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/fake-react-native@1.108.3': {} + + '@tamagui/floating@1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/react-native': 0.10.6(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react: 18.3.1 + transitivePeerDependencies: + - react-dom + - react-native + + '@tamagui/focus-scope@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/use-event': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/focusable@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/font-inter@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/core': 1.108.3(react@18.3.1) + transitivePeerDependencies: + - react + + '@tamagui/font-silkscreen@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/core': 1.108.3(react@18.3.1) + transitivePeerDependencies: + - react + + '@tamagui/font-size@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/core': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/form@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/focusable': 1.108.3(react@18.3.1) + '@tamagui/get-button-sized': 1.108.3(react@18.3.1) + '@tamagui/get-font-sized': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/text': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/generate-themes@1.108.3(esbuild@0.23.0)(react@18.3.1)': + dependencies: + '@tamagui/create-theme': 1.108.3(react@18.3.1) + '@tamagui/theme-builder': 1.108.3(react@18.3.1) + '@tamagui/types': 1.108.3 + esbuild-register: 3.6.0(esbuild@0.23.0) + fs-extra: 11.2.0 + transitivePeerDependencies: + - esbuild + - react + - supports-color + + '@tamagui/get-button-sized@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/get-token': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/get-font-sized@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/core': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/get-token@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/group@1.108.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)': + dependencies: + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + react: 18.3.1 + reforest: 0.13.0(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - immer + + '@tamagui/helpers-node@1.108.3': + dependencies: + '@tamagui/types': 1.108.3 + + '@tamagui/helpers-tamagui@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/helpers@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/simple-hash': 1.108.3 + transitivePeerDependencies: + - react + + '@tamagui/image@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/label@1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/focusable': 1.108.3(react@18.3.1) + '@tamagui/get-button-sized': 1.108.3(react@18.3.1) + '@tamagui/get-font-sized': 1.108.3(react@18.3.1) + '@tamagui/text': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + + '@tamagui/linear-gradient@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/list-item@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/font-size': 1.108.3(react@18.3.1) + '@tamagui/get-font-sized': 1.108.3(react@18.3.1) + '@tamagui/get-token': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/helpers-tamagui': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/text': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/metro-plugin@1.108.3(@babel/core@7.25.2)(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-svg@15.5.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)))': + dependencies: + '@tamagui/static': 1.108.3(react@18.3.1) + fs-extra: 11.2.0 + metro-config: 0.80.10 + metro-transform-worker: 0.80.10 + react-native-css-interop: 0.0.34(@babel/core@7.25.2)(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-svg@15.5.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4))) + transitivePeerDependencies: + - '@babel/core' + - bufferutil + - encoding + - react + - react-native + - react-native-reanimated + - react-native-safe-area-context + - react-native-svg + - supports-color + - tailwindcss + - utf-8-validate + + '@tamagui/normalize-css-color@1.108.3': + dependencies: + '@react-native/normalize-color': 2.1.0 + + '@tamagui/polyfill-dev@1.108.3': {} + + '@tamagui/popover@1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react': 0.26.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/adapt': 1.108.3(react@18.3.1) + '@tamagui/animate': 1.108.3(react@18.3.1) + '@tamagui/aria-hidden': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/dismissable': 1.108.3(react@18.3.1) + '@tamagui/floating': 1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/focus-scope': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/polyfill-dev': 1.108.3 + '@tamagui/popper': 1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/portal': 1.108.3(react@18.3.1) + '@tamagui/remove-scroll': 1.108.3(@types/react@18.3.3)(react@18.3.1) + '@tamagui/scroll-view': 1.108.3(react@18.3.1) + '@tamagui/sheet': 1.108.3(@types/react@18.3.3)(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + react: 18.3.1 + react-freeze: 1.0.4(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - react-dom + - react-native + + '@tamagui/popper@1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/floating': 1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/get-token': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + react: 18.3.1 + transitivePeerDependencies: + - react-dom + - react-native + + '@tamagui/portal@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/use-did-finish-ssr': 1.108.3(react@18.3.1) + '@tamagui/use-event': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/progress@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/get-token': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/proxy-worm@1.108.3': {} + + '@tamagui/radio-group@1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/focusable': 1.108.3(react@18.3.1) + '@tamagui/get-token': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/label': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/radio-headless': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/roving-focus': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/use-previous': 1.108.3 + react: 18.3.1 + transitivePeerDependencies: + - react-native + + '@tamagui/radio-headless@1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/focusable': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/label': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/use-previous': 1.108.3 + react: 18.3.1 + transitivePeerDependencies: + - react-native + + '@tamagui/react-native-media-driver@1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/web': 1.108.3(react@18.3.1) + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + transitivePeerDependencies: + - react + + '@tamagui/react-native-use-pressable@1.108.3(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@tamagui/react-native-use-responder-events@1.108.3(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@tamagui/remove-scroll@1.108.3(@types/react@18.3.3)(react@18.3.1)': + dependencies: + react: 18.3.1 + react-remove-scroll: 2.5.5(@types/react@18.3.3)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + + '@tamagui/roving-focus@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/collection': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/use-direction': 1.108.3(react@18.3.1) + '@tamagui/use-event': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/scroll-view@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/select@1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react': 0.26.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/react-native': 0.10.6(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/adapt': 1.108.3(react@18.3.1) + '@tamagui/animate-presence': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/dismissable': 1.108.3(react@18.3.1) + '@tamagui/focus-scope': 1.108.3(react@18.3.1) + '@tamagui/get-token': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/list-item': 1.108.3(react@18.3.1) + '@tamagui/portal': 1.108.3(react@18.3.1) + '@tamagui/remove-scroll': 1.108.3(@types/react@18.3.3)(react@18.3.1) + '@tamagui/separator': 1.108.3(react@18.3.1) + '@tamagui/sheet': 1.108.3(@types/react@18.3.3)(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/text': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/use-debounce': 1.108.3(react@18.3.1) + '@tamagui/use-event': 1.108.3(react@18.3.1) + '@tamagui/use-previous': 1.108.3 + react: 18.3.1 + transitivePeerDependencies: + - '@types/react' + - react-dom + - react-native + + '@tamagui/separator@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/shapes@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/sheet@1.108.3(@types/react@18.3.3)(react@18.3.1)': + dependencies: + '@tamagui/animate-presence': 1.108.3(react@18.3.1) + '@tamagui/animations-react-native': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/portal': 1.108.3(react@18.3.1) + '@tamagui/remove-scroll': 1.108.3(@types/react@18.3.3)(react@18.3.1) + '@tamagui/scroll-view': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/use-constant': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/use-keyboard-visible': 1.108.3(react@18.3.1) + react: 18.3.1 + transitivePeerDependencies: + - '@types/react' + + '@tamagui/shorthands@1.108.3': {} + + '@tamagui/simple-hash@1.108.3': {} + + '@tamagui/slider@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/get-token': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/use-debounce': 1.108.3(react@18.3.1) + '@tamagui/use-direction': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/stacks@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/core': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/static@1.108.3(react@18.3.1)': + dependencies: + '@babel/core': 7.25.2 + '@babel/generator': 7.25.0 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/parser': 7.25.3 + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) + '@babel/runtime': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + '@tamagui/build': 1.108.3 + '@tamagui/cli-color': 1.108.3 + '@tamagui/config-default': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/fake-react-native': 1.108.3 + '@tamagui/generate-themes': 1.108.3(esbuild@0.23.0)(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/helpers-node': 1.108.3 + '@tamagui/proxy-worm': 1.108.3 + '@tamagui/shorthands': 1.108.3 + '@tamagui/types': 1.108.3 + babel-literal-to-ast: 2.1.0(@babel/core@7.25.2) + browserslist: 4.23.3 + check-dependency-version-consistency: 4.1.0 + esbuild: 0.23.0 + esbuild-register: 3.6.0(esbuild@0.23.0) + find-cache-dir: 3.3.2 + find-root: 1.1.0 + fs-extra: 11.2.0 + invariant: 2.2.4 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-native-web: 0.19.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-native-web-internals: 1.108.3 + react-native-web-lite: 1.108.3(react@18.3.1) + transitivePeerDependencies: + - encoding + - supports-color + + '@tamagui/switch-headless@1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/label': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/use-previous': 1.108.3 + react: 18.3.1 + transitivePeerDependencies: + - react-native + + '@tamagui/switch@1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/focusable': 1.108.3(react@18.3.1) + '@tamagui/get-token': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/label': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/switch-headless': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/use-previous': 1.108.3 + react: 18.3.1 + transitivePeerDependencies: + - react-native + + '@tamagui/tabs@1.108.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/get-button-sized': 1.108.3(react@18.3.1) + '@tamagui/group': 1.108.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/roving-focus': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/use-direction': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + transitivePeerDependencies: + - '@types/react' + - immer + + '@tamagui/text@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/get-font-sized': 1.108.3(react@18.3.1) + '@tamagui/helpers-tamagui': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/theme-builder@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/create-theme': 1.108.3(react@18.3.1) + color2k: 2.0.3 + transitivePeerDependencies: + - react + + '@tamagui/theme@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/themes@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/colors': 1.108.3 + '@tamagui/create-theme': 1.108.3(react@18.3.1) + '@tamagui/theme-builder': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + transitivePeerDependencies: + - react + + '@tamagui/timer@1.108.3': {} + + '@tamagui/toast@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/animate-presence': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/dismissable': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/polyfill-dev': 1.108.3 + '@tamagui/portal': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/text': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/visually-hidden': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/toggle-group@1.108.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)': + dependencies: + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/focusable': 1.108.3(react@18.3.1) + '@tamagui/font-size': 1.108.3(react@18.3.1) + '@tamagui/get-token': 1.108.3(react@18.3.1) + '@tamagui/group': 1.108.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/helpers-tamagui': 1.108.3(react@18.3.1) + '@tamagui/roving-focus': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/use-direction': 1.108.3(react@18.3.1) + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + transitivePeerDependencies: + - '@types/react' + - immer + + '@tamagui/tooltip@1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react': 0.26.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/floating': 1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/get-token': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/polyfill-dev': 1.108.3 + '@tamagui/popover': 1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/popper': 1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/text': 1.108.3(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + react: 18.3.1 + transitivePeerDependencies: + - '@types/react' + - react-dom + - react-native + + '@tamagui/types@1.108.3': {} + + '@tamagui/use-callback-ref@1.108.3': {} + + '@tamagui/use-constant@1.108.3(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@tamagui/use-controllable-state@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/use-event': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/use-debounce@1.108.3(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@tamagui/use-did-finish-ssr@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/constants': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/use-direction@1.108.3(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@tamagui/use-escape-keydown@1.108.3': + dependencies: + '@tamagui/use-callback-ref': 1.108.3 + + '@tamagui/use-event@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/constants': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/use-force-update@1.108.3(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@tamagui/use-keyboard-visible@1.108.3(react@18.3.1)': + dependencies: + react: 18.3.1 + + '@tamagui/use-presence@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/use-previous@1.108.3': {} + + '@tamagui/use-window-dimensions@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/constants': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/visually-hidden@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/web': 1.108.3(react@18.3.1) + react: 18.3.1 + + '@tamagui/web@1.108.3(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/normalize-css-color': 1.108.3 + '@tamagui/timer': 1.108.3 + '@tamagui/types': 1.108.3 + '@tamagui/use-did-finish-ssr': 1.108.3(react@18.3.1) + '@tamagui/use-event': 1.108.3(react@18.3.1) + '@tamagui/use-force-update': 1.108.3(react@18.3.1) + transitivePeerDependencies: + - react + + '@tanstack/eslint-plugin-query@5.51.15(eslint@8.57.0)(typescript@5.5.4)': + dependencies: + '@typescript-eslint/utils': 8.0.0-alpha.30(eslint@8.57.0)(typescript@5.5.4) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@tanstack/query-core@5.51.21': {} + + '@tanstack/react-query@5.51.23(react@18.3.1)': + dependencies: + '@tanstack/query-core': 5.51.21 + react: 18.3.1 + + '@tootallnate/quickjs-emscripten@0.23.0': {} + + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@turbo/gen@1.13.4(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)': + dependencies: + '@turbo/workspaces': 1.13.4 + chalk: 2.4.2 + commander: 10.0.1 + fs-extra: 10.1.0 + inquirer: 8.2.6 + minimatch: 9.0.5 + node-plop: 0.26.3 + proxy-agent: 6.4.0 + ts-node: 10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4) + update-check: 1.5.4 + validate-npm-package-name: 5.0.1 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - supports-color + - typescript + + '@turbo/workspaces@1.13.4': + dependencies: + chalk: 2.4.2 + commander: 10.0.1 + execa: 5.1.1 + fast-glob: 3.3.2 + fs-extra: 10.1.0 + gradient-string: 2.0.2 + inquirer: 8.2.6 + js-yaml: 4.1.0 + ora: 4.1.1 + rimraf: 3.0.2 + semver: 7.6.3 + update-check: 1.5.4 + + '@types/argparse@1.0.38': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.25.2 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.25.2 + + '@types/cookie@0.6.0': {} + + '@types/crypto-js@4.2.2': {} + + '@types/eslint@8.56.11': + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.5': {} + + '@types/fs-extra@9.0.13': + dependencies: + '@types/node': 22.2.0 + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 22.2.0 + + '@types/hammerjs@2.0.45': {} + + '@types/inquirer@6.5.0': + dependencies: + '@types/through': 0.0.33 + rxjs: 6.6.7 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/js-yaml@4.0.9': {} + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/minimatch@5.1.2': {} + + '@types/node-fetch@2.6.11': + dependencies: + '@types/node': 22.2.0 + form-data: 4.0.0 + + '@types/node-forge@1.3.11': + dependencies: + '@types/node': 22.2.0 + + '@types/node@18.19.44': + dependencies: + undici-types: 5.26.5 + + '@types/node@22.2.0': + dependencies: + undici-types: 6.13.0 + + '@types/prop-types@15.7.12': {} + + '@types/randombytes@2.0.3': + dependencies: + '@types/node': 22.2.0 + + '@types/react@18.3.3': + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + + '@types/set-cookie-parser@2.4.10': + dependencies: + '@types/node': 22.2.0 + + '@types/spinnies@0.5.3': {} + + '@types/stack-utils@2.0.3': {} + + '@types/through@0.0.33': + dependencies: + '@types/node': 22.2.0 + + '@types/tinycolor2@1.4.6': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@15.0.19': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 22.2.0 + optional: true + + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': + dependencies: + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4)': + dependencies: + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.6 + eslint: 8.57.0 + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + + '@typescript-eslint/scope-manager@8.0.0-alpha.30': + dependencies: + '@typescript-eslint/types': 8.0.0-alpha.30 + '@typescript-eslint/visitor-keys': 8.0.0-alpha.30 + + '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': + dependencies: + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + debug: 4.3.6 + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@7.18.0': {} + + '@typescript-eslint/types@8.0.0-alpha.30': {} + + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.6 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.0.0-alpha.30(typescript@5.5.4)': + dependencies: + '@typescript-eslint/types': 8.0.0-alpha.30 + '@typescript-eslint/visitor-keys': 8.0.0-alpha.30 + debug: 4.3.6 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@8.0.0-alpha.30(eslint@8.57.0)(typescript@5.5.4)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@typescript-eslint/scope-manager': 8.0.0-alpha.30 + '@typescript-eslint/types': 8.0.0-alpha.30 + '@typescript-eslint/typescript-estree': 8.0.0-alpha.30(typescript@5.5.4) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@8.0.0-alpha.30': + dependencies: + '@typescript-eslint/types': 8.0.0-alpha.30 + eslint-visitor-keys: 3.4.3 + + '@ungap/structured-clone@1.2.0': {} + + '@urql/core@2.3.6(graphql@15.8.0)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@15.8.0) + graphql: 15.8.0 + wonka: 4.0.15 + + '@urql/exchange-retry@0.3.0(graphql@15.8.0)': + dependencies: + '@urql/core': 2.3.6(graphql@15.8.0) + graphql: 15.8.0 + wonka: 4.0.15 + + '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.3.6 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.11 + magicast: 0.3.4 + picocolors: 1.0.1 + std-env: 3.7.0 + strip-literal: 2.1.0 + test-exclude: 6.0.0 + vitest: 1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + transitivePeerDependencies: + - supports-color + + '@vitest/expect@1.6.0': + dependencies: + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + chai: 4.5.0 + + '@vitest/runner@1.6.0': + dependencies: + '@vitest/utils': 1.6.0 + p-limit: 5.0.0 + pathe: 1.1.2 + + '@vitest/snapshot@1.6.0': + dependencies: + magic-string: 0.30.11 + pathe: 1.1.2 + pretty-format: 29.7.0 + + '@vitest/spy@1.6.0': + dependencies: + tinyspy: 2.2.1 + + '@vitest/utils@1.6.0': + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + + '@volar/language-core@1.11.1': + dependencies: + '@volar/source-map': 1.11.1 + + '@volar/source-map@1.11.1': + dependencies: + muggle-string: 0.3.1 + + '@volar/typescript@1.11.1': + dependencies: + '@volar/language-core': 1.11.1 + path-browserify: 1.0.1 + + '@vue/compiler-core@3.4.37': + dependencies: + '@babel/parser': 7.25.3 + '@vue/shared': 3.4.37 + entities: 5.0.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + + '@vue/compiler-dom@3.4.37': + dependencies: + '@vue/compiler-core': 3.4.37 + '@vue/shared': 3.4.37 + + '@vue/language-core@1.8.27(typescript@5.5.4)': + dependencies: + '@volar/language-core': 1.11.1 + '@volar/source-map': 1.11.1 + '@vue/compiler-dom': 3.4.37 + '@vue/shared': 3.4.37 + computeds: 0.0.1 + minimatch: 9.0.5 + muggle-string: 0.3.1 + path-browserify: 1.0.1 + vue-template-compiler: 2.7.16 + optionalDependencies: + typescript: 5.5.4 + + '@vue/shared@3.4.37': {} + + '@web3-storage/multipart-parser@1.0.0': {} + + '@xmldom/xmldom@0.7.13': {} + + '@xmldom/xmldom@0.8.10': {} + + '@zxing/text-encoding@0.9.0': + optional: true + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-jsx@5.3.2(acorn@8.12.1): + dependencies: + acorn: 8.12.1 + + acorn-walk@8.3.3: + dependencies: + acorn: 8.12.1 + + acorn@8.12.1: {} + + agent-base@6.0.2: + dependencies: + debug: 4.3.6 + transitivePeerDependencies: + - supports-color + + agent-base@7.1.1: + dependencies: + debug: 4.3.6 + transitivePeerDependencies: + - supports-color + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.1 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + anser@1.4.10: {} + + ansi-colors@4.1.3: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-fragments@0.2.1: + dependencies: + colorette: 1.4.0 + slice-ansi: 2.1.0 + strip-ansi: 5.2.0 + + ansi-regex@4.1.1: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.0.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + appdirsjs@1.2.7: {} + + application-config-path@0.1.1: {} + + arg@4.1.3: {} + + arg@5.0.2: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.6.3 + + aria-query@5.1.3: + dependencies: + deep-equal: 2.2.3 + + array-buffer-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + is-string: 1.0.7 + + array-union@2.1.0: {} + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + + array.prototype.findlastindex@1.2.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + + array.prototype.flat@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + + array.prototype.flatmap@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + + arraybuffer.prototype.slice@1.0.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + + asap@2.0.6: {} + + assertion-error@1.1.0: {} + + ast-types-flow@0.0.8: {} + + ast-types@0.13.4: + dependencies: + tslib: 2.6.3 + + ast-types@0.15.2: + dependencies: + tslib: 2.6.3 + + astral-regex@1.0.0: {} + + astral-regex@2.0.0: {} + + async-limiter@1.0.1: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + axe-core@4.10.0: {} + + axobject-query@3.1.1: + dependencies: + deep-equal: 2.2.3 + + b4a@1.6.6: {} + + babel-core@7.0.0-bridge.0(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + + babel-literal-to-ast@2.1.0(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + '@babel/parser': 7.25.3 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + + babel-plugin-fully-specified@1.3.0(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + + babel-plugin-module-resolver@5.0.2: + dependencies: + find-babel-config: 2.1.1 + glob: 9.3.5 + pkg-up: 3.1.0 + reselect: 4.1.8 + resolve: 1.22.8 + + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): + dependencies: + '@babel/compat-data': 7.25.2 + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + core-js-compat: 3.38.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + + babel-plugin-react-compiler@0.0.0: {} + + babel-plugin-react-native-web@0.19.12: {} + + babel-plugin-tester@11.0.4(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + core-js: 3.38.0 + debug: 4.3.6 + lodash.mergewith: 4.6.2 + prettier: 2.8.8 + strip-indent: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.25.2): + dependencies: + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) + transitivePeerDependencies: + - '@babel/core' + + babel-preset-expo@11.0.13(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)): + dependencies: + '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) + '@babel/preset-react': 7.24.7(@babel/core@7.25.2) + '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) + '@react-native/babel-preset': 0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + babel-plugin-react-compiler: 0.0.0 + babel-plugin-react-native-web: 0.19.12 + react-refresh: 0.14.2 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - supports-color + + balanced-match@1.0.2: {} + + bare-events@2.4.2: + optional: true + + bare-fs@2.3.1: + dependencies: + bare-events: 2.4.2 + bare-path: 2.1.3 + bare-stream: 2.1.3 + optional: true + + bare-os@2.4.0: + optional: true + + bare-path@2.1.3: + dependencies: + bare-os: 2.4.0 + optional: true + + bare-stream@2.1.3: + dependencies: + streamx: 2.18.0 + optional: true + + base-64@0.1.0: {} + + base64-js@1.5.1: {} + + basic-ftp@5.0.5: {} + + before-after-hook@2.2.3: {} + + better-opn@3.0.2: + dependencies: + open: 8.4.2 + + big-integer@1.6.52: {} + + binary-extensions@2.3.0: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + boolbase@1.0.0: {} + + bplist-creator@0.0.7: + dependencies: + stream-buffers: 2.2.0 + + bplist-creator@0.1.0: + dependencies: + stream-buffers: 2.2.0 + + bplist-parser@0.3.1: + dependencies: + big-integer: 1.6.52 + + bplist-parser@0.3.2: + dependencies: + big-integer: 1.6.52 + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.23.3: + dependencies: + caniuse-lite: 1.0.30001651 + electron-to-chromium: 1.5.6 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-alloc-unsafe@1.1.0: {} + + buffer-alloc@1.2.0: + dependencies: + buffer-alloc-unsafe: 1.1.0 + buffer-fill: 1.0.0 + + buffer-crc32@0.2.13: {} + + buffer-fill@1.0.0: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + builtins@1.0.3: {} + + burnt@0.12.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + sf-symbols-typescript: 1.0.0 + sonner: 0.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - react-dom + + bytes@3.0.0: {} + + cac@6.7.14: {} + + cacache@18.0.4: + dependencies: + '@npmcli/fs': 3.1.1 + fs-minipass: 3.0.3 + glob: 10.4.5 + lru-cache: 10.4.3 + minipass: 7.1.2 + minipass-collect: 2.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + ssri: 10.0.6 + tar: 6.2.1 + unique-filename: 3.0.0 + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + caller-callsite@2.0.0: + dependencies: + callsites: 2.0.0 + + caller-path@2.0.0: + dependencies: + caller-callsite: 2.0.0 + + callsites@2.0.0: {} + + callsites@3.1.0: {} + + camel-case@3.0.0: + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + + camelcase-css@2.0.1: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + camelize@1.0.1: {} + + caniuse-lite@1.0.30001651: {} + + chai@4.5.0: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + change-case@3.1.0: + dependencies: + camel-case: 3.0.0 + constant-case: 2.0.0 + dot-case: 2.1.1 + header-case: 1.0.1 + is-lower-case: 1.1.3 + is-upper-case: 1.1.2 + lower-case: 1.1.4 + lower-case-first: 1.0.2 + no-case: 2.3.2 + param-case: 2.1.1 + pascal-case: 2.0.1 + path-case: 2.1.1 + sentence-case: 2.1.1 + snake-case: 2.1.0 + swap-case: 1.1.2 + title-case: 2.1.1 + upper-case: 1.1.3 + upper-case-first: 1.1.2 + + chardet@0.7.0: {} + + charenc@0.0.2: {} + + check-dependency-version-consistency@4.1.0: + dependencies: + '@types/js-yaml': 4.0.9 + chalk: 5.3.0 + commander: 10.0.1 + edit-json-file: 1.8.0 + globby: 13.2.2 + js-yaml: 4.1.0 + semver: 7.6.3 + table: 6.8.2 + type-fest: 3.13.1 + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + + cheerio@1.0.0-rc.12: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.1.0 + htmlparser2: 8.0.2 + parse5: 7.1.2 + parse5-htmlparser2-tree-adapter: 7.0.0 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chownr@2.0.0: {} + + chrome-launcher@0.15.2: + dependencies: + '@types/node': 22.2.0 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + transitivePeerDependencies: + - supports-color + + chromium-bidi@0.6.3(devtools-protocol@0.0.1312386): + dependencies: + devtools-protocol: 0.0.1312386 + mitt: 3.0.1 + urlpattern-polyfill: 10.0.0 + zod: 3.23.8 + + ci-info@2.0.0: {} + + ci-info@3.9.0: {} + + class-variance-authority@0.7.0: + dependencies: + clsx: 2.0.0 + + clean-stack@2.2.0: {} + + cli-cursor@2.1.0: + dependencies: + restore-cursor: 2.0.0 + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-spinners@2.9.2: {} + + cli-width@3.0.0: {} + + cliui@6.0.0: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-deep@4.0.1: + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + + clone@1.0.4: {} + + clone@2.1.2: {} + + clsx@2.0.0: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + color2k@2.0.3: {} + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + + colorette@1.4.0: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + command-exists@1.2.9: {} + + commander@10.0.1: {} + + commander@12.1.0: {} + + commander@2.20.3: {} + + commander@4.1.1: {} + + commander@7.2.0: {} + + commander@9.5.0: {} + + commondir@1.0.1: {} + + component-type@1.2.2: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.53.0 + + compression@1.7.4: + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + computeds@0.0.1: {} + + concat-map@0.0.1: {} + + confbox@0.1.7: {} + + confusing-browser-globals@1.0.11: {} + + connect@3.7.0: + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + + constant-case@2.0.0: + dependencies: + snake-case: 2.1.0 + upper-case: 1.1.3 + + convert-source-map@2.0.0: {} + + cookie-signature@1.2.1: {} + + cookie@0.6.0: {} + + core-js-compat@3.38.0: + dependencies: + browserslist: 4.23.3 + + core-js-pure@3.38.0: {} + + core-js@3.38.0: {} + + core-util-is@1.0.3: {} + + cosmiconfig@5.2.1: + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.1 + parse-json: 4.0.0 + + cosmiconfig@9.0.0(typescript@5.5.4): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.5.4 + + create-require@1.1.1: {} + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.3 + + cross-fetch@3.1.8: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + cross-spawn@6.0.5: + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypt@0.0.2: {} + + crypto-js@4.2.0: {} + + crypto-random-string@1.0.0: {} + + crypto-random-string@2.0.0: {} + + css-color-keywords@1.0.0: {} + + css-in-js-utils@3.1.0: + dependencies: + hyphenate-style-name: 1.1.0 + + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + + css-to-react-native@3.2.0: + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + + css-tree@1.1.3: + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + dag-map@1.0.2: {} + + damerau-levenshtein@1.0.8: {} + + data-uri-to-buffer@3.0.1: {} + + data-uri-to-buffer@4.0.1: {} + + data-uri-to-buffer@6.0.2: {} + + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + dayjs@1.11.12: {} + + de-indent@1.0.2: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.3.6: + dependencies: + ms: 2.1.2 + + decamelize@1.2.0: {} + + decode-uri-component@0.2.2: {} + + deep-eql@4.1.4: + dependencies: + type-detect: 4.1.0 + + deep-equal@2.2.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.4 + is-arguments: 1.1.1 + is-array-buffer: 3.0.4 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + isarray: 2.0.5 + object-is: 1.1.6 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + side-channel: 1.0.6 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + + deep-extend@0.6.0: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + default-gateway@4.2.0: + dependencies: + execa: 1.0.0 + ip-regex: 2.1.0 + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + define-lazy-prop@2.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + degenerator@5.0.1: + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + + del@5.1.0: + dependencies: + globby: 10.0.2 + graceful-fs: 4.2.11 + is-glob: 4.0.3 + is-path-cwd: 2.2.0 + is-path-inside: 3.0.3 + p-map: 3.0.0 + rimraf: 3.0.2 + slash: 3.0.0 + + del@6.1.1: + dependencies: + globby: 11.1.0 + graceful-fs: 4.2.11 + is-glob: 4.0.3 + is-path-cwd: 2.2.0 + is-path-inside: 3.0.3 + p-map: 4.0.0 + rimraf: 3.0.2 + slash: 3.0.0 + + delayed-stream@1.0.0: {} + + denodeify@1.2.1: {} + + depd@2.0.0: {} + + deprecated-react-native-prop-types@2.3.0: + dependencies: + '@react-native/normalize-color': 2.1.0 + invariant: 2.2.4 + prop-types: 15.8.1 + + deprecation@2.3.1: {} + + destroy@1.2.0: {} + + detect-libc@1.0.3: {} + + detect-node-es@1.1.0: {} + + devtools-protocol@0.0.1312386: {} + + didyoumean@1.2.2: {} + + diff-sequences@29.6.3: {} + + diff@4.0.2: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dlv@1.1.3: {} + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dot-case@2.1.1: + dependencies: + no-case: 2.3.2 + + dotenv-expand@11.0.6: + dependencies: + dotenv: 16.4.5 + + dotenv@16.0.3: {} + + dotenv@16.4.5: {} + + eastasianwidth@0.2.0: {} + + edit-json-file@1.8.0: + dependencies: + find-value: 1.0.12 + iterate-object: 1.3.4 + r-json: 1.3.0 + set-value: 4.1.0 + w-json: 1.3.10 + + ee-first@1.1.1: {} + + electron-to-chromium@1.5.6: {} + + eme-encryption-scheme-polyfill@2.1.5: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encodeurl@1.0.2: {} + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.17.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + + entities@2.0.3: {} + + entities@4.5.0: {} + + entities@5.0.0: {} + + env-editor@0.4.2: {} + + env-paths@2.2.1: {} + + envinfo@7.13.0: {} + + eol@0.9.1: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + + errorhandler@1.5.1: + dependencies: + accepts: 1.3.8 + escape-html: 1.0.3 + + es-abstract@1.23.3: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.2 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es-get-iterator@1.1.3: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.3 + is-set: 2.0.3 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 + + es-iterator-helpers@1.0.19: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + iterator.prototype: 1.1.2 + safe-array-concat: 1.1.2 + + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.0.3: + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.0.2: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.2.1: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + esbuild-plugin-es5@2.1.1(esbuild@0.23.0): + dependencies: + '@swc/core': 1.7.10(@swc/helpers@0.5.12) + '@swc/helpers': 0.5.12 + deepmerge: 4.3.1 + esbuild: 0.23.0 + + esbuild-register@3.6.0(esbuild@0.23.0): + dependencies: + debug: 4.3.6 + esbuild: 0.23.0 + transitivePeerDependencies: + - supports-color + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + esbuild@0.23.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.0 + '@esbuild/android-arm': 0.23.0 + '@esbuild/android-arm64': 0.23.0 + '@esbuild/android-x64': 0.23.0 + '@esbuild/darwin-arm64': 0.23.0 + '@esbuild/darwin-x64': 0.23.0 + '@esbuild/freebsd-arm64': 0.23.0 + '@esbuild/freebsd-x64': 0.23.0 + '@esbuild/linux-arm': 0.23.0 + '@esbuild/linux-arm64': 0.23.0 + '@esbuild/linux-ia32': 0.23.0 + '@esbuild/linux-loong64': 0.23.0 + '@esbuild/linux-mips64el': 0.23.0 + '@esbuild/linux-ppc64': 0.23.0 + '@esbuild/linux-riscv64': 0.23.0 + '@esbuild/linux-s390x': 0.23.0 + '@esbuild/linux-x64': 0.23.0 + '@esbuild/netbsd-x64': 0.23.0 + '@esbuild/openbsd-arm64': 0.23.0 + '@esbuild/openbsd-x64': 0.23.0 + '@esbuild/sunos-x64': 0.23.0 + '@esbuild/win32-arm64': 0.23.0 + '@esbuild/win32-ia32': 0.23.0 + '@esbuild/win32-x64': 0.23.0 + + escalade@3.1.2: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0): + dependencies: + confusing-browser-globals: 1.0.11 + eslint: 8.57.0 + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + object.assign: 4.1.5 + object.entries: 1.1.8 + semver: 6.3.1 + + eslint-config-prettier@9.1.0(eslint@8.57.0): + dependencies: + eslint: 8.57.0 + + eslint-config-turbo@1.13.4(eslint@8.57.0): + dependencies: + eslint: 8.57.0 + eslint-plugin-turbo: 1.13.4(eslint@8.57.0) + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.15.0 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0): + dependencies: + debug: 4.3.6 + enhanced-resolve: 5.17.1 + eslint: 8.57.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.6 + is-core-module: 2.15.0 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + + eslint-module-utils@2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + dependencies: + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + hasown: 2.0.2 + is-core-module: 2.15.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jsx-a11y@6.9.0(eslint@8.57.0): + dependencies: + aria-query: 5.1.3 + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.10.0 + axobject-query: 3.1.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + es-iterator-helpers: 1.0.19 + eslint: 8.57.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.0.3 + string.prototype.includes: 2.0.0 + + eslint-plugin-prettier@5.2.1(@types/eslint@8.56.11)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3): + dependencies: + eslint: 8.57.0 + prettier: 3.3.3 + prettier-linter-helpers: 1.0.0 + synckit: 0.9.1 + optionalDependencies: + '@types/eslint': 8.56.11 + eslint-config-prettier: 9.1.0(eslint@8.57.0) + + eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): + dependencies: + eslint: 8.57.0 + + eslint-plugin-react@7.35.0(eslint@8.57.0): + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.19 + eslint: 8.57.0 + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.values: 1.2.0 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.11 + string.prototype.repeat: 1.0.0 + + eslint-plugin-turbo@1.13.4(eslint@8.57.0): + dependencies: + dotenv: 16.0.3 + eslint: 8.57.0 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint@8.57.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.11.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.6 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@9.6.1: + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 3.4.3 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.5 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + event-target-shim@5.0.1: {} + + events@3.3.0: {} + + exec-async@2.2.0: {} + + execa@1.0.0: + dependencies: + cross-spawn: 6.0.5 + get-stream: 4.1.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + expo-alternate-app-icons@0.1.9(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + + expo-application@5.9.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + + expo-asset@10.0.10(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo-constants: 16.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + invariant: 2.2.4 + md5-file: 3.2.3 + transitivePeerDependencies: + - supports-color + + expo-av@14.0.6(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + + expo-brightness@12.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + + expo-build-properties@0.12.5(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + ajv: 8.17.1 + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + semver: 7.6.3 + + expo-clipboard@6.0.3(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + + expo-constants@16.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + '@expo/config': 9.0.3 + '@expo/env': 0.3.0 + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + transitivePeerDependencies: + - supports-color + + expo-file-system@17.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + + expo-font@12.0.9(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + fontfaceobserver: 2.3.0 + + expo-haptics@13.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + + expo-keep-awake@13.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + + expo-linear-gradient@13.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + + expo-linking@6.3.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + expo-constants: 16.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + invariant: 2.2.4 + transitivePeerDependencies: + - expo + - supports-color + + expo-media-library@16.0.4(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + + expo-modules-autolinking@1.11.1: + dependencies: + chalk: 4.1.2 + commander: 7.2.0 + fast-glob: 3.3.2 + find-up: 5.0.0 + fs-extra: 9.1.0 + + expo-modules-core@1.12.20: + dependencies: + invariant: 2.2.4 + + expo-navigation-bar@3.0.7(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + '@react-native/normalize-colors': 0.74.85 + debug: 4.3.6 + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + transitivePeerDependencies: + - supports-color + + expo-network@6.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + + expo-pod-pinner@1.0.1: {} + + expo-router@3.5.21(ga2zmoy2dqxl2qdy4qnq4p4acq): + dependencies: + '@expo/metro-runtime': 3.2.1(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1)) + '@expo/server': 0.4.4(typescript@5.5.4) + '@radix-ui/react-slot': 1.0.1(react@18.3.1) + '@react-navigation/bottom-tabs': 6.5.20(@react-navigation/native@6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-screens@3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@react-navigation/native': 6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@react-navigation/native-stack': 6.9.26(@react-navigation/native@6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-screens@3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo-constants: 16.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-linking: 6.3.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-splash-screen: 0.27.5(expo-modules-autolinking@1.11.1)(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-status-bar: 1.12.1 + react-native-helmet-async: 2.0.4(react@18.3.1) + react-native-safe-area-context: 4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-screens: 3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + schema-utils: 4.2.0 + optionalDependencies: + react-native-reanimated: 3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - encoding + - expo-modules-autolinking + - react + - react-native + - supports-color + - typescript + + expo-screen-orientation@7.0.5(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + + expo-splash-screen@0.27.5(expo-modules-autolinking@1.11.1)(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + '@expo/prebuild-config': 7.0.6(expo-modules-autolinking@1.11.1) + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + transitivePeerDependencies: + - encoding + - expo-modules-autolinking + - supports-color + + expo-status-bar@1.12.1: {} + + expo-system-ui@3.0.7(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + '@react-native/normalize-colors': 0.74.85 + debug: 4.3.6 + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + transitivePeerDependencies: + - supports-color + + expo-video@1.2.4(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + + expo-web-browser@13.0.3(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + dependencies: + expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + + expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)): + dependencies: + '@babel/runtime': 7.25.0 + '@expo/cli': 0.18.28(expo-modules-autolinking@1.11.1) + '@expo/config': 9.0.3 + '@expo/config-plugins': 8.0.8 + '@expo/metro-config': 0.18.11 + '@expo/vector-icons': 14.0.2 + babel-preset-expo: 11.0.13(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo-asset: 10.0.10(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-file-system: 17.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-font: 12.0.9(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-keep-awake: 13.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-modules-autolinking: 1.11.1 + expo-modules-core: 1.12.20 + fbemitter: 3.0.0 + whatwg-url-without-unicode: 8.0.0-3 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - bufferutil + - encoding + - supports-color + - utf-8-validate + + exponential-backoff@3.1.1: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + extract-zip@2.0.1: + dependencies: + debug: 4.3.6 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-fifo@1.3.2: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.7 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-loops@1.1.4: {} + + fast-uri@3.0.1: {} + + fast-xml-parser@4.4.1: + dependencies: + strnum: 1.0.5 + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fbemitter@3.0.0: + dependencies: + fbjs: 3.0.5 + transitivePeerDependencies: + - encoding + + fbjs-css-vars@1.0.2: {} + + fbjs@3.0.5: + dependencies: + cross-fetch: 3.1.8 + fbjs-css-vars: 1.0.2 + loose-envify: 1.4.0 + object-assign: 4.1.1 + promise: 7.3.1 + setimmediate: 1.0.5 + ua-parser-js: 1.0.38 + transitivePeerDependencies: + - encoding + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + fetch-blob@3.2.0: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + + fetch-retry@4.1.1: {} + + ffmpeg-kit-react-native@6.0.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + filter-obj@1.1.0: {} + + finalhandler@1.1.2: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-babel-config@2.1.1: + dependencies: + json5: 2.2.3 + path-exists: 4.0.0 + + find-cache-dir@2.1.0: + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + + find-cache-dir@3.3.2: + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + + find-root@1.1.0: {} + + find-up@3.0.0: + dependencies: + locate-path: 3.0.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-value@1.0.12: {} + + find-yarn-workspace-root@2.0.0: + dependencies: + micromatch: 4.0.7 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + + flatted@3.3.1: {} + + flow-enums-runtime@0.0.6: {} + + flow-parser@0.243.0: {} + + fontfaceobserver@2.3.0: {} + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + form-data@3.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + form-data@4.0.0: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + formdata-polyfill@4.0.10: + dependencies: + fetch-blob: 3.2.0 + + framer-motion@6.5.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@motionone/dom': 10.12.0 + framesync: 6.0.1 + hey-listen: 1.0.8 + popmotion: 11.0.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + style-value-types: 5.0.0 + tslib: 2.6.3 + optionalDependencies: + '@emotion/is-prop-valid': 0.8.8 + + framesync@6.0.1: + dependencies: + tslib: 2.6.3 + + freeport-async@2.0.0: {} + + fresh@0.5.2: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@11.2.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@9.0.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 1.0.0 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs-minipass@3.0.3: + dependencies: + minipass: 7.1.2 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 + + functions-have-names@1.2.3: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-func-name@2.0.2: {} + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + get-nonce@1.0.1: {} + + get-port@3.2.0: {} + + get-stream@4.1.0: + dependencies: + pump: 3.0.0 + + get-stream@5.2.0: + dependencies: + pump: 3.0.0 + + get-stream@6.0.1: {} + + get-stream@8.0.1: {} + + get-symbol-description@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + + get-tsconfig@4.7.6: + dependencies: + resolve-pkg-maps: 1.0.0 + + get-uri@6.0.3: + dependencies: + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 + debug: 4.3.6 + fs-extra: 11.2.0 + transitivePeerDependencies: + - supports-color + + getenv@1.0.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 + + glob@7.1.6: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@9.3.5: + dependencies: + fs.realpath: 1.0.0 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.11.1 + + globals@11.12.0: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.0.1 + + globby@10.0.2: + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + glob: 7.2.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globby@13.2.2: + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 4.0.0 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + graceful-fs@4.2.11: {} + + gradient-string@2.0.2: + dependencies: + chalk: 4.1.2 + tinygradient: 1.1.5 + + graphemer@1.4.0: {} + + graphql-tag@2.12.6(graphql@15.8.0): + dependencies: + graphql: 15.8.0 + tslib: 2.6.3 + + graphql@15.8.0: {} + + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.2 + + has-bigints@1.0.2: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + header-case@1.0.1: + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + + hermes-estree@0.19.1: {} + + hermes-estree@0.23.0: {} + + hermes-parser@0.19.1: + dependencies: + hermes-estree: 0.19.1 + + hermes-parser@0.23.0: + dependencies: + hermes-estree: 0.23.0 + + hermes-profile-transformer@0.0.6: + dependencies: + source-map: 0.7.4 + + hey-listen@1.0.8: {} + + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + + hosted-git-info@3.0.8: + dependencies: + lru-cache: 6.0.0 + + html-escaper@2.0.2: {} + + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.1 + debug: 4.3.6 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.6 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.5: + dependencies: + agent-base: 7.1.1 + debug: 4.3.6 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + human-signals@5.0.0: {} + + hyphenate-style-name@1.1.0: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + image-size@1.1.1: + dependencies: + queue: 6.0.2 + + immer@10.1.1: {} + + import-fresh@2.0.0: + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-lazy@4.0.0: {} + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + inline-style-prefixer@6.0.4: + dependencies: + css-in-js-utils: 3.1.0 + fast-loops: 1.1.4 + + inquirer@7.3.3: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + run-async: 2.4.1 + rxjs: 6.6.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + + inquirer@8.2.6: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + + internal-ip@4.3.0: + dependencies: + default-gateway: 4.2.0 + ipaddr.js: 1.9.1 + + internal-slot@1.0.7: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + + ip-regex@2.1.0: {} + + ipaddr.js@1.9.1: {} + + is-arguments@1.1.1: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-array-buffer@3.0.4: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + + is-arrayish@0.2.1: {} + + is-arrayish@0.3.2: {} + + is-async-function@2.0.0: + dependencies: + has-tostringtag: 1.0.2 + + is-bigint@1.0.4: + dependencies: + has-bigints: 1.0.2 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.1.2: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-buffer@1.1.6: {} + + is-callable@1.2.7: {} + + is-core-module@2.15.0: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 + + is-date-object@1.0.5: + dependencies: + has-tostringtag: 1.0.2 + + is-directory@0.3.1: {} + + is-docker@2.2.1: {} + + is-extglob@1.0.0: {} + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.0.2: + dependencies: + call-bind: 1.0.7 + + is-fullwidth-code-point@2.0.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.2 + + is-glob@2.0.1: + dependencies: + is-extglob: 1.0.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-interactive@1.0.0: {} + + is-invalid-path@0.1.0: + dependencies: + is-glob: 2.0.1 + + is-lower-case@1.1.3: + dependencies: + lower-case: 1.1.4 + + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-path-cwd@2.2.0: {} + + is-path-inside@3.0.3: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-primitive@3.0.1: {} + + is-regex@1.1.4: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.3: + dependencies: + call-bind: 1.0.7 + + is-stream@1.1.0: {} + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-string@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-symbol@1.0.4: + dependencies: + has-symbols: 1.0.3 + + is-typed-array@1.1.13: + dependencies: + which-typed-array: 1.1.15 + + is-unicode-supported@0.1.0: {} + + is-upper-case@1.1.2: + dependencies: + upper-case: 1.1.3 + + is-valid-path@0.1.1: + dependencies: + is-invalid-path: 0.1.0 + + is-weakmap@2.0.2: {} + + is-weakref@1.0.2: + dependencies: + call-bind: 1.0.7 + + is-weakset@2.0.3: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + + is-wsl@1.1.0: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isbinaryfile@4.0.10: {} + + isexe@2.0.0: {} + + iso-639-1@3.1.2: {} + + isobject@3.0.1: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@5.0.6: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + debug: 4.3.6 + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + iterate-object@1.3.4: {} + + iterator.prototype@1.1.2: + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.6 + set-function-name: 2.0.2 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.2.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-get-type@29.6.3: {} + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.24.7 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.7 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.2.0 + jest-util: 29.7.0 + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.2.0 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jest-worker@29.7.0: + dependencies: + '@types/node': 22.2.0 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jimp-compact@0.16.1: {} + + jiti@1.21.6: {} + + jju@1.4.0: {} + + joi@17.13.3: + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.5 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + + join-component@1.1.0: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsbn@1.1.0: {} + + jsc-android@250231.0.0: {} + + jsc-safe-url@0.2.4: {} + + jscodeshift@0.14.0(@babel/preset-env@7.25.3(@babel/core@7.25.2)): + dependencies: + '@babel/core': 7.25.2 + '@babel/parser': 7.25.3 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) + '@babel/preset-env': 7.25.3(@babel/core@7.25.2) + '@babel/preset-flow': 7.24.7(@babel/core@7.25.2) + '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/register': 7.24.6(@babel/core@7.25.2) + babel-core: 7.0.0-bridge.0(@babel/core@7.25.2) + chalk: 4.1.2 + flow-parser: 0.243.0 + graceful-fs: 4.2.11 + micromatch: 4.0.7 + neo-async: 2.6.2 + node-dir: 0.1.17 + recast: 0.21.5 + temp: 0.8.4 + write-file-atomic: 2.4.3 + transitivePeerDependencies: + - supports-color + + jsesc@0.5.0: {} + + jsesc@2.5.2: {} + + json-buffer@3.0.1: {} + + json-parse-better-errors@1.0.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-deref-sync@0.13.0: + dependencies: + clone: 2.1.2 + dag-map: 1.0.2 + is-valid-path: 0.1.1 + lodash: 4.17.21 + md5: 2.2.1 + memory-cache: 0.2.0 + traverse: 0.6.9 + valid-url: 1.0.9 + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.2.0 + + keymirror@0.1.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + kolorist@1.8.0: {} + + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lighthouse-logger@1.4.2: + dependencies: + debug: 2.6.9 + marky: 1.2.5 + transitivePeerDependencies: + - supports-color + + lightningcss-darwin-arm64@1.19.0: + optional: true + + lightningcss-darwin-arm64@1.22.0: + optional: true + + lightningcss-darwin-x64@1.19.0: + optional: true + + lightningcss-darwin-x64@1.22.0: + optional: true + + lightningcss-freebsd-x64@1.22.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.19.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.22.0: + optional: true + + lightningcss-linux-arm64-gnu@1.19.0: + optional: true + + lightningcss-linux-arm64-gnu@1.22.0: + optional: true + + lightningcss-linux-arm64-musl@1.19.0: + optional: true + + lightningcss-linux-arm64-musl@1.22.0: + optional: true + + lightningcss-linux-x64-gnu@1.19.0: + optional: true + + lightningcss-linux-x64-gnu@1.22.0: + optional: true + + lightningcss-linux-x64-musl@1.19.0: + optional: true + + lightningcss-linux-x64-musl@1.22.0: + optional: true + + lightningcss-win32-x64-msvc@1.19.0: + optional: true + + lightningcss-win32-x64-msvc@1.22.0: + optional: true + + lightningcss@1.19.0: + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.19.0 + lightningcss-darwin-x64: 1.19.0 + lightningcss-linux-arm-gnueabihf: 1.19.0 + lightningcss-linux-arm64-gnu: 1.19.0 + lightningcss-linux-arm64-musl: 1.19.0 + lightningcss-linux-x64-gnu: 1.19.0 + lightningcss-linux-x64-musl: 1.19.0 + lightningcss-win32-x64-msvc: 1.19.0 + + lightningcss@1.22.0: + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.22.0 + lightningcss-darwin-x64: 1.22.0 + lightningcss-freebsd-x64: 1.22.0 + lightningcss-linux-arm-gnueabihf: 1.22.0 + lightningcss-linux-arm64-gnu: 1.22.0 + lightningcss-linux-arm64-musl: 1.22.0 + lightningcss-linux-x64-gnu: 1.22.0 + lightningcss-linux-x64-musl: 1.22.0 + lightningcss-win32-x64-msvc: 1.22.0 + + lilconfig@2.1.0: {} + + lilconfig@3.1.2: {} + + lines-and-columns@1.2.4: {} + + linkify-it@2.2.0: + dependencies: + uc.micro: 1.0.6 + + local-pkg@0.5.0: + dependencies: + mlly: 1.7.1 + pkg-types: 1.1.3 + + locate-path@3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.debounce@4.0.8: {} + + lodash.get@4.4.2: {} + + lodash.isequal@4.5.0: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.throttle@4.1.1: {} + + lodash.truncate@4.4.2: {} + + lodash@4.17.21: {} + + log-symbols@2.2.0: + dependencies: + chalk: 2.4.2 + + log-symbols@3.0.0: + dependencies: + chalk: 2.4.2 + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + logkitty@0.7.1: + dependencies: + ansi-fragments: 0.2.1 + dayjs: 1.11.12 + yargs: 15.4.1 + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + + lower-case-first@1.0.2: + dependencies: + lower-case: 1.1.4 + + lower-case@1.1.4: {} + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + lru-cache@7.18.3: {} + + magic-string@0.30.11: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + magicast@0.3.4: + dependencies: + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + source-map-js: 1.2.0 + + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + make-dir@4.0.0: + dependencies: + semver: 7.6.3 + + make-error@1.3.6: {} + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + markdown-it@10.0.0: + dependencies: + argparse: 1.0.10 + entities: 2.0.3 + linkify-it: 2.2.0 + mdurl: 1.0.1 + uc.micro: 1.0.6 + + marky@1.2.5: {} + + md5-file@3.2.3: + dependencies: + buffer-alloc: 1.2.0 + + md5@2.2.1: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + + md5@2.3.0: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + + md5hex@1.0.0: {} + + mdn-data@2.0.14: {} + + mdurl@1.0.1: {} + + memoize-one@5.2.1: {} + + memoize-one@6.0.0: {} + + memory-cache@0.2.0: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + metro-babel-transformer@0.80.10: + dependencies: + '@babel/core': 7.25.2 + flow-enums-runtime: 0.0.6 + hermes-parser: 0.23.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + metro-cache-key@0.80.10: + dependencies: + flow-enums-runtime: 0.0.6 + + metro-cache@0.80.10: + dependencies: + exponential-backoff: 3.1.1 + flow-enums-runtime: 0.0.6 + metro-core: 0.80.10 + + metro-config@0.80.10: + dependencies: + connect: 3.7.0 + cosmiconfig: 5.2.1 + flow-enums-runtime: 0.0.6 + jest-validate: 29.7.0 + metro: 0.80.10 + metro-cache: 0.80.10 + metro-core: 0.80.10 + metro-runtime: 0.80.10 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + metro-core@0.80.10: + dependencies: + flow-enums-runtime: 0.0.6 + lodash.throttle: 4.1.1 + metro-resolver: 0.80.10 + + metro-file-map@0.80.10: + dependencies: + anymatch: 3.1.3 + debug: 2.6.9 + fb-watchman: 2.0.2 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-worker: 29.7.0 + micromatch: 4.0.7 + node-abort-controller: 3.1.1 + nullthrows: 1.1.1 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + transitivePeerDependencies: + - supports-color + + metro-minify-terser@0.80.10: + dependencies: + flow-enums-runtime: 0.0.6 + terser: 5.31.6 + + metro-resolver@0.80.10: + dependencies: + flow-enums-runtime: 0.0.6 + + metro-runtime@0.80.10: + dependencies: + '@babel/runtime': 7.25.0 + flow-enums-runtime: 0.0.6 + + metro-source-map@0.80.10: + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-symbolicate: 0.80.10 + nullthrows: 1.1.1 + ob1: 0.80.10 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + + metro-symbolicate@0.80.10: + dependencies: + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-source-map: 0.80.10 + nullthrows: 1.1.1 + source-map: 0.5.7 + through2: 2.0.5 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + + metro-transform-plugins@0.80.10: + dependencies: + '@babel/core': 7.25.2 + '@babel/generator': 7.25.0 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + flow-enums-runtime: 0.0.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + metro-transform-worker@0.80.10: + dependencies: + '@babel/core': 7.25.2 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + flow-enums-runtime: 0.0.6 + metro: 0.80.10 + metro-babel-transformer: 0.80.10 + metro-cache: 0.80.10 + metro-cache-key: 0.80.10 + metro-minify-terser: 0.80.10 + metro-source-map: 0.80.10 + metro-transform-plugins: 0.80.10 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + metro@0.80.10: + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/core': 7.25.2 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + accepts: 1.3.8 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 2.6.9 + denodeify: 1.2.1 + error-stack-parser: 2.1.4 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + hermes-parser: 0.23.0 + image-size: 1.1.1 + invariant: 2.2.4 + jest-worker: 29.7.0 + jsc-safe-url: 0.2.4 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.80.10 + metro-cache: 0.80.10 + metro-cache-key: 0.80.10 + metro-config: 0.80.10 + metro-core: 0.80.10 + metro-file-map: 0.80.10 + metro-resolver: 0.80.10 + metro-runtime: 0.80.10 + metro-source-map: 0.80.10 + metro-symbolicate: 0.80.10 + metro-transform-plugins: 0.80.10 + metro-transform-worker: 0.80.10 + mime-types: 2.1.35 + node-fetch: 2.7.0 + nullthrows: 1.1.1 + serialize-error: 2.1.0 + source-map: 0.5.7 + strip-ansi: 6.0.1 + throat: 5.0.0 + ws: 7.5.10 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + micromatch@4.0.7: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-db@1.53.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@2.6.0: {} + + mimic-fn@1.2.0: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + min-indent@1.0.1: {} + + minimatch@3.0.8: + dependencies: + brace-expansion: 1.1.11 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@8.0.4: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass-collect@2.0.1: + dependencies: + minipass: 7.1.2 + + minipass-flush@1.0.5: + dependencies: + minipass: 3.3.6 + + minipass-pipeline@1.2.4: + dependencies: + minipass: 3.3.6 + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@4.2.8: {} + + minipass@5.0.0: {} + + minipass@7.1.2: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mitt@3.0.1: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mkdirp@1.0.4: {} + + mlly@1.7.1: + dependencies: + acorn: 8.12.1 + pathe: 1.1.2 + pkg-types: 1.1.3 + ufo: 1.5.4 + + moti@0.29.0(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1): + dependencies: + framer-motion: 6.5.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-native-reanimated: 3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - react + - react-dom + + mrmime@1.0.1: {} + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + muggle-string@0.3.1: {} + + mute-stream@0.0.8: {} + + mylas@2.1.13: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.7: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + neo-async@2.6.2: {} + + nested-error-stacks@2.0.1: {} + + netmask@2.0.2: {} + + nice-try@1.0.5: {} + + no-case@2.3.2: + dependencies: + lower-case: 1.1.4 + + nocache@3.0.4: {} + + node-abort-controller@3.1.1: {} + + node-dir@0.1.17: + dependencies: + minimatch: 3.1.2 + + node-domexception@1.0.0: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-fetch@3.3.2: + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + + node-forge@1.3.1: {} + + node-int64@0.4.0: {} + + node-plop@0.26.3: + dependencies: + '@babel/runtime-corejs3': 7.25.0 + '@types/inquirer': 6.5.0 + change-case: 3.1.0 + del: 5.1.0 + globby: 10.0.2 + handlebars: 4.7.8 + inquirer: 7.3.3 + isbinaryfile: 4.0.10 + lodash.get: 4.4.2 + mkdirp: 0.5.6 + resolve: 1.22.8 + + node-releases@2.0.18: {} + + node-stream-zip@1.15.0: {} + + normalize-path@3.0.0: {} + + npm-package-arg@7.0.0: + dependencies: + hosted-git-info: 3.0.8 + osenv: 0.1.5 + semver: 5.7.2 + validate-npm-package-name: 3.0.0 + + npm-run-path@2.0.2: + dependencies: + path-key: 2.0.1 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + nullthrows@1.1.1: {} + + ob1@0.80.10: + dependencies: + flow-enums-runtime: 0.0.6 + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + object-inspect@1.13.2: {} + + object-is@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + + object-keys@1.1.1: {} + + object.assign@4.1.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + object.entries@1.1.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + + object.values@1.2.0: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + on-finished@2.3.0: + dependencies: + ee-first: 1.1.1 + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.0.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@2.0.1: + dependencies: + mimic-fn: 1.2.0 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + open@6.4.0: + dependencies: + is-wsl: 1.1.0 + + open@7.4.2: + dependencies: + is-docker: 2.2.1 + is-wsl: 2.2.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@3.4.0: + dependencies: + chalk: 2.4.2 + cli-cursor: 2.1.0 + cli-spinners: 2.9.2 + log-symbols: 2.2.0 + strip-ansi: 5.2.0 + wcwidth: 1.0.1 + + ora@4.1.1: + dependencies: + chalk: 3.0.0 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + log-symbols: 3.0.0 + mute-stream: 0.0.8 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + os-homedir@1.0.2: {} + + os-tmpdir@1.0.2: {} + + osenv@0.1.5: + dependencies: + os-homedir: 1.0.2 + os-tmpdir: 1.0.2 + + p-finally@1.0.0: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@5.0.0: + dependencies: + yocto-queue: 1.1.1 + + p-locate@3.0.0: + dependencies: + p-limit: 2.3.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@3.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-try@2.2.0: {} + + pac-proxy-agent@7.0.2: + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.1 + debug: 4.3.6 + get-uri: 6.0.3 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.4 + transitivePeerDependencies: + - supports-color + + pac-resolver@7.0.1: + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + + package-json-from-dist@1.0.0: {} + + param-case@2.1.1: + dependencies: + no-case: 2.3.2 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-hls@1.0.7: {} + + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.24.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-png@2.1.0: + dependencies: + pngjs: 3.4.0 + + parse5-htmlparser2-tree-adapter@7.0.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.1.2 + + parse5@7.1.2: + dependencies: + entities: 4.5.0 + + parseurl@1.3.3: {} + + pascal-case@2.0.1: + dependencies: + camel-case: 3.0.0 + upper-case-first: 1.1.2 + + password-prompt@1.1.3: + dependencies: + ansi-escapes: 4.3.2 + cross-spawn: 7.0.3 + + path-browserify@1.0.1: {} + + path-case@2.1.1: + dependencies: + no-case: 2.3.2 + + path-exists@3.0.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@2.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-type@4.0.0: {} + + pathe@1.1.2: {} + + pathval@1.1.1: {} + + pend@1.2.0: {} + + performant-array-to-tree@1.11.0: {} + + picocolors@1.0.1: {} + + picomatch@2.3.1: {} + + picomatch@3.0.1: {} + + pify@2.3.0: {} + + pify@4.0.1: {} + + pirates@4.0.6: {} + + pkg-dir@3.0.0: + dependencies: + find-up: 3.0.0 + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-types@1.1.3: + dependencies: + confbox: 0.1.7 + mlly: 1.7.1 + pathe: 1.1.2 + + pkg-up@3.1.0: + dependencies: + find-up: 3.0.0 + + plimit-lit@1.6.1: + dependencies: + queue-lit: 1.5.2 + + plist@3.1.0: + dependencies: + '@xmldom/xmldom': 0.8.10 + base64-js: 1.5.1 + xmlbuilder: 15.1.1 + + pngjs@3.4.0: {} + + popmotion@11.0.3: + dependencies: + framesync: 6.0.1 + hey-listen: 1.0.8 + style-value-types: 5.0.0 + tslib: 2.6.3 + + possible-typed-array-names@1.0.0: {} + + postcss-import@15.1.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + postcss-js@4.0.1(postcss@8.4.41): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.41 + + postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)): + dependencies: + lilconfig: 3.1.2 + yaml: 2.5.0 + optionalDependencies: + postcss: 8.4.41 + ts-node: 10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4) + + postcss-nested@6.2.0(postcss@8.4.41): + dependencies: + postcss: 8.4.41 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.41: + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.1 + source-map-js: 1.2.0 + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier-plugin-tailwindcss@0.5.14(@ianvs/prettier-plugin-sort-imports@4.3.1(prettier@3.3.3))(prettier@3.3.3): + dependencies: + prettier: 3.3.3 + optionalDependencies: + '@ianvs/prettier-plugin-sort-imports': 4.3.1(prettier@3.3.3) + + prettier@2.8.8: {} + + prettier@3.3.3: {} + + pretty-bytes@5.6.0: {} + + pretty-format@26.6.2: + dependencies: + '@jest/types': 26.6.2 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + react-is: 17.0.2 + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + process-nextick-args@2.0.1: {} + + process@0.11.10: {} + + progress@2.0.3: {} + + promise@7.3.1: + dependencies: + asap: 2.0.6 + + promise@8.3.0: + dependencies: + asap: 2.0.6 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + proxy-agent@6.4.0: + dependencies: + agent-base: 7.1.1 + debug: 4.3.6 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5 + lru-cache: 7.18.3 + pac-proxy-agent: 7.0.2 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.4 + transitivePeerDependencies: + - supports-color + + proxy-from-env@1.1.0: {} + + pump@3.0.0: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + punycode@2.3.1: {} + + puppeteer-core@22.15.0: + dependencies: + '@puppeteer/browsers': 2.3.0 + chromium-bidi: 0.6.3(devtools-protocol@0.0.1312386) + debug: 4.3.6 + devtools-protocol: 0.0.1312386 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + puppeteer@22.15.0(typescript@5.5.4): + dependencies: + '@puppeteer/browsers': 2.3.0 + cosmiconfig: 9.0.0(typescript@5.5.4) + devtools-protocol: 0.0.1312386 + puppeteer-core: 22.15.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - typescript + - utf-8-validate + + qrcode-terminal@0.11.0: {} + + query-string@7.1.3: + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + + querystring@0.2.1: {} + + queue-lit@1.5.2: {} + + queue-microtask@1.2.3: {} + + queue-tick@1.0.1: {} + + queue@6.0.2: + dependencies: + inherits: 2.0.4 + + r-json@1.3.0: + dependencies: + w-json: 1.3.10 + + range-parser@1.2.1: {} + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + react-devtools-core@5.3.1: + dependencies: + shell-quote: 1.8.1 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react-fast-compare@3.2.2: {} + + react-freeze@1.0.4(react@18.3.1): + dependencies: + react: 18.3.1 + + react-is@16.13.1: {} + + react-is@17.0.2: {} + + react-is@18.3.1: {} + + react-native-animatable@1.3.3: + dependencies: + prop-types: 15.8.1 + + react-native-css-interop@0.0.34(@babel/core@7.25.2)(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-svg@15.5.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4))): + dependencies: + '@babel/helper-module-imports': 7.24.7 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + babel-plugin-tester: 11.0.4(@babel/core@7.25.2) + lightningcss: 1.22.0 + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native-reanimated: 3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + tailwindcss: 3.4.10(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)) + optionalDependencies: + react-native-safe-area-context: 4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-svg: 15.5.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - '@babel/core' + - supports-color + + react-native-fit-image@1.5.5: + dependencies: + prop-types: 15.8.1 + + react-native-gesture-handler@2.18.1(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + dependencies: + '@egjs/hammerjs': 2.0.17 + hoist-non-react-statics: 3.3.2 + invariant: 2.2.4 + prop-types: 15.8.1 + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + + react-native-helmet-async@2.0.4(react@18.3.1): + dependencies: + invariant: 2.2.4 + react: 18.3.1 + react-fast-compare: 3.2.2 + shallowequal: 1.1.0 + + react-native-markdown-display@7.0.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + dependencies: + css-to-react-native: 3.2.0 + markdown-it: 10.0.0 + prop-types: 15.8.1 + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native-fit-image: 1.5.5 + + react-native-mmkv@2.12.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + + react-native-modal@13.0.1(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + dependencies: + prop-types: 15.8.1 + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native-animatable: 1.3.3 + + react-native-quick-base64@2.1.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + dependencies: + base64-js: 1.5.1 + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + + react-native-quick-crypto@0.7.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + dependencies: + '@craftzdog/react-native-buffer': 6.0.5(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + events: 3.3.0 + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + readable-stream: 4.5.2 + string_decoder: 1.3.0 + util: 0.12.5 + + react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) + '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) + convert-source-map: 2.0.0 + invariant: 2.2.4 + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + transitivePeerDependencies: + - supports-color + + react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + + react-native-screens@3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-freeze: 1.0.4(react@18.3.1) + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + warn-once: 0.1.1 + + react-native-svg@15.5.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + dependencies: + css-select: 5.1.0 + css-tree: 1.1.3 + react: 18.3.1 + react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + warn-once: 0.1.1 + + react-native-video@5.2.1: + dependencies: + deprecated-react-native-prop-types: 2.3.0 + keymirror: 0.1.1 + prop-types: 15.8.1 + shaka-player: 2.5.23 + + react-native-web-internals@1.108.3: + dependencies: + '@tamagui/normalize-css-color': 1.108.3 + '@tamagui/react-native-use-pressable': 1.108.3(react@18.3.1) + '@tamagui/react-native-use-responder-events': 1.108.3(react@18.3.1) + '@tamagui/simple-hash': 1.108.3 + react: 18.3.1 + styleq: 0.1.3 + + react-native-web-lite@1.108.3(react@18.3.1): + dependencies: + '@tamagui/normalize-css-color': 1.108.3 + '@tamagui/react-native-use-pressable': 1.108.3(react@18.3.1) + '@tamagui/react-native-use-responder-events': 1.108.3(react@18.3.1) + invariant: 2.2.4 + react: 18.3.1 + react-native-web-internals: 1.108.3 + styleq: 0.1.3 + + react-native-web@0.19.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.25.0 + '@react-native/normalize-colors': 0.74.87 + fbjs: 3.0.5 + inline-style-prefixer: 6.0.4 + memoize-one: 6.0.0 + nullthrows: 1.1.1 + postcss-value-parser: 4.2.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styleq: 0.1.3 + transitivePeerDependencies: + - encoding + + react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1): + dependencies: + '@jest/create-cache-key-function': 29.7.0 + '@react-native-community/cli': 13.6.9 + '@react-native-community/cli-platform-android': 13.6.9 + '@react-native-community/cli-platform-ios': 13.6.9 + '@react-native/assets-registry': 0.74.87 + '@react-native/codegen': 0.74.87(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + '@react-native/community-cli-plugin': 0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + '@react-native/gradle-plugin': 0.74.87 + '@react-native/js-polyfills': 0.74.87 + '@react-native/normalize-colors': 0.74.87 + '@react-native/virtualized-lists': 0.74.87(@types/react@18.3.3)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + abort-controller: 3.0.0 + anser: 1.4.10 + ansi-regex: 5.0.1 + base64-js: 1.5.1 + chalk: 4.1.2 + event-target-shim: 5.0.1 + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + jest-environment-node: 29.7.0 + jsc-android: 250231.0.0 + memoize-one: 5.2.1 + metro-runtime: 0.80.10 + metro-source-map: 0.80.10 + mkdirp: 0.5.6 + nullthrows: 1.1.1 + pretty-format: 26.6.2 + promise: 8.3.0 + react: 18.3.1 + react-devtools-core: 5.3.1 + react-refresh: 0.14.2 + react-shallow-renderer: 16.15.0(react@18.3.1) + regenerator-runtime: 0.13.11 + scheduler: 0.24.0-canary-efb381bbf-20230505 + stacktrace-parser: 0.1.10 + whatwg-fetch: 3.6.20 + ws: 6.2.3 + yargs: 17.7.2 + optionalDependencies: + '@types/react': 18.3.3 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - bufferutil + - encoding + - supports-color + - utf-8-validate + + react-refresh@0.14.2: {} + + react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) + tslib: 2.6.3 + optionalDependencies: + '@types/react': 18.3.3 + + react-remove-scroll@2.5.5(@types/react@18.3.3)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) + tslib: 2.6.3 + use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + + react-shallow-renderer@16.15.0(react@18.3.1): + dependencies: + object-assign: 4.1.1 + react: 18.3.1 + react-is: 18.3.1 + + react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.3.1 + tslib: 2.6.3 + optionalDependencies: + '@types/react': 18.3.3 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readable-stream@4.5.2: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readline@1.3.0: {} + + recast@0.21.5: + dependencies: + ast-types: 0.15.2 + esprima: 4.0.1 + source-map: 0.6.1 + tslib: 2.6.3 + + reflect.getprototypeof@1.0.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + which-builtin-type: 1.1.4 + + reforest@0.13.0(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1): + dependencies: + performant-array-to-tree: 1.11.0 + react: 18.3.1 + zustand: 4.5.4(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - immer + + regenerate-unicode-properties@10.1.1: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.13.11: {} + + regenerator-runtime@0.14.1: {} + + regenerator-transform@0.15.2: + dependencies: + '@babel/runtime': 7.25.0 + + regexp.prototype.flags@1.5.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + + regexpu-core@5.3.2: + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + + registry-auth-token@3.3.2: + dependencies: + rc: 1.2.8 + safe-buffer: 5.2.1 + + registry-url@3.1.0: + dependencies: + rc: 1.2.8 + + regjsparser@0.9.1: + dependencies: + jsesc: 0.5.0 + + remove-trailing-slash@0.1.1: {} + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + require-main-filename@2.0.0: {} + + requireg@0.2.2: + dependencies: + nested-error-stacks: 2.0.1 + rc: 1.2.8 + resolve: 1.7.1 + + reselect@4.1.8: {} + + resolve-from@3.0.0: {} + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve.exports@2.0.2: {} + + resolve@1.19.0: + dependencies: + is-core-module: 2.15.0 + path-parse: 1.0.7 + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@1.7.1: + dependencies: + path-parse: 1.0.7 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.15.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@2.0.0: + dependencies: + onetime: 2.0.1 + signal-exit: 3.0.7 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + reusify@1.0.4: {} + + rimraf@2.6.3: + dependencies: + glob: 7.2.3 + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup@4.20.0: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.20.0 + '@rollup/rollup-android-arm64': 4.20.0 + '@rollup/rollup-darwin-arm64': 4.20.0 + '@rollup/rollup-darwin-x64': 4.20.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.20.0 + '@rollup/rollup-linux-arm-musleabihf': 4.20.0 + '@rollup/rollup-linux-arm64-gnu': 4.20.0 + '@rollup/rollup-linux-arm64-musl': 4.20.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.20.0 + '@rollup/rollup-linux-riscv64-gnu': 4.20.0 + '@rollup/rollup-linux-s390x-gnu': 4.20.0 + '@rollup/rollup-linux-x64-gnu': 4.20.0 + '@rollup/rollup-linux-x64-musl': 4.20.0 + '@rollup/rollup-win32-arm64-msvc': 4.20.0 + '@rollup/rollup-win32-ia32-msvc': 4.20.0 + '@rollup/rollup-win32-x64-msvc': 4.20.0 + fsevents: 2.3.3 + + run-async@2.4.1: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@6.6.7: + dependencies: + tslib: 1.14.1 + + rxjs@7.8.1: + dependencies: + tslib: 2.6.3 + + safe-array-concat@1.1.2: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-regex-test@1.0.3: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + + safer-buffer@2.1.2: {} + + sax@1.4.1: {} + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + scheduler@0.24.0-canary-efb381bbf-20230505: + dependencies: + loose-envify: 1.4.0 + + schema-utils@4.2.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.5.4: + dependencies: + lru-cache: 6.0.0 + + semver@7.6.3: {} + + send@0.18.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + sentence-case@2.1.1: + dependencies: + no-case: 2.3.2 + upper-case-first: 1.1.2 + + serialize-error@2.1.0: {} + + serve-static@1.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + set-blocking@2.0.0: {} + + set-cookie-parser@2.7.0: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-value@4.1.0: + dependencies: + is-plain-object: 2.0.4 + is-primitive: 3.0.1 + + setimmediate@1.0.5: {} + + setprototypeof@1.2.0: {} + + sf-symbols-typescript@1.0.0: {} + + shaka-player@2.5.23: + dependencies: + eme-encryption-scheme-polyfill: 2.1.5 + + shallow-clone@3.0.1: + dependencies: + kind-of: 6.0.3 + + shallowequal@1.1.0: {} + + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@1.0.0: {} + + shebang-regex@3.0.0: {} + + shell-quote@1.8.1: {} + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + + siginfo@2.0.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-plist@1.3.1: + dependencies: + bplist-creator: 0.1.0 + bplist-parser: 0.3.1 + plist: 3.1.0 + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slash@4.0.0: {} + + slice-ansi@2.1.0: + dependencies: + ansi-styles: 3.2.1 + astral-regex: 1.0.0 + is-fullwidth-code-point: 2.0.0 + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slugify@1.6.6: {} + + smart-buffer@4.2.0: {} + + snake-case@2.1.0: + dependencies: + no-case: 2.3.2 + + socks-proxy-agent@8.0.4: + dependencies: + agent-base: 7.1.1 + debug: 4.3.6 + socks: 2.8.3 + transitivePeerDependencies: + - supports-color + + socks@2.8.3: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + + sonner@0.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + source-map-js@1.2.0: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + spinnies@0.5.1: + dependencies: + chalk: 2.4.2 + cli-cursor: 3.1.0 + strip-ansi: 5.2.0 + + split-on-first@1.1.0: {} + + split@1.0.1: + dependencies: + through: 2.3.8 + + sprintf-js@1.0.3: {} + + sprintf-js@1.1.3: {} + + srt-webvtt@2.0.0: {} + + ssri@10.0.6: + dependencies: + minipass: 7.1.2 + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + stackback@0.0.2: {} + + stackframe@1.3.4: {} + + stacktrace-parser@0.1.10: + dependencies: + type-fest: 0.7.1 + + statuses@1.5.0: {} + + statuses@2.0.1: {} + + std-env@3.7.0: {} + + stop-iteration-iterator@1.0.0: + dependencies: + internal-slot: 1.0.7 + + stream-buffers@2.2.0: {} + + stream-slice@0.1.2: {} + + streamx@2.18.0: + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + text-decoder: 1.1.1 + optionalDependencies: + bare-events: 2.4.2 + + strict-uri-encode@2.0.0: {} + + string-argv@0.3.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string.prototype.includes@2.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + + string.prototype.matchall@4.0.11: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 + set-function-name: 2.0.2 + side-channel: 1.0.6 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + + string.prototype.trim@1.2.9: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + string.prototype.trimend@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@5.2.0: + dependencies: + ansi-regex: 4.1.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.0.1 + + strip-bom@3.0.0: {} + + strip-eof@1.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@2.0.1: {} + + strip-json-comments@3.1.1: {} + + strip-literal@2.1.0: + dependencies: + js-tokens: 9.0.0 + + strnum@1.0.5: {} + + structured-headers@0.4.1: {} + + style-value-types@5.0.0: + dependencies: + hey-listen: 1.0.8 + tslib: 2.6.3 + + styleq@0.1.3: {} + + subsrt-ts@2.1.2: {} + + sucrase@3.34.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + sudo-prompt@8.2.5: {} + + sudo-prompt@9.1.1: {} + + sudo-prompt@9.2.1: {} + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + swap-case@1.1.2: + dependencies: + lower-case: 1.1.4 + upper-case: 1.1.3 + + synckit@0.9.1: + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.6.3 + + tabbable@6.2.0: {} + + table@6.8.2: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)): + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 2.1.0 + micromatch: 4.0.7 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.1 + postcss: 8.4.41 + postcss-import: 15.1.0(postcss@8.4.41) + postcss-js: 4.0.1(postcss@8.4.41) + postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)) + postcss-nested: 6.2.0(postcss@8.4.41) + postcss-selector-parser: 6.1.2 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tamagui@1.108.3(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + dependencies: + '@tamagui/accordion': 1.108.3(react@18.3.1) + '@tamagui/adapt': 1.108.3(react@18.3.1) + '@tamagui/alert-dialog': 1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/animate-presence': 1.108.3(react@18.3.1) + '@tamagui/avatar': 1.108.3(react@18.3.1) + '@tamagui/button': 1.108.3(react@18.3.1) + '@tamagui/card': 1.108.3(react@18.3.1) + '@tamagui/checkbox': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/compose-refs': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.108.3(react@18.3.1) + '@tamagui/dialog': 1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/elements': 1.108.3(react@18.3.1) + '@tamagui/fake-react-native': 1.108.3 + '@tamagui/focusable': 1.108.3(react@18.3.1) + '@tamagui/font-size': 1.108.3(react@18.3.1) + '@tamagui/form': 1.108.3(react@18.3.1) + '@tamagui/get-button-sized': 1.108.3(react@18.3.1) + '@tamagui/get-font-sized': 1.108.3(react@18.3.1) + '@tamagui/get-token': 1.108.3(react@18.3.1) + '@tamagui/group': 1.108.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) + '@tamagui/helpers-tamagui': 1.108.3(react@18.3.1) + '@tamagui/image': 1.108.3(react@18.3.1) + '@tamagui/label': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/linear-gradient': 1.108.3(react@18.3.1) + '@tamagui/list-item': 1.108.3(react@18.3.1) + '@tamagui/polyfill-dev': 1.108.3 + '@tamagui/popover': 1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/popper': 1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/portal': 1.108.3(react@18.3.1) + '@tamagui/progress': 1.108.3(react@18.3.1) + '@tamagui/radio-group': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/react-native-media-driver': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/scroll-view': 1.108.3(react@18.3.1) + '@tamagui/select': 1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/separator': 1.108.3(react@18.3.1) + '@tamagui/shapes': 1.108.3(react@18.3.1) + '@tamagui/sheet': 1.108.3(@types/react@18.3.3)(react@18.3.1) + '@tamagui/slider': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/switch': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/tabs': 1.108.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) + '@tamagui/text': 1.108.3(react@18.3.1) + '@tamagui/theme': 1.108.3(react@18.3.1) + '@tamagui/toggle-group': 1.108.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) + '@tamagui/tooltip': 1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/use-debounce': 1.108.3(react@18.3.1) + '@tamagui/use-force-update': 1.108.3(react@18.3.1) + '@tamagui/use-window-dimensions': 1.108.3(react@18.3.1) + '@tamagui/visually-hidden': 1.108.3(react@18.3.1) + react: 18.3.1 + transitivePeerDependencies: + - '@types/react' + - immer + - react-dom + - react-native + + tapable@2.2.1: {} + + tar-fs@3.0.6: + dependencies: + pump: 3.0.0 + tar-stream: 3.1.7 + optionalDependencies: + bare-fs: 2.3.1 + bare-path: 2.1.3 + + tar-stream@3.1.7: + dependencies: + b4a: 1.6.6 + fast-fifo: 1.3.2 + streamx: 2.18.0 + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + temp-dir@1.0.0: {} + + temp-dir@2.0.0: {} + + temp@0.8.4: + dependencies: + rimraf: 2.6.3 + + tempy@0.3.0: + dependencies: + temp-dir: 1.0.0 + type-fest: 0.3.1 + unique-string: 1.0.0 + + tempy@0.7.1: + dependencies: + del: 6.1.1 + is-stream: 2.0.1 + temp-dir: 2.0.0 + type-fest: 0.16.0 + unique-string: 2.0.0 + + terminal-link@2.1.1: + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + + terser@5.31.6: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.12.1 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + text-decoder@1.1.1: + dependencies: + b4a: 1.6.6 + + text-encoding-polyfill@0.6.7: {} + + text-table@0.2.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + throat@5.0.0: {} + + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + + through@2.3.8: {} + + tinybench@2.9.0: {} + + tinycolor2@1.6.0: {} + + tinygradient@1.1.5: + dependencies: + '@types/tinycolor2': 1.4.6 + tinycolor2: 1.6.0 + + tinypool@0.8.4: {} + + tinyspy@2.2.1: {} + + title-case@2.1.1: + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + + tmdb-ts@1.8.0: + dependencies: + cross-fetch: 3.1.8 + transitivePeerDependencies: + - encoding + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + tmpl@1.0.5: {} + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + tr46@0.0.3: {} + + traverse@0.6.9: + dependencies: + gopd: 1.0.1 + typedarray.prototype.slice: 1.0.3 + which-typed-array: 1.1.15 + + ts-api-utils@1.3.0(typescript@5.5.4): + dependencies: + typescript: 5.5.4 + + ts-interface-checker@0.1.13: {} + + ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.2.0 + acorn: 8.12.1 + acorn-walk: 8.3.3 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.5.4 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.7.10(@swc/helpers@0.5.12) + + tsc-alias@1.8.10: + dependencies: + chokidar: 3.6.0 + commander: 9.5.0 + globby: 11.1.0 + mylas: 2.1.13 + normalize-path: 3.0.0 + plimit-lit: 1.6.1 + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@1.14.1: {} + + tslib@2.6.3: {} + + turbo-darwin-64@1.13.4: + optional: true + + turbo-darwin-arm64@1.13.4: + optional: true + + turbo-linux-64@1.13.4: + optional: true + + turbo-linux-arm64@1.13.4: + optional: true + + turbo-stream@2.2.0: {} + + turbo-windows-64@1.13.4: + optional: true + + turbo-windows-arm64@1.13.4: + optional: true + + turbo@1.13.4: + optionalDependencies: + turbo-darwin-64: 1.13.4 + turbo-darwin-arm64: 1.13.4 + turbo-linux-64: 1.13.4 + turbo-linux-arm64: 1.13.4 + turbo-windows-64: 1.13.4 + turbo-windows-arm64: 1.13.4 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-detect@4.1.0: {} + + type-fest@0.16.0: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@0.3.1: {} + + type-fest@0.7.1: {} + + type-fest@3.13.1: {} + + typed-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + + typed-array-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-byte-offset@1.0.2: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-length@1.0.6: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + + typedarray.prototype.slice@1.0.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + typed-array-buffer: 1.0.2 + typed-array-byte-offset: 1.0.2 + + typescript@5.4.2: {} + + typescript@5.5.4: {} + + ua-parser-js@1.0.38: {} + + uc.micro@1.0.6: {} + + ufo@1.5.4: {} + + uglify-js@3.19.2: + optional: true + + unbox-primitive@1.0.2: + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + + undici-types@5.26.5: {} + + undici-types@6.13.0: {} + + undici@6.19.7: {} + + unicode-canonical-property-names-ecmascript@2.0.0: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.1.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + unique-filename@3.0.0: + dependencies: + unique-slug: 4.0.0 + + unique-slug@4.0.0: + dependencies: + imurmurhash: 0.1.4 + + unique-string@1.0.0: + dependencies: + crypto-random-string: 1.0.0 + + unique-string@2.0.0: + dependencies: + crypto-random-string: 2.0.0 + + universal-user-agent@6.0.1: {} + + universalify@0.1.2: {} + + universalify@1.0.0: {} + + universalify@2.0.1: {} + + unpacker@1.0.1: {} + + unpipe@1.0.0: {} + + update-browserslist-db@1.1.0(browserslist@4.23.3): + dependencies: + browserslist: 4.23.3 + escalade: 3.1.2 + picocolors: 1.0.1 + + update-check@1.5.4: + dependencies: + registry-auth-token: 3.3.2 + registry-url: 3.1.0 + + upper-case-first@1.1.2: + dependencies: + upper-case: 1.1.3 + + upper-case@1.1.3: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-join@4.0.0: {} + + urlpattern-polyfill@10.0.0: {} + + use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.6.3 + optionalDependencies: + '@types/react': 18.3.3 + + use-latest-callback@0.2.1(react@18.3.1): + dependencies: + react: 18.3.1 + + use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.6.3 + optionalDependencies: + '@types/react': 18.3.3 + + use-sync-external-store@1.2.0(react@18.3.1): + dependencies: + react: 18.3.1 + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 + + utils-merge@1.0.1: {} + + uuid@7.0.3: {} + + uuid@8.3.2: {} + + v8-compile-cache-lib@3.0.1: {} + + valid-url@1.0.9: {} + + validate-npm-package-name@3.0.0: + dependencies: + builtins: 1.0.3 + + validate-npm-package-name@5.0.1: {} + + validator@13.12.0: {} + + vary@1.1.2: {} + + vite-node@1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6): + dependencies: + cac: 6.7.14 + debug: 4.3.6 + pathe: 1.1.2 + picocolors: 1.0.1 + vite: 5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite-plugin-dts@3.9.1(@types/node@22.2.0)(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6)): + dependencies: + '@microsoft/api-extractor': 7.43.0(@types/node@22.2.0) + '@rollup/pluginutils': 5.1.0(rollup@4.20.0) + '@vue/language-core': 1.8.27(typescript@5.5.4) + debug: 4.3.6 + kolorist: 1.8.0 + magic-string: 0.30.11 + typescript: 5.5.4 + vue-tsc: 1.8.27(typescript@5.5.4) + optionalDependencies: + vite: 5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + transitivePeerDependencies: + - '@types/node' + - rollup + - supports-color + + vite@5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.41 + rollup: 4.20.0 + optionalDependencies: + '@types/node': 22.2.0 + fsevents: 2.3.3 + lightningcss: 1.22.0 + terser: 5.31.6 + + vitest@1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6): + dependencies: + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + acorn-walk: 8.3.3 + chai: 4.5.0 + debug: 4.3.6 + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.11 + pathe: 1.1.2 + picocolors: 1.0.1 + std-env: 3.7.0 + strip-literal: 2.1.0 + tinybench: 2.9.0 + tinypool: 0.8.4 + vite: 5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + vite-node: 1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.2.0 + transitivePeerDependencies: + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vlq@1.0.1: {} + + vue-template-compiler@2.7.16: + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + vue-tsc@1.8.27(typescript@5.5.4): + dependencies: + '@volar/typescript': 1.11.1 + '@vue/language-core': 1.8.27(typescript@5.5.4) + semver: 7.6.3 + typescript: 5.5.4 + + w-json@1.3.10: {} + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + warn-once@0.1.1: {} + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + web-encoding@1.1.5: + dependencies: + util: 0.12.5 + optionalDependencies: + '@zxing/text-encoding': 0.9.0 + + web-streams-polyfill@3.3.3: {} + + webidl-conversions@3.0.1: {} + + webidl-conversions@5.0.0: {} + + whatwg-fetch@3.6.20: {} + + whatwg-url-without-unicode@8.0.0-3: + dependencies: + buffer: 5.7.1 + punycode: 2.3.1 + webidl-conversions: 5.0.0 + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-boxed-primitive@1.0.2: + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + + which-builtin-type@1.1.4: + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 + + which-module@2.0.1: {} + + which-typed-array@1.1.15: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + wonka@4.0.15: {} + + word-wrap@1.2.5: {} + + wordwrap@1.0.0: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@2.4.3: + dependencies: + graceful-fs: 4.2.11 + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + ws@6.2.3: + dependencies: + async-limiter: 1.0.1 + + ws@7.5.10: {} + + ws@8.18.0: {} + + xcode@3.0.1: + dependencies: + simple-plist: 1.3.1 + uuid: 7.0.3 + + xml2js@0.6.0: + dependencies: + sax: 1.4.1 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + xmlbuilder@14.0.0: {} + + xmlbuilder@15.1.1: {} + + xtend@4.0.2: {} + + y18n@4.0.3: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@2.5.0: {} + + yargs-parser@18.1.3: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + yargs-parser@21.1.1: {} + + yargs@15.4.1: + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} + + yocto-queue@1.1.1: {} + + z-schema@5.0.5: + dependencies: + lodash.get: 4.4.2 + lodash.isequal: 4.5.0 + validator: 13.12.0 + optionalDependencies: + commander: 9.5.0 + + zod@3.23.8: {} + + zustand@4.5.4(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1): + dependencies: + use-sync-external-store: 1.2.0(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.3 + immer: 10.1.1 + react: 18.3.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..0528dd4 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +packages: + - apps/* + - packages/* + - tooling/* diff --git a/tooling/github/setup/action.yml b/tooling/github/setup/action.yml index f1c2960..66a4972 100644 --- a/tooling/github/setup/action.yml +++ b/tooling/github/setup/action.yml @@ -4,12 +4,18 @@ description: "Common setup steps for Actions" runs: using: composite steps: - - uses: oven-sh/setup-bun@v1 + - uses: pnpm/action-setup@v3 + name: Install pnpm with: - bun-version: latest + version: 9 + run_install: false + - uses: actions/setup-node@v4 + with: + node-version: 21 + cache: "pnpm" - shell: bash - run: bun add -g turbo + run: pnpm add -g turbo - shell: bash - run: bun install + run: pnpm install From 9bc7dd8b3627e022d37c55cd959ebed124874efb Mon Sep 17 00:00:00 2001 From: Jorrin Date: Wed, 14 Aug 2024 00:37:10 +0200 Subject: [PATCH 32/49] lint --- apps/expo/src/components/player/CaptionsSelector.tsx | 5 +---- apps/expo/src/components/player/VideoPlayer.tsx | 12 ++++++------ apps/expo/src/hooks/player/useSourceScrape.ts | 6 +++--- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/apps/expo/src/components/player/CaptionsSelector.tsx b/apps/expo/src/components/player/CaptionsSelector.tsx index e82ac89..6694576 100644 --- a/apps/expo/src/components/player/CaptionsSelector.tsx +++ b/apps/expo/src/components/player/CaptionsSelector.tsx @@ -1,5 +1,4 @@ import type { LanguageCode } from "iso-639-1"; -import type { ContentCaption } from "subsrt-ts/dist/types/handler"; import { useState } from "react"; import { MaterialCommunityIcons, MaterialIcons } from "@expo/vector-icons"; import { useMutation } from "@tanstack/react-query"; @@ -28,9 +27,7 @@ const parseCaption = async ( const data = await response.text(); return { ...caption, - data: parse(data).filter( - (cue) => cue.type === "caption", - ) as ContentCaption[], + data: parse(data).filter((cue) => cue.type === "caption"), }; }; diff --git a/apps/expo/src/components/player/VideoPlayer.tsx b/apps/expo/src/components/player/VideoPlayer.tsx index 8a582c3..5b21fcd 100644 --- a/apps/expo/src/components/player/VideoPlayer.tsx +++ b/apps/expo/src/components/player/VideoPlayer.tsx @@ -74,6 +74,12 @@ export const VideoPlayer = () => { const setMeta = usePlayerStore((state) => state.setMeta); const isLocalFile = usePlayerStore((state) => state.isLocalFile); + const { gestureControls, autoPlay } = usePlayerSettingsStore(); + const { updateWatchHistory, removeFromWatchHistory, getWatchHistoryItem } = + useWatchHistoryStore(); + const { wifiDefaultQuality, mobileDataDefaultQuality } = + useNetworkSettingsStore(); + const player = useVideoPlayer(videoSrc, (player) => { if (state === "playing") { player.play(); @@ -95,12 +101,6 @@ export const VideoPlayer = () => { } }, [player, setVideoPlayer]); - const { gestureControls, autoPlay } = usePlayerSettingsStore(); - const { updateWatchHistory, removeFromWatchHistory, getWatchHistoryItem } = - useWatchHistoryStore(); - const { wifiDefaultQuality, mobileDataDefaultQuality } = - useNetworkSettingsStore(); - const updateResizeMode = (newMode: ResizeMode) => { setResizeMode(newMode); void Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); diff --git a/apps/expo/src/hooks/player/useSourceScrape.ts b/apps/expo/src/hooks/player/useSourceScrape.ts index 6935068..954f78a 100644 --- a/apps/expo/src/hooks/player/useSourceScrape.ts +++ b/apps/expo/src/hooks/player/useSourceScrape.ts @@ -66,9 +66,9 @@ export const useBaseScrape = () => { const startEvent = useCallback((id: ScraperEvent<"start">) => { const lastIdTmp = lastId.current; setSources((s) => { - if (s[id]) s[id]!.status = "pending"; - if (lastIdTmp && s[lastIdTmp] && s[lastIdTmp]!.status === "pending") - s[lastIdTmp]!.status = "success"; + if (s[id]) s[id].status = "pending"; + if (lastIdTmp && s[lastIdTmp] && s[lastIdTmp].status === "pending") + s[lastIdTmp].status = "success"; return { ...s }; }); setCurrentSource(id); From 7c8b5847a6483c91bc583233c4689c8a7222df8e Mon Sep 17 00:00:00 2001 From: Jorrin Date: Wed, 14 Aug 2024 00:37:19 +0200 Subject: [PATCH 33/49] lint again --- packages/provider-utils/src/util.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/provider-utils/src/util.ts b/packages/provider-utils/src/util.ts index d8f1726..3250fdf 100644 --- a/packages/provider-utils/src/util.ts +++ b/packages/provider-utils/src/util.ts @@ -32,10 +32,10 @@ export function transformSearchResultToScrapeMedia( season: { number: season ?? tvResult.seasons[0]?.season_number ?? 1, tmdbId: season - ? tvResult.seasons + ? (tvResult.seasons .find((s) => s.season_number === season) - ?.id.toString() ?? "" - : tvResult.seasons[0]?.id.toString() ?? "", + ?.id.toString() ?? "") + : (tvResult.seasons[0]?.id.toString() ?? ""), }, episode: { number: episode ?? 1, From d5a136c41c2ab6fb7089f1224988808ee6816971 Mon Sep 17 00:00:00 2001 From: Jorrin Date: Wed, 14 Aug 2024 21:11:34 +0200 Subject: [PATCH 34/49] yeet sudo providers in here --- .../src/components/player/VideoPlayer.tsx | 2 + packages/provider-utils/package.json | 32 +- packages/providers/package.json | 31 +- .../src/__test__/providers/embedUtils.ts | 10 +- .../src/__test__/providers/providerUtils.ts | 9 +- .../src/__test__/providers/testMedia.ts | 2 +- .../standard/fetchers/simpleProxy.test.ts | 3 +- .../standard/fetchers/standard.test.ts | 2 +- .../src/__test__/standard/providerTests.ts | 4 +- .../standard/providers/checks.test.ts | 2 +- .../__test__/standard/utils/features.test.ts | 3 +- .../providers/src/dev-cli/browser/.gitignore | 1 - .../providers/src/dev-cli/browser/index.html | 11 - .../providers/src/dev-cli/browser/index.ts | 20 -- packages/providers/src/dev-cli/index.ts | 311 +++++++++--------- packages/providers/src/dev-cli/logging.ts | 7 +- packages/providers/src/dev-cli/scraper.ts | 92 +++--- packages/providers/src/dev-cli/tmdb.ts | 181 +++++----- packages/providers/src/dev-cli/validate.ts | 13 +- packages/providers/src/entrypoint/builder.ts | 14 +- packages/providers/src/entrypoint/controls.ts | 30 +- packages/providers/src/entrypoint/declare.ts | 15 +- .../providers/src/entrypoint/providers.ts | 2 +- .../providers/src/entrypoint/utils/events.ts | 28 +- .../providers/src/entrypoint/utils/media.ts | 4 +- .../providers/src/entrypoint/utils/meta.ts | 14 +- .../providers/src/entrypoint/utils/targets.ts | 15 +- packages/providers/src/fetchers/body.ts | 2 +- packages/providers/src/fetchers/common.ts | 9 +- packages/providers/src/fetchers/fetch.ts | 13 +- .../providers/src/fetchers/simpleProxy.ts | 6 +- .../providers/src/fetchers/standardFetch.ts | 10 +- packages/providers/src/fetchers/types.ts | 24 +- packages/providers/src/providers/all.ts | 47 ++- packages/providers/src/providers/base.ts | 26 +- packages/providers/src/providers/captions.ts | 5 +- .../src/providers/embeds/autoembed.ts | 54 +++ .../src/providers/embeds/closeload.ts | 3 +- .../src/providers/embeds/febbox/common.ts | 2 +- .../src/providers/embeds/febbox/fileList.ts | 7 +- .../src/providers/embeds/febbox/hls.ts | 38 +-- .../src/providers/embeds/febbox/qualities.ts | 4 +- .../src/providers/embeds/febbox/subtitles.ts | 5 +- .../src/providers/embeds/filemoon/index.ts | 9 +- .../src/providers/embeds/filemoon/mp4.ts | 3 +- .../providers/src/providers/embeds/hydrax.ts | 65 ++++ .../providers/src/providers/embeds/nsbx.ts | 54 +++ .../src/providers/embeds/nsbx/delta.ts | 18 - .../src/providers/embeds/playm4u/nm.ts | 123 +++++++ .../providers/embeds/smashystream/video1.ts | 7 +- .../src/providers/embeds/streamsb.ts | 6 +- .../src/providers/embeds/turbovid.ts | 79 +++++ .../providers/src/providers/embeds/upcloud.ts | 3 +- .../src/providers/embeds/vidplay/common.ts | 2 +- .../src/providers/embeds/vidplay/index.ts | 8 +- .../src/providers/embeds/vidplay/types.ts | 8 +- .../src/providers/embeds/warezcdn/common.ts | 3 +- .../src/providers/embeds/warezcdn/hls.ts | 4 +- .../src/providers/embeds/warezcdn/mp4.ts | 5 +- .../providers/embeds/warezcdn/warezplayer.ts | 58 ++++ .../providers/src/providers/embeds/whvx.ts | 71 ++++ packages/providers/src/providers/get.ts | 5 +- .../src/providers/sources/autoembed.ts | 46 +++ .../src/providers/sources/catflix.ts | 74 +++++ .../src/providers/sources/ee3/common.ts | 7 + .../src/providers/sources/ee3/index.ts | 97 ++++++ .../src/providers/sources/ee3/types.ts | 31 ++ .../src/providers/sources/ee3/utils.ts | 46 +++ .../src/providers/sources/flixhq/index.ts | 3 +- .../src/providers/sources/flixhq/scrape.ts | 4 +- .../src/providers/sources/flixhq/search.ts | 4 +- .../src/providers/sources/fsharetv.ts | 94 ++++++ .../src/providers/sources/gomovies/index.ts | 4 +- .../src/providers/sources/gomovies/source.ts | 2 +- .../providers/sources/goojara/getEmbeds.ts | 7 +- .../src/providers/sources/goojara/index.ts | 5 +- .../src/providers/sources/goojara/util.ts | 9 +- .../src/providers/sources/hdrezka/index.ts | 9 +- .../src/providers/sources/hdrezka/types.ts | 6 +- .../src/providers/sources/hdrezka/utils.ts | 2 +- .../providers/sources/insertunit/captions.ts | 5 +- .../src/providers/sources/insertunit/index.ts | 6 +- .../src/providers/sources/kissasian/search.ts | 2 +- .../src/providers/sources/lookmovie/index.ts | 5 +- .../src/providers/sources/lookmovie/type.ts | 6 +- .../src/providers/sources/lookmovie/util.ts | 6 +- .../src/providers/sources/lookmovie/video.ts | 9 +- .../src/providers/sources/m4ufree.ts | 156 +++++++++ .../src/providers/sources/nepu/index.ts | 19 +- .../src/providers/sources/nepu/types.ts | 4 +- .../providers/src/providers/sources/nites.ts | 5 +- .../providers/src/providers/sources/nsbx.ts | 35 +- .../src/providers/sources/primewire/index.ts | 4 +- .../src/providers/sources/redstar.ts | 43 +++ .../src/providers/sources/ridomovies/index.ts | 7 +- .../src/providers/sources/ridomovies/types.ts | 8 +- .../src/providers/sources/showbox/index.ts | 5 +- .../providers/sources/smashystream/index.ts | 12 +- .../src/providers/sources/soapertv/index.ts | 34 +- .../src/providers/sources/tugaflix/index.ts | 3 +- .../providers/sources/vidsrc/scrape-movie.ts | 2 +- .../providers/sources/vidsrc/scrape-show.ts | 2 +- .../src/providers/sources/vidsrc/scrape.ts | 4 +- .../src/providers/sources/vidsrcto/common.ts | 18 +- .../src/providers/sources/vidsrcto/index.ts | 11 +- .../src/providers/sources/vidsrcto/types.ts | 4 +- .../src/providers/sources/warezcdn/common.ts | 2 +- .../src/providers/sources/warezcdn/index.ts | 86 +++-- .../src/providers/sources/warezcdn/types.ts | 4 +- .../providers/src/providers/sources/whvx.ts | 42 +++ .../src/providers/sources/zoechip/common.ts | 6 +- .../providers/sources/zoechip/scrape-movie.ts | 2 +- .../providers/sources/zoechip/scrape-show.ts | 2 +- .../src/providers/sources/zoechip/scrape.ts | 7 +- .../src/providers/sources/zoechip/search.ts | 4 +- packages/providers/src/providers/streams.ts | 17 +- .../providers/src/runners/individualRunner.ts | 71 +++- packages/providers/src/runners/runner.ts | 152 +++++---- packages/providers/src/utils/compare.ts | 2 +- packages/providers/src/utils/context.ts | 12 +- packages/providers/src/utils/cookie.ts | 3 +- packages/providers/src/utils/native.ts | 4 +- packages/providers/src/utils/opensubtitles.ts | 49 +++ packages/providers/src/utils/playlist.ts | 25 ++ packages/providers/src/utils/predicates.ts | 2 +- packages/providers/src/utils/proxy.ts | 44 +++ packages/providers/src/utils/quality.ts | 2 +- packages/providers/src/utils/valid.ts | 53 +-- pnpm-lock.yaml | 154 +++------ 129 files changed, 2247 insertions(+), 1007 deletions(-) delete mode 100644 packages/providers/src/dev-cli/browser/.gitignore delete mode 100644 packages/providers/src/dev-cli/browser/index.html delete mode 100644 packages/providers/src/dev-cli/browser/index.ts create mode 100644 packages/providers/src/providers/embeds/autoembed.ts create mode 100644 packages/providers/src/providers/embeds/hydrax.ts create mode 100644 packages/providers/src/providers/embeds/nsbx.ts delete mode 100644 packages/providers/src/providers/embeds/nsbx/delta.ts create mode 100644 packages/providers/src/providers/embeds/playm4u/nm.ts create mode 100644 packages/providers/src/providers/embeds/turbovid.ts create mode 100644 packages/providers/src/providers/embeds/warezcdn/warezplayer.ts create mode 100644 packages/providers/src/providers/embeds/whvx.ts create mode 100644 packages/providers/src/providers/sources/autoembed.ts create mode 100644 packages/providers/src/providers/sources/catflix.ts create mode 100644 packages/providers/src/providers/sources/ee3/common.ts create mode 100644 packages/providers/src/providers/sources/ee3/index.ts create mode 100644 packages/providers/src/providers/sources/ee3/types.ts create mode 100644 packages/providers/src/providers/sources/ee3/utils.ts create mode 100644 packages/providers/src/providers/sources/fsharetv.ts create mode 100644 packages/providers/src/providers/sources/m4ufree.ts create mode 100644 packages/providers/src/providers/sources/redstar.ts create mode 100644 packages/providers/src/providers/sources/whvx.ts create mode 100644 packages/providers/src/utils/opensubtitles.ts create mode 100644 packages/providers/src/utils/playlist.ts create mode 100644 packages/providers/src/utils/proxy.ts diff --git a/apps/expo/src/components/player/VideoPlayer.tsx b/apps/expo/src/components/player/VideoPlayer.tsx index 5b21fcd..7f167dc 100644 --- a/apps/expo/src/components/player/VideoPlayer.tsx +++ b/apps/expo/src/components/player/VideoPlayer.tsx @@ -280,6 +280,8 @@ export const VideoPlayer = () => { }; }, [player, meta, removeFromWatchHistory, autoPlay, setMeta, router]); + console.log("loading player", player); + return ( { - throw new Error(`Failed to get streams: ${ err}`); + throw new Error('Failed to get streams: ' + err); }); } } diff --git a/packages/providers/src/__test__/providers/providerUtils.ts b/packages/providers/src/__test__/providers/providerUtils.ts index bb80330..d47b924 100644 --- a/packages/providers/src/__test__/providers/providerUtils.ts +++ b/packages/providers/src/__test__/providers/providerUtils.ts @@ -1,10 +1,9 @@ -import type { ScrapeMedia } from '@/entrypoint/utils/media'; -import type { Sourcerer} from '@/providers/base'; -import { Embed, SourcererEmbed } from '@/providers/base'; +import { ScrapeMedia } from '@/entrypoint/utils/media'; +import { Embed, Sourcerer, SourcererEmbed } from '@/providers/base'; import { buildProviders } from '@/entrypoint/builder'; import { describe, expect, it } from 'vitest'; import { makeStandardFetcher } from '@/fetchers/standardFetch'; -import type { ProviderControls } from '@/entrypoint/controls'; +import { ProviderControls } from '@/entrypoint/controls'; import { NotFoundError } from '@/utils/errors'; import { targets } from '@/entrypoint/utils/targets'; import { getBuiltinEmbeds } from '@/entrypoint/providers'; @@ -42,7 +41,7 @@ export function testSource(ops: TestSourceOptions) { let hasError = false; let streamCount = 0; let embedCount = 0; - const embeds = []; + let embeds = []; try { const result = await providers.runSourceScraper({ id: ops.source.id, diff --git a/packages/providers/src/__test__/providers/testMedia.ts b/packages/providers/src/__test__/providers/testMedia.ts index 3218f10..1c2c3bd 100644 --- a/packages/providers/src/__test__/providers/testMedia.ts +++ b/packages/providers/src/__test__/providers/testMedia.ts @@ -1,4 +1,4 @@ -import type { ScrapeMedia } from '@/entrypoint/utils/media'; +import { ScrapeMedia } from '@/entrypoint/utils/media'; function makeMedia(media: ScrapeMedia): ScrapeMedia { return media; diff --git a/packages/providers/src/__test__/standard/fetchers/simpleProxy.test.ts b/packages/providers/src/__test__/standard/fetchers/simpleProxy.test.ts index 01fb4c5..cef585e 100644 --- a/packages/providers/src/__test__/standard/fetchers/simpleProxy.test.ts +++ b/packages/providers/src/__test__/standard/fetchers/simpleProxy.test.ts @@ -1,6 +1,5 @@ import { makeSimpleProxyFetcher } from '@/fetchers/simpleProxy'; -import type { DefaultedFetcherOptions} from '@/fetchers/types'; -import { FetcherOptions } from '@/fetchers/types'; +import { DefaultedFetcherOptions, FetcherOptions } from '@/fetchers/types'; import { Headers } from 'node-fetch'; import { afterEach, describe, expect, it, vi } from 'vitest'; diff --git a/packages/providers/src/__test__/standard/fetchers/standard.test.ts b/packages/providers/src/__test__/standard/fetchers/standard.test.ts index 8e59c62..8699136 100644 --- a/packages/providers/src/__test__/standard/fetchers/standard.test.ts +++ b/packages/providers/src/__test__/standard/fetchers/standard.test.ts @@ -1,5 +1,5 @@ import { makeStandardFetcher } from '@/fetchers/standardFetch'; -import type { DefaultedFetcherOptions } from '@/fetchers/types'; +import { DefaultedFetcherOptions } from '@/fetchers/types'; import { Headers } from 'node-fetch'; import { afterEach, describe, expect, it, vi } from 'vitest'; diff --git a/packages/providers/src/__test__/standard/providerTests.ts b/packages/providers/src/__test__/standard/providerTests.ts index 46744ef..f5c87b7 100644 --- a/packages/providers/src/__test__/standard/providerTests.ts +++ b/packages/providers/src/__test__/standard/providerTests.ts @@ -1,7 +1,7 @@ - +// eslint-disable-next-line import/no-extraneous-dependencies import { vi } from 'vitest'; -import type { gatherAllEmbeds, gatherAllSources } from '@/providers/all'; +import { gatherAllEmbeds, gatherAllSources } from '@/providers/all'; import { makeEmbed, makeSourcerer } from '@/providers/base'; export function makeProviderMocks() { diff --git a/packages/providers/src/__test__/standard/providers/checks.test.ts b/packages/providers/src/__test__/standard/providers/checks.test.ts index a1d8f87..56e1c39 100644 --- a/packages/providers/src/__test__/standard/providers/checks.test.ts +++ b/packages/providers/src/__test__/standard/providers/checks.test.ts @@ -1,6 +1,6 @@ import { mockEmbeds, mockSources } from '../providerTests'; import { getBuiltinEmbeds, getBuiltinSources } from '@/entrypoint/providers'; -import type { FeatureMap } from '@/entrypoint/utils/targets'; +import { FeatureMap } from '@/entrypoint/utils/targets'; import { getProviders } from '@/providers/get'; import { vi, describe, it, expect, afterEach } from 'vitest'; diff --git a/packages/providers/src/__test__/standard/utils/features.test.ts b/packages/providers/src/__test__/standard/utils/features.test.ts index a7a9349..75a855c 100644 --- a/packages/providers/src/__test__/standard/utils/features.test.ts +++ b/packages/providers/src/__test__/standard/utils/features.test.ts @@ -1,5 +1,4 @@ -import type { FeatureMap, Flags} from '@/entrypoint/utils/targets'; -import { flags, flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; +import { FeatureMap, Flags, flags, flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; import { describe, it, expect } from 'vitest'; describe('flagsAllowedInFeatures()', () => { diff --git a/packages/providers/src/dev-cli/browser/.gitignore b/packages/providers/src/dev-cli/browser/.gitignore deleted file mode 100644 index 1521c8b..0000000 --- a/packages/providers/src/dev-cli/browser/.gitignore +++ /dev/null @@ -1 +0,0 @@ -dist diff --git a/packages/providers/src/dev-cli/browser/index.html b/packages/providers/src/dev-cli/browser/index.html deleted file mode 100644 index 7709f4b..0000000 --- a/packages/providers/src/dev-cli/browser/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - Scraper CLI - - - - - diff --git a/packages/providers/src/dev-cli/browser/index.ts b/packages/providers/src/dev-cli/browser/index.ts deleted file mode 100644 index c753201..0000000 --- a/packages/providers/src/dev-cli/browser/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { makeProviders } from "@/entrypoint/declare"; -import { targets } from "@/entrypoint/utils/targets"; -import { makeSimpleProxyFetcher } from "@/fetchers/simpleProxy"; -import { makeStandardFetcher } from "@/fetchers/standardFetch"; - -(window as any).scrape = (proxyUrl: string, type: 'source' | 'embed', input: any) => { - const providers = makeProviders({ - fetcher: makeStandardFetcher(fetch), - target: targets.BROWSER, - proxiedFetcher: makeSimpleProxyFetcher(proxyUrl, fetch), - }); - if (type === 'source') { - return providers.runSourceScraper(input); - } - if (type === 'embed') { - return providers.runEmbedScraper(input); - } - - throw new Error('Input input type'); -}; diff --git a/packages/providers/src/dev-cli/index.ts b/packages/providers/src/dev-cli/index.ts index 0e6edc2..6edf96a 100644 --- a/packages/providers/src/dev-cli/index.ts +++ b/packages/providers/src/dev-cli/index.ts @@ -6,181 +6,182 @@ import { prompt } from 'enquirer'; import { runScraper } from '@/dev-cli/scraper'; import { processOptions } from '@/dev-cli/validate'; -import { getBuiltinEmbeds, getBuiltinSources } from '@/entrypoint/providers'; + +import { getBuiltinEmbeds, getBuiltinSources } from '..'; dotenv.config(); -interface ProviderSourceAnswers { - id: string; - type: string; -} +type ProviderSourceAnswers = { + id: string; + type: string; +}; -interface EmbedSourceAnswers { - url: string; -} +type EmbedSourceAnswers = { + url: string; +}; -interface CommonAnswers { - fetcher: string; - source: string; -} +type CommonAnswers = { + fetcher: string; + source: string; +}; -interface ShowAnswers { - season: string; - episode: string; -} +type ShowAnswers = { + season: string; + episode: string; +}; const sourceScrapers = getBuiltinSources().sort((a, b) => b.rank - a.rank); const embedScrapers = getBuiltinEmbeds().sort((a, b) => b.rank - a.rank); const sources = [...sourceScrapers, ...embedScrapers]; function joinMediaTypes(mediaTypes: string[] | undefined) { - if (mediaTypes) { - const formatted = mediaTypes - .map((type: string) => `${type[0].toUpperCase() + type.substring(1).toLowerCase()}s`) - .join(' / '); - - return `(${formatted})`; - } - return ''; // * Embed sources pass through here too + if (mediaTypes) { + const formatted = mediaTypes + .map((type: string) => `${type[0].toUpperCase() + type.substring(1).toLowerCase()}s`) + .join(' / '); + + return `(${formatted})`; + } + return ''; // * Embed sources pass through here too } async function runQuestions() { - const options = { - fetcher: 'node-fetch', - sourceId: '', - tmdbId: '', - type: 'movie', - season: '0', - episode: '0', - url: '', - }; - - const answers = await prompt([ - { - type: 'select', - name: 'fetcher', - message: 'Select a fetcher mode', - choices: [ - { - message: 'Native', - name: 'native', - }, - { - message: 'Node fetch', - name: 'node-fetch', - }, - { - message: 'Browser', - name: 'browser', - }, - ], - }, - { - type: 'select', - name: 'source', - message: 'Select a source', - choices: sources.map((source) => ({ - message: `[${source.type.toLocaleUpperCase()}] ${source.name} ${joinMediaTypes(source.mediaTypes)}`.trim(), - name: source.id, - })), - }, - ]); - - options.fetcher = answers.fetcher; - options.sourceId = answers.source; - - const source = sources.find(({ id }) => id === answers.source); - - if (!source) { - throw new Error(`No source with ID ${answers.source} found`); - } - - if (source.type === 'embed') { - const sourceAnswers = await prompt([ - { - type: 'input', - name: 'url', - message: 'Embed URL', - }, - ]); - - options.url = sourceAnswers.url; - } else { - const sourceAnswers = await prompt([ - { - type: 'input', - name: 'id', - message: 'TMDB ID', - }, - { - type: 'select', - name: 'type', - message: 'Media type', - choices: [ - { - message: 'Movie', - name: 'movie', - }, - { - message: 'TV Show', - name: 'show', - }, - ], - }, - ]); - - options.tmdbId = sourceAnswers.id; - options.type = sourceAnswers.type; - - if (sourceAnswers.type === 'show') { - const seriesAnswers = await prompt([ - { - type: 'input', - name: 'season', - message: 'Season', - }, - { - type: 'input', - name: 'episode', - message: 'Episode', - }, - ]); - - options.season = seriesAnswers.season; - options.episode = seriesAnswers.episode; - } - } - - const { providerOptions, source: validatedSource, options: validatedOps } = await processOptions(sources, options); - await runScraper(providerOptions, validatedSource, validatedOps); + const options = { + fetcher: 'node-fetch', + sourceId: '', + tmdbId: '', + type: 'movie', + season: '0', + episode: '0', + url: '', + }; + + const answers = await prompt([ + { + type: 'select', + name: 'fetcher', + message: 'Select a fetcher mode', + choices: [ + { + message: 'Native', + name: 'native', + }, + { + message: 'Node fetch', + name: 'node-fetch', + }, + { + message: 'Browser', + name: 'browser', + }, + ], + }, + { + type: 'select', + name: 'source', + message: 'Select a source', + choices: sources.map((source) => ({ + message: `[${source.type.toLocaleUpperCase()}] ${source.name} ${joinMediaTypes(source.mediaTypes)}`.trim(), + name: source.id, + })), + }, + ]); + + options.fetcher = answers.fetcher; + options.sourceId = answers.source; + + const source = sources.find(({ id }) => id === answers.source); + + if (!source) { + throw new Error(`No source with ID ${answers.source} found`); + } + + if (source.type === 'embed') { + const sourceAnswers = await prompt([ + { + type: 'input', + name: 'url', + message: 'Embed URL', + }, + ]); + + options.url = sourceAnswers.url; + } else { + const sourceAnswers = await prompt([ + { + type: 'input', + name: 'id', + message: 'TMDB ID', + }, + { + type: 'select', + name: 'type', + message: 'Media type', + choices: [ + { + message: 'Movie', + name: 'movie', + }, + { + message: 'TV Show', + name: 'show', + }, + ], + }, + ]); + + options.tmdbId = sourceAnswers.id; + options.type = sourceAnswers.type; + + if (sourceAnswers.type === 'show') { + const seriesAnswers = await prompt([ + { + type: 'input', + name: 'season', + message: 'Season', + }, + { + type: 'input', + name: 'episode', + message: 'Episode', + }, + ]); + + options.season = seriesAnswers.season; + options.episode = seriesAnswers.episode; + } + } + + const { providerOptions, source: validatedSource, options: validatedOps } = await processOptions(sources, options); + await runScraper(providerOptions, validatedSource, validatedOps); } async function runCommandLine() { - program - .option('-f, --fetcher ', "Fetcher to use. Either 'native' or 'node-fetch'", 'node-fetch') - .option('-sid, --source-id ', 'ID for the source to use. Either an embed or provider', '') - .option('-tid, --tmdb-id ', 'TMDB ID for the media to scrape. Only used if source is a provider', '') - .option('-t, --type ', "Media type. Either 'movie' or 'show'. Only used if source is a provider", 'movie') - .option('-s, --season ', "Season number. Only used if type is 'show'", '0') - .option('-e, --episode ', "Episode number. Only used if type is 'show'", '0') - .option('-u, --url ', 'URL to a video embed. Only used if source is an embed', ''); - - program.parse(); - - const { - providerOptions, - source: validatedSource, - options: validatedOps, - } = await processOptions(sources, program.opts()); - await runScraper(providerOptions, validatedSource, validatedOps); + program + .option('-f, --fetcher ', "Fetcher to use. Either 'native' or 'node-fetch'", 'node-fetch') + .option('-sid, --source-id ', 'ID for the source to use. Either an embed or provider', '') + .option('-tid, --tmdb-id ', 'TMDB ID for the media to scrape. Only used if source is a provider', '') + .option('-t, --type ', "Media type. Either 'movie' or 'show'. Only used if source is a provider", 'movie') + .option('-s, --season ', "Season number. Only used if type is 'show'", '0') + .option('-e, --episode ', "Episode number. Only used if type is 'show'", '0') + .option('-u, --url ', 'URL to a video embed. Only used if source is an embed', ''); + + program.parse(); + + const { + providerOptions, + source: validatedSource, + options: validatedOps, + } = await processOptions(sources, program.opts()); + await runScraper(providerOptions, validatedSource, validatedOps); } if (process.argv.length === 2) { - runQuestions() - .catch(() => console.error('Exited.')) - .finally(() => process.exit(0)); + runQuestions() + .catch(() => console.error('Exited.')) + .finally(() => process.exit(0)); } else { - runCommandLine() - .catch(() => console.error('Exited.')) - .finally(() => process.exit(0)); + runCommandLine() + .catch(() => console.error('Exited.')) + .finally(() => process.exit(0)); } diff --git a/packages/providers/src/dev-cli/logging.ts b/packages/providers/src/dev-cli/logging.ts index 2e41a5f..5495f1d 100644 --- a/packages/providers/src/dev-cli/logging.ts +++ b/packages/providers/src/dev-cli/logging.ts @@ -1,8 +1,7 @@ -import { inspect } from "node:util"; +import { inspect } from 'node:util'; export function logDeepObject(object: Record) { + // This is the dev cli, so we can use console.log // eslint-disable-next-line no-console - console.log( - inspect(object, { showHidden: false, depth: null, colors: true }), - ); + console.log(inspect(object, { showHidden: false, depth: null, colors: true })); } diff --git a/packages/providers/src/dev-cli/scraper.ts b/packages/providers/src/dev-cli/scraper.ts index c03ea00..8c66b89 100644 --- a/packages/providers/src/dev-cli/scraper.ts +++ b/packages/providers/src/dev-cli/scraper.ts @@ -1,34 +1,31 @@ /* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": true}] */ -import { existsSync } from "fs"; -import { join } from "path"; -import type { CommandLineArguments } from "@/dev-cli/validate"; -import type { ProviderMakerOptions } from "@/entrypoint/declare"; -import type { MetaOutput } from "@/entrypoint/utils/meta"; -import type { Browser } from "puppeteer"; -import type { PreviewServer } from "vite"; -import { getConfig } from "@/dev-cli/config"; -import { logDeepObject } from "@/dev-cli/logging"; -import { getMovieMediaDetails, getShowMediaDetails } from "@/dev-cli/tmdb"; -import { makeProviders } from "@/entrypoint/declare"; -import puppeteer from "puppeteer"; -import Spinnies from "spinnies"; -import { build, preview } from "vite"; +import { existsSync } from 'fs'; +import { join } from 'path'; + +import puppeteer, { Browser } from 'puppeteer'; +import Spinnies from 'spinnies'; +import { PreviewServer, build, preview } from 'vite'; + +import { getConfig } from '@/dev-cli/config'; +import { logDeepObject } from '@/dev-cli/logging'; +import { getMovieMediaDetails, getShowMediaDetails } from '@/dev-cli/tmdb'; +import { CommandLineArguments } from '@/dev-cli/validate'; + +import { MetaOutput, ProviderMakerOptions, makeProviders } from '..'; async function runBrowserScraping( providerOptions: ProviderMakerOptions, source: MetaOutput, options: CommandLineArguments, ) { - if (!existsSync(join(__dirname, "../../lib/index.js"))) - throw new Error("Please compile before running cli in browser mode"); + if (!existsSync(join(__dirname, '../../lib/index.js'))) + throw new Error('Please compile before running cli in browser mode'); const config = getConfig(); if (!config.proxyUrl) - throw new Error( - "Simple proxy url must be set in the environment (MOVIE_WEB_PROXY_URL) for browser mode to work", - ); + throw new Error('Simple proxy url must be set in the environment (MOVIE_WEB_PROXY_URL) for browser mode to work'); - const root = join(__dirname, "browser"); + const root = join(__dirname, 'browser'); let server: PreviewServer | undefined; let browser: Browser | undefined; try { @@ -41,47 +38,37 @@ async function runBrowserScraping( }); browser = await puppeteer.launch({ headless: true, - args: ["--no-sandbox", "--disable-setuid-sandbox"], + args: ['--no-sandbox', '--disable-setuid-sandbox'], }); const page = await browser.newPage(); // This is the dev cli, so we can use console.log + // eslint-disable-next-line no-console + page.on('console', (message) => console.log(`${message.type().slice(0, 3).toUpperCase()} ${message.text()}`)); - page.on("console", (message) => - // eslint-disable-next-line no-console - console.log( - `${message.type().slice(0, 3).toUpperCase()} ${message.text()}`, - ), - ); - - if (!server.resolvedUrls?.local.length) - throw new Error("Server did not start"); + if (!server.resolvedUrls?.local.length) throw new Error('Server did not start'); await page.goto(server.resolvedUrls.local[0]); - await page.waitForFunction("!!window.scrape", { timeout: 5000 }); + await page.waitForFunction('!!window.scrape', { timeout: 5000 }); // get input media let input: any; - if (source.type === "embed") { + if (source.type === 'embed') { input = { url: options.url, id: source.id, }; - } else if (source.type === "source") { + } else if (source.type === 'source') { let media; - if (options.type === "movie") { + if (options.type === 'movie') { media = await getMovieMediaDetails(options.tmdbId); } else { - media = await getShowMediaDetails( - options.tmdbId, - options.season, - options.episode, - ); + media = await getShowMediaDetails(options.tmdbId, options.season, options.episode); } input = { media, id: source.id, }; } else { - throw new Error("Wrong source input type"); + throw new Error('Wrong source input type'); } return await page.evaluate( @@ -101,28 +88,23 @@ async function runActualScraping( source: MetaOutput, options: CommandLineArguments, ): Promise { - if (options.fetcher === "browser") - return runBrowserScraping(providerOptions, source, options); + if (options.fetcher === 'browser') return runBrowserScraping(providerOptions, source, options); const providers = makeProviders(providerOptions); - if (source.type === "embed") { + if (source.type === 'embed') { return providers.runEmbedScraper({ url: options.url, id: source.id, }); } - if (source.type === "source") { + if (source.type === 'source') { let media; - if (options.type === "movie") { + if (options.type === 'movie') { media = await getMovieMediaDetails(options.tmdbId); } else { - media = await getShowMediaDetails( - options.tmdbId, - options.season, - options.episode, - ); + media = await getShowMediaDetails(options.tmdbId, options.season, options.episode); } return providers.runSourceScraper({ @@ -131,7 +113,7 @@ async function runActualScraping( }); } - throw new Error("Invalid source type"); + throw new Error('Invalid source type'); } export async function runScraper( @@ -141,17 +123,17 @@ export async function runScraper( ) { const spinnies = new Spinnies(); - spinnies.add("scrape", { text: `Running ${source.name} scraper` }); + spinnies.add('scrape', { text: `Running ${source.name} scraper` }); try { const result = await runActualScraping(providerOptions, source, options); - spinnies.succeed("scrape", { text: "Done!" }); + spinnies.succeed('scrape', { text: 'Done!' }); logDeepObject(result); } catch (error) { - let message = "Unknown error"; + let message = 'Unknown error'; if (error instanceof Error) { message = error.message; } - spinnies.fail("scrape", { text: `ERROR: ${message}` }); + spinnies.fail('scrape', { text: `ERROR: ${message}` }); console.error(error); } } diff --git a/packages/providers/src/dev-cli/tmdb.ts b/packages/providers/src/dev-cli/tmdb.ts index da66bf5..c03307d 100644 --- a/packages/providers/src/dev-cli/tmdb.ts +++ b/packages/providers/src/dev-cli/tmdb.ts @@ -1,100 +1,101 @@ import { getConfig } from '@/dev-cli/config'; -import type { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; + +import { MovieMedia, ShowMedia } from '..'; export async function makeTMDBRequest(url: string, appendToResponse?: string): Promise { - const headers: { - accept: 'application/json'; - authorization?: string; - } = { - accept: 'application/json', - }; - - const requestURL = new URL(url); - const key = getConfig().tmdbApiKey; - - // * JWT keys always start with ey and are ONLY valid as a header. - // * All other keys are ONLY valid as a query param. - // * Thanks TMDB. - if (key.startsWith('ey')) { - headers.authorization = `Bearer ${key}`; - } else { - requestURL.searchParams.append('api_key', key); - } - - if (appendToResponse) { - requestURL.searchParams.append('append_to_response', appendToResponse); - } - - return fetch(requestURL, { - method: 'GET', - headers, - }); + const headers: { + accept: 'application/json'; + authorization?: string; + } = { + accept: 'application/json', + }; + + const requestURL = new URL(url); + const key = getConfig().tmdbApiKey; + + // * JWT keys always start with ey and are ONLY valid as a header. + // * All other keys are ONLY valid as a query param. + // * Thanks TMDB. + if (key.startsWith('ey')) { + headers.authorization = `Bearer ${key}`; + } else { + requestURL.searchParams.append('api_key', key); + } + + if (appendToResponse) { + requestURL.searchParams.append('append_to_response', appendToResponse); + } + + return fetch(requestURL, { + method: 'GET', + headers, + }); } export async function getMovieMediaDetails(id: string): Promise { - const response = await makeTMDBRequest(`https://api.themoviedb.org/3/movie/${id}`, 'external_ids'); - const movie = await response.json(); - - if (movie.success === false) { - throw new Error(movie.status_message); - } - - if (!movie.release_date) { - throw new Error(`${movie.title} has no release_date. Assuming unreleased`); - } - - return { - type: 'movie', - title: movie.title, - releaseYear: Number(movie.release_date.split('-')[0]), - tmdbId: id, - imdbId: movie.imdb_id, - }; + const response = await makeTMDBRequest(`https://api.themoviedb.org/3/movie/${id}`, 'external_ids'); + const movie = await response.json(); + + if (movie.success === false) { + throw new Error(movie.status_message); + } + + if (!movie.release_date) { + throw new Error(`${movie.title} has no release_date. Assuming unreleased`); + } + + return { + type: 'movie', + title: movie.title, + releaseYear: Number(movie.release_date.split('-')[0]), + tmdbId: id, + imdbId: movie.imdb_id, + }; } export async function getShowMediaDetails(id: string, seasonNumber: string, episodeNumber: string): Promise { - // * TV shows require the TMDB ID for the series, season, and episode - // * and the name of the series. Needs multiple requests - let response = await makeTMDBRequest(`https://api.themoviedb.org/3/tv/${id}`, 'external_ids'); - const series = await response.json(); - - if (series.success === false) { - throw new Error(series.status_message); - } - - if (!series.first_air_date) { - throw new Error(`${series.name} has no first_air_date. Assuming unaired`); - } - - response = await makeTMDBRequest(`https://api.themoviedb.org/3/tv/${id}/season/${seasonNumber}`); - const season = await response.json(); - - if (season.success === false) { - throw new Error(season.status_message); - } - - response = await makeTMDBRequest( - `https://api.themoviedb.org/3/tv/${id}/season/${seasonNumber}/episode/${episodeNumber}`, - ); - const episode = await response.json(); - - if (episode.success === false) { - throw new Error(episode.status_message); - } - - return { - type: 'show', - title: series.name, - releaseYear: Number(series.first_air_date.split('-')[0]), - tmdbId: id, - episode: { - number: episode.episode_number, - tmdbId: episode.id, - }, - season: { - number: season.season_number, - tmdbId: season.id, - }, - imdbId: series.external_ids.imdb_id, - }; + // * TV shows require the TMDB ID for the series, season, and episode + // * and the name of the series. Needs multiple requests + let response = await makeTMDBRequest(`https://api.themoviedb.org/3/tv/${id}`, 'external_ids'); + const series = await response.json(); + + if (series.success === false) { + throw new Error(series.status_message); + } + + if (!series.first_air_date) { + throw new Error(`${series.name} has no first_air_date. Assuming unaired`); + } + + response = await makeTMDBRequest(`https://api.themoviedb.org/3/tv/${id}/season/${seasonNumber}`); + const season = await response.json(); + + if (season.success === false) { + throw new Error(season.status_message); + } + + response = await makeTMDBRequest( + `https://api.themoviedb.org/3/tv/${id}/season/${seasonNumber}/episode/${episodeNumber}`, + ); + const episode = await response.json(); + + if (episode.success === false) { + throw new Error(episode.status_message); + } + + return { + type: 'show', + title: series.name, + releaseYear: Number(series.first_air_date.split('-')[0]), + tmdbId: id, + episode: { + number: episode.episode_number, + tmdbId: episode.id, + }, + season: { + number: season.season_number, + tmdbId: season.id, + }, + imdbId: series.external_ids.imdb_id, + }; } diff --git a/packages/providers/src/dev-cli/validate.ts b/packages/providers/src/dev-cli/validate.ts index aaee51c..dd1f638 100644 --- a/packages/providers/src/dev-cli/validate.ts +++ b/packages/providers/src/dev-cli/validate.ts @@ -1,11 +1,10 @@ import nodeFetch from 'node-fetch'; -import type { Embed, Sourcerer } from '@/providers/base'; -import type { ProviderMakerOptions } from '@/entrypoint/declare'; -import { targets } from '@/entrypoint/utils/targets'; -import { makeStandardFetcher } from '@/fetchers/standardFetch'; +import { Embed, Sourcerer } from '@/providers/base'; -export interface CommandLineArguments { +import { ProviderMakerOptions, makeStandardFetcher, targets } from '..'; + +export type CommandLineArguments = { fetcher: string; sourceId: string; tmdbId: string; @@ -13,9 +12,9 @@ export interface CommandLineArguments { season: string; episode: string; url: string; -} +}; -export async function processOptions(sources: (Embed | Sourcerer)[], options: CommandLineArguments) { +export async function processOptions(sources: Array, options: CommandLineArguments) { const fetcherOptions = ['node-fetch', 'native', 'browser']; if (!fetcherOptions.includes(options.fetcher)) { throw new Error(`Fetcher must be any of: ${fetcherOptions.join()}`); diff --git a/packages/providers/src/entrypoint/builder.ts b/packages/providers/src/entrypoint/builder.ts index d001265..abf8288 100644 --- a/packages/providers/src/entrypoint/builder.ts +++ b/packages/providers/src/entrypoint/builder.ts @@ -1,13 +1,11 @@ -import type { ProviderControls} from '@/entrypoint/controls'; -import { makeControls } from '@/entrypoint/controls'; +import { ProviderControls, makeControls } from '@/entrypoint/controls'; import { getBuiltinEmbeds, getBuiltinSources } from '@/entrypoint/providers'; -import type { Targets} from '@/entrypoint/utils/targets'; -import { getTargetFeatures } from '@/entrypoint/utils/targets'; -import type { Fetcher } from '@/fetchers/types'; -import type { Embed, Sourcerer } from '@/providers/base'; +import { Targets, getTargetFeatures } from '@/entrypoint/utils/targets'; +import { Fetcher } from '@/fetchers/types'; +import { Embed, Sourcerer } from '@/providers/base'; import { getProviders } from '@/providers/get'; -export interface ProviderBuilder { +export type ProviderBuilder = { setTarget(target: Targets): ProviderBuilder; setFetcher(fetcher: Fetcher): ProviderBuilder; setProxiedFetcher(fetcher: Fetcher): ProviderBuilder; @@ -18,7 +16,7 @@ export interface ProviderBuilder { addBuiltinProviders(): ProviderBuilder; enableConsistentIpForRequests(): ProviderBuilder; build(): ProviderControls; -} +}; export function buildProviders(): ProviderBuilder { let consistentIpForRequests = false; diff --git a/packages/providers/src/entrypoint/controls.ts b/packages/providers/src/entrypoint/controls.ts index 120f921..6599f28 100644 --- a/packages/providers/src/entrypoint/controls.ts +++ b/packages/providers/src/entrypoint/controls.ts @@ -1,14 +1,12 @@ -import type { FullScraperEvents, IndividualScraperEvents } from '@/entrypoint/utils/events'; -import type { ScrapeMedia } from '@/entrypoint/utils/media'; -import type { MetaOutput} from '@/entrypoint/utils/meta'; -import { getAllEmbedMetaSorted, getAllSourceMetaSorted, getSpecificId } from '@/entrypoint/utils/meta'; -import type { FeatureMap } from '@/entrypoint/utils/targets'; +import { FullScraperEvents, IndividualScraperEvents } from '@/entrypoint/utils/events'; +import { ScrapeMedia } from '@/entrypoint/utils/media'; +import { MetaOutput, getAllEmbedMetaSorted, getAllSourceMetaSorted, getSpecificId } from '@/entrypoint/utils/meta'; +import { FeatureMap } from '@/entrypoint/utils/targets'; import { makeFetcher } from '@/fetchers/common'; -import type { Fetcher } from '@/fetchers/types'; -import type { Embed, EmbedOutput, Sourcerer, SourcererOutput } from '@/providers/base'; +import { Fetcher } from '@/fetchers/types'; +import { Embed, EmbedOutput, Sourcerer, SourcererOutput } from '@/providers/base'; import { scrapeIndividualEmbed, scrapeInvidualSource } from '@/runners/individualRunner'; -import type { RunOutput} from '@/runners/runner'; -import { runAllProviders } from '@/runners/runner'; +import { RunOutput, runAllProviders } from '@/runners/runner'; export interface ProviderControlsInput { fetcher: Fetcher; @@ -16,6 +14,7 @@ export interface ProviderControlsInput { features: FeatureMap; sources: Sourcerer[]; embeds: Embed[]; + proxyStreams?: boolean; // temporary } export interface RunnerOptions { @@ -32,6 +31,10 @@ export interface RunnerOptions { // the media you want to see sources from media: ScrapeMedia; + + // it makes sense to have this in the builder + // but I belive it's more useful in runner ops + disableOpensubtitles?: boolean; } export interface SourceRunnerOptions { @@ -43,6 +46,10 @@ export interface SourceRunnerOptions { // id of the source scraper you want to scrape from id: string; + + // it makes sense to have this in the builder + // but I belive it's more useful in runner ops + disableOpensubtitles?: boolean; } export interface EmbedRunnerOptions { @@ -54,6 +61,10 @@ export interface EmbedRunnerOptions { // id of the embed scraper you want to scrape from id: string; + + // it makes sense to have this in the builder + // but I belive it's more useful in runner ops + disableOpensubtitles?: boolean; } export interface ProviderControls { @@ -87,6 +98,7 @@ export function makeControls(ops: ProviderControlsInput): ProviderControls { features: ops.features, fetcher: makeFetcher(ops.fetcher), proxiedFetcher: makeFetcher(ops.proxiedFetcher ?? ops.fetcher), + proxyStreams: ops.proxyStreams, }; return { diff --git a/packages/providers/src/entrypoint/declare.ts b/packages/providers/src/entrypoint/declare.ts index 7aeb3f1..55f08e3 100644 --- a/packages/providers/src/entrypoint/declare.ts +++ b/packages/providers/src/entrypoint/declare.ts @@ -1,8 +1,7 @@ import { makeControls } from '@/entrypoint/controls'; import { getBuiltinEmbeds, getBuiltinSources } from '@/entrypoint/providers'; -import type { Targets} from '@/entrypoint/utils/targets'; -import { getTargetFeatures } from '@/entrypoint/utils/targets'; -import type { Fetcher } from '@/fetchers/types'; +import { Targets, getTargetFeatures } from '@/entrypoint/utils/targets'; +import { Fetcher } from '@/fetchers/types'; import { getProviders } from '@/providers/get'; export interface ProviderMakerOptions { @@ -19,10 +18,17 @@ export interface ProviderMakerOptions { // Set this to true, if the requests will have the same IP as // the device that the stream will be played on consistentIpForRequests?: boolean; + + // This is temporary + proxyStreams?: boolean; } export function makeProviders(ops: ProviderMakerOptions) { - const features = getTargetFeatures(ops.target, ops.consistentIpForRequests ?? false); + const features = getTargetFeatures( + ops.proxyStreams ? 'any' : ops.target, + ops.consistentIpForRequests ?? false, + ops.proxyStreams, + ); const list = getProviders(features, { embeds: getBuiltinEmbeds(), sources: getBuiltinSources(), @@ -34,5 +40,6 @@ export function makeProviders(ops: ProviderMakerOptions) { features, fetcher: ops.fetcher, proxiedFetcher: ops.proxiedFetcher, + proxyStreams: ops.proxyStreams, }); } diff --git a/packages/providers/src/entrypoint/providers.ts b/packages/providers/src/entrypoint/providers.ts index 623dcbc..e456eb0 100644 --- a/packages/providers/src/entrypoint/providers.ts +++ b/packages/providers/src/entrypoint/providers.ts @@ -1,5 +1,5 @@ import { gatherAllEmbeds, gatherAllSources } from '@/providers/all'; -import type { Embed, Sourcerer } from '@/providers/base'; +import { Embed, Sourcerer } from '@/providers/base'; export function getBuiltinSources(): Sourcerer[] { return gatherAllSources().filter((v) => !v.disabled); diff --git a/packages/providers/src/entrypoint/utils/events.ts b/packages/providers/src/entrypoint/utils/events.ts index 98ece21..50a8c2a 100644 --- a/packages/providers/src/entrypoint/utils/events.ts +++ b/packages/providers/src/entrypoint/utils/events.ts @@ -1,32 +1,32 @@ export type UpdateEventStatus = 'success' | 'failure' | 'notfound' | 'pending'; -export interface UpdateEvent { +export type UpdateEvent = { id: string; // id presented in start event percentage: number; status: UpdateEventStatus; error?: unknown; // set when status is failure reason?: string; // set when status is not-found -} +}; -export interface InitEvent { +export type InitEvent = { sourceIds: string[]; // list of source ids -} +}; -export interface DiscoverEmbedsEvent { +export type DiscoverEmbedsEvent = { sourceId: string; // list of embeds that will be scraped in order - embeds: { + embeds: Array<{ id: string; embedScraperId: string; - }[]; -} + }>; +}; -export interface SingleScraperEvents { +export type SingleScraperEvents = { update?: (evt: UpdateEvent) => void; -} +}; -export interface FullScraperEvents { +export type FullScraperEvents = { // update progress percentage and status of the currently scraping item update?: (evt: UpdateEvent) => void; @@ -39,9 +39,9 @@ export interface FullScraperEvents { // start scraping an item. start?: (id: string) => void; -} +}; -export interface IndividualScraperEvents { +export type IndividualScraperEvents = { // update progress percentage and status of the currently scraping item update?: (evt: UpdateEvent) => void; -} +}; diff --git a/packages/providers/src/entrypoint/utils/media.ts b/packages/providers/src/entrypoint/utils/media.ts index 6d01752..c137063 100644 --- a/packages/providers/src/entrypoint/utils/media.ts +++ b/packages/providers/src/entrypoint/utils/media.ts @@ -1,9 +1,9 @@ -export interface CommonMedia { +export type CommonMedia = { title: string; releaseYear: number; imdbId?: string; tmdbId: string; -} +}; export type MediaTypes = 'show' | 'movie'; diff --git a/packages/providers/src/entrypoint/utils/meta.ts b/packages/providers/src/entrypoint/utils/meta.ts index 4c2bce2..5e54b2a 100644 --- a/packages/providers/src/entrypoint/utils/meta.ts +++ b/packages/providers/src/entrypoint/utils/meta.ts @@ -1,17 +1,17 @@ -import type { MediaTypes } from '@/entrypoint/utils/media'; -import type { Embed, Sourcerer } from '@/providers/base'; -import type { ProviderList } from '@/providers/get'; +import { MediaTypes } from '@/entrypoint/utils/media'; +import { Embed, Sourcerer } from '@/providers/base'; +import { ProviderList } from '@/providers/get'; -export interface MetaOutput { +export type MetaOutput = { type: 'embed' | 'source'; id: string; rank: number; name: string; - mediaTypes?: MediaTypes[]; -} + mediaTypes?: Array; +}; function formatSourceMeta(v: Sourcerer): MetaOutput { - const types: MediaTypes[] = []; + const types: Array = []; if (v.scrapeMovie) types.push('movie'); if (v.scrapeShow) types.push('show'); return { diff --git a/packages/providers/src/entrypoint/utils/targets.ts b/packages/providers/src/entrypoint/utils/targets.ts index cd0ae8e..b3e4200 100644 --- a/packages/providers/src/entrypoint/utils/targets.ts +++ b/packages/providers/src/entrypoint/utils/targets.ts @@ -9,6 +9,10 @@ export const flags = { // The source/embed is blocking cloudflare ip's // This flag is not compatible with a proxy hosted on cloudflare CF_BLOCKED: 'cf-blocked', + + // Streams and sources with this flag wont be proxied + // And will be exclusive to the extension + PROXY_BLOCKED: 'proxy-blocked', } as const; export type Flags = (typeof flags)[keyof typeof flags]; @@ -29,10 +33,10 @@ export const targets = { export type Targets = (typeof targets)[keyof typeof targets]; -export interface FeatureMap { +export type FeatureMap = { requires: Flags[]; disallowed: Flags[]; -} +}; export const targetToFeatures: Record = { browser: { @@ -53,9 +57,14 @@ export const targetToFeatures: Record = { }, }; -export function getTargetFeatures(target: Targets, consistentIpForRequests: boolean): FeatureMap { +export function getTargetFeatures( + target: Targets, + consistentIpForRequests: boolean, + proxyStreams?: boolean, +): FeatureMap { const features = targetToFeatures[target]; if (!consistentIpForRequests) features.disallowed.push(flags.IP_LOCKED); + if (proxyStreams) features.disallowed.push(flags.PROXY_BLOCKED); return features; } diff --git a/packages/providers/src/fetchers/body.ts b/packages/providers/src/fetchers/body.ts index c0c6209..c859a2a 100644 --- a/packages/providers/src/fetchers/body.ts +++ b/packages/providers/src/fetchers/body.ts @@ -1,6 +1,6 @@ import FormData from 'form-data'; -import type { FetcherOptions } from '@/fetchers/types'; +import { FetcherOptions } from '@/fetchers/types'; import { isReactNative } from '@/utils/native'; export interface SeralizedBody { diff --git a/packages/providers/src/fetchers/common.ts b/packages/providers/src/fetchers/common.ts index e427a58..840c7ef 100644 --- a/packages/providers/src/fetchers/common.ts +++ b/packages/providers/src/fetchers/common.ts @@ -1,4 +1,4 @@ -import type { Fetcher, FetcherOptions, UseableFetcher } from '@/fetchers/types'; +import { Fetcher, FetcherOptions, UseableFetcher } from '@/fetchers/types'; export type FullUrlOptions = Pick; @@ -15,7 +15,11 @@ export function makeFullUrl(url: string, ops?: FullUrlOptions): string { if (rightSide.startsWith('/')) rightSide = rightSide.slice(1); const fullUrl = leftSide + rightSide; - if (!fullUrl.startsWith('http://') && !fullUrl.startsWith('https://')) + + // we need the data scheme for base64 encoded hls playlists + // this is for playlists that themselves have cors but not their parts + // this allows us to proxy them, encode them into base64 and then fetch the parts normally + if (!fullUrl.startsWith('http://') && !fullUrl.startsWith('https://') && !fullUrl.startsWith('data:')) throw new Error(`Invald URL -- URL doesn't start with a http scheme: '${fullUrl}'`); const parsedUrl = new URL(fullUrl); @@ -34,6 +38,7 @@ export function makeFetcher(fetcher: Fetcher): UseableFetcher { baseUrl: ops?.baseUrl ?? '', readHeaders: ops?.readHeaders ?? [], body: ops?.body, + credentials: ops?.credentials, }); const output: UseableFetcher = async (url, ops) => (await newFetcher(url, ops)).body; output.full = newFetcher; diff --git a/packages/providers/src/fetchers/fetch.ts b/packages/providers/src/fetchers/fetch.ts index c898e8b..741f0de 100644 --- a/packages/providers/src/fetchers/fetch.ts +++ b/packages/providers/src/fetchers/fetch.ts @@ -3,18 +3,19 @@ * Only containing what we need for it to function. */ -export interface FetchOps { +export type FetchOps = { headers: Record; method: string; body: any; -} + credentials?: 'include' | 'same-origin' | 'omit'; +}; -export interface FetchHeaders { +export type FetchHeaders = { get(key: string): string | null; set(key: string, value: string): void; -} +}; -export interface FetchReply { +export type FetchReply = { text(): Promise; json(): Promise; extraHeaders?: FetchHeaders; @@ -22,6 +23,6 @@ export interface FetchReply { headers: FetchHeaders; url: string; status: number; -} +}; export type FetchLike = (url: string, ops?: FetchOps | undefined) => Promise; diff --git a/packages/providers/src/fetchers/simpleProxy.ts b/packages/providers/src/fetchers/simpleProxy.ts index 261d0a4..cf8897c 100644 --- a/packages/providers/src/fetchers/simpleProxy.ts +++ b/packages/providers/src/fetchers/simpleProxy.ts @@ -1,7 +1,7 @@ import { makeFullUrl } from '@/fetchers/common'; -import type { FetchLike } from '@/fetchers/fetch'; +import { FetchLike } from '@/fetchers/fetch'; import { makeStandardFetcher } from '@/fetchers/standardFetch'; -import type { Fetcher } from '@/fetchers/types'; +import { Fetcher } from '@/fetchers/types'; const headerMap: Record = { cookie: 'X-Cookie', @@ -25,7 +25,7 @@ export function makeSimpleProxyFetcher(proxyUrl: string, f: FetchLike): Fetcher Object.entries(responseHeaderMap).forEach((entry) => { const value = res.headers.get(entry[0]); if (!value) return; - res.extraHeaders?.set(entry[0].toLowerCase(), value); + res.extraHeaders?.set(entry[1].toLowerCase(), value); }); // set correct final url diff --git a/packages/providers/src/fetchers/standardFetch.ts b/packages/providers/src/fetchers/standardFetch.ts index 682e7cc..41c5500 100644 --- a/packages/providers/src/fetchers/standardFetch.ts +++ b/packages/providers/src/fetchers/standardFetch.ts @@ -1,16 +1,17 @@ import { serializeBody } from '@/fetchers/body'; import { makeFullUrl } from '@/fetchers/common'; -import type { FetchLike, FetchReply } from '@/fetchers/fetch'; -import type { Fetcher } from '@/fetchers/types'; +import { FetchLike, FetchReply } from '@/fetchers/fetch'; +import { Fetcher } from '@/fetchers/types'; function getHeaders(list: string[], res: FetchReply): Headers { const output = new Headers(); list.forEach((header) => { const realHeader = header.toLowerCase(); - const value = res.headers.get(realHeader); + const realValue = res.headers.get(realHeader); const extraValue = res.extraHeaders?.get(realHeader); + const value = extraValue ?? realValue; if (!value) return; - output.set(realHeader, extraValue ?? value); + output.set(realHeader, value); }); return output; } @@ -27,6 +28,7 @@ export function makeStandardFetcher(f: FetchLike): Fetcher { ...ops.headers, }, body: seralizedBody.body, + credentials: ops.credentials, }); let body: any; diff --git a/packages/providers/src/fetchers/types.ts b/packages/providers/src/fetchers/types.ts index f69c2b7..efc21a5 100644 --- a/packages/providers/src/fetchers/types.ts +++ b/packages/providers/src/fetchers/types.ts @@ -1,37 +1,41 @@ -import type * as FormData from 'form-data'; +import * as FormData from 'form-data'; -export interface FetcherOptions { +export type FetcherOptions = { baseUrl?: string; headers?: Record; query?: Record; method?: 'HEAD' | 'GET' | 'POST'; readHeaders?: string[]; body?: Record | string | FormData | URLSearchParams; -} + credentials?: 'include' | 'same-origin' | 'omit'; +}; // Version of the options that always has the defaults set // This is to make making fetchers yourself easier -export interface DefaultedFetcherOptions { +export type DefaultedFetcherOptions = { baseUrl?: string; body?: Record | string | FormData; headers: Record; query: Record; readHeaders: string[]; method: 'HEAD' | 'GET' | 'POST'; -} + credentials?: 'include' | 'same-origin' | 'omit'; +}; -export interface FetcherResponse { +export type FetcherResponse = { statusCode: number; headers: Headers; finalUrl: string; body: T; -} +}; // This is the version that will be inputted by library users -export type Fetcher = (url: string, ops: DefaultedFetcherOptions) => Promise>; +export type Fetcher = { + (url: string, ops: DefaultedFetcherOptions): Promise>; +}; // This is the version that scrapers will be interacting with -export interface UseableFetcher { +export type UseableFetcher = { (url: string, ops?: FetcherOptions): Promise; full: (url: string, ops?: FetcherOptions) => Promise>; -} +}; diff --git a/packages/providers/src/providers/all.ts b/packages/providers/src/providers/all.ts index 2916196..30de4ce 100644 --- a/packages/providers/src/providers/all.ts +++ b/packages/providers/src/providers/all.ts @@ -1,4 +1,4 @@ -import type { Embed, Sourcerer } from '@/providers/base'; +import { Embed, Sourcerer } from '@/providers/base'; import { doodScraper } from '@/providers/embeds/dood'; import { droploadScraper } from '@/providers/embeds/dropload'; import { febboxHlsScraper } from '@/providers/embeds/febbox/hls'; @@ -8,27 +8,44 @@ import { mixdropScraper } from '@/providers/embeds/mixdrop'; import { mp4uploadScraper } from '@/providers/embeds/mp4upload'; import { streambucketScraper } from '@/providers/embeds/streambucket'; import { streamsbScraper } from '@/providers/embeds/streamsb'; +import { turbovidScraper } from '@/providers/embeds/turbovid'; import { upcloudScraper } from '@/providers/embeds/upcloud'; import { upstreamScraper } from '@/providers/embeds/upstream'; import { vidsrcembedScraper } from '@/providers/embeds/vidsrc'; import { vTubeScraper } from '@/providers/embeds/vtube'; +import { astraScraper, novaScraper, orionScraper } from '@/providers/embeds/whvx'; +import { autoembedScraper } from '@/providers/sources/autoembed'; +import { catflixScraper } from '@/providers/sources/catflix'; +import { ee3Scraper } from '@/providers/sources/ee3'; import { flixhqScraper } from '@/providers/sources/flixhq/index'; +import { fsharetvScraper } from '@/providers/sources/fsharetv'; import { goMoviesScraper } from '@/providers/sources/gomovies/index'; import { insertunitScraper } from '@/providers/sources/insertunit'; import { kissAsianScraper } from '@/providers/sources/kissasian/index'; import { lookmovieScraper } from '@/providers/sources/lookmovie'; import { nsbxScraper } from '@/providers/sources/nsbx'; +import { redStarScraper } from '@/providers/sources/redstar'; import { remotestreamScraper } from '@/providers/sources/remotestream'; import { showboxScraper } from '@/providers/sources/showbox/index'; import { tugaflixScraper } from '@/providers/sources/tugaflix'; import { vidsrcScraper } from '@/providers/sources/vidsrc/index'; +import { whvxScraper } from '@/providers/sources/whvx'; import { zoechipScraper } from '@/providers/sources/zoechip'; +import { + autoembedBengaliScraper, + autoembedEnglishScraper, + autoembedHindiScraper, + autoembedTamilScraper, + autoembedTeluguScraper, +} from './embeds/autoembed'; import { bflixScraper } from './embeds/bflix'; import { closeLoadScraper } from './embeds/closeload'; import { fileMoonScraper } from './embeds/filemoon'; import { fileMoonMp4Scraper } from './embeds/filemoon/mp4'; -import { deltaScraper } from './embeds/nsbx/delta'; +import { hydraxScraper } from './embeds/hydrax'; +import { alphaScraper, deltaScraper } from './embeds/nsbx'; +import { playm4uNMScraper } from './embeds/playm4u/nm'; import { ridooScraper } from './embeds/ridoo'; import { smashyStreamOScraper } from './embeds/smashystream/opstream'; import { smashyStreamFScraper } from './embeds/smashystream/video1'; @@ -39,9 +56,11 @@ import { vidplayScraper } from './embeds/vidplay'; import { voeScraper } from './embeds/voe'; import { warezcdnembedHlsScraper } from './embeds/warezcdn/hls'; import { warezcdnembedMp4Scraper } from './embeds/warezcdn/mp4'; +import { warezPlayerScraper } from './embeds/warezcdn/warezplayer'; import { wootlyScraper } from './embeds/wootly'; import { goojaraScraper } from './sources/goojara'; import { hdRezkaScraper } from './sources/hdrezka'; +import { m4uScraper } from './sources/m4ufree'; import { nepuScraper } from './sources/nepu'; import { nitesScraper } from './sources/nites'; import { primewireScraper } from './sources/primewire'; @@ -51,9 +70,10 @@ import { soaperTvScraper } from './sources/soapertv'; import { vidSrcToScraper } from './sources/vidsrcto'; import { warezcdnScraper } from './sources/warezcdn'; -export function gatherAllSources(): Sourcerer[] { +export function gatherAllSources(): Array { // all sources are gathered here return [ + catflixScraper, flixhqScraper, remotestreamScraper, kissAsianScraper, @@ -69,16 +89,22 @@ export function gatherAllSources(): Sourcerer[] { nepuScraper, goojaraScraper, hdRezkaScraper, + m4uScraper, primewireScraper, warezcdnScraper, insertunitScraper, nitesScraper, soaperTvScraper, + autoembedScraper, tugaflixScraper, + ee3Scraper, + whvxScraper, + fsharetvScraper, + redStarScraper, ]; } -export function gatherAllEmbeds(): Embed[] { +export function gatherAllEmbeds(): Array { // all embeds are gathered here return [ upcloudScraper, @@ -98,6 +124,7 @@ export function gatherAllEmbeds(): Embed[] { fileMoonScraper, fileMoonMp4Scraper, deltaScraper, + alphaScraper, vidplayScraper, wootlyScraper, doodScraper, @@ -109,6 +136,18 @@ export function gatherAllEmbeds(): Embed[] { vTubeScraper, warezcdnembedHlsScraper, warezcdnembedMp4Scraper, + warezPlayerScraper, bflixScraper, + playm4uNMScraper, + hydraxScraper, + autoembedEnglishScraper, + autoembedHindiScraper, + autoembedBengaliScraper, + autoembedTamilScraper, + autoembedTeluguScraper, + turbovidScraper, + novaScraper, + astraScraper, + orionScraper, ]; } diff --git a/packages/providers/src/providers/base.ts b/packages/providers/src/providers/base.ts index 211daf6..0d43895 100644 --- a/packages/providers/src/providers/base.ts +++ b/packages/providers/src/providers/base.ts @@ -1,20 +1,20 @@ -import type { Flags } from '@/entrypoint/utils/targets'; -import type { Stream } from '@/providers/streams'; -import type { EmbedScrapeContext, MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { Flags } from '@/entrypoint/utils/targets'; +import { Stream } from '@/providers/streams'; +import { EmbedScrapeContext, MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; export type MediaScraperTypes = 'show' | 'movie'; -export interface SourcererEmbed { +export type SourcererEmbed = { embedId: string; url: string; -} +}; -export interface SourcererOutput { +export type SourcererOutput = { embeds: SourcererEmbed[]; stream?: Stream[]; -} +}; -export interface SourcererOptions { +export type SourcererOptions = { id: string; name: string; // displayed in the UI rank: number; // the higher the number, the earlier it gets put on the queue @@ -22,7 +22,7 @@ export interface SourcererOptions { flags: Flags[]; scrapeMovie?: (input: MovieScrapeContext) => Promise; scrapeShow?: (input: ShowScrapeContext) => Promise; -} +}; export type Sourcerer = SourcererOptions & { type: 'source'; @@ -42,17 +42,17 @@ export function makeSourcerer(state: SourcererOptions): Sourcerer { }; } -export interface EmbedOutput { +export type EmbedOutput = { stream: Stream[]; -} +}; -export interface EmbedOptions { +export type EmbedOptions = { id: string; name: string; // displayed in the UI rank: number; // the higher the number, the earlier it gets put on the queue disabled?: boolean; scrape: (input: EmbedScrapeContext) => Promise; -} +}; export type Embed = EmbedOptions & { type: 'embed'; diff --git a/packages/providers/src/providers/captions.ts b/packages/providers/src/providers/captions.ts index afbe49e..d64dcc2 100644 --- a/packages/providers/src/providers/captions.ts +++ b/packages/providers/src/providers/captions.ts @@ -6,13 +6,14 @@ export const captionTypes = { }; export type CaptionType = keyof typeof captionTypes; -export interface Caption { +export type Caption = { type: CaptionType; id: string; // only unique per stream + opensubtitles?: boolean; url: string; hasCorsRestrictions: boolean; language: string; -} +}; export function getCaptionTypeFromUrl(url: string): CaptionType | null { const extensions = Object.keys(captionTypes) as CaptionType[]; diff --git a/packages/providers/src/providers/embeds/autoembed.ts b/packages/providers/src/providers/embeds/autoembed.ts new file mode 100644 index 0000000..50d153a --- /dev/null +++ b/packages/providers/src/providers/embeds/autoembed.ts @@ -0,0 +1,54 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { makeEmbed } from '@/providers/base'; + +const providers = [ + { + id: 'autoembed-english', + rank: 10, + }, + { + id: 'autoembed-hindi', + rank: 9, + }, + { + id: 'autoembed-tamil', + rank: 8, + }, + { + id: 'autoembed-telugu', + rank: 7, + }, + { + id: 'autoembed-bengali', + rank: 6, + }, +]; + +function embed(provider: { id: string; rank: number }) { + return makeEmbed({ + id: provider.id, + name: provider.id.charAt(0).toUpperCase() + provider.id.slice(1), + rank: provider.rank, + async scrape(ctx) { + return { + stream: [ + { + id: 'primary', + type: 'hls', + playlist: ctx.url, + flags: [flags.CORS_ALLOWED], + captions: [], + }, + ], + }; + }, + }); +} + +export const [ + autoembedEnglishScraper, + autoembedHindiScraper, + autoembedBengaliScraper, + autoembedTamilScraper, + autoembedTeluguScraper, +] = providers.map(embed); diff --git a/packages/providers/src/providers/embeds/closeload.ts b/packages/providers/src/providers/embeds/closeload.ts index 5a620e9..811323a 100644 --- a/packages/providers/src/providers/embeds/closeload.ts +++ b/packages/providers/src/providers/embeds/closeload.ts @@ -5,8 +5,7 @@ import { flags } from '@/entrypoint/utils/targets'; import { NotFoundError } from '@/utils/errors'; import { makeEmbed } from '../base'; -import type { Caption} from '../captions'; -import { getCaptionTypeFromUrl, labelToLanguageCode } from '../captions'; +import { Caption, getCaptionTypeFromUrl, labelToLanguageCode } from '../captions'; const referer = 'https://ridomovies.tv/'; diff --git a/packages/providers/src/providers/embeds/febbox/common.ts b/packages/providers/src/providers/embeds/febbox/common.ts index b9cdb1d..5d902db 100644 --- a/packages/providers/src/providers/embeds/febbox/common.ts +++ b/packages/providers/src/providers/embeds/febbox/common.ts @@ -1,4 +1,4 @@ -import type { MediaTypes } from '@/entrypoint/utils/media'; +import { MediaTypes } from '@/entrypoint/utils/media'; export const febBoxBase = `https://www.febbox.com`; diff --git a/packages/providers/src/providers/embeds/febbox/fileList.ts b/packages/providers/src/providers/embeds/febbox/fileList.ts index 2651103..593fc77 100644 --- a/packages/providers/src/providers/embeds/febbox/fileList.ts +++ b/packages/providers/src/providers/embeds/febbox/fileList.ts @@ -1,7 +1,6 @@ -import type { MediaTypes } from '@/entrypoint/utils/media'; -import type { FebboxFileList} from '@/providers/embeds/febbox/common'; -import { febBoxBase } from '@/providers/embeds/febbox/common'; -import type { EmbedScrapeContext } from '@/utils/context'; +import { MediaTypes } from '@/entrypoint/utils/media'; +import { FebboxFileList, febBoxBase } from '@/providers/embeds/febbox/common'; +import { EmbedScrapeContext } from '@/utils/context'; export async function getFileList( ctx: EmbedScrapeContext, diff --git a/packages/providers/src/providers/embeds/febbox/hls.ts b/packages/providers/src/providers/embeds/febbox/hls.ts index 443f850..792c112 100644 --- a/packages/providers/src/providers/embeds/febbox/hls.ts +++ b/packages/providers/src/providers/embeds/febbox/hls.ts @@ -1,53 +1,47 @@ -import { makeEmbed } from "@/providers/base"; -import { parseInputUrl } from "@/providers/embeds/febbox/common"; -import { getStreams } from "@/providers/embeds/febbox/fileList"; -import { getSubtitles } from "@/providers/embeds/febbox/subtitles"; -import { showboxBase } from "@/providers/sources/showbox/common"; +import { MediaTypes } from '@/entrypoint/utils/media'; +import { makeEmbed } from '@/providers/base'; +import { parseInputUrl } from '@/providers/embeds/febbox/common'; +import { getStreams } from '@/providers/embeds/febbox/fileList'; +import { getSubtitles } from '@/providers/embeds/febbox/subtitles'; +import { showboxBase } from '@/providers/sources/showbox/common'; // structure: https://www.febbox.com/share/ export function extractShareKey(url: string): string { const parsedUrl = new URL(url); - const shareKey = parsedUrl.pathname.split("/")[2]; + const shareKey = parsedUrl.pathname.split('/')[2]; return shareKey; } export const febboxHlsScraper = makeEmbed({ - id: "febbox-hls", - name: "Febbox (HLS)", + id: 'febbox-hls', + name: 'Febbox (HLS)', rank: 160, disabled: true, async scrape(ctx) { const { type, id, season, episode } = parseInputUrl(ctx.url); const sharelinkResult = await ctx.proxiedFetcher<{ data?: { link?: string }; - }>("/index/share_link", { + }>('/index/share_link', { baseUrl: showboxBase, query: { id, - type: type === "movie" ? "1" : "2", + type: type === 'movie' ? '1' : '2', }, }); - if (!sharelinkResult?.data?.link) throw new Error("No embed url found"); + if (!sharelinkResult?.data?.link) throw new Error('No embed url found'); ctx.progress(30); const shareKey = extractShareKey(sharelinkResult.data.link); const fileList = await getStreams(ctx, shareKey, type, season, episode); const firstStream = fileList[0]; - if (!firstStream) throw new Error("No playable mp4 stream found"); + if (!firstStream) throw new Error('No playable mp4 stream found'); ctx.progress(70); return { stream: [ { - id: "primary", - type: "hls", + id: 'primary', + type: 'hls', flags: [], - captions: await getSubtitles( - ctx, - id, - firstStream.fid, - type, - season, - episode, - ), + captions: await getSubtitles(ctx, id, firstStream.fid, type as MediaTypes, season, episode), playlist: `https://www.febbox.com/hls/main/${firstStream.oss_fid}.m3u8`, }, ], diff --git a/packages/providers/src/providers/embeds/febbox/qualities.ts b/packages/providers/src/providers/embeds/febbox/qualities.ts index 86decdc..b55dd72 100644 --- a/packages/providers/src/providers/embeds/febbox/qualities.ts +++ b/packages/providers/src/providers/embeds/febbox/qualities.ts @@ -1,6 +1,6 @@ import { sendRequest } from '@/providers/sources/showbox/sendRequest'; -import type { StreamFile } from '@/providers/streams'; -import type { ScrapeContext } from '@/utils/context'; +import { StreamFile } from '@/providers/streams'; +import { ScrapeContext } from '@/utils/context'; const allowedQualities = ['360', '480', '720', '1080', '4k']; diff --git a/packages/providers/src/providers/embeds/febbox/subtitles.ts b/packages/providers/src/providers/embeds/febbox/subtitles.ts index 084038d..186c04f 100644 --- a/packages/providers/src/providers/embeds/febbox/subtitles.ts +++ b/packages/providers/src/providers/embeds/febbox/subtitles.ts @@ -1,13 +1,12 @@ -import type { - Caption} from '@/providers/captions'; import { + Caption, getCaptionTypeFromUrl, isValidLanguageCode, removeDuplicatedLanguages as removeDuplicateLanguages, } from '@/providers/captions'; import { captionsDomains } from '@/providers/sources/showbox/common'; import { sendRequest } from '@/providers/sources/showbox/sendRequest'; -import type { ScrapeContext } from '@/utils/context'; +import { ScrapeContext } from '@/utils/context'; interface CaptionApiResponse { data: { diff --git a/packages/providers/src/providers/embeds/filemoon/index.ts b/packages/providers/src/providers/embeds/filemoon/index.ts index 42aebb5..8ed7646 100644 --- a/packages/providers/src/providers/embeds/filemoon/index.ts +++ b/packages/providers/src/providers/embeds/filemoon/index.ts @@ -1,10 +1,11 @@ import { load } from 'cheerio'; import { unpack } from 'unpacker'; -import type { SubtitleResult } from './types'; +import { flags } from '@/entrypoint/utils/targets'; + +import { SubtitleResult } from './types'; import { makeEmbed } from '../../base'; -import type { Caption} from '../../captions'; -import { getCaptionTypeFromUrl, labelToLanguageCode } from '../../captions'; +import { Caption, getCaptionTypeFromUrl, labelToLanguageCode } from '../../captions'; const evalCodeRegex = /eval\((.*)\)/g; const fileRegex = /file:"(.*?)"/g; @@ -52,7 +53,7 @@ export const fileMoonScraper = makeEmbed({ id: 'primary', type: 'hls', playlist: file[1], - flags: [], + flags: [flags.IP_LOCKED], captions, }, ], diff --git a/packages/providers/src/providers/embeds/filemoon/mp4.ts b/packages/providers/src/providers/embeds/filemoon/mp4.ts index 181453b..35580c6 100644 --- a/packages/providers/src/providers/embeds/filemoon/mp4.ts +++ b/packages/providers/src/providers/embeds/filemoon/mp4.ts @@ -1,3 +1,4 @@ +import { flags } from '@/entrypoint/utils/targets'; import { NotFoundError } from '@/utils/errors'; import { makeEmbed } from '../../base'; @@ -28,7 +29,7 @@ export const fileMoonMp4Scraper = makeEmbed({ url, }, }, - flags: [], + flags: [flags.IP_LOCKED], captions: result.stream[0].captions, }, ], diff --git a/packages/providers/src/providers/embeds/hydrax.ts b/packages/providers/src/providers/embeds/hydrax.ts new file mode 100644 index 0000000..beef294 --- /dev/null +++ b/packages/providers/src/providers/embeds/hydrax.ts @@ -0,0 +1,65 @@ +import { makeEmbed } from '@/providers/base'; + +export const hydraxScraper = makeEmbed({ + id: 'hydrax', + name: 'Hydrax', + rank: 250, + async scrape(ctx) { + // ex-url: https://hihihaha1.xyz/?v=Lgd2uuuTS7 + const embed = await ctx.proxiedFetcher(ctx.url); + + const match = embed.match(/PLAYER\(atob\("(.*?)"/); + if (!match?.[1]) throw new Error('No Data Found'); + + ctx.progress(50); + + const qualityMatch = embed.match(/({"pieceLength.+?})/); + let qualityData: { pieceLength?: string; sd?: string[]; mHd?: string[]; hd?: string[]; fullHd?: string[] } = {}; + if (qualityMatch?.[1]) qualityData = JSON.parse(qualityMatch[1]); + + const data: { id: string; domain: string } = JSON.parse(atob(match[1])); + if (!data.id || !data.domain) throw new Error('Required values missing'); + + const domain = new URL((await ctx.proxiedFetcher.full(`https://${data.domain}`)).finalUrl).hostname; + + ctx.progress(100); + + return { + stream: [ + { + id: 'primary', + type: 'file', + qualities: { + ...(qualityData?.fullHd && { + 1080: { + type: 'mp4', + url: `https://${domain}/whw${data.id}`, + }, + }), + ...(qualityData?.hd && { + 720: { + type: 'mp4', + url: `https://${domain}/www${data.id}`, + }, + }), + ...(qualityData?.mHd && { + 480: { + type: 'mp4', + url: `https://${domain}/${data.id}`, + }, + }), + 360: { + type: 'mp4', + url: `https://${domain}/${data.id}`, + }, + }, + headers: { + Referer: ctx.url.replace(new URL(ctx.url).hostname, 'abysscdn.com'), + }, + captions: [], + flags: [], + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/nsbx.ts b/packages/providers/src/providers/embeds/nsbx.ts new file mode 100644 index 0000000..495486b --- /dev/null +++ b/packages/providers/src/providers/embeds/nsbx.ts @@ -0,0 +1,54 @@ +import { EmbedOutput, makeEmbed } from '@/providers/base'; +import { NotFoundError } from '@/utils/errors'; + +const providers = [ + { + id: 'delta', + rank: 699, + }, + { + id: 'alpha', + rank: 695, + }, +]; + +function embed(provider: { id: string; rank: number }) { + return makeEmbed({ + id: provider.id, + name: provider.id.charAt(0).toUpperCase() + provider.id.slice(1), + rank: provider.rank, + disabled: false, + async scrape(ctx) { + const [query, baseUrl] = ctx.url.split('|'); + + const search = await ctx.fetcher.full('/search', { + query: { + query, + provider: provider.id, + }, + credentials: 'include', + baseUrl, + }); + + if (search.statusCode === 429) throw new Error('Rate limited'); + if (search.statusCode !== 200) throw new NotFoundError('Failed to search'); + + ctx.progress(50); + + const result = await ctx.fetcher('/provider', { + query: { + resourceId: search.body.url, + provider: provider.id, + }, + credentials: 'include', + baseUrl, + }); + + ctx.progress(100); + + return result as EmbedOutput; + }, + }); +} + +export const [deltaScraper, alphaScraper] = providers.map(embed); diff --git a/packages/providers/src/providers/embeds/nsbx/delta.ts b/packages/providers/src/providers/embeds/nsbx/delta.ts deleted file mode 100644 index 283ddde..0000000 --- a/packages/providers/src/providers/embeds/nsbx/delta.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { EmbedOutput} from '@/providers/base'; -import { makeEmbed } from '@/providers/base'; -import { headers } from '@/providers/sources/nsbx'; - -export const deltaScraper = makeEmbed({ - id: 'delta', - name: 'Delta', - rank: 200, - disabled: false, - async scrape(ctx) { - const url = `https://api.nsbx.ru/provider?resourceId=${encodeURIComponent(ctx.url)}&provider=delta`; - const result = await ctx.fetcher(url, { - headers, - }); - - return result as EmbedOutput; - }, -}); diff --git a/packages/providers/src/providers/embeds/playm4u/nm.ts b/packages/providers/src/providers/embeds/playm4u/nm.ts new file mode 100644 index 0000000..32429fb --- /dev/null +++ b/packages/providers/src/providers/embeds/playm4u/nm.ts @@ -0,0 +1,123 @@ +import { load } from 'cheerio'; +import crypto from 'crypto-js'; + +import { makeEmbed } from '@/providers/base'; + +const { AES, MD5 } = crypto; + +// I didn't even care to take a look at the code +// it poabably could be better, +// i don't care +// Thanks Paradox_77 +function mahoaData(input: string, key: string) { + const a = AES.encrypt(input, key).toString(); + + const b = a + .replace('U2FsdGVkX1', '') + .replace(/\//g, '|a') + .replace(/\+/g, '|b') + .replace(/\\=/g, '|c') + .replace(/\|/g, '-z'); + return b; +} + +function caesarShift(str: string, amount: number) { + if (amount < 0) { + return caesarShift(str, amount + 26); + } + let output = ''; + for (let i = 0; i < str.length; i++) { + let c = str[i]; + if (c.match(/[a-z]/i)) { + const code = str.charCodeAt(i); + if (code >= 65 && code <= 90) { + c = String.fromCharCode(((code - 65 + amount) % 26) + 65); + } else if (code >= 97 && code <= 122) { + c = String.fromCharCode(((code - 97 + amount) % 26) + 97); + } + } + output += c; + } + return output; +} + +function stringToHex(tmp: string) { + let str = ''; + for (let i = 0; i < tmp.length; i++) { + str += tmp[i].charCodeAt(0).toString(16); + } + return str; +} + +function generateResourceToken(idUser: string, idFile: string, domainRef: string) { + const dataToken = stringToHex( + caesarShift(mahoaData(`Win32|${idUser}|${idFile}|${domainRef}`, MD5('plhq@@@2022').toString()), 22), + ); + const resourceToken = `${dataToken}|${MD5(`${dataToken}plhq@@@22`).toString()}`; + return resourceToken; +} + +const apiUrl = 'https://api-post-iframe-rd.playm4u.xyz/api/playiframe'; + +type apiRes = { + status: number; + // i only came across url-m3u8 + type: 'url-m3u8'; + data: string; + cache: boolean; + sub?: string | undefined; + subs?: string | undefined; +}; + +export const playm4uNMScraper = makeEmbed({ + id: 'playm4u-nm', + name: 'PlayM4U', + rank: 240, + scrape: async (ctx) => { + // ex: https://play9str.playm4u.xyz/play/648f159ba3115a6f00744a16 + const mainPage$ = load(await ctx.proxiedFetcher(ctx.url)); + + const script = mainPage$(`script:contains("${apiUrl}")`).text(); + if (!script) throw new Error('Failed to get script'); + + ctx.progress(50); + + const domainRef = 'https://ww2.m4ufree.tv'; + const idFile = script.match(/var\s?idfile\s?=\s?"(.*)";/im)?.[1]; + const idUser = script.match(/var\s?iduser\s?=\s?"(.*)";/im)?.[1]; + if (!idFile || !idUser) throw new Error('Failed to get ids'); + + const charecters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789=+'; + + const apiRes: apiRes = await ctx.proxiedFetcher(apiUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + namekey: 'playm4u03', + token: Array.from({ length: 100 }, () => charecters.charAt(Math.floor(Math.random() * charecters.length))).join( + '', + ), + referrer: domainRef, + data: generateResourceToken(idUser, idFile, domainRef), + }), + }); + + if (!apiRes.data || apiRes.type !== 'url-m3u8') throw new Error('Failed to get the stream'); + + ctx.progress(100); + + return { + stream: [ + { + id: 'primary', + type: 'hls', + playlist: apiRes.data, + captions: [], + flags: [], + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/smashystream/video1.ts b/packages/providers/src/providers/embeds/smashystream/video1.ts index a0e5772..19af888 100644 --- a/packages/providers/src/providers/embeds/smashystream/video1.ts +++ b/packages/providers/src/providers/embeds/smashystream/video1.ts @@ -1,13 +1,12 @@ import { flags } from '@/entrypoint/utils/targets'; import { makeEmbed } from '@/providers/base'; -import type { Caption} from '@/providers/captions'; -import { getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; +import { Caption, getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; import { NotFoundError } from '@/utils/errors'; -interface FPlayerResponse { +type FPlayerResponse = { sourceUrls: string[]; subtitles: string | null; -} +}; // if you don't understand how this is reversed // check https://discord.com/channels/871713465100816424/1186646348137775164/1225644477188935770 diff --git a/packages/providers/src/providers/embeds/streamsb.ts b/packages/providers/src/providers/embeds/streamsb.ts index 084c59d..7e5c5ad 100644 --- a/packages/providers/src/providers/embeds/streamsb.ts +++ b/packages/providers/src/providers/embeds/streamsb.ts @@ -5,8 +5,8 @@ import FormData from 'form-data'; import { flags } from '@/entrypoint/utils/targets'; import { makeEmbed } from '@/providers/base'; -import type { StreamFile } from '@/providers/streams'; -import type { EmbedScrapeContext } from '@/utils/context'; +import { StreamFile } from '@/providers/streams'; +import { EmbedScrapeContext } from '@/utils/context'; async function fetchCaptchaToken(ctx: EmbedScrapeContext, domain: string, recaptchaKey: string) { const domainHash = Base64.stringify(Utf8.parse(domain)).replace(/=/g, '.'); @@ -150,7 +150,7 @@ export const streamsbScraper = makeEmbed({ (a, v) => { a[v.quality] = { type: 'mp4', - url: v.url!, + url: v.url as string, }; return a; }, diff --git a/packages/providers/src/providers/embeds/turbovid.ts b/packages/providers/src/providers/embeds/turbovid.ts new file mode 100644 index 0000000..7f7e3fc --- /dev/null +++ b/packages/providers/src/providers/embeds/turbovid.ts @@ -0,0 +1,79 @@ +import { makeEmbed } from '@/providers/base'; + +// Thanks to Paradox_77 for helping with the decryption +function hexToChar(hex: string): string { + return String.fromCharCode(parseInt(hex, 16)); +} + +function decrypt(data: string, key: string): string { + const formatedData = data.match(/../g)?.map(hexToChar).join('') || ''; + return formatedData + .split('') + .map((char, i) => String.fromCharCode(char.charCodeAt(0) ^ key.charCodeAt(i % key.length))) + .join(''); +} + +export const turbovidScraper = makeEmbed({ + id: 'turbovid', + name: 'Turbovid', + rank: 122, + async scrape(ctx) { + const baseUrl = new URL(ctx.url).origin; + const embedPage = await ctx.proxiedFetcher(ctx.url); + + ctx.progress(30); + + // the whitespace is for future-proofing the regex a bit + const apkey = embedPage.match(/const\s+apkey\s*=\s*"(.*?)";/)?.[1]; + const xxid = embedPage.match(/const\s+xxid\s*=\s*"(.*?)";/)?.[1]; + + if (!apkey || !xxid) throw new Error('Failed to get required values'); + + // json isn't parsed by proxiedFetcher due to content-type being text/html + const juiceKey = JSON.parse( + await ctx.proxiedFetcher('/api/cucked/juice_key', { + baseUrl, + headers: { + referer: ctx.url, + }, + }), + ).juice; + + if (!juiceKey) throw new Error('Failed to fetch the key'); + + ctx.progress(60); + + const data = JSON.parse( + await ctx.proxiedFetcher('/api/cucked/the_juice/', { + baseUrl, + query: { + [apkey]: xxid, + }, + headers: { + referer: ctx.url, + }, + }), + ).data; + + if (!data) throw new Error('Failed to fetch required data'); + + ctx.progress(90); + + const playlist = decrypt(data, juiceKey); + + return { + stream: [ + { + type: 'hls', + id: 'primary', + playlist, + headers: { + referer: baseUrl, + }, + flags: [], + captions: [], + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/upcloud.ts b/packages/providers/src/providers/embeds/upcloud.ts index ad30d53..63d8407 100644 --- a/packages/providers/src/providers/embeds/upcloud.ts +++ b/packages/providers/src/providers/embeds/upcloud.ts @@ -2,8 +2,7 @@ import crypto from 'crypto-js'; import { flags } from '@/entrypoint/utils/targets'; import { makeEmbed } from '@/providers/base'; -import type { Caption} from '@/providers/captions'; -import { getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; +import { Caption, getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; const origin = 'https://rabbitstream.net'; const referer = 'https://rabbitstream.net/'; diff --git a/packages/providers/src/providers/embeds/vidplay/common.ts b/packages/providers/src/providers/embeds/vidplay/common.ts index f4f9a02..f10681a 100644 --- a/packages/providers/src/providers/embeds/vidplay/common.ts +++ b/packages/providers/src/providers/embeds/vidplay/common.ts @@ -1,6 +1,6 @@ import { makeFullUrl } from '@/fetchers/common'; import { decodeData } from '@/providers/sources/vidsrcto/common'; -import type { EmbedScrapeContext } from '@/utils/context'; +import { EmbedScrapeContext } from '@/utils/context'; export const vidplayBase = 'https://vidplay.online'; export const referer = `${vidplayBase}/`; diff --git a/packages/providers/src/providers/embeds/vidplay/index.ts b/packages/providers/src/providers/embeds/vidplay/index.ts index 741bd80..4084e82 100644 --- a/packages/providers/src/providers/embeds/vidplay/index.ts +++ b/packages/providers/src/providers/embeds/vidplay/index.ts @@ -1,9 +1,9 @@ +import { flags } from '@/entrypoint/utils/targets'; import { makeEmbed } from '@/providers/base'; -import type { Caption} from '@/providers/captions'; -import { getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; +import { Caption, getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; import { getFileUrl } from './common'; -import type { SubtitleResult, ThumbnailTrack, VidplaySourceResponse } from './types'; +import { SubtitleResult, ThumbnailTrack, VidplaySourceResponse } from './types'; export const vidplayScraper = makeEmbed({ id: 'vidplay', @@ -54,7 +54,7 @@ export const vidplayScraper = makeEmbed({ id: 'primary', type: 'hls', playlist: source, - flags: [], + flags: [flags.PROXY_BLOCKED], headers: { Referer: url.origin, Origin: url.origin, diff --git a/packages/providers/src/providers/embeds/vidplay/types.ts b/packages/providers/src/providers/embeds/vidplay/types.ts index 14fc36a..8810647 100644 --- a/packages/providers/src/providers/embeds/vidplay/types.ts +++ b/packages/providers/src/providers/embeds/vidplay/types.ts @@ -1,4 +1,4 @@ -export interface VidplaySourceResponse { +export type VidplaySourceResponse = { result: | { sources: { @@ -10,7 +10,7 @@ export interface VidplaySourceResponse { }[]; } | number; -} +}; export type SubtitleResult = { file: string; @@ -18,7 +18,7 @@ export type SubtitleResult = { kind: string; }[]; -export interface ThumbnailTrack { +export type ThumbnailTrack = { type: 'vtt'; url: string; -} +}; diff --git a/packages/providers/src/providers/embeds/warezcdn/common.ts b/packages/providers/src/providers/embeds/warezcdn/common.ts index 1f35b6f..79501c2 100644 --- a/packages/providers/src/providers/embeds/warezcdn/common.ts +++ b/packages/providers/src/providers/embeds/warezcdn/common.ts @@ -1,5 +1,5 @@ import { warezcdnPlayerBase } from '@/providers/sources/warezcdn/common'; -import type { EmbedScrapeContext } from '@/utils/context'; +import { EmbedScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; function decrypt(input: string) { @@ -38,6 +38,7 @@ export async function getDecryptedId(ctx: EmbedScrapeContext) { const allowanceKey = page.match(/let allowanceKey = "(.*?)";/)?.[1]; if (!allowanceKey) throw new NotFoundError('Failed to get allowanceKey'); + // this endpoint is removed hence the method no longer works const streamData = await ctx.proxiedFetcher('/functions.php', { baseUrl: warezcdnPlayerBase, method: 'POST', diff --git a/packages/providers/src/providers/embeds/warezcdn/hls.ts b/packages/providers/src/providers/embeds/warezcdn/hls.ts index 809d2ff..4595c9b 100644 --- a/packages/providers/src/providers/embeds/warezcdn/hls.ts +++ b/packages/providers/src/providers/embeds/warezcdn/hls.ts @@ -1,6 +1,6 @@ import { flags } from '@/entrypoint/utils/targets'; import { makeEmbed } from '@/providers/base'; -import type { EmbedScrapeContext } from '@/utils/context'; +import { EmbedScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; import { getDecryptedId } from './common'; @@ -21,6 +21,8 @@ async function getVideowlUrlStream(ctx: EmbedScrapeContext, decryptedId: string) export const warezcdnembedHlsScraper = makeEmbed({ id: 'warezcdnembedhls', // WarezCDN is both a source and an embed host name: 'WarezCDN HLS', + // method no longer works + disabled: true, rank: 83, async scrape(ctx) { const decryptedId = await getDecryptedId(ctx); diff --git a/packages/providers/src/providers/embeds/warezcdn/mp4.ts b/packages/providers/src/providers/embeds/warezcdn/mp4.ts index 8347e96..89d1798 100644 --- a/packages/providers/src/providers/embeds/warezcdn/mp4.ts +++ b/packages/providers/src/providers/embeds/warezcdn/mp4.ts @@ -1,7 +1,7 @@ import { flags } from '@/entrypoint/utils/targets'; import { makeEmbed } from '@/providers/base'; import { warezcdnWorkerProxy } from '@/providers/sources/warezcdn/common'; -import type { EmbedScrapeContext } from '@/utils/context'; +import { EmbedScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; import { getDecryptedId } from './common'; @@ -25,8 +25,9 @@ async function checkUrls(ctx: EmbedScrapeContext, fileId: string) { export const warezcdnembedMp4Scraper = makeEmbed({ id: 'warezcdnembedmp4', // WarezCDN is both a source and an embed host name: 'WarezCDN MP4', + // method no longer works rank: 82, - disabled: false, + disabled: true, async scrape(ctx) { const decryptedId = await getDecryptedId(ctx); diff --git a/packages/providers/src/providers/embeds/warezcdn/warezplayer.ts b/packages/providers/src/providers/embeds/warezcdn/warezplayer.ts new file mode 100644 index 0000000..5eb9b66 --- /dev/null +++ b/packages/providers/src/providers/embeds/warezcdn/warezplayer.ts @@ -0,0 +1,58 @@ +import { makeEmbed } from '@/providers/base'; +import { warezcdnApiBase, warezcdnPlayerBase } from '@/providers/sources/warezcdn/common'; + +export const warezPlayerScraper = makeEmbed({ + id: 'warezplayer', + name: 'warezPLAYER', + rank: 85, + async scrape(ctx) { + const page = await ctx.proxiedFetcher.full(`/player.php`, { + baseUrl: warezcdnPlayerBase, + headers: { + Referer: `${warezcdnApiBase}/getEmbed.php?${new URLSearchParams({ + id: ctx.url, + sv: 'warezcdn', + })}`, + }, + query: { + id: ctx.url, + }, + }); + // ex url: https://basseqwevewcewcewecwcw.xyz/video/0e4a2c65bdaddd66a53422d93daebe68 + const playerPageUrl = new URL(page.finalUrl); + + const hash = playerPageUrl.pathname.split('/')[2]; + const playerApiRes = await ctx.proxiedFetcher('/player/index.php', { + baseUrl: playerPageUrl.origin, + query: { + data: hash, + do: 'getVideo', + }, + method: 'POST', + body: new URLSearchParams({ + hash, + }), + headers: { + 'X-Requested-With': 'XMLHttpRequest', + }, + }); + const sources = JSON.parse(playerApiRes); // json isn't parsed by fetcher due to content-type being text/html. + if (!sources.videoSource) throw new Error('Playlist not found'); + + return { + stream: [ + { + id: 'primary', + type: 'hls', + flags: [], + captions: [], + playlist: sources.videoSource, + headers: { + // without this it returns "security error" + Accept: '*/*', + }, + }, + ], + }; + }, +}); diff --git a/packages/providers/src/providers/embeds/whvx.ts b/packages/providers/src/providers/embeds/whvx.ts new file mode 100644 index 0000000..3017f3d --- /dev/null +++ b/packages/providers/src/providers/embeds/whvx.ts @@ -0,0 +1,71 @@ +import { EmbedOutput, makeEmbed } from '@/providers/base'; +import { baseUrl } from '@/providers/sources/whvx'; +import { NotFoundError } from '@/utils/errors'; + +const providers = [ + { + id: 'nova', + rank: 720, + }, + { + id: 'astra', + rank: 710, + }, + { + id: 'orion', + rank: 700, + disabled: true, + }, +]; + +export const headers = { + Origin: 'https://www.vidbinge.com', + Referer: 'https://www.vidbinge.com', +}; + +function embed(provider: { id: string; rank: number; disabled?: boolean }) { + return makeEmbed({ + id: provider.id, + name: provider.id.charAt(0).toUpperCase() + provider.id.slice(1), + rank: provider.rank, + disabled: provider.disabled, + async scrape(ctx) { + let progress = 50; + const interval = setInterval(() => { + if (progress < 100) { + progress += 1; + ctx.progress(progress); + } + }, 100); + + try { + const search = await ctx.fetcher.full( + `${baseUrl}/search?query=${encodeURIComponent(ctx.url)}&provider=${provider.id}`, + { headers }, + ); + + if (search.statusCode === 429) { + throw new Error('Rate limited'); + } else if (search.statusCode !== 200) { + throw new NotFoundError('Failed to search'); + } + + const result = await ctx.fetcher( + `${baseUrl}/source?resourceId=${encodeURIComponent(search.body.url)}&provider=${provider.id}`, + { headers }, + ); + + clearInterval(interval); + ctx.progress(100); + + return result as EmbedOutput; + } catch (error) { + clearInterval(interval); + ctx.progress(100); + throw new NotFoundError('Failed to search'); + } + }, + }); +} + +export const [novaScraper, astraScraper, orionScraper] = providers.map(embed); diff --git a/packages/providers/src/providers/get.ts b/packages/providers/src/providers/get.ts index e454692..900bbd1 100644 --- a/packages/providers/src/providers/get.ts +++ b/packages/providers/src/providers/get.ts @@ -1,6 +1,5 @@ -import type { FeatureMap} from '@/entrypoint/utils/targets'; -import { flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; -import type { Embed, Sourcerer } from '@/providers/base'; +import { FeatureMap, flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; +import { Embed, Sourcerer } from '@/providers/base'; import { hasDuplicates } from '@/utils/predicates'; export interface ProviderList { diff --git a/packages/providers/src/providers/sources/autoembed.ts b/packages/providers/src/providers/sources/autoembed.ts new file mode 100644 index 0000000..e4d9a2e --- /dev/null +++ b/packages/providers/src/providers/sources/autoembed.ts @@ -0,0 +1,46 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { SourcererEmbed, SourcererOutput, makeSourcerer } from '@/providers/base'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +const baseUrl = 'https://autoembed.cc/'; + +async function comboScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promise { + const playerPage = await ctx.proxiedFetcher(`/embed/player.php`, { + baseUrl, + query: { + id: ctx.media.tmdbId, + ...(ctx.media.type === 'show' && { + s: ctx.media.season.number.toString(), + e: ctx.media.episode.number.toString(), + }), + }, + }); + + const fileDataMatch = playerPage.match(/"file": (\[.*?\])/s); + if (!fileDataMatch[1]) throw new NotFoundError('No data found'); + + const fileData: { title: string; file: string }[] = JSON.parse(fileDataMatch[1].replace(/,\s*\]$/, ']')); + + const embeds: SourcererEmbed[] = []; + + for (const stream of fileData) { + const url = stream.file; + if (!url) continue; + embeds.push({ embedId: `autoembed-${stream.title.toLowerCase().trim()}`, url }); + } + + return { + embeds, + }; +} + +export const autoembedScraper = makeSourcerer({ + id: 'autoembed', + name: 'Autoembed', + rank: 10, + disabled: true, + flags: [flags.CORS_ALLOWED], + scrapeMovie: comboScraper, + scrapeShow: comboScraper, +}); diff --git a/packages/providers/src/providers/sources/catflix.ts b/packages/providers/src/providers/sources/catflix.ts new file mode 100644 index 0000000..03c9456 --- /dev/null +++ b/packages/providers/src/providers/sources/catflix.ts @@ -0,0 +1,74 @@ +import { load } from 'cheerio'; + +import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import { compareMedia } from '@/utils/compare'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +const baseUrl = 'https://catflix.su'; + +async function comboScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promise { + const searchPage = await ctx.proxiedFetcher('/', { + baseUrl, + query: { + s: ctx.media.title, + }, + }); + + ctx.progress(40); + + const $search = load(searchPage); + const searchResults: { title: string; year?: number | undefined; url: string }[] = []; + + $search('li').each((_, element) => { + const title = $search(element).find('h2').first().text().trim(); + // the year is always present, but I sitll decided to make it nullable since the impl isn't as future-proof + const year = Number($search(element).find('.text-xs > span').eq(1).text().trim()) || undefined; + const url = $search(element).find('a').attr('href'); + + if (!title || !url) return; + + searchResults.push({ title, year, url }); + }); + + let watchPageUrl = searchResults.find((x) => x && compareMedia(ctx.media, x.title, x.year))?.url; + if (!watchPageUrl) throw new NotFoundError('No watchable item found'); + + ctx.progress(60); + + if (ctx.media.type === 'show') { + const match = watchPageUrl.match(/\/series\/([^/]+)\/?/); + if (!match) throw new Error('Failed to parse watch page url'); + watchPageUrl = watchPageUrl.replace( + `/series/${match[1]}`, + `/episode/${match[1]}-${ctx.media.season.number}x${ctx.media.episode.number}`, + ); + } + + const watchPage = load(await ctx.proxiedFetcher(watchPageUrl)); + + ctx.progress(80); + + const url = watchPage('iframe').first().attr('src'); // I couldn't think of a better way + if (!url) throw new Error('Failed to find embed url'); + + ctx.progress(90); + + return { + embeds: [ + { + embedId: 'turbovid', + url, + }, + ], + }; +} + +export const catflixScraper = makeSourcerer({ + id: 'catflix', + name: 'Catflix', + rank: 122, + flags: [], + scrapeMovie: comboScraper, + scrapeShow: comboScraper, +}); diff --git a/packages/providers/src/providers/sources/ee3/common.ts b/packages/providers/src/providers/sources/ee3/common.ts new file mode 100644 index 0000000..f1201cc --- /dev/null +++ b/packages/providers/src/providers/sources/ee3/common.ts @@ -0,0 +1,7 @@ +export const useAltEndpoint: boolean = false; + +export const baseUrl = useAltEndpoint ? 'https://rips.cc' : 'https://ee3.me'; + +export const username = '_sf_'; + +export const password = 'defonotscraping'; diff --git a/packages/providers/src/providers/sources/ee3/index.ts b/packages/providers/src/providers/sources/ee3/index.ts new file mode 100644 index 0000000..4424386 --- /dev/null +++ b/packages/providers/src/providers/sources/ee3/index.ts @@ -0,0 +1,97 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import { Caption } from '@/providers/captions'; +import { compareMedia } from '@/utils/compare'; +import { MovieScrapeContext } from '@/utils/context'; +import { makeCookieHeader } from '@/utils/cookie'; +import { NotFoundError } from '@/utils/errors'; + +import { baseUrl, password, username } from './common'; +import { itemDetails, renewResponse } from './types'; +import { login, parseSearch } from './utils'; + +// this source only has movies +async function comboScraper(ctx: MovieScrapeContext): Promise { + const pass = await login(username, password, ctx); + if (!pass) throw new Error('Login failed'); + + const search = parseSearch( + await ctx.proxiedFetcher('/get', { + baseUrl, + method: 'POST', + body: new URLSearchParams({ query: ctx.media.title, action: 'search' }), + headers: { + cookie: makeCookieHeader({ PHPSESSID: pass }), + }, + }), + ); + + const id = search.find((v) => v && compareMedia(ctx.media, v.title, v.year))?.id; + if (!id) throw new NotFoundError('No watchable item found'); + + const details: itemDetails = JSON.parse( + await ctx.proxiedFetcher('/get', { + baseUrl, + method: 'POST', + body: new URLSearchParams({ id, action: 'get_movie_info' }), + headers: { + cookie: makeCookieHeader({ PHPSESSID: pass }), + }, + }), + ); + if (!details.message.video) throw new Error('Failed to get the stream'); + + const keyParams: renewResponse = JSON.parse( + await ctx.proxiedFetcher('/renew', { + baseUrl, + method: 'POST', + headers: { + cookie: makeCookieHeader({ PHPSESSID: pass }), + }, + }), + ); + if (!keyParams.k) throw new Error('Failed to get the key'); + + const server = details.message.server === '1' ? 'https://vid.ee3.me/vid/' : 'https://vault.rips.cc/video/'; + const k = keyParams.k; + const url = `${server}${details.message.video}?${new URLSearchParams({ k })}`; + const captions: Caption[] = []; + + // this how they actually deal with subtitles + if (details.message.subs?.toLowerCase() === 'yes' && details.message.imdbID) { + captions.push({ + id: `https://rips.cc/subs/${details.message.imdbID}.vtt`, + url: `https://rips.cc/subs/${details.message.imdbID}.vtt`, + type: 'vtt', + hasCorsRestrictions: false, + language: 'en', + }); + } + + return { + embeds: [], + stream: [ + { + id: 'primary', + type: 'file', + flags: [flags.CORS_ALLOWED], + captions, + qualities: { + // should be unknown, but all the videos are 720p + 720: { + type: 'mp4', + url, + }, + }, + }, + ], + }; +} + +export const ee3Scraper = makeSourcerer({ + id: 'ee3', + name: 'EE3', + rank: 111, + flags: [flags.CORS_ALLOWED], + scrapeMovie: comboScraper, +}); diff --git a/packages/providers/src/providers/sources/ee3/types.ts b/packages/providers/src/providers/sources/ee3/types.ts new file mode 100644 index 0000000..6728c9c --- /dev/null +++ b/packages/providers/src/providers/sources/ee3/types.ts @@ -0,0 +1,31 @@ +export interface itemDetails { + status: number; + message: { + id: string; + imdbID: string; + title: string; + video: string; + server: string; + year: string; + image: string; + glow: string; + rating: string; + watch_count: string; + datetime?: string | null; + requested_by?: string | null; + subs?: string | null; + time?: string | null; + duration?: string | null; + }; +} + +export interface renewResponse { + k: string; + msg?: string | null; + status: number | string | null; +} + +export interface loginResponse { + status: number; + message: string; +} diff --git a/packages/providers/src/providers/sources/ee3/utils.ts b/packages/providers/src/providers/sources/ee3/utils.ts new file mode 100644 index 0000000..a797977 --- /dev/null +++ b/packages/providers/src/providers/sources/ee3/utils.ts @@ -0,0 +1,46 @@ +import { load } from 'cheerio'; + +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { parseSetCookie } from '@/utils/cookie'; + +import { baseUrl } from './common'; +import { loginResponse } from './types'; + +export async function login( + user: string, + pass: string, + ctx: ShowScrapeContext | MovieScrapeContext, +): Promise { + const req = await ctx.proxiedFetcher.full('/login', { + baseUrl, + method: 'POST', + body: new URLSearchParams({ user, pass, action: 'login' }), + readHeaders: ['Set-Cookie'], + }); + const res: loginResponse = JSON.parse(req.body); + + const cookie = parseSetCookie( + // It retruns a cookie even when the login failed + // I have the backup cookie here just in case + res.status === 1 ? (req.headers.get('Set-Cookie') ?? '') : 'PHPSESSID=mk2p73c77qc28o5i5120843ruu;', + ); + + return cookie.PHPSESSID.value; +} + +export function parseSearch(body: string): { title: string; year: number; id: string }[] { + const result: { title: string; year: number; id: string }[] = []; + + const $ = load(body); + $('div').each((_, element) => { + const title = $(element).find('.title').text().trim(); + const year = parseInt($(element).find('.details span').first().text().trim(), 10); + const id = $(element).find('.control-buttons').attr('data-id'); + + if (title && year && id) { + result.push({ title, year, id }); + } + }); + + return result; +} diff --git a/packages/providers/src/providers/sources/flixhq/index.ts b/packages/providers/src/providers/sources/flixhq/index.ts index c037835..d0a2898 100644 --- a/packages/providers/src/providers/sources/flixhq/index.ts +++ b/packages/providers/src/providers/sources/flixhq/index.ts @@ -1,6 +1,5 @@ import { flags } from '@/entrypoint/utils/targets'; -import type { SourcererEmbed} from '@/providers/base'; -import { makeSourcerer } from '@/providers/base'; +import { SourcererEmbed, makeSourcerer } from '@/providers/base'; import { upcloudScraper } from '@/providers/embeds/upcloud'; import { vidCloudScraper } from '@/providers/embeds/vidcloud'; import { getFlixhqMovieSources, getFlixhqShowSources, getFlixhqSourceDetails } from '@/providers/sources/flixhq/scrape'; diff --git a/packages/providers/src/providers/sources/flixhq/scrape.ts b/packages/providers/src/providers/sources/flixhq/scrape.ts index e43c2c6..5555be5 100644 --- a/packages/providers/src/providers/sources/flixhq/scrape.ts +++ b/packages/providers/src/providers/sources/flixhq/scrape.ts @@ -1,8 +1,8 @@ import { load } from 'cheerio'; -import type { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; import { flixHqBase } from '@/providers/sources/flixhq/common'; -import type { ScrapeContext } from '@/utils/context'; +import { ScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; export async function getFlixhqSourceDetails(ctx: ScrapeContext, sourceId: string): Promise { diff --git a/packages/providers/src/providers/sources/flixhq/search.ts b/packages/providers/src/providers/sources/flixhq/search.ts index 3d86aca..bcab033 100644 --- a/packages/providers/src/providers/sources/flixhq/search.ts +++ b/packages/providers/src/providers/sources/flixhq/search.ts @@ -1,9 +1,9 @@ import { load } from 'cheerio'; -import type { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; import { flixHqBase } from '@/providers/sources/flixhq/common'; import { compareMedia, compareTitle } from '@/utils/compare'; -import type { ScrapeContext } from '@/utils/context'; +import { ScrapeContext } from '@/utils/context'; export async function getFlixhqId(ctx: ScrapeContext, media: MovieMedia | ShowMedia): Promise { const searchResults = await ctx.proxiedFetcher(`/search/${media.title.replaceAll(/[^a-z0-9A-Z]/g, '-')}`, { diff --git a/packages/providers/src/providers/sources/fsharetv.ts b/packages/providers/src/providers/sources/fsharetv.ts new file mode 100644 index 0000000..6193607 --- /dev/null +++ b/packages/providers/src/providers/sources/fsharetv.ts @@ -0,0 +1,94 @@ +import { load } from 'cheerio'; + +import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import { FileBasedStream } from '@/providers/streams'; +import { compareMedia } from '@/utils/compare'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; +import { getValidQualityFromString } from '@/utils/quality'; + +const baseUrl = 'https://fsharetv.co'; + +async function comboScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promise { + const searchPage = await ctx.proxiedFetcher('/search', { + baseUrl, + query: { + q: ctx.media.title, + }, + }); + + const search$ = load(searchPage); + const searchResults: { title: string; year?: number; url: string }[] = []; + + search$('.movie-item').each((_, element) => { + const [, title, year] = + search$(element) + .find('b') + .text() + ?.match(/^(.*?)\s*(?:\(?\s*(\d{4})(?:\s*-\s*\d{0,4})?\s*\)?)?\s*$/) || []; + const url = search$(element).find('a').attr('href'); + if (!title || !url) return; + + searchResults.push({ title, year: Number(year) ?? undefined, url }); + }); + + const watchPageUrl = searchResults.find((x) => x && compareMedia(ctx.media, x.title, x.year))?.url; + if (!watchPageUrl) throw new NotFoundError('No watchable item found'); + + const watchPage = await ctx.proxiedFetcher(watchPageUrl.replace('/movie', '/w'), { baseUrl }); + + const fileId = watchPage.match(/Movie\.setSource\('([^']*)'/)?.[1]; + if (!fileId) throw new Error('File ID not found'); + + const apiRes: { data: { file: { sources: { src: string; quality: string | number }[] } } } = await ctx.proxiedFetcher( + `/api/file/${fileId}/source`, + { + baseUrl, + query: { + type: 'watch', + }, + }, + ); + if (!apiRes.data.file.sources.length) throw new Error('No sources found'); + + // this is to get around a ext bug where it doesn't send the headers to the second req after redir + const mediaBase = new URL((await ctx.proxiedFetcher.full(apiRes.data.file.sources[0].src, { baseUrl })).finalUrl) + .origin; + + const qualities = apiRes.data.file.sources.reduce( + (acc, source) => { + const quality = typeof source.quality === 'number' ? source.quality.toString() : source.quality; + const validQuality = getValidQualityFromString(quality); + acc[validQuality] = { + type: 'mp4', + url: `${mediaBase}${source.src.replace('/api', '')}`, + }; + return acc; + }, + {} as FileBasedStream['qualities'], + ); + + return { + embeds: [], + stream: [ + { + id: 'primary', + type: 'file', + flags: [], + headers: { + referer: 'https://fsharetv.co', + }, + qualities, + captions: [], + }, + ], + }; +} + +export const fsharetvScraper = makeSourcerer({ + id: 'fsharetv', + name: 'FshareTV', + rank: 93, + flags: [], + scrapeMovie: comboScraper, +}); diff --git a/packages/providers/src/providers/sources/gomovies/index.ts b/packages/providers/src/providers/sources/gomovies/index.ts index d2e1463..419efba 100644 --- a/packages/providers/src/providers/sources/gomovies/index.ts +++ b/packages/providers/src/providers/sources/gomovies/index.ts @@ -131,7 +131,7 @@ export const goMoviesScraper = makeSourcerer({ .filter((embed) => embed.url) .map((embed) => ({ embedId: embed.embedId, - url: embed.url!, + url: embed.url as string, })); if (filteredEmbeds.length === 0) throw new Error('No valid embeds found.'); @@ -213,7 +213,7 @@ export const goMoviesScraper = makeSourcerer({ .filter((embed) => embed.url) .map((embed) => ({ embedId: embed.embedId, - url: embed.url!, + url: embed.url as string, })); if (filteredEmbeds.length === 0) throw new Error('No valid embeds found.'); diff --git a/packages/providers/src/providers/sources/gomovies/source.ts b/packages/providers/src/providers/sources/gomovies/source.ts index 3d55a7b..4ef93bc 100644 --- a/packages/providers/src/providers/sources/gomovies/source.ts +++ b/packages/providers/src/providers/sources/gomovies/source.ts @@ -1,6 +1,6 @@ import { load } from 'cheerio'; -import type { ScrapeContext } from '@/utils/context'; +import { ScrapeContext } from '@/utils/context'; import { gomoviesBase } from '.'; diff --git a/packages/providers/src/providers/sources/goojara/getEmbeds.ts b/packages/providers/src/providers/sources/goojara/getEmbeds.ts index 8adacc0..7b26d6c 100644 --- a/packages/providers/src/providers/sources/goojara/getEmbeds.ts +++ b/packages/providers/src/providers/sources/goojara/getEmbeds.ts @@ -1,10 +1,9 @@ import { load } from 'cheerio'; -import type { ScrapeContext } from '@/utils/context'; +import { ScrapeContext } from '@/utils/context'; import { makeCookieHeader, parseSetCookie } from '@/utils/cookie'; -import type { EmbedsResult} from './type'; -import { baseUrl, baseUrl2 } from './type'; +import { EmbedsResult, baseUrl, baseUrl2 } from './type'; export async function getEmbeds(ctx: ScrapeContext, id: string): Promise { const data = await ctx.fetcher.full(`/${id}`, { @@ -23,7 +22,7 @@ export async function getEmbeds(ctx: ScrapeContext, id: string): Promise => { const result = await searchAndFindMediaId(ctx); - if (!result?.id) throw new NotFoundError('No result found'); + if (!result || !result.id) throw new NotFoundError('No result found'); const translatorId = await getTranslatorId(result.url, result.id, ctx); if (!translatorId) throw new NotFoundError('No translator id found'); diff --git a/packages/providers/src/providers/sources/hdrezka/types.ts b/packages/providers/src/providers/sources/hdrezka/types.ts index 22fc129..d7ccdc2 100644 --- a/packages/providers/src/providers/sources/hdrezka/types.ts +++ b/packages/providers/src/providers/sources/hdrezka/types.ts @@ -1,6 +1,6 @@ -import type { ScrapeMedia } from "@/entrypoint/utils/media"; +import { ScrapeMedia } from '@/index'; -export interface VideoLinks { +export type VideoLinks = { success: boolean; message: string; premium_content: number; @@ -10,7 +10,7 @@ export interface VideoLinks { subtitle_lns: boolean; subtitle_def: boolean; thumbnails: string; -} +}; export interface MovieData { id: string | null; diff --git a/packages/providers/src/providers/sources/hdrezka/utils.ts b/packages/providers/src/providers/sources/hdrezka/utils.ts index 57c6469..a88c5a3 100644 --- a/packages/providers/src/providers/sources/hdrezka/utils.ts +++ b/packages/providers/src/providers/sources/hdrezka/utils.ts @@ -1,5 +1,5 @@ import { getCaptionTypeFromUrl, labelToLanguageCode } from '@/providers/captions'; -import type { FileBasedStream } from '@/providers/streams'; +import { FileBasedStream } from '@/providers/streams'; import { NotFoundError } from '@/utils/errors'; import { getValidQualityFromString } from '@/utils/quality'; diff --git a/packages/providers/src/providers/sources/insertunit/captions.ts b/packages/providers/src/providers/sources/insertunit/captions.ts index 863f533..881c9c2 100644 --- a/packages/providers/src/providers/sources/insertunit/captions.ts +++ b/packages/providers/src/providers/sources/insertunit/captions.ts @@ -1,7 +1,6 @@ -import type { Caption} from '@/providers/captions'; -import { removeDuplicatedLanguages } from '@/providers/captions'; +import { Caption, removeDuplicatedLanguages } from '@/providers/captions'; -import type { Subtitle } from './types'; +import { Subtitle } from './types'; export async function getCaptions(data: Subtitle[]) { let captions: Caption[] = []; diff --git a/packages/providers/src/providers/sources/insertunit/index.ts b/packages/providers/src/providers/sources/insertunit/index.ts index 898f5fd..9a54866 100644 --- a/packages/providers/src/providers/sources/insertunit/index.ts +++ b/packages/providers/src/providers/sources/insertunit/index.ts @@ -1,10 +1,10 @@ import { flags } from '@/entrypoint/utils/targets'; import { makeSourcerer } from '@/providers/base'; -import type { Caption } from '@/providers/captions'; +import { Caption } from '@/providers/captions'; import { NotFoundError } from '@/utils/errors'; import { getCaptions } from './captions'; -import type { Season } from './types'; +import { Season } from './types'; const insertUnitBase = 'https://api.insertunit.ws/'; @@ -80,7 +80,7 @@ export const insertunitScraper = makeSourcerer({ let captions: Caption[] = []; - if (subtitleJSONData?.[1] != null) { + if (subtitleJSONData != null && subtitleJSONData[1] != null) { const subtitleData = JSON.parse(subtitleJSONData[1]); captions = await getCaptions(subtitleData); } diff --git a/packages/providers/src/providers/sources/kissasian/search.ts b/packages/providers/src/providers/sources/kissasian/search.ts index 039f39d..bbf1a01 100644 --- a/packages/providers/src/providers/sources/kissasian/search.ts +++ b/packages/providers/src/providers/sources/kissasian/search.ts @@ -1,7 +1,7 @@ import { load } from 'cheerio'; import FormData from 'form-data'; -import type { ScrapeContext } from '@/utils/context'; +import { ScrapeContext } from '@/utils/context'; import { kissasianBase } from './common'; diff --git a/packages/providers/src/providers/sources/lookmovie/index.ts b/packages/providers/src/providers/sources/lookmovie/index.ts index b84ee2e..80f816d 100644 --- a/packages/providers/src/providers/sources/lookmovie/index.ts +++ b/packages/providers/src/providers/sources/lookmovie/index.ts @@ -1,7 +1,6 @@ import { flags } from '@/entrypoint/utils/targets'; -import type { SourcererOutput} from '@/providers/base'; -import { makeSourcerer } from '@/providers/base'; -import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; import { scrape, searchAndFindMedia } from './util'; diff --git a/packages/providers/src/providers/sources/lookmovie/type.ts b/packages/providers/src/providers/sources/lookmovie/type.ts index d8f7478..47ccc55 100644 --- a/packages/providers/src/providers/sources/lookmovie/type.ts +++ b/packages/providers/src/providers/sources/lookmovie/type.ts @@ -1,4 +1,4 @@ -import type { MovieMedia } from '@/entrypoint/utils/media'; +import { MovieMedia } from '@/entrypoint/utils/media'; // ! Types interface BaseConfig { @@ -35,7 +35,9 @@ export interface ShowDataResult { episodes: episodeObj[]; } -type VideoSources = Record; +interface VideoSources { + [key: string]: string; +} interface VideoSubtitles { id?: number; diff --git a/packages/providers/src/providers/sources/lookmovie/util.ts b/packages/providers/src/providers/sources/lookmovie/util.ts index e523251..f453dbc 100644 --- a/packages/providers/src/providers/sources/lookmovie/util.ts +++ b/packages/providers/src/providers/sources/lookmovie/util.ts @@ -1,9 +1,9 @@ -import type { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; import { compareMedia } from '@/utils/compare'; -import type { ScrapeContext } from '@/utils/context'; +import { ScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; -import type { Result, ResultItem, ShowDataResult, episodeObj } from './type'; +import { Result, ResultItem, ShowDataResult, episodeObj } from './type'; import { getVideo } from './video'; export const baseUrl = 'https://lmscript.xyz'; diff --git a/packages/providers/src/providers/sources/lookmovie/video.ts b/packages/providers/src/providers/sources/lookmovie/video.ts index 7990330..8e8e3c4 100644 --- a/packages/providers/src/providers/sources/lookmovie/video.ts +++ b/packages/providers/src/providers/sources/lookmovie/video.ts @@ -1,9 +1,8 @@ -import type { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; -import type { Caption} from '@/providers/captions'; -import { labelToLanguageCode, removeDuplicatedLanguages } from '@/providers/captions'; -import type { ScrapeContext } from '@/utils/context'; +import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import { Caption, labelToLanguageCode, removeDuplicatedLanguages } from '@/providers/captions'; +import { ScrapeContext } from '@/utils/context'; -import type { StreamsDataResult } from './type'; +import { StreamsDataResult } from './type'; import { baseUrl } from './util'; export async function getVideoSources( diff --git a/packages/providers/src/providers/sources/m4ufree.ts b/packages/providers/src/providers/sources/m4ufree.ts new file mode 100644 index 0000000..6cbb2bc --- /dev/null +++ b/packages/providers/src/providers/sources/m4ufree.ts @@ -0,0 +1,156 @@ +// kinda based on m4uscraper by Paradox_77 +// thanks Paradox_77 +import { load } from 'cheerio'; + +import { SourcererEmbed, makeSourcerer } from '@/providers/base'; +import { compareMedia } from '@/utils/compare'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { makeCookieHeader, parseSetCookie } from '@/utils/cookie'; +import { NotFoundError } from '@/utils/errors'; + +let baseUrl = 'https://m4ufree.tv'; + +const universalScraper = async (ctx: MovieScrapeContext | ShowScrapeContext) => { + // this redirects to ww1.m4ufree.tv or ww2.m4ufree.tv + // if i explicitly keep the base ww1 while the load balancers thinks ww2 is optimal + // it will keep redirecting all the requests + // not only that but the last iframe request will fail + const homePage = await ctx.proxiedFetcher.full(baseUrl); + baseUrl = new URL(homePage.finalUrl).origin; + + const searchSlug = ctx.media.title + .replace(/'/g, '') + .replace(/!|@|%|\^|\*|\(|\)|\+|=|<|>|\?|\/|,|\.|:|;|'| |"|&|#|\[|\]|~|$|_/g, '-') + .replace(/-+-/g, '-') + .replace(/^-+|-+$/g, '') + .replace(/Ă¢â‚¬â€œ/g, ''); + + const searchPage$ = load( + await ctx.proxiedFetcher(`/search/${searchSlug}.html`, { + baseUrl, + query: { + type: ctx.media.type === 'movie' ? 'movie' : 'tvs', + }, + }), + ); + + const searchResults: { title: string; year: number | undefined; url: string }[] = []; + searchPage$('.item').each((_, element) => { + const [, title, year] = + searchPage$(element) + // the title emement on their page is broken + // it just breaks when the titles are too big + .find('.imagecover a') + .attr('title') + // ex-titles: Home Alone 1990, Avengers Endgame (2019), The Curse (2023-) + ?.match(/^(.*?)\s*(?:\(?\s*(\d{4})(?:\s*-\s*\d{0,4})?\s*\)?)?\s*$/) || []; + const url = searchPage$(element).find('a').attr('href'); + + if (!title || !url) return; + + searchResults.push({ title, year: year ? parseInt(year, 10) : undefined, url }); + }); + + const watchPageUrl = searchResults.find((x) => x && compareMedia(ctx.media, x.title, x.year))?.url; + if (!watchPageUrl) throw new NotFoundError('No watchable item found'); + + ctx.progress(25); + + const watchPage = await ctx.proxiedFetcher.full(watchPageUrl, { + baseUrl, + readHeaders: ['Set-Cookie'], + }); + + ctx.progress(50); + + let watchPage$ = load(watchPage.body); + + const csrfToken = watchPage$('script:contains("_token:")') + .html() + ?.match(/_token:\s?'(.*)'/m)?.[1]; + if (!csrfToken) throw new Error('Failed to find csrfToken'); + + const laravelSession = parseSetCookie(watchPage.headers.get('Set-Cookie') ?? '').laravel_session; + if (!laravelSession?.value) throw new Error('Failed to find cookie'); + + const cookie = makeCookieHeader({ [laravelSession.name]: laravelSession.value }); + + if (ctx.media.type === 'show') { + const s = ctx.media.season.number < 10 ? `0${ctx.media.season.number}` : ctx.media.season.number.toString(); + const e = ctx.media.episode.number < 10 ? `0${ctx.media.episode.number}` : ctx.media.episode.number.toString(); + + const episodeToken = watchPage$(`button:contains("S${s}-E${e}")`).attr('idepisode'); + if (!episodeToken) throw new Error('Failed to find episodeToken'); + + watchPage$ = load( + await ctx.proxiedFetcher('/ajaxtv', { + baseUrl, + method: 'POST', + body: new URLSearchParams({ + idepisode: episodeToken, + _token: csrfToken, + }), + headers: { + cookie, + }, + }), + ); + } + + ctx.progress(75); + + const embeds: SourcererEmbed[] = []; + + const sources: { name: string; data: string }[] = watchPage$('div.row.justify-content-md-center div.le-server') + .map((_, element) => { + const name = watchPage$(element).find('span').text().toLowerCase().replace('#', ''); + const data = watchPage$(element).find('span').attr('data'); + + if (!data || !name) return null; + return { name, data }; + }) + .get(); + + for (const source of sources) { + let embedId; + if (source.name === 'm') + embedId = 'playm4u-m'; // TODO + else if (source.name === 'nm') embedId = 'playm4u-nm'; + else if (source.name === 'h') embedId = 'hydrax'; + else continue; + + const iframePage$ = load( + await ctx.proxiedFetcher('/ajax', { + baseUrl, + method: 'POST', + body: new URLSearchParams({ + m4u: source.data, + _token: csrfToken, + }), + headers: { + cookie, + }, + }), + ); + + const url = iframePage$('iframe').attr('src'); + if (!url) continue; + + ctx.progress(100); + + embeds.push({ embedId, url }); + } + + return { + embeds, + }; +}; + +export const m4uScraper = makeSourcerer({ + id: 'm4ufree', + name: 'M4UFree', + rank: 125, + flags: [], + scrapeMovie: universalScraper, + scrapeShow: universalScraper, +}); diff --git a/packages/providers/src/providers/sources/nepu/index.ts b/packages/providers/src/providers/sources/nepu/index.ts index cc4aa3e..8f3a094 100644 --- a/packages/providers/src/providers/sources/nepu/index.ts +++ b/packages/providers/src/providers/sources/nepu/index.ts @@ -1,15 +1,14 @@ import { load } from 'cheerio'; -import type { SourcererOutput} from '@/providers/base'; -import { makeSourcerer } from '@/providers/base'; +import { SourcererOutput, makeSourcerer } from '@/providers/base'; import { compareTitle } from '@/utils/compare'; -import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; -import type { SearchResults } from './types'; +import { SearchResults } from './types'; -const nepuBase = 'https://nepu.to'; -const nepuReferer = `${nepuBase}/`; +const nepuBase = 'https://nepu.io'; +const nepuReferer = 'https://nepu.to'; const universalScraper = async (ctx: MovieScrapeContext | ShowScrapeContext) => { const searchResultRequest = await ctx.proxiedFetcher('/ajax/posts', { @@ -64,11 +63,11 @@ const universalScraper = async (ctx: MovieScrapeContext | ShowScrapeContext) => captions: [], playlist: streamUrl[1], type: 'hls', - flags: [], headers: { - Origin: nepuBase, - Referer: nepuReferer, + Origin: nepuReferer, + Referer: `${nepuReferer}/`, }, + flags: [], }, ], } as SourcererOutput; @@ -78,8 +77,8 @@ export const nepuScraper = makeSourcerer({ id: 'nepu', name: 'Nepu', rank: 80, - flags: [], disabled: true, + flags: [], scrapeMovie: universalScraper, scrapeShow: universalScraper, }); diff --git a/packages/providers/src/providers/sources/nepu/types.ts b/packages/providers/src/providers/sources/nepu/types.ts index 1a00719..200995a 100644 --- a/packages/providers/src/providers/sources/nepu/types.ts +++ b/packages/providers/src/providers/sources/nepu/types.ts @@ -1,8 +1,8 @@ -export interface SearchResults { +export type SearchResults = { data: { id: number; name: string; url: string; type: 'Movie' | 'Serie'; }[]; -} +}; diff --git a/packages/providers/src/providers/sources/nites.ts b/packages/providers/src/providers/sources/nites.ts index 822ec1b..4a3570a 100644 --- a/packages/providers/src/providers/sources/nites.ts +++ b/packages/providers/src/providers/sources/nites.ts @@ -1,9 +1,8 @@ import { load } from 'cheerio'; -import type { SourcererOutput} from '@/providers/base'; -import { makeSourcerer } from '@/providers/base'; +import { SourcererOutput, makeSourcerer } from '@/providers/base'; import { compareMedia } from '@/utils/compare'; -import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; const baseUrl = 'https://w1.nites.is'; diff --git a/packages/providers/src/providers/sources/nsbx.ts b/packages/providers/src/providers/sources/nsbx.ts index 4eb2d1b..199e627 100644 --- a/packages/providers/src/providers/sources/nsbx.ts +++ b/packages/providers/src/providers/sources/nsbx.ts @@ -1,14 +1,8 @@ import { flags } from '@/entrypoint/utils/targets'; -import type { SourcererEmbed, SourcererOutput} from '@/providers/base'; -import { makeSourcerer } from '@/providers/base'; -import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; -export const headers = { - Origin: 'https://extension.works.again.with.nsbx', - Referer: 'https://extension.works.again.with.nsbx', -}; - async function comboScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promise { const query = { title: ctx.media.title, @@ -16,30 +10,31 @@ async function comboScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promis tmdbId: ctx.media.tmdbId, imdbId: ctx.media.imdbId, type: ctx.media.type, - season: '', - episode: '', + ...(ctx.media.type === 'show' && { + season: ctx.media.season.number.toString(), + episode: ctx.media.episode.number.toString(), + }), }; - if (ctx.media.type === 'show') { - query.season = ctx.media.season.number.toString(); - query.episode = ctx.media.episode.number.toString(); - } + const res: { providers: string[]; endpoint: string } = await ctx.fetcher('https://api.nsbx.ru/status'); - const result = await ctx.fetcher(`https://api.nsbx.ru/search?query=${encodeURIComponent(JSON.stringify(query))}`, { - headers, - }); + if (res.providers?.length === 0) throw new NotFoundError('No providers available'); + if (!res.endpoint) throw new Error('No endpoint returned'); - if (result.embeds.length === 0) throw new NotFoundError('No watchable item found'); + const embeds = res.providers.map((provider: string) => ({ + embedId: provider, + url: `${JSON.stringify(query)}|${res.endpoint}`, + })); return { - embeds: result.embeds as SourcererEmbed[], + embeds, }; } export const nsbxScraper = makeSourcerer({ id: 'nsbx', name: 'NSBX', - rank: 150, + rank: 129, flags: [flags.CORS_ALLOWED], disabled: false, scrapeMovie: comboScraper, diff --git a/packages/providers/src/providers/sources/primewire/index.ts b/packages/providers/src/providers/sources/primewire/index.ts index 81a0afb..42c78cd 100644 --- a/packages/providers/src/providers/sources/primewire/index.ts +++ b/packages/providers/src/providers/sources/primewire/index.ts @@ -2,7 +2,7 @@ import { load } from 'cheerio'; import { flags } from '@/entrypoint/utils/targets'; import { makeSourcerer } from '@/providers/base'; -import type { ScrapeContext } from '@/utils/context'; +import { ScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; import { primewireApiKey, primewireBase } from './common'; @@ -80,7 +80,7 @@ async function getStreams(title: string) { export const primewireScraper = makeSourcerer({ id: 'primewire', name: 'Primewire', - rank: 110, + rank: 1, flags: [flags.CORS_ALLOWED], async scrapeMovie(ctx) { if (!ctx.media.imdbId) throw new Error('No imdbId provided'); diff --git a/packages/providers/src/providers/sources/redstar.ts b/packages/providers/src/providers/sources/redstar.ts new file mode 100644 index 0000000..18190df --- /dev/null +++ b/packages/providers/src/providers/sources/redstar.ts @@ -0,0 +1,43 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +const universalScraper = async (ctx: ShowScrapeContext | MovieScrapeContext): Promise => { + try { + const res = await ctx.fetcher.full(`https://red-star.ningai.workers.dev/scrape/showbox`, { + query: { + type: ctx.media.type, + title: ctx.media.title, + releaseYear: ctx.media.releaseYear.toString(), + tmdbId: ctx.media.tmdbId, + imdbId: ctx.media.imdbId ?? '', + ...(ctx.media.type === 'show' && { + episodeNumber: ctx.media.episode.number.toString(), + episodeTmdbId: ctx.media.episode.tmdbId, + seasonNumber: ctx.media.season.number.toString(), + seasonTmdbId: ctx.media.season.tmdbId, + }), + }, + }); + + if (res.statusCode === 200 && res.body.stream?.length) + return { stream: res.body.stream, embeds: [] } as SourcererOutput; + if (res.statusCode === 404) throw new NotFoundError('No watchable item found'); + + throw new Error(res.body.message ?? 'An error has occurred!'); + } catch (e: any) { + if (e instanceof NotFoundError) throw new NotFoundError(e.message); + throw new Error(e.message ?? 'An error has occurred!'); + } +}; + +export const redStarScraper = makeSourcerer({ + id: 'redstar', + name: 'redStar', + disabled: true, + rank: 131, + flags: [flags.CORS_ALLOWED], + scrapeMovie: universalScraper, + scrapeShow: universalScraper, +}); diff --git a/packages/providers/src/providers/sources/ridomovies/index.ts b/packages/providers/src/providers/sources/ridomovies/index.ts index 1017ee7..638ea13 100644 --- a/packages/providers/src/providers/sources/ridomovies/index.ts +++ b/packages/providers/src/providers/sources/ridomovies/index.ts @@ -1,14 +1,13 @@ import { load } from 'cheerio'; import { flags } from '@/entrypoint/utils/targets'; -import type { SourcererEmbed} from '@/providers/base'; -import { makeSourcerer } from '@/providers/base'; +import { SourcererEmbed, makeSourcerer } from '@/providers/base'; import { closeLoadScraper } from '@/providers/embeds/closeload'; import { ridooScraper } from '@/providers/embeds/ridoo'; -import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; -import type { IframeSourceResult, SearchResult } from './types'; +import { IframeSourceResult, SearchResult } from './types'; const ridoMoviesBase = `https://ridomovies.tv`; const ridoMoviesApiBase = `${ridoMoviesBase}/core/api`; diff --git a/packages/providers/src/providers/sources/ridomovies/types.ts b/packages/providers/src/providers/sources/ridomovies/types.ts index d5ba25d..a030738 100644 --- a/packages/providers/src/providers/sources/ridomovies/types.ts +++ b/packages/providers/src/providers/sources/ridomovies/types.ts @@ -65,14 +65,14 @@ export interface SearchResultItem { contentable: Contentable; } -export interface SearchResult { +export type SearchResult = { data: { items: SearchResultItem[]; }; -} +}; -export interface IframeSourceResult { +export type IframeSourceResult = { data: { url: string; }[]; -} +}; diff --git a/packages/providers/src/providers/sources/showbox/index.ts b/packages/providers/src/providers/sources/showbox/index.ts index 32fec19..9901a52 100644 --- a/packages/providers/src/providers/sources/showbox/index.ts +++ b/packages/providers/src/providers/sources/showbox/index.ts @@ -1,9 +1,8 @@ import { flags } from '@/entrypoint/utils/targets'; -import type { SourcererOutput} from '@/providers/base'; -import { makeSourcerer } from '@/providers/base'; +import { SourcererOutput, makeSourcerer } from '@/providers/base'; import { febboxMp4Scraper } from '@/providers/embeds/febbox/mp4'; import { compareTitle } from '@/utils/compare'; -import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; import { sendRequest } from './sendRequest'; diff --git a/packages/providers/src/providers/sources/smashystream/index.ts b/packages/providers/src/providers/sources/smashystream/index.ts index 8dfea61..cc91cef 100644 --- a/packages/providers/src/providers/sources/smashystream/index.ts +++ b/packages/providers/src/providers/sources/smashystream/index.ts @@ -1,9 +1,8 @@ import { flags } from '@/entrypoint/utils/targets'; -import type { SourcererOutput} from '@/providers/base'; -import { makeSourcerer } from '@/providers/base'; +import { SourcererOutput, makeSourcerer } from '@/providers/base'; import { smashyStreamOScraper } from '@/providers/embeds/smashystream/opstream'; import { smashyStreamFScraper } from '@/providers/embeds/smashystream/video1'; -import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; const universalScraper = async (ctx: ShowScrapeContext | MovieScrapeContext): Promise => { // theres no point in fetching the player page @@ -12,17 +11,17 @@ const universalScraper = async (ctx: ShowScrapeContext | MovieScrapeContext): Pr const query = ctx.media.type === 'movie' ? `?tmdb=${ctx.media.tmdbId}` - : `?tmdbId=${ctx.media.tmdbId}&season=${ctx.media.season.number}&episode=${ctx.media.episode.number}`; + : `?tmdb=${ctx.media.tmdbId}&season=${ctx.media.season.number}&episode=${ctx.media.episode.number}`; return { embeds: [ { embedId: smashyStreamFScraper.id, - url: `https://embed.smashystream.com/video1dn.php${query}`, + url: `https://embed.smashystream.com/videofeee.php${query}`, }, { embedId: smashyStreamOScraper.id, - url: `https://embed.smashystream.com/videoop.php${query}`, + url: `https://embed.smashystream.com/shortmoviec.php${query}`, }, ], }; @@ -32,6 +31,7 @@ export const smashyStreamScraper = makeSourcerer({ id: 'smashystream', name: 'SmashyStream', rank: 30, + disabled: true, flags: [flags.CORS_ALLOWED], scrapeMovie: universalScraper, scrapeShow: universalScraper, diff --git a/packages/providers/src/providers/sources/soapertv/index.ts b/packages/providers/src/providers/sources/soapertv/index.ts index 4d8cbba..54e371f 100644 --- a/packages/providers/src/providers/sources/soapertv/index.ts +++ b/packages/providers/src/providers/sources/soapertv/index.ts @@ -1,14 +1,14 @@ import { load } from 'cheerio'; import { flags } from '@/entrypoint/utils/targets'; -import type { Caption} from '@/providers/captions'; -import { labelToLanguageCode } from '@/providers/captions'; -import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { Caption, labelToLanguageCode } from '@/providers/captions'; +import { Stream } from '@/providers/streams'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; +import { convertPlaylistsToDataUrls } from '@/utils/playlist'; -import type { InfoResponse } from './types'; -import type { SourcererOutput} from '../../base'; -import { makeSourcerer } from '../../base'; +import { InfoResponse } from './types'; +import { SourcererOutput, makeSourcerer } from '../../base'; const baseUrl = 'https://soaper.tv'; @@ -43,13 +43,11 @@ const universalScraper = async (ctx: MovieScrapeContext | ShowScrapeContext): Pr const contentPage$ = load(contentPage); const pass = contentPage$('#hId').attr('value'); - const param = contentPage$('#divU').text(); - if (!pass || !param) throw new NotFoundError('Content not found'); + if (!pass) throw new NotFoundError('Content not found'); const formData = new URLSearchParams(); formData.append('pass', pass); - formData.append('param', param); formData.append('e2', '0'); formData.append('server', '0'); @@ -92,20 +90,22 @@ const universalScraper = async (ctx: MovieScrapeContext | ShowScrapeContext): Pr stream: [ { id: 'primary', - playlist: streamResJson.val, + playlist: await convertPlaylistsToDataUrls(ctx.proxiedFetcher, `${baseUrl}/${streamResJson.val}`), type: 'hls', - flags: [flags.IP_LOCKED], + proxyDepth: 2, + flags: [flags.CORS_ALLOWED], captions, }, ...(streamResJson.val_bak ? [ { id: 'backup', - playlist: streamResJson.val_bak, - type: 'hls' as const, - flags: [flags.IP_LOCKED], + playlist: await convertPlaylistsToDataUrls(ctx.proxiedFetcher, `${baseUrl}/${streamResJson.val_bak}`), + type: 'hls', + flags: [flags.CORS_ALLOWED], + proxyDepth: 2, captions, - }, + } as Stream, ] : []), ], @@ -115,8 +115,8 @@ const universalScraper = async (ctx: MovieScrapeContext | ShowScrapeContext): Pr export const soaperTvScraper = makeSourcerer({ id: 'soapertv', name: 'SoaperTV', - rank: 115, - flags: [flags.IP_LOCKED], + rank: 126, + flags: [flags.CORS_ALLOWED], scrapeMovie: universalScraper, scrapeShow: universalScraper, }); diff --git a/packages/providers/src/providers/sources/tugaflix/index.ts b/packages/providers/src/providers/sources/tugaflix/index.ts index 379e805..eda8042 100644 --- a/packages/providers/src/providers/sources/tugaflix/index.ts +++ b/packages/providers/src/providers/sources/tugaflix/index.ts @@ -1,8 +1,7 @@ import { load } from 'cheerio'; import { flags } from '@/entrypoint/utils/targets'; -import type { SourcererEmbed} from '@/providers/base'; -import { makeSourcerer } from '@/providers/base'; +import { SourcererEmbed, makeSourcerer } from '@/providers/base'; import { compareMedia } from '@/utils/compare'; import { NotFoundError } from '@/utils/errors'; diff --git a/packages/providers/src/providers/sources/vidsrc/scrape-movie.ts b/packages/providers/src/providers/sources/vidsrc/scrape-movie.ts index 8adebab..585eb31 100644 --- a/packages/providers/src/providers/sources/vidsrc/scrape-movie.ts +++ b/packages/providers/src/providers/sources/vidsrc/scrape-movie.ts @@ -1,5 +1,5 @@ import { getVidSrcMovieSources } from '@/providers/sources/vidsrc/scrape'; -import type { MovieScrapeContext } from '@/utils/context'; +import { MovieScrapeContext } from '@/utils/context'; export async function scrapeMovie(ctx: MovieScrapeContext) { return { diff --git a/packages/providers/src/providers/sources/vidsrc/scrape-show.ts b/packages/providers/src/providers/sources/vidsrc/scrape-show.ts index 33bbe12..ff5d2a4 100644 --- a/packages/providers/src/providers/sources/vidsrc/scrape-show.ts +++ b/packages/providers/src/providers/sources/vidsrc/scrape-show.ts @@ -1,5 +1,5 @@ import { getVidSrcShowSources } from '@/providers/sources/vidsrc/scrape'; -import type { ShowScrapeContext } from '@/utils/context'; +import { ShowScrapeContext } from '@/utils/context'; export async function scrapeShow(ctx: ShowScrapeContext) { return { diff --git a/packages/providers/src/providers/sources/vidsrc/scrape.ts b/packages/providers/src/providers/sources/vidsrc/scrape.ts index a05d95b..81dceff 100644 --- a/packages/providers/src/providers/sources/vidsrc/scrape.ts +++ b/packages/providers/src/providers/sources/vidsrc/scrape.ts @@ -1,10 +1,10 @@ import { load } from 'cheerio'; -import type { SourcererEmbed } from '@/providers/base'; +import { SourcererEmbed } from '@/providers/base'; import { streambucketScraper } from '@/providers/embeds/streambucket'; import { vidsrcembedScraper } from '@/providers/embeds/vidsrc'; import { vidsrcBase, vidsrcRCPBase } from '@/providers/sources/vidsrc/common'; -import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; function decodeSrc(encoded: string, seed: string) { let decoded = ''; diff --git a/packages/providers/src/providers/sources/vidsrcto/common.ts b/packages/providers/src/providers/sources/vidsrcto/common.ts index 33a3bb5..33c436e 100644 --- a/packages/providers/src/providers/sources/vidsrcto/common.ts +++ b/packages/providers/src/providers/sources/vidsrcto/common.ts @@ -1,10 +1,10 @@ // This file is based on https://github.com/Ciarands/vidsrc-to-resolver/blob/dffa45e726a4b944cb9af0c9e7630476c93c0213/vidsrc.py#L16 // Full credits to @Ciarands! -const DECRYPTION_KEY = "WXrUARXb1aDLaZjI"; +const DECRYPTION_KEY = 'WXrUARXb1aDLaZjI'; export const decodeBase64UrlSafe = (str: string) => { - const standardizedInput = str.replace(/_/g, "/").replace(/-/g, "+"); + const standardizedInput = str.replace(/_/g, '/').replace(/-/g, '+'); const decodedData = atob(standardizedInput); const bytes = new Uint8Array(decodedData.length); @@ -26,21 +26,17 @@ export const decodeData = (key: string, data: any) => { } index1 = 0; let index2 = 0; - let finalKey = ""; + let finalKey = ''; for (let char = 0; char < data.length; char += 1) { index1 = (index1 + 1) % 256; index2 = (index2 + state[index1]) % 256; const temp = state[index1]; state[index1] = state[index2]; state[index2] = temp; - if (typeof data[char] === "string") { - finalKey += String.fromCharCode( - data[char].charCodeAt(0) ^ state[(state[index1] + state[index2]) % 256], - ); - } else if (typeof data[char] === "number") { - finalKey += String.fromCharCode( - data[char] ^ state[(state[index1] + state[index2]) % 256], - ); + if (typeof data[char] === 'string') { + finalKey += String.fromCharCode(data[char].charCodeAt(0) ^ state[(state[index1] + state[index2]) % 256]); + } else if (typeof data[char] === 'number') { + finalKey += String.fromCharCode(data[char] ^ state[(state[index1] + state[index2]) % 256]); } } return finalKey; diff --git a/packages/providers/src/providers/sources/vidsrcto/index.ts b/packages/providers/src/providers/sources/vidsrcto/index.ts index 08abe6d..d048b69 100644 --- a/packages/providers/src/providers/sources/vidsrcto/index.ts +++ b/packages/providers/src/providers/sources/vidsrcto/index.ts @@ -1,11 +1,11 @@ import { load } from 'cheerio'; -import type { SourcererEmbed, SourcererOutput} from '@/providers/base'; -import { makeSourcerer } from '@/providers/base'; -import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { flags } from '@/entrypoint/utils/targets'; +import { SourcererEmbed, SourcererOutput, makeSourcerer } from '@/providers/base'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; import { decryptSourceUrl } from './common'; -import type { SourceResult, SourcesResult } from './types'; +import { SourceResult, SourcesResult } from './types'; const vidSrcToBase = 'https://vidsrc.to'; const referer = `${vidSrcToBase}/`; @@ -82,8 +82,9 @@ const universalScraper = async (ctx: ShowScrapeContext | MovieScrapeContext): Pr export const vidSrcToScraper = makeSourcerer({ id: 'vidsrcto', name: 'VidSrcTo', + disabled: true, scrapeMovie: universalScraper, scrapeShow: universalScraper, - flags: [], + flags: [flags.PROXY_BLOCKED], rank: 130, }); diff --git a/packages/providers/src/providers/sources/vidsrcto/types.ts b/packages/providers/src/providers/sources/vidsrcto/types.ts index 1471ca3..0694b15 100644 --- a/packages/providers/src/providers/sources/vidsrcto/types.ts +++ b/packages/providers/src/providers/sources/vidsrcto/types.ts @@ -1,7 +1,7 @@ -export interface VidSrcToResponse { +export type VidSrcToResponse = { status: number; result: T; -} +}; export type SourcesResult = VidSrcToResponse< { diff --git a/packages/providers/src/providers/sources/warezcdn/common.ts b/packages/providers/src/providers/sources/warezcdn/common.ts index 4d60aee..182b2b6 100644 --- a/packages/providers/src/providers/sources/warezcdn/common.ts +++ b/packages/providers/src/providers/sources/warezcdn/common.ts @@ -1,4 +1,4 @@ -import type { ScrapeContext } from '@/utils/context'; +import { ScrapeContext } from '@/utils/context'; export const warezcdnBase = 'https://embed.warezcdn.com'; export const warezcdnApiBase = 'https://warezcdn.com/embed'; diff --git a/packages/providers/src/providers/sources/warezcdn/index.ts b/packages/providers/src/providers/sources/warezcdn/index.ts index 3cc097b..a119f8f 100644 --- a/packages/providers/src/providers/sources/warezcdn/index.ts +++ b/packages/providers/src/providers/sources/warezcdn/index.ts @@ -1,52 +1,45 @@ -import type { SourcererEmbed } from "@/providers/base"; -import { flags } from "@/entrypoint/utils/targets"; -import { makeSourcerer } from "@/providers/base"; -import { mixdropScraper } from "@/providers/embeds/mixdrop"; -import { warezcdnembedHlsScraper } from "@/providers/embeds/warezcdn/hls"; -import { warezcdnembedMp4Scraper } from "@/providers/embeds/warezcdn/mp4"; -import { NotFoundError } from "@/utils/errors"; -import { load } from "cheerio"; - -import { getExternalPlayerUrl, warezcdnBase } from "./common"; -import { SerieAjaxResponse } from "./types"; +import { load } from 'cheerio'; + +import { flags } from '@/entrypoint/utils/targets'; +import { SourcererEmbed, makeSourcerer } from '@/providers/base'; +import { mixdropScraper } from '@/providers/embeds/mixdrop'; +import { warezcdnembedHlsScraper } from '@/providers/embeds/warezcdn/hls'; +import { warezcdnembedMp4Scraper } from '@/providers/embeds/warezcdn/mp4'; +import { warezPlayerScraper } from '@/providers/embeds/warezcdn/warezplayer'; +import { NotFoundError } from '@/utils/errors'; + +import { getExternalPlayerUrl, warezcdnBase } from './common'; +import { SerieAjaxResponse } from './types'; export const warezcdnScraper = makeSourcerer({ - id: "warezcdn", - name: "WarezCDN", + id: 'warezcdn', + name: 'WarezCDN', rank: 81, flags: [flags.CORS_ALLOWED], scrapeMovie: async (ctx) => { - if (!ctx.media.imdbId) - throw new NotFoundError("This source requires IMDB id."); + if (!ctx.media.imdbId) throw new NotFoundError('This source requires IMDB id.'); - const serversPage = await ctx.proxiedFetcher( - `/filme/${ctx.media.imdbId}`, - { - baseUrl: warezcdnBase, - }, - ); + const serversPage = await ctx.proxiedFetcher(`/filme/${ctx.media.imdbId}`, { + baseUrl: warezcdnBase, + }); const $ = load(serversPage); - const embedsHost = $(".hostList.active [data-load-embed]").get(); + const embedsHost = $('.hostList.active [data-load-embed]').get(); const embeds: SourcererEmbed[] = []; embedsHost.forEach(async (element) => { - const embedHost = $(element).attr("data-load-embed-host")!; - const embedUrl = $(element).attr("data-load-embed")!; - - if (embedHost === "mixdrop") { - const realEmbedUrl = await getExternalPlayerUrl( - ctx, - "mixdrop", - embedUrl, - ); - if (!realEmbedUrl) throw new Error("Could not find embed url"); + const embedHost = $(element).attr('data-load-embed-host')!; + const embedUrl = $(element).attr('data-load-embed')!; + + if (embedHost === 'mixdrop') { + const realEmbedUrl = await getExternalPlayerUrl(ctx, 'mixdrop', embedUrl); + if (!realEmbedUrl) throw new Error('Could not find embed url'); embeds.push({ embedId: mixdropScraper.id, url: realEmbedUrl, }); - } else if (embedHost === "warezcdn") { + } else if (embedHost === 'warezcdn') { embeds.push( { embedId: warezcdnembedHlsScraper.id, @@ -56,6 +49,10 @@ export const warezcdnScraper = makeSourcerer({ embedId: warezcdnembedMp4Scraper.id, url: embedUrl, }, + { + embedId: warezPlayerScraper.id, + url: embedUrl, + }, ); } }); @@ -65,21 +62,18 @@ export const warezcdnScraper = makeSourcerer({ }; }, scrapeShow: async (ctx) => { - if (!ctx.media.imdbId) - throw new NotFoundError("This source requires IMDB id."); + if (!ctx.media.imdbId) throw new NotFoundError('This source requires IMDB id.'); const url = `${warezcdnBase}/serie/${ctx.media.imdbId}/${ctx.media.season.number}/${ctx.media.episode.number}`; const serversPage = await ctx.proxiedFetcher(url); - const episodeId = serversPage.match( - /\$\('\[data-load-episode-content="(\d+)"\]'\)/, - )?.[1]; + const episodeId = serversPage.match(/\$\('\[data-load-episode-content="(\d+)"\]'\)/)?.[1]; - if (!episodeId) throw new NotFoundError("Failed to find episode id"); + if (!episodeId) throw new NotFoundError('Failed to find episode id'); const streamsData = await ctx.proxiedFetcher(`/serieAjax.php`, { - method: "POST", + method: 'POST', baseUrl: warezcdnBase, body: new URLSearchParams({ getAudios: episodeId, @@ -87,25 +81,25 @@ export const warezcdnScraper = makeSourcerer({ headers: { Origin: warezcdnBase, Referer: url, - "X-Requested-With": "XMLHttpRequest", + 'X-Requested-With': 'XMLHttpRequest', }, }); const streams: SerieAjaxResponse = JSON.parse(streamsData); - const list = streams.list["0"]; + const list = streams.list['0']; const embeds: SourcererEmbed[] = []; // 3 means ok - if (list.mixdropStatus === "3") { - const realEmbedUrl = await getExternalPlayerUrl(ctx, "mixdrop", list.id); - if (!realEmbedUrl) throw new Error("Could not find embed url"); + if (list.mixdropStatus === '3') { + const realEmbedUrl = await getExternalPlayerUrl(ctx, 'mixdrop', list.id); + if (!realEmbedUrl) throw new Error('Could not find embed url'); embeds.push({ embedId: mixdropScraper.id, url: realEmbedUrl, }); } - if (list.warezcdnStatus === "3") { + if (list.warezcdnStatus === '3') { embeds.push( { embedId: warezcdnembedHlsScraper.id, diff --git a/packages/providers/src/providers/sources/warezcdn/types.ts b/packages/providers/src/providers/sources/warezcdn/types.ts index a7c7cec..38711ff 100644 --- a/packages/providers/src/providers/sources/warezcdn/types.ts +++ b/packages/providers/src/providers/sources/warezcdn/types.ts @@ -7,7 +7,9 @@ interface Data { warezcdnStatus: string; } -type List = Record; +type List = { + [key: string]: Data; +}; export interface SerieAjaxResponse { list: List; diff --git a/packages/providers/src/providers/sources/whvx.ts b/packages/providers/src/providers/sources/whvx.ts new file mode 100644 index 0000000..ad9bff4 --- /dev/null +++ b/packages/providers/src/providers/sources/whvx.ts @@ -0,0 +1,42 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { SourcererOutput, makeSourcerer } from '@/providers/base'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; + +export const baseUrl = 'https://api.whvx.net'; + +async function comboScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promise { + const query = { + title: ctx.media.title, + releaseYear: ctx.media.releaseYear, + tmdbId: ctx.media.tmdbId, + imdbId: ctx.media.imdbId, + type: ctx.media.type, + ...(ctx.media.type === 'show' && { + season: ctx.media.season.number.toString(), + episode: ctx.media.episode.number.toString(), + }), + }; + + const res: { providers: string[] } = await ctx.fetcher('/status', { baseUrl }); + + if (res.providers?.length === 0) throw new NotFoundError('No providers available'); + + const embeds = res.providers.map((provider: string) => ({ + embedId: provider, + url: JSON.stringify(query), + })); + + return { + embeds, + }; +} + +export const whvxScraper = makeSourcerer({ + id: 'whvx', + name: 'VidBinge', + rank: 128, + flags: [flags.CORS_ALLOWED], + scrapeMovie: comboScraper, + scrapeShow: comboScraper, +}); diff --git a/packages/providers/src/providers/sources/zoechip/common.ts b/packages/providers/src/providers/sources/zoechip/common.ts index 070d55b..55b37ac 100644 --- a/packages/providers/src/providers/sources/zoechip/common.ts +++ b/packages/providers/src/providers/sources/zoechip/common.ts @@ -3,17 +3,17 @@ import { upcloudScraper } from '@/providers/embeds/upcloud'; import { upstreamScraper } from '@/providers/embeds/upstream'; import { vidCloudScraper } from '@/providers/embeds/vidcloud'; import { getZoeChipSourceURL, getZoeChipSources } from '@/providers/sources/zoechip/scrape'; -import type { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; export const zoeBase = 'https://zoechip.cc'; -export interface ZoeChipSourceDetails { +export type ZoeChipSourceDetails = { type: string; // Only seen "iframe" so far link: string; sources: string[]; // Never seen this populated, assuming it's a string array tracks: string[]; // Never seen this populated, assuming it's a string array title: string; -} +}; export async function formatSource( ctx: MovieScrapeContext | ShowScrapeContext, diff --git a/packages/providers/src/providers/sources/zoechip/scrape-movie.ts b/packages/providers/src/providers/sources/zoechip/scrape-movie.ts index bdabad2..86161fc 100644 --- a/packages/providers/src/providers/sources/zoechip/scrape-movie.ts +++ b/packages/providers/src/providers/sources/zoechip/scrape-movie.ts @@ -1,6 +1,6 @@ import { createZoeChipStreamData } from '@/providers/sources/zoechip/common'; import { getZoeChipMovieID } from '@/providers/sources/zoechip/search'; -import type { MovieScrapeContext } from '@/utils/context'; +import { MovieScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; export async function scrapeMovie(ctx: MovieScrapeContext) { diff --git a/packages/providers/src/providers/sources/zoechip/scrape-show.ts b/packages/providers/src/providers/sources/zoechip/scrape-show.ts index 71f8cc9..fe9f4eb 100644 --- a/packages/providers/src/providers/sources/zoechip/scrape-show.ts +++ b/packages/providers/src/providers/sources/zoechip/scrape-show.ts @@ -1,7 +1,7 @@ import { createZoeChipStreamData } from '@/providers/sources/zoechip/common'; import { getZoeChipEpisodeID, getZoeChipSeasonID } from '@/providers/sources/zoechip/scrape'; import { getZoeChipShowID } from '@/providers/sources/zoechip/search'; -import type { ShowScrapeContext } from '@/utils/context'; +import { ShowScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; export async function scrapeShow(ctx: ShowScrapeContext) { diff --git a/packages/providers/src/providers/sources/zoechip/scrape.ts b/packages/providers/src/providers/sources/zoechip/scrape.ts index 5c42ccd..d3eb183 100644 --- a/packages/providers/src/providers/sources/zoechip/scrape.ts +++ b/packages/providers/src/providers/sources/zoechip/scrape.ts @@ -1,9 +1,8 @@ import { load } from 'cheerio'; -import type { ShowMedia } from '@/entrypoint/utils/media'; -import type { ZoeChipSourceDetails} from '@/providers/sources/zoechip/common'; -import { zoeBase } from '@/providers/sources/zoechip/common'; -import type { MovieScrapeContext, ScrapeContext, ShowScrapeContext } from '@/utils/context'; +import { ShowMedia } from '@/entrypoint/utils/media'; +import { ZoeChipSourceDetails, zoeBase } from '@/providers/sources/zoechip/common'; +import { MovieScrapeContext, ScrapeContext, ShowScrapeContext } from '@/utils/context'; export async function getZoeChipSources(ctx: MovieScrapeContext | ShowScrapeContext, id: string) { // Movies use /ajax/episode/list/ID diff --git a/packages/providers/src/providers/sources/zoechip/search.ts b/packages/providers/src/providers/sources/zoechip/search.ts index 9feb4bc..f3a838d 100644 --- a/packages/providers/src/providers/sources/zoechip/search.ts +++ b/packages/providers/src/providers/sources/zoechip/search.ts @@ -1,9 +1,9 @@ import { load } from 'cheerio'; -import type { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; import { zoeBase } from '@/providers/sources/zoechip/common'; import { compareMedia } from '@/utils/compare'; -import type { ScrapeContext } from '@/utils/context'; +import { ScrapeContext } from '@/utils/context'; export async function getZoeChipSearchResults(ctx: ScrapeContext, media: MovieMedia | ShowMedia) { const titleCleaned = media.title.toLocaleLowerCase().replace(/ /g, '-'); diff --git a/packages/providers/src/providers/streams.ts b/packages/providers/src/providers/streams.ts index c371857..113b9de 100644 --- a/packages/providers/src/providers/streams.ts +++ b/packages/providers/src/providers/streams.ts @@ -1,26 +1,26 @@ -import type { Flags } from '@/entrypoint/utils/targets'; -import type { Caption } from '@/providers/captions'; +import { Flags } from '@/entrypoint/utils/targets'; +import { Caption } from '@/providers/captions'; -export interface StreamFile { +export type StreamFile = { type: 'mp4'; url: string; -} +}; export type Qualities = 'unknown' | '360' | '480' | '720' | '1080' | '4k'; -interface ThumbnailTrack { +type ThumbnailTrack = { type: 'vtt'; url: string; -} +}; -interface StreamCommon { +type StreamCommon = { id: string; // only unique per output flags: Flags[]; captions: Caption[]; thumbnailTrack?: ThumbnailTrack; headers?: Record; // these headers HAVE to be set to watch the stream preferredHeaders?: Record; // these headers are optional, would improve the stream -} +}; export type FileBasedStream = StreamCommon & { type: 'file'; @@ -30,6 +30,7 @@ export type FileBasedStream = StreamCommon & { export type HlsBasedStream = StreamCommon & { type: 'hls'; playlist: string; + proxyDepth?: 0 | 1 | 2; }; export type Stream = FileBasedStream | HlsBasedStream; diff --git a/packages/providers/src/runners/individualRunner.ts b/packages/providers/src/runners/individualRunner.ts index a4c956c..f96ab3c 100644 --- a/packages/providers/src/runners/individualRunner.ts +++ b/packages/providers/src/runners/individualRunner.ts @@ -1,22 +1,25 @@ -import type { IndividualScraperEvents } from '@/entrypoint/utils/events'; -import type { ScrapeMedia } from '@/entrypoint/utils/media'; -import type { FeatureMap} from '@/entrypoint/utils/targets'; -import { flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; -import type { UseableFetcher } from '@/fetchers/types'; -import type { EmbedOutput, SourcererOutput } from '@/providers/base'; -import type { ProviderList } from '@/providers/get'; -import type { ScrapeContext } from '@/utils/context'; +import { IndividualScraperEvents } from '@/entrypoint/utils/events'; +import { ScrapeMedia } from '@/entrypoint/utils/media'; +import { FeatureMap, flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; +import { UseableFetcher } from '@/fetchers/types'; +import { EmbedOutput, SourcererOutput } from '@/providers/base'; +import { ProviderList } from '@/providers/get'; +import { ScrapeContext } from '@/utils/context'; import { NotFoundError } from '@/utils/errors'; +import { addOpenSubtitlesCaptions } from '@/utils/opensubtitles'; +import { requiresProxy, setupProxy } from '@/utils/proxy'; import { isValidStream, validatePlayableStreams } from '@/utils/valid'; -export interface IndividualSourceRunnerOptions { +export type IndividualSourceRunnerOptions = { features: FeatureMap; fetcher: UseableFetcher; proxiedFetcher: UseableFetcher; media: ScrapeMedia; id: string; events?: IndividualScraperEvents; -} + proxyStreams?: boolean; // temporary + disableOpensubtitles?: boolean; +}; export async function scrapeInvidualSource( list: ProviderList, @@ -56,6 +59,10 @@ export async function scrapeInvidualSource( output.stream = output.stream .filter((stream) => isValidStream(stream)) .filter((stream) => flagsAllowedInFeatures(ops.features, stream.flags)); + + output.stream = output.stream.map((stream) => + requiresProxy(stream) && ops.proxyStreams ? setupProxy(stream) : stream, + ); } if (!output) throw new Error('output is null'); @@ -67,6 +74,15 @@ export async function scrapeInvidualSource( return true; }); + // opensubtitles + if (!ops.disableOpensubtitles) + for (const embed of output.embeds) + embed.url = `${embed.url}${btoa('MEDIA=')}${btoa( + `${ops.media.imdbId}${ + ops.media.type === 'show' ? `.${ops.media.season.number}.${ops.media.episode.number}` : '' + }`, + )}`; + if ((!output.stream || output.stream.length === 0) && output.embeds.length === 0) throw new NotFoundError('No streams found'); @@ -74,19 +90,35 @@ export async function scrapeInvidualSource( if (output.stream && output.stream.length > 0 && output.embeds.length === 0) { const playableStreams = await validatePlayableStreams(output.stream, ops, sourceScraper.id); if (playableStreams.length === 0) throw new NotFoundError('No playable streams found'); + + // opensubtitles + if (!ops.disableOpensubtitles) + for (const playableStream of playableStreams) { + playableStream.captions = await addOpenSubtitlesCaptions( + playableStream.captions, + ops, + btoa( + `${ops.media.imdbId}${ + ops.media.type === 'show' ? `.${ops.media.season.number}.${ops.media.episode.number}` : '' + }`, + ), + ); + } output.stream = playableStreams; } return output; } -export interface IndividualEmbedRunnerOptions { +export type IndividualEmbedRunnerOptions = { features: FeatureMap; fetcher: UseableFetcher; proxiedFetcher: UseableFetcher; url: string; id: string; events?: IndividualScraperEvents; -} + proxyStreams?: boolean; // temporary + disableOpensubtitles?: boolean; +}; export async function scrapeIndividualEmbed( list: ProviderList, @@ -95,10 +127,14 @@ export async function scrapeIndividualEmbed( const embedScraper = list.embeds.find((v) => ops.id === v.id); if (!embedScraper) throw new Error('Embed with ID not found'); + let url = ops.url; + let media; + if (ops.url.includes(btoa('MEDIA='))) [url, media] = url.split(btoa('MEDIA=')); + const output = await embedScraper.scrape({ fetcher: ops.fetcher, proxiedFetcher: ops.proxiedFetcher, - url: ops.url, + url, progress(val) { ops.events?.update?.({ id: embedScraper.id, @@ -113,8 +149,17 @@ export async function scrapeIndividualEmbed( .filter((stream) => flagsAllowedInFeatures(ops.features, stream.flags)); if (output.stream.length === 0) throw new NotFoundError('No streams found'); + output.stream = output.stream.map((stream) => + requiresProxy(stream) && ops.proxyStreams ? setupProxy(stream) : stream, + ); + const playableStreams = await validatePlayableStreams(output.stream, ops, embedScraper.id); if (playableStreams.length === 0) throw new NotFoundError('No playable streams found'); + + if (media && !ops.disableOpensubtitles) + for (const playableStream of playableStreams) + playableStream.captions = await addOpenSubtitlesCaptions(playableStream.captions, ops, media); + output.stream = playableStreams; return output; diff --git a/packages/providers/src/runners/runner.ts b/packages/providers/src/runners/runner.ts index 95d1ae8..6c8ccaa 100644 --- a/packages/providers/src/runners/runner.ts +++ b/packages/providers/src/runners/runner.ts @@ -1,34 +1,35 @@ -import type { FullScraperEvents, UpdateEvent } from "@/entrypoint/utils/events"; -import type { ScrapeMedia } from "@/entrypoint/utils/media"; -import type { FeatureMap } from "@/entrypoint/utils/targets"; -import type { UseableFetcher } from "@/fetchers/types"; -import type { EmbedOutput, SourcererOutput } from "@/providers/base"; -import type { ProviderList } from "@/providers/get"; -import type { Stream } from "@/providers/streams"; -import type { ScrapeContext } from "@/utils/context"; -import { flagsAllowedInFeatures } from "@/entrypoint/utils/targets"; -import { NotFoundError } from "@/utils/errors"; -import { reorderOnIdList } from "@/utils/list"; -import { isValidStream, validatePlayableStream } from "@/utils/valid"; - -export interface RunOutput { +import { FullScraperEvents, UpdateEvent } from '@/entrypoint/utils/events'; +import { ScrapeMedia } from '@/entrypoint/utils/media'; +import { FeatureMap, flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; +import { UseableFetcher } from '@/fetchers/types'; +import { EmbedOutput, SourcererOutput } from '@/providers/base'; +import { ProviderList } from '@/providers/get'; +import { Stream } from '@/providers/streams'; +import { ScrapeContext } from '@/utils/context'; +import { NotFoundError } from '@/utils/errors'; +import { reorderOnIdList } from '@/utils/list'; +import { addOpenSubtitlesCaptions } from '@/utils/opensubtitles'; +import { requiresProxy, setupProxy } from '@/utils/proxy'; +import { isValidStream, validatePlayableStream } from '@/utils/valid'; + +export type RunOutput = { sourceId: string; embedId?: string; stream: Stream; -} +}; -export interface SourceRunOutput { +export type SourceRunOutput = { sourceId: string; stream: Stream[]; embeds: []; -} +}; -export interface EmbedRunOutput { +export type EmbedRunOutput = { embedId: string; stream: Stream[]; -} +}; -export interface ProviderRunnerOptions { +export type ProviderRunnerOptions = { fetcher: UseableFetcher; proxiedFetcher: UseableFetcher; features: FeatureMap; @@ -36,22 +37,19 @@ export interface ProviderRunnerOptions { embedOrder?: string[]; events?: FullScraperEvents; media: ScrapeMedia; -} - -export async function runAllProviders( - list: ProviderList, - ops: ProviderRunnerOptions, -): Promise { - const sources = reorderOnIdList(ops.sourceOrder ?? [], list.sources).filter( - (source) => { - if (ops.media.type === "movie") return !!source.scrapeMovie; - if (ops.media.type === "show") return !!source.scrapeShow; - return false; - }, - ); + proxyStreams?: boolean; // temporary + disableOpensubtitles?: boolean; +}; + +export async function runAllProviders(list: ProviderList, ops: ProviderRunnerOptions): Promise { + const sources = reorderOnIdList(ops.sourceOrder ?? [], list.sources).filter((source) => { + if (ops.media.type === 'movie') return !!source.scrapeMovie; + if (ops.media.type === 'show') return !!source.scrapeShow; + return false; + }); const embeds = reorderOnIdList(ops.embedOrder ?? [], list.embeds); const embedIds = embeds.map((embed) => embed.id); - let lastId = ""; + let lastId = ''; const contextBase: ScrapeContext = { fetcher: ops.fetcher, @@ -60,7 +58,7 @@ export async function runAllProviders( ops.events?.update?.({ id: lastId, percentage: val, - status: "pending", + status: 'pending', }); }, }; @@ -76,12 +74,12 @@ export async function runAllProviders( // run source scrapers let output: SourcererOutput | null = null; try { - if (ops.media.type === "movie" && source.scrapeMovie) + if (ops.media.type === 'movie' && source.scrapeMovie) output = await source.scrapeMovie({ ...contextBase, media: ops.media, }); - else if (ops.media.type === "show" && source.scrapeShow) + else if (ops.media.type === 'show' && source.scrapeShow) output = await source.scrapeShow({ ...contextBase, media: ops.media, @@ -89,18 +87,20 @@ export async function runAllProviders( if (output) { output.stream = (output.stream ?? []) .filter(isValidStream) - .filter((stream) => - flagsAllowedInFeatures(ops.features, stream.flags), - ); + .filter((stream) => flagsAllowedInFeatures(ops.features, stream.flags)); + + output.stream = output.stream.map((stream) => + requiresProxy(stream) && ops.proxyStreams ? setupProxy(stream) : stream, + ); } if (!output || (!output.stream?.length && !output.embeds.length)) { - throw new NotFoundError("No streams found"); + throw new NotFoundError('No streams found'); } } catch (error) { const updateParams: UpdateEvent = { id: source.id, percentage: 100, - status: error instanceof NotFoundError ? "notfound" : "failure", + status: error instanceof NotFoundError ? 'notfound' : 'failure', reason: error instanceof NotFoundError ? error.message : undefined, error: error instanceof NotFoundError ? undefined : error, }; @@ -108,16 +108,25 @@ export async function runAllProviders( ops.events?.update?.(updateParams); continue; } - if (!output) throw new Error("Invalid media type"); + if (!output) throw new Error('Invalid media type'); // return stream is there are any if (output.stream?.[0]) { - const playableStream = await validatePlayableStream( - output.stream[0], - ops, - source.id, - ); - if (!playableStream) throw new NotFoundError("No streams found"); + const playableStream = await validatePlayableStream(output.stream[0], ops, source.id); + if (!playableStream) throw new NotFoundError('No streams found'); + + // opensubtitles + if (!ops.disableOpensubtitles) + playableStream.captions = await addOpenSubtitlesCaptions( + playableStream.captions, + ops, + btoa( + `${ops.media.imdbId}${ + ops.media.type === 'show' ? `.${ops.media.season.number}.${ops.media.episode.number}` : '' + }`, + ), + ); + return { sourceId: source.id, stream: playableStream, @@ -130,14 +139,12 @@ export async function runAllProviders( const e = list.embeds.find((v) => v.id === embed.embedId); return e && !e.disabled; }) - .sort( - (a, b) => embedIds.indexOf(a.embedId) - embedIds.indexOf(b.embedId), - ); + .sort((a, b) => embedIds.indexOf(a.embedId) - embedIds.indexOf(b.embedId)); if (sortedEmbeds.length > 0) { ops.events?.discoverEmbeds?.({ embeds: sortedEmbeds.map((embed, i) => ({ - id: [source.id, i].join("-"), + id: [source.id, i].join('-'), embedScraperId: embed.embedId, })), sourceId: source.id, @@ -146,10 +153,10 @@ export async function runAllProviders( for (const [ind, embed] of sortedEmbeds.entries()) { const scraper = embeds.find((v) => v.id === embed.embedId); - if (!scraper) throw new Error("Invalid embed returned"); + if (!scraper) throw new Error('Invalid embed returned'); // run embed scraper - const id = [source.id, ind].join("-"); + const id = [source.id, ind].join('-'); ops.events?.start?.(id); lastId = id; @@ -161,24 +168,33 @@ export async function runAllProviders( }); embedOutput.stream = embedOutput.stream .filter(isValidStream) - .filter((stream) => - flagsAllowedInFeatures(ops.features, stream.flags), - ); + .filter((stream) => flagsAllowedInFeatures(ops.features, stream.flags)); + embedOutput.stream = embedOutput.stream.map((stream) => + requiresProxy(stream) && ops.proxyStreams ? setupProxy(stream) : stream, + ); if (embedOutput.stream.length === 0) { - throw new NotFoundError("No streams found"); + throw new NotFoundError('No streams found'); } - const playableStream = await validatePlayableStream( - embedOutput.stream[0]!, - ops, - embed.embedId, - ); - if (!playableStream) throw new NotFoundError("No streams found"); + const playableStream = await validatePlayableStream(embedOutput.stream[0], ops, embed.embedId); + if (!playableStream) throw new NotFoundError('No streams found'); + + // opensubtitles + if (!ops.disableOpensubtitles) + playableStream.captions = await addOpenSubtitlesCaptions( + playableStream.captions, + ops, + btoa( + `${ops.media.imdbId}${ + ops.media.type === 'show' ? `.${ops.media.season.number}.${ops.media.episode.number}` : '' + }`, + ), + ); embedOutput.stream = [playableStream]; } catch (error) { const updateParams: UpdateEvent = { - id: source.id, + id, percentage: 100, - status: error instanceof NotFoundError ? "notfound" : "failure", + status: error instanceof NotFoundError ? 'notfound' : 'failure', reason: error instanceof NotFoundError ? error.message : undefined, error: error instanceof NotFoundError ? undefined : error, }; @@ -190,7 +206,7 @@ export async function runAllProviders( return { sourceId: source.id, embedId: scraper.id, - stream: embedOutput.stream[0]!, + stream: embedOutput.stream[0], }; } } diff --git a/packages/providers/src/utils/compare.ts b/packages/providers/src/utils/compare.ts index e57ece2..7db784e 100644 --- a/packages/providers/src/utils/compare.ts +++ b/packages/providers/src/utils/compare.ts @@ -1,4 +1,4 @@ -import type { CommonMedia } from '@/entrypoint/utils/media'; +import { CommonMedia } from '@/entrypoint/utils/media'; export function normalizeTitle(title: string): string { let titleTrimmed = title.trim().toLowerCase(); diff --git a/packages/providers/src/utils/context.ts b/packages/providers/src/utils/context.ts index e6baa46..6f16bca 100644 --- a/packages/providers/src/utils/context.ts +++ b/packages/providers/src/utils/context.ts @@ -1,15 +1,15 @@ -import type { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; -import type { UseableFetcher } from '@/fetchers/types'; +import { MovieMedia, ShowMedia } from '@/entrypoint/utils/media'; +import { UseableFetcher } from '@/fetchers/types'; -export interface ScrapeContext { +export type ScrapeContext = { proxiedFetcher: UseableFetcher; fetcher: UseableFetcher; progress(val: number): void; -} +}; -export interface EmbedInput { +export type EmbedInput = { url: string; -} +}; export type EmbedScrapeContext = EmbedInput & ScrapeContext; diff --git a/packages/providers/src/utils/cookie.ts b/packages/providers/src/utils/cookie.ts index 20fd3e4..9f40f85 100644 --- a/packages/providers/src/utils/cookie.ts +++ b/packages/providers/src/utils/cookie.ts @@ -13,7 +13,8 @@ export function makeCookieHeader(cookies: Record): string { } export function parseSetCookie(headerValue: string): Record { - const parsedCookies = setCookieParser.parse(headerValue, { + const splitHeaderValue = setCookieParser.splitCookiesString(headerValue); + const parsedCookies = setCookieParser.parse(splitHeaderValue, { map: true, }); return parsedCookies; diff --git a/packages/providers/src/utils/native.ts b/packages/providers/src/utils/native.ts index e72e9a2..cc91cdb 100644 --- a/packages/providers/src/utils/native.ts +++ b/packages/providers/src/utils/native.ts @@ -1,7 +1,7 @@ export const isReactNative = () => { try { - // eslint-disable-next-line import/no-extraneous-dependencies, global-require - require("react-native"); + // eslint-disable-next-line global-require, @typescript-eslint/no-var-requires + require('react-native'); return true; } catch (e) { return false; diff --git a/packages/providers/src/utils/opensubtitles.ts b/packages/providers/src/utils/opensubtitles.ts new file mode 100644 index 0000000..559536c --- /dev/null +++ b/packages/providers/src/utils/opensubtitles.ts @@ -0,0 +1,49 @@ +import { Caption, labelToLanguageCode, removeDuplicatedLanguages } from '@/providers/captions'; +import { IndividualEmbedRunnerOptions } from '@/runners/individualRunner'; +import { ProviderRunnerOptions } from '@/runners/runner'; + +export async function addOpenSubtitlesCaptions( + captions: Caption[], + ops: ProviderRunnerOptions | IndividualEmbedRunnerOptions, + media: string, +): Promise { + try { + const [imdbId, season, episode] = atob(media) + .split('.') + .map((x, i) => (i === 0 ? x : Number(x) || null)); + if (!imdbId) return captions; + const Res: { + LanguageName: string; + SubDownloadLink: string; + SubFormat: 'srt' | 'vtt'; + }[] = await ops.proxiedFetcher( + `https://rest.opensubtitles.org/search/${ + season && episode ? `episode-${episode}/` : '' + }imdbid-${(imdbId as string).slice(2)}${season && episode ? `/season-${season}` : ''}`, + { + headers: { + 'X-User-Agent': 'VLSub 0.10.2', + }, + }, + ); + + const openSubtilesCaptions: Caption[] = []; + for (const caption of Res) { + const url = caption.SubDownloadLink.replace('.gz', '').replace('download/', 'download/subencoding-utf8/'); + const language = labelToLanguageCode(caption.LanguageName); + if (!url || !language) continue; + else + openSubtilesCaptions.push({ + id: url, + opensubtitles: true, + url, + type: caption.SubFormat || 'srt', + hasCorsRestrictions: false, + language, + }); + } + return [...captions, ...removeDuplicatedLanguages(openSubtilesCaptions)]; + } catch { + return captions; + } +} diff --git a/packages/providers/src/utils/playlist.ts b/packages/providers/src/utils/playlist.ts new file mode 100644 index 0000000..2972bb1 --- /dev/null +++ b/packages/providers/src/utils/playlist.ts @@ -0,0 +1,25 @@ +import { parse, stringify } from 'hls-parser'; +import { MasterPlaylist } from 'hls-parser/types'; + +import { UseableFetcher } from '@/fetchers/types'; + +export async function convertPlaylistsToDataUrls( + fetcher: UseableFetcher, + playlistUrl: string, + headers?: Record, +) { + const playlistData = await fetcher(playlistUrl, { headers }); + const playlist = parse(playlistData); + + if (playlist.isMasterPlaylist) { + await Promise.all( + (playlist as MasterPlaylist).variants.map(async (variant) => { + const variantPlaylistData = await fetcher(variant.uri, { headers }); + const variantPlaylist = parse(variantPlaylistData); + variant.uri = `data:application/vnd.apple.mpegurl;base64,${btoa(stringify(variantPlaylist))}`; + }), + ); + } + + return `data:application/vnd.apple.mpegurl;base64,${btoa(stringify(playlist))}`; +} diff --git a/packages/providers/src/utils/predicates.ts b/packages/providers/src/utils/predicates.ts index e6704f7..f581b2f 100644 --- a/packages/providers/src/utils/predicates.ts +++ b/packages/providers/src/utils/predicates.ts @@ -1,3 +1,3 @@ -export function hasDuplicates(values: T[]): boolean { +export function hasDuplicates(values: Array): boolean { return new Set(values).size !== values.length; } diff --git a/packages/providers/src/utils/proxy.ts b/packages/providers/src/utils/proxy.ts new file mode 100644 index 0000000..e1d7976 --- /dev/null +++ b/packages/providers/src/utils/proxy.ts @@ -0,0 +1,44 @@ +import { flags } from '@/entrypoint/utils/targets'; +import { Stream } from '@/providers/streams'; + +export function requiresProxy(stream: Stream): boolean { + if (!stream.flags.includes(flags.CORS_ALLOWED) || !!(stream.headers && Object.keys(stream.headers).length > 0)) + return true; + return false; +} + +export function setupProxy(stream: Stream): Stream { + const headers = stream.headers && Object.keys(stream.headers).length > 0 ? stream.headers : undefined; + + const options = { + ...(stream.type === 'hls' && { depth: stream.proxyDepth ?? 0 }), + }; + + const payload: { + type?: 'hls' | 'mp4'; + url?: string; + headers?: Record; + options?: { depth?: 0 | 1 | 2 }; + } = { + headers, + options, + }; + + if (stream.type === 'hls') { + payload.type = 'hls'; + payload.url = stream.playlist; + stream.playlist = `https://proxy.nsbx.ru/proxy?${new URLSearchParams({ payload: Buffer.from(JSON.stringify(payload)).toString('base64url') })}`; + } + + if (stream.type === 'file') { + payload.type = 'mp4'; + Object.entries(stream.qualities).forEach((entry) => { + payload.url = entry[1].url; + entry[1].url = `https://proxy.nsbx.ru/proxy?${new URLSearchParams({ payload: Buffer.from(JSON.stringify(payload)).toString('base64url') })}`; + }); + } + + stream.headers = {}; + stream.flags = [flags.CORS_ALLOWED]; + return stream; +} diff --git a/packages/providers/src/utils/quality.ts b/packages/providers/src/utils/quality.ts index 6915672..8854ca5 100644 --- a/packages/providers/src/utils/quality.ts +++ b/packages/providers/src/utils/quality.ts @@ -1,4 +1,4 @@ -import type { Qualities } from '@/providers/streams'; +import { Qualities } from '@/providers/streams'; export function getValidQualityFromString(quality: string): Qualities { switch (quality.toLowerCase().replace('p', '')) { diff --git a/packages/providers/src/utils/valid.ts b/packages/providers/src/utils/valid.ts index 22f05df..9d83176 100644 --- a/packages/providers/src/utils/valid.ts +++ b/packages/providers/src/utils/valid.ts @@ -1,20 +1,27 @@ -import type { Stream } from "@/providers/streams"; -import type { IndividualEmbedRunnerOptions } from "@/runners/individualRunner"; -import type { ProviderRunnerOptions } from "@/runners/runner"; -import { warezcdnembedMp4Scraper } from "@/providers/embeds/warezcdn/mp4"; +import { alphaScraper, deltaScraper } from '@/providers/embeds/nsbx'; +import { warezcdnembedMp4Scraper } from '@/providers/embeds/warezcdn/mp4'; +import { astraScraper, novaScraper, orionScraper } from '@/providers/embeds/whvx'; +import { Stream } from '@/providers/streams'; +import { IndividualEmbedRunnerOptions } from '@/runners/individualRunner'; +import { ProviderRunnerOptions } from '@/runners/runner'; -const SKIP_VALIDATION_CHECK_IDS = [warezcdnembedMp4Scraper.id]; +const SKIP_VALIDATION_CHECK_IDS = [ + warezcdnembedMp4Scraper.id, + deltaScraper.id, + alphaScraper.id, + novaScraper.id, + astraScraper.id, + orionScraper.id, +]; export function isValidStream(stream: Stream | undefined): boolean { if (!stream) return false; - if (stream.type === "hls") { + if (stream.type === 'hls') { if (!stream.playlist) return false; return true; } - if (stream.type === "file") { - const validQualities = Object.values(stream.qualities).filter( - (v) => v.url.length > 0, - ); + if (stream.type === 'file') { + const validQualities = Object.values(stream.qualities).filter((v) => v.url.length > 0); if (validQualities.length === 0) return false; return true; } @@ -30,9 +37,12 @@ export async function validatePlayableStream( ): Promise { if (SKIP_VALIDATION_CHECK_IDS.includes(sourcererId)) return stream; - if (stream.type === "hls") { + if (stream.type === 'hls') { + // dirty temp fix for base64 urls to prep for fmhy poll + if (stream.playlist.startsWith('data:')) return stream; + const result = await ops.proxiedFetcher.full(stream.playlist, { - method: "GET", + method: 'GET', headers: { ...stream.preferredHeaders, ...stream.headers, @@ -41,15 +51,15 @@ export async function validatePlayableStream( if (result.statusCode < 200 || result.statusCode >= 400) return null; return stream; } - if (stream.type === "file") { + if (stream.type === 'file') { const validQualitiesResults = await Promise.all( Object.values(stream.qualities).map((quality) => ops.proxiedFetcher.full(quality.url, { - method: "GET", + method: 'GET', headers: { ...stream.preferredHeaders, ...stream.headers, - Range: "bytes=0-1", + Range: 'bytes=0-1', }, }), ), @@ -57,10 +67,7 @@ export async function validatePlayableStream( // remove invalid qualities from the stream const validQualities = stream.qualities; Object.keys(stream.qualities).forEach((quality, index) => { - if ( - validQualitiesResults[index]!.statusCode < 200 || - validQualitiesResults[index]!.statusCode >= 400 - ) { + if (validQualitiesResults[index].statusCode < 200 || validQualitiesResults[index].statusCode >= 400) { delete validQualities[quality as keyof typeof stream.qualities]; } }); @@ -78,9 +85,7 @@ export async function validatePlayableStreams( ): Promise { if (SKIP_VALIDATION_CHECK_IDS.includes(sourcererId)) return streams; - return ( - await Promise.all( - streams.map((stream) => validatePlayableStream(stream, ops, sourcererId)), - ) - ).filter((v) => v !== null) as Stream[]; + return (await Promise.all(streams.map((stream) => validatePlayableStream(stream, ops, sourcererId)))).filter( + (v) => v !== null, + ) as Stream[]; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0018797..00d7c59 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -295,108 +295,18 @@ importers: '@movie-web/providers': specifier: workspace:* version: link:../providers - '@nabla/vite-plugin-eslint': - specifier: ^2.0.2 - version: 2.0.4(eslint@8.57.0)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6)) - '@types/cookie': - specifier: ^0.6.0 - version: 0.6.0 - '@types/crypto-js': - specifier: ^4.2.2 - version: 4.2.2 - '@types/node-fetch': - specifier: ^2.6.11 - version: 2.6.11 - '@types/randombytes': - specifier: ^2.0.3 - version: 2.0.3 - '@types/set-cookie-parser': - specifier: ^2.4.7 - version: 2.4.10 - '@types/spinnies': - specifier: ^0.5.3 - version: 0.5.3 - '@typescript-eslint/eslint-plugin': - specifier: ^7.4.0 - version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': - specifier: ^7.4.0 - version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) - '@vitest/coverage-v8': - specifier: ^1.4.0 - version: 1.6.0(vitest@1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6)) - commander: - specifier: ^12.0.0 - version: 12.1.0 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 - dotenv: - specifier: ^16.4.5 - version: 16.4.5 - enquirer: - specifier: ^2.4.1 - version: 2.4.1 - eslint: - specifier: ^8.57.0 - version: 8.57.0 - eslint-config-airbnb-base: - specifier: ^15.0.0 - version: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0) - eslint-config-prettier: - specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) - eslint-import-resolver-typescript: - specifier: ^3.6.1 - version: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: - specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-prettier: - specifier: ^5.1.3 - version: 5.2.1(@types/eslint@8.56.11)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) - node-fetch: - specifier: ^3.3.2 - version: 3.3.2 parse-hls: specifier: ^1.0.7 version: 1.0.7 prettier: specifier: ^3.2.5 version: 3.3.3 - puppeteer: - specifier: ^22.6.1 - version: 22.15.0(typescript@5.5.4) - spinnies: - specifier: ^0.5.1 - version: 0.5.1 srt-webvtt: specifier: ^2.0.0 version: 2.0.0 tmdb-ts: specifier: ^1.6.1 version: 1.8.0 - tsc-alias: - specifier: ^1.8.8 - version: 1.8.10 - tsconfig-paths: - specifier: ^4.2.0 - version: 4.2.0 - typescript: - specifier: ^5.4.3 - version: 5.5.4 - vite: - specifier: ^5.2.7 - version: 5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) - vite-node: - specifier: ^1.4.0 - version: 1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) - vite-plugin-dts: - specifier: ^3.8.1 - version: 3.9.1(@types/node@22.2.0)(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6)) - vitest: - specifier: ^1.4.0 - version: 1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) devDependencies: '@movie-web/eslint-config': specifier: workspace:^0.2.0 @@ -407,6 +317,12 @@ importers: '@movie-web/tsconfig': specifier: workspace:^0.1.0 version: link:../../tooling/typescript + eslint: + specifier: ^8.57.0 + version: 8.57.0 + typescript: + specifier: ^5.4.3 + version: 5.5.4 packages/providers: dependencies: @@ -422,6 +338,9 @@ importers: form-data: specifier: ^4.0.0 version: 4.0.0 + hls-parser: + specifier: ^0.13.3 + version: 0.13.3 iso-639-1: specifier: ^3.1.2 version: 3.1.2 @@ -431,8 +350,11 @@ importers: node-fetch: specifier: ^3.3.2 version: 3.3.2 + react-native: + specifier: 0.74.5 + version: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) set-cookie-parser: - specifier: ^2.6.0 + specifier: ^2.7.0 version: 2.7.0 unpacker: specifier: ^1.0.1 @@ -447,6 +369,9 @@ importers: '@movie-web/tsconfig': specifier: workspace:^0.1.0 version: link:../../tooling/typescript + '@nabla/vite-plugin-eslint': + specifier: ^2.0.4 + version: 2.0.4(eslint@8.57.0)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6)) '@types/cookie': specifier: ^0.6.0 version: 0.6.0 @@ -460,16 +385,22 @@ importers: specifier: ^2.0.3 version: 2.0.3 '@types/set-cookie-parser': - specifier: ^2.4.7 + specifier: ^2.4.10 version: 2.4.10 '@types/spinnies': specifier: ^0.5.3 version: 0.5.3 + '@typescript-eslint/eslint-plugin': + specifier: ^7.4.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': + specifier: ^7.4.0 + version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) '@vitest/coverage-v8': - specifier: ^1.4.0 + specifier: ^1.6.0 version: 1.6.0(vitest@1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6)) commander: - specifier: ^12.0.0 + specifier: ^12.1.0 version: 12.1.0 cross-env: specifier: ^7.0.3 @@ -480,17 +411,35 @@ importers: enquirer: specifier: ^2.4.1 version: 2.4.1 + eslint: + specifier: ^8.57.0 + version: 8.57.0 + eslint-config-airbnb-base: + specifier: ^15.0.0 + version: 15.0.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.57.0) + eslint-import-resolver-typescript: + specifier: ^3.6.1 + version: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-prettier: + specifier: ^5.2.1 + version: 5.2.1(@types/eslint@8.56.11)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) prettier: specifier: ^3.2.5 version: 3.3.3 puppeteer: - specifier: ^22.6.1 + specifier: ^22.15.0 version: 22.15.0(typescript@5.5.4) spinnies: specifier: ^0.5.1 version: 0.5.1 tsc-alias: - specifier: ^1.8.8 + specifier: ^1.8.10 version: 1.8.10 tsconfig-paths: specifier: ^4.2.0 @@ -499,16 +448,16 @@ importers: specifier: ^5.4.3 version: 5.5.4 vite: - specifier: ^5.2.7 + specifier: ^5.3.5 version: 5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) vite-node: - specifier: ^1.4.0 + specifier: ^1.6.0 version: 1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) vite-plugin-dts: - specifier: ^3.8.1 + specifier: ^3.9.1 version: 3.9.1(@types/node@22.2.0)(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6)) vitest: - specifier: ^1.4.0 + specifier: ^1.6.0 version: 1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) packages/tmdb: @@ -5045,6 +4994,9 @@ packages: hey-listen@1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + hls-parser@0.13.3: + resolution: {integrity: sha512-DXqW7bwx9j2qFcAXS/LBJTDJWitxknb6oUnsnTvECHrecPvPbhRgIu45OgNDUU6gpwKxMJx40SHRRUUhdIM2gA==} + hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} @@ -14222,6 +14174,8 @@ snapshots: hey-listen@1.0.8: {} + hls-parser@0.13.3: {} + hoist-non-react-statics@3.3.2: dependencies: react-is: 16.13.1 From 415e3ce5030dde210db35b141d2bd1ebb0c96424 Mon Sep 17 00:00:00 2001 From: Jorrin Date: Wed, 14 Aug 2024 21:12:29 +0200 Subject: [PATCH 35/49] get rid of the tests --- .../src/__test__/providers/embedUtils.ts | 90 ----------- .../src/__test__/providers/embeds.test.ts | 118 -------------- .../src/__test__/providers/providerUtils.ts | 92 ----------- .../src/__test__/providers/providers.test.ts | 95 ----------- .../src/__test__/providers/testMedia.ts | 30 ---- .../__test__/standard/fetchers/body.test.ts | 39 ----- .../__test__/standard/fetchers/common.test.ts | 62 -------- .../standard/fetchers/simpleProxy.test.ts | 148 ----------------- .../standard/fetchers/standard.test.ts | 149 ------------------ .../src/__test__/standard/providerTests.ts | 135 ---------------- .../standard/providers/checks.test.ts | 105 ------------ .../src/__test__/standard/runner/list.test.ts | 130 --------------- .../src/__test__/standard/runner/meta.test.ts | 54 ------- .../__test__/standard/utils/features.test.ts | 137 ---------------- .../src/__test__/standard/utils/list.test.ts | 54 ------- .../src/__test__/standard/utils/valid.test.ts | 71 --------- packages/providers/src/__test__/tsconfig.json | 22 --- 17 files changed, 1531 deletions(-) delete mode 100644 packages/providers/src/__test__/providers/embedUtils.ts delete mode 100644 packages/providers/src/__test__/providers/embeds.test.ts delete mode 100644 packages/providers/src/__test__/providers/providerUtils.ts delete mode 100644 packages/providers/src/__test__/providers/providers.test.ts delete mode 100644 packages/providers/src/__test__/providers/testMedia.ts delete mode 100644 packages/providers/src/__test__/standard/fetchers/body.test.ts delete mode 100644 packages/providers/src/__test__/standard/fetchers/common.test.ts delete mode 100644 packages/providers/src/__test__/standard/fetchers/simpleProxy.test.ts delete mode 100644 packages/providers/src/__test__/standard/fetchers/standard.test.ts delete mode 100644 packages/providers/src/__test__/standard/providerTests.ts delete mode 100644 packages/providers/src/__test__/standard/providers/checks.test.ts delete mode 100644 packages/providers/src/__test__/standard/runner/list.test.ts delete mode 100644 packages/providers/src/__test__/standard/runner/meta.test.ts delete mode 100644 packages/providers/src/__test__/standard/utils/features.test.ts delete mode 100644 packages/providers/src/__test__/standard/utils/list.test.ts delete mode 100644 packages/providers/src/__test__/standard/utils/valid.test.ts delete mode 100644 packages/providers/src/__test__/tsconfig.json diff --git a/packages/providers/src/__test__/providers/embedUtils.ts b/packages/providers/src/__test__/providers/embedUtils.ts deleted file mode 100644 index 77516f1..0000000 --- a/packages/providers/src/__test__/providers/embedUtils.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { buildProviders } from '@/entrypoint/builder'; -import { ScrapeMedia } from '@/entrypoint/utils/media'; -import { targets } from '@/entrypoint/utils/targets'; -import { makeStandardFetcher } from '@/fetchers/standardFetch'; -import { Embed, Sourcerer, SourcererEmbed } from '@/providers/base'; -import { TestTypes } from './providerUtils'; -import { describe, expect, it } from 'vitest'; -import { ProviderControls } from '@/entrypoint/controls'; -import { makeSimpleProxyFetcher } from '@/fetchers/simpleProxy'; - -export interface TestEmbedOptions { - embed: Embed; - source: Sourcerer; - testSuite: ScrapeMedia[]; - types: TestTypes[]; - debug?: boolean; - expect: { - embeds: number; - streams?: number; - error?: boolean; - }; -} - -function makeBaseEmbedProviders() { - const builder = buildProviders().setTarget(targets.ANY).setFetcher(makeStandardFetcher(fetch)); - return builder; -} - -export function testEmbed(ops: TestEmbedOptions) { - if (ops.testSuite.length === 0) throw new Error('Test suite must have at least one test'); - describe(`embed:${ops.source.id}:${ops.embed.id}`, () => { - ops.testSuite.forEach((test) => { - describe(`test ${test.title}`, async () => { - async function gatherEmbeds(providers: ProviderControls): Promise { - const results = await providers.runSourceScraper({ - id: ops.source.id, - media: test, - }); - if (results.embeds.length !== ops.expect.embeds) - throw new Error( - `Embeds don't match expected amount of embeds (${ops.source.id}, ${ops.embed.id}, got ${results.embeds.length} but expected ${ops.expect.embeds})`, - ); - return results.embeds; - } - - async function runTest(providers: ProviderControls, embedUrl: string) { - let hasError = false; - let streamCount = 0; - try { - const result = await providers.runEmbedScraper({ - id: ops.embed.id, - url: embedUrl, - }); - if (ops.debug) console.log(result); - streamCount = (result.stream ?? []).length; - } catch (err) { - if (ops.debug) console.log(err); - hasError = true; - } - expect(ops.expect.error ?? false).toBe(hasError); - expect(ops.expect.streams ?? 0).toBe(streamCount); - } - - for (const t of ops.types) { - const builder = makeBaseEmbedProviders().addSource(ops.source).addEmbed(ops.embed); - if (t === 'standard') { - } else if (t === 'ip:standard') builder.enableConsistentIpForRequests(); - else if (t === 'proxied') { - if (!process.env.MOVIE_WEB_PROXY_URL) - throw new Error('Cant use proxied test without setting MOVIE_WEB_PROXY_URL env'); - builder.setProxiedFetcher(makeSimpleProxyFetcher(process.env.MOVIE_WEB_PROXY_URL, fetch)); - } - const providers = builder.build(); - try { - const embeds = await gatherEmbeds(providers); - embeds.forEach((embed, i) => { - it(`${t} - embed ${i}`, async () => { - await runTest(providers, embed.url); - }); - }); - } catch (err) { - it(`${t} - embed ??`, () => { - throw new Error('Failed to get streams: ' + err); - }); - } - } - }); - }); - }); -} diff --git a/packages/providers/src/__test__/providers/embeds.test.ts b/packages/providers/src/__test__/providers/embeds.test.ts deleted file mode 100644 index 333d4cc..0000000 --- a/packages/providers/src/__test__/providers/embeds.test.ts +++ /dev/null @@ -1,118 +0,0 @@ -import dotenv from 'dotenv'; -import { febboxMp4Scraper } from '@/providers/embeds/febbox/mp4'; -import { testEmbed } from './embedUtils'; -import { showboxScraper } from '@/providers/sources/showbox'; -import { testMedia } from './testMedia'; -import { flixhqScraper } from '@/providers/sources/flixhq'; -import { upcloudScraper } from '@/providers/embeds/upcloud'; -import { goMoviesScraper } from '@/providers/sources/gomovies'; -import { smashyStreamScraper } from '@/providers/sources/smashystream'; -import { smashyStreamDScraper } from '@/providers/embeds/smashystream/dued'; -import { vidsrcembedScraper } from '@/providers/embeds/vidsrc'; -import { vidsrcScraper } from '@/providers/sources/vidsrc'; -import { vidSrcToScraper } from '@/providers/sources/vidsrcto'; -import { vidplayScraper } from '@/providers/embeds/vidplay'; -import { fileMoonScraper } from '@/providers/embeds/filemoon'; -import { zoechipScraper } from '@/providers/sources/zoechip'; -import { mixdropScraper } from '@/providers/embeds/mixdrop'; - -dotenv.config(); - -testEmbed({ - embed: febboxMp4Scraper, - source: showboxScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - embeds: 1, - streams: 1, - }, -}); - -testEmbed({ - embed: upcloudScraper, - source: flixhqScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - embeds: 1, - streams: 1, - }, -}); - -testEmbed({ - embed: upcloudScraper, - source: goMoviesScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - embeds: 1, - streams: 1, - }, -}); - -testEmbed({ - embed: smashyStreamDScraper, - source: smashyStreamScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - embeds: 1, - streams: 1, - }, -}); - -testEmbed({ - embed: vidsrcembedScraper, - source: vidsrcScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - embeds: 1, - streams: 1, - }, -}); - -testEmbed({ - embed: vidplayScraper, - source: vidSrcToScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - embeds: 1, - streams: 1, - }, -}); - -testEmbed({ - embed: fileMoonScraper, - source: vidSrcToScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - embeds: 1, - streams: 1, - }, -}); - -testEmbed({ - embed: upcloudScraper, - source: zoechipScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - embeds: 2, - streams: 1, - }, -}); - -testEmbed({ - embed: mixdropScraper, - source: zoechipScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - embeds: 2, - streams: 1, - }, -}); diff --git a/packages/providers/src/__test__/providers/providerUtils.ts b/packages/providers/src/__test__/providers/providerUtils.ts deleted file mode 100644 index d47b924..0000000 --- a/packages/providers/src/__test__/providers/providerUtils.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { ScrapeMedia } from '@/entrypoint/utils/media'; -import { Embed, Sourcerer, SourcererEmbed } from '@/providers/base'; -import { buildProviders } from '@/entrypoint/builder'; -import { describe, expect, it } from 'vitest'; -import { makeStandardFetcher } from '@/fetchers/standardFetch'; -import { ProviderControls } from '@/entrypoint/controls'; -import { NotFoundError } from '@/utils/errors'; -import { targets } from '@/entrypoint/utils/targets'; -import { getBuiltinEmbeds } from '@/entrypoint/providers'; -import { makeSimpleProxyFetcher } from '@/fetchers/simpleProxy'; - -export type TestTypes = 'standard' | 'ip:standard' | 'proxied'; - -export interface TestSourceOptions { - source: Sourcerer; - testSuite: ScrapeMedia[]; - types: TestTypes[]; - debug?: boolean; - expect: { - embeds?: number; - streams?: number; - error?: boolean; - notfound?: boolean; - }; -} - -function makeBaseProviders() { - const builder = buildProviders().setTarget(targets.ANY).setFetcher(makeStandardFetcher(fetch)); - const embeds = getBuiltinEmbeds(); - embeds.forEach((embed) => builder.addEmbed(embed)); - return builder; -} - -export function testSource(ops: TestSourceOptions) { - if (ops.testSuite.length === 0) throw new Error('Test suite must have at least one test'); - describe(`source:${ops.source.id}`, () => { - ops.testSuite.forEach((test) => { - describe(`test ${test.title}`, () => { - async function runTest(providers: ProviderControls) { - let hasNotFound = false; - let hasError = false; - let streamCount = 0; - let embedCount = 0; - let embeds = []; - try { - const result = await providers.runSourceScraper({ - id: ops.source.id, - media: test, - }); - if (ops.debug) console.log(result); - streamCount = (result.stream ?? []).length; - embedCount = result.embeds.length; - } catch (err) { - if (ops.debug) console.log(err); - if (err instanceof NotFoundError) hasNotFound = true; - else hasError = true; - } - expect(ops.expect.error ?? false).toBe(hasError); - expect(ops.expect.notfound ?? false).toBe(hasNotFound); - expect(ops.expect.streams ?? 0).toBe(streamCount); - expect(ops.expect.embeds ?? 0).toBe(embedCount); - } - - if (ops.types.includes('standard')) { - it(`standard`, async () => { - const providers = makeBaseProviders().addSource(ops.source).build(); - await runTest(providers); - }); - } - - if (ops.types.includes('ip:standard')) { - it(`standard:ip`, async () => { - const providers = makeBaseProviders().addSource(ops.source).enableConsistentIpForRequests().build(); - await runTest(providers); - }); - } - - if (ops.types.includes('proxied')) { - it(`proxied`, async () => { - if (!process.env.MOVIE_WEB_PROXY_URL) - throw new Error('Cant use proxied test without setting MOVIE_WEB_PROXY_URL env'); - const providers = makeBaseProviders() - .addSource(ops.source) - .setProxiedFetcher(makeSimpleProxyFetcher(process.env.MOVIE_WEB_PROXY_URL, fetch)) - .build(); - await runTest(providers); - }); - } - }); - }); - }); -} diff --git a/packages/providers/src/__test__/providers/providers.test.ts b/packages/providers/src/__test__/providers/providers.test.ts deleted file mode 100644 index c311729..0000000 --- a/packages/providers/src/__test__/providers/providers.test.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { testSource } from './providerUtils'; -import { lookmovieScraper } from '@/providers/sources/lookmovie'; -import { testMedia } from './testMedia'; -import { showboxScraper } from '@/providers/sources/showbox'; -import dotenv from 'dotenv'; -import { flixhqScraper } from '@/providers/sources/flixhq'; -import { goMoviesScraper } from '@/providers/sources/gomovies'; -import { smashyStreamScraper } from '@/providers/sources/smashystream'; -import { vidsrcScraper } from '@/providers/sources/vidsrc'; -import { vidSrcToScraper } from '@/providers/sources/vidsrcto'; -import { zoechipScraper } from '@/providers/sources/zoechip'; -import { remotestreamScraper } from '@/providers/sources/remotestream'; - -dotenv.config(); - -testSource({ - source: lookmovieScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['ip:standard'], - expect: { - streams: 1, - }, -}); - -testSource({ - source: showboxScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - embeds: 1, - }, -}); - -testSource({ - source: flixhqScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - embeds: 1, - }, -}); - -testSource({ - source: goMoviesScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - embeds: 1, - }, -}); - -testSource({ - source: smashyStreamScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - embeds: 1, - }, -}); - -testSource({ - source: vidsrcScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - embeds: 1, - }, -}); - -testSource({ - source: vidSrcToScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - embeds: 2, - }, -}); - -testSource({ - source: zoechipScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - embeds: 3, - }, -}); - -testSource({ - source: remotestreamScraper, - testSuite: [testMedia.arcane, testMedia.hamilton], - types: ['standard', 'proxied'], - expect: { - streams: 1, - }, -}); diff --git a/packages/providers/src/__test__/providers/testMedia.ts b/packages/providers/src/__test__/providers/testMedia.ts deleted file mode 100644 index 1c2c3bd..0000000 --- a/packages/providers/src/__test__/providers/testMedia.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { ScrapeMedia } from '@/entrypoint/utils/media'; - -function makeMedia(media: ScrapeMedia): ScrapeMedia { - return media; -} - -export const testMedia = { - arcane: makeMedia({ - type: 'show', - title: 'Arcane', - tmdbId: '94605', - releaseYear: 2021, - episode: { - number: 1, - tmdbId: '1953812', - }, - season: { - number: 1, - tmdbId: '134187', - }, - imdbId: 'tt11126994', - }), - hamilton: makeMedia({ - type: 'movie', - tmdbId: '556574', - imdbId: 'tt8503618', - releaseYear: 2020, - title: 'Hamilton', - }), -}; diff --git a/packages/providers/src/__test__/standard/fetchers/body.test.ts b/packages/providers/src/__test__/standard/fetchers/body.test.ts deleted file mode 100644 index 9e517cc..0000000 --- a/packages/providers/src/__test__/standard/fetchers/body.test.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { serializeBody } from '@/fetchers/body'; -import FormData from 'form-data'; -import { describe, expect, it } from 'vitest'; - -describe('serializeBody()', () => { - it('should work with standard text', () => { - expect(serializeBody('hello world')).toEqual({ - headers: {}, - body: 'hello world', - }); - }); - - it('should work with objects', () => { - expect(serializeBody({ hello: 'world', a: 42 })).toEqual({ - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ hello: 'world', a: 42 }), - }); - }); - - it('should work x-www-form-urlencoded', () => { - const obj = new URLSearchParams(); - obj.set('a', 'b'); - expect(serializeBody(obj)).toEqual({ - headers: {}, - body: obj, - }); - }); - - it('should work multipart/form-data', () => { - const obj = new FormData(); - obj.append('a', 'b'); - expect(serializeBody(obj)).toEqual({ - headers: {}, - body: obj, - }); - }); -}); diff --git a/packages/providers/src/__test__/standard/fetchers/common.test.ts b/packages/providers/src/__test__/standard/fetchers/common.test.ts deleted file mode 100644 index 40fdd61..0000000 --- a/packages/providers/src/__test__/standard/fetchers/common.test.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { makeFullUrl } from '@/fetchers/common'; -import { describe, expect, it } from 'vitest'; - -describe('makeFullUrl()', () => { - it('should pass normal url if no options', () => { - expect(makeFullUrl('https://example.com/hello/world')).toEqual('https://example.com/hello/world'); - expect(makeFullUrl('https://example.com/hello/world?a=b')).toEqual('https://example.com/hello/world?a=b'); - expect(makeFullUrl('https://example.com/hello/world?a=b#hello')).toEqual( - 'https://example.com/hello/world?a=b#hello', - ); - expect(makeFullUrl('https://example.com/hello/world#hello')).toEqual('https://example.com/hello/world#hello'); - }); - - it('should append baseurl correctly', () => { - const correctResult = 'https://example.com/hello/world'; - expect(makeFullUrl(correctResult, { baseUrl: '' })).toEqual(correctResult); - expect(makeFullUrl('/hello/world', { baseUrl: 'https://example.com' })).toEqual(correctResult); - expect(makeFullUrl('/hello/world', { baseUrl: 'https://example.com/' })).toEqual(correctResult); - expect(makeFullUrl('hello/world', { baseUrl: 'https://example.com/' })).toEqual(correctResult); - expect(makeFullUrl('hello/world', { baseUrl: 'https://example.com' })).toEqual(correctResult); - expect(makeFullUrl('/world', { baseUrl: 'https://example.com/hello' })).toEqual(correctResult); - expect(makeFullUrl('/world', { baseUrl: 'https://example.com/hello/' })).toEqual(correctResult); - expect(makeFullUrl('world', { baseUrl: 'https://example.com/hello/' })).toEqual(correctResult); - expect(makeFullUrl('world', { baseUrl: 'https://example.com/hello' })).toEqual(correctResult); - expect(makeFullUrl('world?a=b', { baseUrl: 'https://example.com/hello' })).toEqual( - 'https://example.com/hello/world?a=b', - ); - }); - - it('should throw with invalid baseurl combinations', () => { - expect(() => makeFullUrl('example.com/hello/world', { baseUrl: '' })).toThrowError(); - expect(() => makeFullUrl('/hello/world', { baseUrl: 'example.com' })).toThrowError(); - expect(() => makeFullUrl('/hello/world', { baseUrl: 'tcp://example.com' })).toThrowError(); - expect(() => makeFullUrl('/hello/world', { baseUrl: 'tcp://example.com' })).toThrowError(); - }); - - it('should add/merge query parameters', () => { - expect(makeFullUrl('https://example.com/hello/world', { query: { a: 'b' } })).toEqual( - 'https://example.com/hello/world?a=b', - ); - expect(makeFullUrl('https://example.com/hello/world/', { query: { a: 'b' } })).toEqual( - 'https://example.com/hello/world/?a=b', - ); - expect(makeFullUrl('https://example.com', { query: { a: 'b' } })).toEqual('https://example.com/?a=b'); - expect(makeFullUrl('https://example.com/', { query: { a: 'b' } })).toEqual('https://example.com/?a=b'); - - expect(makeFullUrl('https://example.com/hello/world?c=d', { query: { a: 'b' } })).toEqual( - 'https://example.com/hello/world?c=d&a=b', - ); - expect(makeFullUrl('https://example.com/hello/world?c=d', { query: {} })).toEqual( - 'https://example.com/hello/world?c=d', - ); - expect(makeFullUrl('https://example.com/hello/world?c=d')).toEqual('https://example.com/hello/world?c=d'); - expect(makeFullUrl('https://example.com/hello/world?c=d', {})).toEqual('https://example.com/hello/world?c=d'); - }); - - it('should work with a mix of multiple options', () => { - expect(makeFullUrl('/hello/world?c=d', { baseUrl: 'https://example.com/', query: { a: 'b' } })).toEqual( - 'https://example.com/hello/world?c=d&a=b', - ); - }); -}); diff --git a/packages/providers/src/__test__/standard/fetchers/simpleProxy.test.ts b/packages/providers/src/__test__/standard/fetchers/simpleProxy.test.ts deleted file mode 100644 index cef585e..0000000 --- a/packages/providers/src/__test__/standard/fetchers/simpleProxy.test.ts +++ /dev/null @@ -1,148 +0,0 @@ -import { makeSimpleProxyFetcher } from '@/fetchers/simpleProxy'; -import { DefaultedFetcherOptions, FetcherOptions } from '@/fetchers/types'; -import { Headers } from 'node-fetch'; -import { afterEach, describe, expect, it, vi } from 'vitest'; - -describe('makeSimpleProxyFetcher()', () => { - const fetch = vi.fn(); - const fetcher = makeSimpleProxyFetcher('https://example.com/proxy', fetch); - - afterEach(() => { - vi.clearAllMocks(); - }); - - function setResult(type: 'text' | 'json', value: any) { - if (type === 'text') - return fetch.mockResolvedValueOnce({ - headers: new Headers({ - 'content-type': 'text/plain', - }), - status: 204, - url: 'test123', - text() { - return Promise.resolve(value); - }, - }); - if (type === 'json') - return fetch.mockResolvedValueOnce({ - headers: new Headers({ - 'content-type': 'application/json', - }), - status: 204, - url: 'test123', - json() { - return Promise.resolve(value); - }, - }); - } - - function expectFetchCall(ops: { - inputUrl: string; - input: DefaultedFetcherOptions; - outputUrl?: string; - output: any; - outputBody: any; - }) { - const prom = fetcher(ops.inputUrl, ops.input); - expect((async () => (await prom).body)()).resolves.toEqual(ops.outputBody); - expect((async () => Array.from((await prom).headers.entries()))()).resolves.toEqual( - Array.from(new Headers().entries()), - ); - expect((async () => (await prom).statusCode)()).resolves.toEqual(204); - expect((async () => (await prom).finalUrl)()).resolves.toEqual('test123'); - expect(fetch).toBeCalledWith(ops.outputUrl ?? ops.inputUrl, ops.output); - vi.clearAllMocks(); - } - - it('should pass options through', () => { - setResult('text', 'hello world'); - expectFetchCall({ - inputUrl: 'https://google.com', - input: { - method: 'GET', - query: {}, - readHeaders: [], - headers: { - 'X-Hello': 'world', - }, - }, - outputUrl: `https://example.com/proxy?destination=${encodeURIComponent('https://google.com/')}`, - output: { - method: 'GET', - headers: { - 'X-Hello': 'world', - }, - }, - outputBody: 'hello world', - }); - setResult('text', 'hello world'); - expectFetchCall({ - inputUrl: 'https://google.com', - input: { - method: 'GET', - headers: {}, - readHeaders: [], - query: { - a: 'b', - }, - }, - outputUrl: `https://example.com/proxy?destination=${encodeURIComponent('https://google.com/?a=b')}`, - output: { - method: 'GET', - headers: {}, - }, - outputBody: 'hello world', - }); - setResult('text', 'hello world'); - expectFetchCall({ - inputUrl: 'https://google.com', - input: { - method: 'GET', - query: {}, - readHeaders: [], - headers: {}, - }, - outputUrl: `https://example.com/proxy?destination=${encodeURIComponent('https://google.com/')}`, - output: { - method: 'GET', - headers: {}, - }, - outputBody: 'hello world', - }); - }); - - it('should parse response correctly', () => { - setResult('text', 'hello world'); - expectFetchCall({ - inputUrl: 'https://google.com/', - input: { - method: 'POST', - query: {}, - readHeaders: [], - headers: {}, - }, - outputUrl: `https://example.com/proxy?destination=${encodeURIComponent('https://google.com/')}`, - output: { - method: 'POST', - headers: {}, - }, - outputBody: 'hello world', - }); - setResult('json', { hello: 42 }); - expectFetchCall({ - inputUrl: 'https://google.com/', - input: { - method: 'POST', - query: {}, - readHeaders: [], - headers: {}, - }, - outputUrl: `https://example.com/proxy?destination=${encodeURIComponent('https://google.com/')}`, - output: { - method: 'POST', - headers: {}, - }, - outputBody: { hello: 42 }, - }); - }); -}); diff --git a/packages/providers/src/__test__/standard/fetchers/standard.test.ts b/packages/providers/src/__test__/standard/fetchers/standard.test.ts deleted file mode 100644 index 8699136..0000000 --- a/packages/providers/src/__test__/standard/fetchers/standard.test.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { makeStandardFetcher } from '@/fetchers/standardFetch'; -import { DefaultedFetcherOptions } from '@/fetchers/types'; -import { Headers } from 'node-fetch'; -import { afterEach, describe, expect, it, vi } from 'vitest'; - -describe('makeStandardFetcher()', () => { - const fetch = vi.fn(); - const fetcher = makeStandardFetcher(fetch); - - afterEach(() => { - vi.clearAllMocks(); - }); - - function setResult(type: 'text' | 'json', value: any) { - if (type === 'text') - return fetch.mockResolvedValueOnce({ - headers: new Headers({ - 'content-type': 'text/plain', - }), - status: 204, - url: 'test123', - text() { - return Promise.resolve(value); - }, - }); - if (type === 'json') - return fetch.mockResolvedValueOnce({ - headers: new Headers({ - 'content-type': 'application/json', - }), - status: 204, - url: 'test123', - json() { - return Promise.resolve(value); - }, - }); - } - - function expectFetchCall(ops: { - inputUrl: string; - input: DefaultedFetcherOptions; - outputUrl?: string; - output: any; - outputBody: any; - }) { - const prom = fetcher(ops.inputUrl, ops.input); - expect((async () => (await prom).body)()).resolves.toEqual(ops.outputBody); - expect((async () => Array.from((await prom).headers.entries()))()).resolves.toEqual( - Array.from(new Headers().entries()), - ); - expect((async () => (await prom).statusCode)()).resolves.toEqual(204); - expect((async () => (await prom).finalUrl)()).resolves.toEqual('test123'); - expect(fetch).toBeCalledWith(ops.outputUrl ?? ops.inputUrl, ops.output); - vi.clearAllMocks(); - } - - it('should pass options through', () => { - setResult('text', 'hello world'); - expectFetchCall({ - inputUrl: 'https://google.com', - input: { - method: 'GET', - query: {}, - readHeaders: [], - headers: { - 'X-Hello': 'world', - }, - }, - outputUrl: 'https://google.com/', - output: { - method: 'GET', - headers: { - 'X-Hello': 'world', - }, - body: undefined, - }, - outputBody: 'hello world', - }); - setResult('text', 'hello world'); - expectFetchCall({ - inputUrl: 'https://google.com', - input: { - method: 'GET', - headers: {}, - readHeaders: [], - query: { - a: 'b', - }, - }, - outputUrl: 'https://google.com/?a=b', - output: { - method: 'GET', - headers: {}, - }, - outputBody: 'hello world', - }); - setResult('text', 'hello world'); - expectFetchCall({ - inputUrl: 'https://google.com', - input: { - query: {}, - headers: {}, - readHeaders: [], - method: 'GET', - }, - outputUrl: 'https://google.com/', - output: { - method: 'GET', - headers: {}, - }, - outputBody: 'hello world', - }); - }); - - it('should parse response correctly', () => { - setResult('text', 'hello world'); - expectFetchCall({ - inputUrl: 'https://google.com/', - input: { - query: {}, - headers: {}, - readHeaders: [], - method: 'POST', - }, - outputUrl: 'https://google.com/', - output: { - method: 'POST', - headers: {}, - }, - outputBody: 'hello world', - }); - setResult('json', { hello: 42 }); - expectFetchCall({ - inputUrl: 'https://google.com/', - input: { - query: {}, - headers: {}, - readHeaders: [], - method: 'POST', - }, - outputUrl: 'https://google.com/', - output: { - method: 'POST', - headers: {}, - }, - outputBody: { hello: 42 }, - }); - }); -}); diff --git a/packages/providers/src/__test__/standard/providerTests.ts b/packages/providers/src/__test__/standard/providerTests.ts deleted file mode 100644 index f5c87b7..0000000 --- a/packages/providers/src/__test__/standard/providerTests.ts +++ /dev/null @@ -1,135 +0,0 @@ -// eslint-disable-next-line import/no-extraneous-dependencies -import { vi } from 'vitest'; - -import { gatherAllEmbeds, gatherAllSources } from '@/providers/all'; -import { makeEmbed, makeSourcerer } from '@/providers/base'; - -export function makeProviderMocks() { - const embedsMock = vi.fn, ReturnType>(); - const sourcesMock = vi.fn, ReturnType>(); - return { - gatherAllEmbeds: embedsMock, - gatherAllSources: sourcesMock, - }; -} - -const sourceA = makeSourcerer({ - id: 'a', - name: 'A', - rank: 1, - disabled: false, - flags: [], -}); -const sourceB = makeSourcerer({ - id: 'b', - name: 'B', - rank: 2, - disabled: false, - flags: [], -}); -const sourceCDisabled = makeSourcerer({ - id: 'c', - name: 'C', - rank: 3, - disabled: true, - flags: [], -}); -const sourceAHigherRank = makeSourcerer({ - id: 'a', - name: 'A', - rank: 100, - disabled: false, - flags: [], -}); -const sourceGSameRankAsA = makeSourcerer({ - id: 'g', - name: 'G', - rank: 1, - disabled: false, - flags: [], -}); -const fullSourceYMovie = makeSourcerer({ - id: 'y', - name: 'Y', - rank: 105, - scrapeMovie: vi.fn(), - flags: [], -}); -const fullSourceYShow = makeSourcerer({ - id: 'y', - name: 'Y', - rank: 105, - scrapeShow: vi.fn(), - flags: [], -}); -const fullSourceZBoth = makeSourcerer({ - id: 'z', - name: 'Z', - rank: 106, - scrapeMovie: vi.fn(), - scrapeShow: vi.fn(), - flags: [], -}); - -const embedD = makeEmbed({ - id: 'd', - rank: 4, - disabled: false, -} as any); -const embedA = makeEmbed({ - id: 'a', - rank: 5, - disabled: false, -} as any); -const embedEDisabled = makeEmbed({ - id: 'e', - rank: 6, - disabled: true, -} as any); -const embedDHigherRank = makeEmbed({ - id: 'd', - rank: 4000, - disabled: false, -} as any); -const embedFSameRankAsA = makeEmbed({ - id: 'f', - rank: 5, - disabled: false, -} as any); -const embedHSameRankAsSourceA = makeEmbed({ - id: 'h', - rank: 1, - disabled: false, -} as any); -const fullEmbedX = makeEmbed({ - id: 'x', - name: 'X', - rank: 104, -} as any); -const fullEmbedZ = makeEmbed({ - id: 'z', - name: 'Z', - rank: 109, -} as any); - -export const mockSources = { - sourceA, - sourceB, - sourceCDisabled, - sourceAHigherRank, - sourceGSameRankAsA, - fullSourceYMovie, - fullSourceYShow, - fullSourceZBoth, -}; - -export const mockEmbeds = { - embedA, - embedD, - embedDHigherRank, - embedEDisabled, - embedFSameRankAsA, - embedHSameRankAsSourceA, - fullEmbedX, - fullEmbedZ, -}; diff --git a/packages/providers/src/__test__/standard/providers/checks.test.ts b/packages/providers/src/__test__/standard/providers/checks.test.ts deleted file mode 100644 index 56e1c39..0000000 --- a/packages/providers/src/__test__/standard/providers/checks.test.ts +++ /dev/null @@ -1,105 +0,0 @@ -import { mockEmbeds, mockSources } from '../providerTests'; -import { getBuiltinEmbeds, getBuiltinSources } from '@/entrypoint/providers'; -import { FeatureMap } from '@/entrypoint/utils/targets'; -import { getProviders } from '@/providers/get'; -import { vi, describe, it, expect, afterEach } from 'vitest'; - -const mocks = await vi.hoisted(async () => (await import('../providerTests')).makeProviderMocks()); -vi.mock('@/providers/all', () => mocks); - -const features: FeatureMap = { - requires: [], - disallowed: [], -}; - -describe('getProviders()', () => { - afterEach(() => { - vi.clearAllMocks(); - }); - - it('should return providers', () => { - mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.embedD]); - mocks.gatherAllSources.mockReturnValue([mockSources.sourceA, mockSources.sourceB]); - expect( - getProviders(features, { - embeds: getBuiltinEmbeds(), - sources: getBuiltinSources(), - }), - ).toEqual({ - sources: [mockSources.sourceA, mockSources.sourceB], - embeds: [mockEmbeds.embedD], - }); - }); - - it('should filter out disabled providers', () => { - mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.embedD, mockEmbeds.embedEDisabled]); - mocks.gatherAllSources.mockReturnValue([mockSources.sourceA, mockSources.sourceCDisabled, mockSources.sourceB]); - expect( - getProviders(features, { - embeds: getBuiltinEmbeds(), - sources: getBuiltinSources(), - }), - ).toEqual({ - sources: [mockSources.sourceA, mockSources.sourceB], - embeds: [mockEmbeds.embedD], - }); - }); - - it('should throw on duplicate ids in sources', () => { - mocks.gatherAllEmbeds.mockReturnValue([]); - mocks.gatherAllSources.mockReturnValue([mockSources.sourceAHigherRank, mockSources.sourceA, mockSources.sourceB]); - expect(() => - getProviders(features, { - embeds: getBuiltinEmbeds(), - sources: getBuiltinSources(), - }), - ).toThrowError(); - }); - - it('should throw on duplicate ids in embeds', () => { - mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.embedD, mockEmbeds.embedDHigherRank, mockEmbeds.embedA]); - mocks.gatherAllSources.mockReturnValue([]); - expect(() => - getProviders(features, { - embeds: getBuiltinEmbeds(), - sources: getBuiltinSources(), - }), - ).toThrowError(); - }); - - it('should throw on duplicate ids between sources and embeds', () => { - mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.embedD, mockEmbeds.embedA]); - mocks.gatherAllSources.mockReturnValue([mockSources.sourceA, mockSources.sourceB]); - expect(() => - getProviders(features, { - embeds: getBuiltinEmbeds(), - sources: getBuiltinSources(), - }), - ).toThrowError(); - }); - - it('should throw on duplicate rank between sources and embeds', () => { - mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.embedD, mockEmbeds.embedA]); - mocks.gatherAllSources.mockReturnValue([mockSources.sourceA, mockSources.sourceB]); - expect(() => - getProviders(features, { - embeds: getBuiltinEmbeds(), - sources: getBuiltinSources(), - }), - ).toThrowError(); - }); - - it('should not throw with same rank between sources and embeds', () => { - mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.embedD, mockEmbeds.embedHSameRankAsSourceA]); - mocks.gatherAllSources.mockReturnValue([mockSources.sourceA, mockSources.sourceB]); - expect( - getProviders(features, { - embeds: getBuiltinEmbeds(), - sources: getBuiltinSources(), - }), - ).toEqual({ - sources: [mockSources.sourceA, mockSources.sourceB], - embeds: [mockEmbeds.embedD, mockEmbeds.embedHSameRankAsSourceA], - }); - }); -}); diff --git a/packages/providers/src/__test__/standard/runner/list.test.ts b/packages/providers/src/__test__/standard/runner/list.test.ts deleted file mode 100644 index b615457..0000000 --- a/packages/providers/src/__test__/standard/runner/list.test.ts +++ /dev/null @@ -1,130 +0,0 @@ -import { mockEmbeds, mockSources } from '../providerTests.ts'; -import { makeProviders } from '@/entrypoint/declare'; -import { targets } from '@/entrypoint/utils/targets'; -import { afterEach, describe, expect, it, vi } from 'vitest'; - -const mocks = await vi.hoisted(async () => (await import('../providerTests.ts')).makeProviderMocks()); -vi.mock('@/providers/all', () => mocks); - -describe('ProviderControls.listSources()', () => { - afterEach(() => { - vi.clearAllMocks(); - }); - - it('should return the source with movie type', () => { - mocks.gatherAllSources.mockReturnValue([mockSources.fullSourceYMovie]); - mocks.gatherAllEmbeds.mockReturnValue([]); - const p = makeProviders({ - fetcher: null as any, - target: targets.NATIVE, - }); - expect(p.listSources()).toEqual([ - { - type: 'source', - id: 'y', - rank: mockSources.fullSourceYMovie.rank, - name: 'Y', - mediaTypes: ['movie'], - }, - ]); - }); - - it('should return the source with show type', () => { - mocks.gatherAllSources.mockReturnValue([mockSources.fullSourceYShow]); - mocks.gatherAllEmbeds.mockReturnValue([]); - const p = makeProviders({ - fetcher: null as any, - target: targets.NATIVE, - }); - expect(p.listSources()).toEqual([ - { - type: 'source', - id: 'y', - rank: mockSources.fullSourceYShow.rank, - name: 'Y', - mediaTypes: ['show'], - }, - ]); - }); - - it('should return the source with both types', () => { - mocks.gatherAllSources.mockReturnValue([mockSources.fullSourceZBoth]); - mocks.gatherAllEmbeds.mockReturnValue([]); - const p = makeProviders({ - fetcher: null as any, - target: targets.NATIVE, - }); - expect(p.listSources()).toEqual([ - { - type: 'source', - id: 'z', - rank: mockSources.fullSourceZBoth.rank, - name: 'Z', - mediaTypes: ['movie', 'show'], - }, - ]); - }); - - it('should return the sources in correct order', () => { - mocks.gatherAllSources.mockReturnValue([mockSources.fullSourceYMovie, mockSources.fullSourceZBoth]); - mocks.gatherAllEmbeds.mockReturnValue([]); - const p1 = makeProviders({ - fetcher: null as any, - target: targets.NATIVE, - }); - const l1 = p1.listSources(); - expect(l1.map((v) => v.id).join(',')).toEqual('z,y'); - - mocks.gatherAllSources.mockReturnValue([mockSources.fullSourceZBoth, mockSources.fullSourceYMovie]); - mocks.gatherAllEmbeds.mockReturnValue([]); - const p2 = makeProviders({ - fetcher: null as any, - target: targets.NATIVE, - }); - const l2 = p2.listSources(); - expect(l2.map((v) => v.id).join(',')).toEqual('z,y'); - }); -}); - -describe('ProviderControls.getAllEmbedMetaSorted()', () => { - afterEach(() => { - vi.clearAllMocks(); - }); - - it('should return the correct embed format', () => { - mocks.gatherAllSources.mockReturnValue([]); - mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.fullEmbedX]); - const p = makeProviders({ - fetcher: null as any, - target: targets.NATIVE, - }); - expect(p.listEmbeds()).toEqual([ - { - type: 'embed', - id: 'x', - rank: mockEmbeds.fullEmbedX.rank, - name: 'X', - }, - ]); - }); - - it('should return the embeds in correct order', () => { - mocks.gatherAllSources.mockReturnValue([]); - mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.fullEmbedX, mockEmbeds.fullEmbedZ]); - const p1 = makeProviders({ - fetcher: null as any, - target: targets.NATIVE, - }); - const l1 = p1.listEmbeds(); - expect(l1.map((v) => v.id).join(',')).toEqual('z,x'); - - mocks.gatherAllSources.mockReturnValue([]); - mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.fullEmbedZ, mockEmbeds.fullEmbedX]); - const p2 = makeProviders({ - fetcher: null as any, - target: targets.NATIVE, - }); - const l2 = p2.listEmbeds(); - expect(l2.map((v) => v.id).join(',')).toEqual('z,x'); - }); -}); diff --git a/packages/providers/src/__test__/standard/runner/meta.test.ts b/packages/providers/src/__test__/standard/runner/meta.test.ts deleted file mode 100644 index ac2fab6..0000000 --- a/packages/providers/src/__test__/standard/runner/meta.test.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { mockEmbeds, mockSources } from '../providerTests.ts'; -import { makeProviders } from '@/entrypoint/declare'; -import { targets } from '@/entrypoint/utils/targets'; -import { afterEach, describe, expect, it, vi } from 'vitest'; - -const mocks = await vi.hoisted(async () => (await import('../providerTests.ts')).makeProviderMocks()); -vi.mock('@/providers/all', () => mocks); - -describe('ProviderControls.getMetadata()', () => { - afterEach(() => { - vi.clearAllMocks(); - }); - - it('should return null if not found', () => { - mocks.gatherAllSources.mockReturnValue([]); - mocks.gatherAllEmbeds.mockReturnValue([]); - const p = makeProviders({ - fetcher: null as any, - target: targets.NATIVE, - }); - expect(p.getMetadata(':)')).toEqual(null); - }); - - it('should return correct source meta', () => { - mocks.gatherAllSources.mockReturnValue([mockSources.fullSourceZBoth]); - mocks.gatherAllEmbeds.mockReturnValue([]); - const p = makeProviders({ - fetcher: null as any, - target: targets.NATIVE, - }); - expect(p.getMetadata(mockSources.fullSourceZBoth.id)).toEqual({ - type: 'source', - id: 'z', - name: 'Z', - rank: mockSources.fullSourceZBoth.rank, - mediaTypes: ['movie', 'show'], - }); - }); - - it('should return correct embed meta', () => { - mocks.gatherAllSources.mockReturnValue([]); - mocks.gatherAllEmbeds.mockReturnValue([mockEmbeds.fullEmbedX]); - const p = makeProviders({ - fetcher: null as any, - target: targets.NATIVE, - }); - expect(p.getMetadata(mockEmbeds.fullEmbedX.id)).toEqual({ - type: 'embed', - id: 'x', - name: 'X', - rank: mockEmbeds.fullEmbedX.rank, - }); - }); -}); diff --git a/packages/providers/src/__test__/standard/utils/features.test.ts b/packages/providers/src/__test__/standard/utils/features.test.ts deleted file mode 100644 index 75a855c..0000000 --- a/packages/providers/src/__test__/standard/utils/features.test.ts +++ /dev/null @@ -1,137 +0,0 @@ -import { FeatureMap, Flags, flags, flagsAllowedInFeatures } from '@/entrypoint/utils/targets'; -import { describe, it, expect } from 'vitest'; - -describe('flagsAllowedInFeatures()', () => { - function checkFeatures(featureMap: FeatureMap, flags: Flags[], output: boolean) { - expect(flagsAllowedInFeatures(featureMap, flags)).toEqual(output); - } - - it('should check required correctly', () => { - checkFeatures( - { - requires: [], - disallowed: [], - }, - [], - true, - ); - checkFeatures( - { - requires: [flags.CORS_ALLOWED], - disallowed: [], - }, - [flags.CORS_ALLOWED], - true, - ); - checkFeatures( - { - requires: [flags.CORS_ALLOWED], - disallowed: [], - }, - [], - false, - ); - checkFeatures( - { - requires: [flags.CORS_ALLOWED, flags.IP_LOCKED], - disallowed: [], - }, - [flags.CORS_ALLOWED, flags.IP_LOCKED], - true, - ); - checkFeatures( - { - requires: [flags.IP_LOCKED], - disallowed: [], - }, - [flags.CORS_ALLOWED], - false, - ); - checkFeatures( - { - requires: [flags.IP_LOCKED], - disallowed: [], - }, - [], - false, - ); - }); - - it('should check disallowed correctly', () => { - checkFeatures( - { - requires: [], - disallowed: [], - }, - [], - true, - ); - checkFeatures( - { - requires: [], - disallowed: [flags.CORS_ALLOWED], - }, - [], - true, - ); - checkFeatures( - { - requires: [], - disallowed: [flags.CORS_ALLOWED], - }, - [flags.CORS_ALLOWED], - false, - ); - checkFeatures( - { - requires: [], - disallowed: [flags.CORS_ALLOWED], - }, - [flags.IP_LOCKED], - true, - ); - checkFeatures( - { - requires: [], - disallowed: [flags.CORS_ALLOWED, flags.IP_LOCKED], - }, - [flags.CORS_ALLOWED], - false, - ); - }); - - it('should pass mixed tests', () => { - checkFeatures( - { - requires: [flags.CORS_ALLOWED], - disallowed: [flags.IP_LOCKED], - }, - [], - false, - ); - checkFeatures( - { - requires: [flags.CORS_ALLOWED], - disallowed: [flags.IP_LOCKED], - }, - [flags.CORS_ALLOWED], - true, - ); - checkFeatures( - { - requires: [flags.CORS_ALLOWED], - disallowed: [flags.IP_LOCKED], - }, - [flags.IP_LOCKED], - false, - ); - checkFeatures( - { - requires: [flags.CORS_ALLOWED], - disallowed: [flags.IP_LOCKED], - }, - [flags.IP_LOCKED, flags.CORS_ALLOWED], - false, - ); - }); -}); diff --git a/packages/providers/src/__test__/standard/utils/list.test.ts b/packages/providers/src/__test__/standard/utils/list.test.ts deleted file mode 100644 index 35437c7..0000000 --- a/packages/providers/src/__test__/standard/utils/list.test.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { reorderOnIdList } from '@/utils/list'; -import { describe, it, expect } from 'vitest'; - -function list(def: string) { - return def.split(',').map((v) => ({ - rank: parseInt(v), - id: v, - })); -} - -function expectListToEqual(l1: ReturnType, l2: ReturnType) { - function flatten(l: ReturnType) { - return l.map((v) => v.id).join(','); - } - expect(flatten(l1)).toEqual(flatten(l2)); -} - -describe('reorderOnIdList()', () => { - it('should reorder based on rank', () => { - const l = list('2,1,4,3'); - const sortedList = list('4,3,2,1'); - expectListToEqual(reorderOnIdList([], l), sortedList); - }); - - it('should work with empty input', () => { - expectListToEqual(reorderOnIdList([], []), []); - }); - - it('should reorder based on id list', () => { - const l = list('4,2,1,3'); - const sortedList = list('4,3,2,1'); - expectListToEqual(reorderOnIdList(['4', '3', '2', '1'], l), sortedList); - }); - - it('should reorder based on id list and rank second', () => { - const l = list('4,2,1,3'); - const sortedList = list('4,3,2,1'); - expectListToEqual(reorderOnIdList(['4', '3'], l), sortedList); - }); - - it('should work with only one item', () => { - const l = list('1'); - const sortedList = list('1'); - expectListToEqual(reorderOnIdList(['1'], l), sortedList); - expectListToEqual(reorderOnIdList([], l), sortedList); - }); - - it('should not affect original list', () => { - const l = list('4,3,2,1'); - const unsortedList = list('4,3,2,1'); - reorderOnIdList([], l); - expectListToEqual(l, unsortedList); - }); -}); diff --git a/packages/providers/src/__test__/standard/utils/valid.test.ts b/packages/providers/src/__test__/standard/utils/valid.test.ts deleted file mode 100644 index 26837e3..0000000 --- a/packages/providers/src/__test__/standard/utils/valid.test.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { isValidStream } from '@/utils/valid'; -import { describe, it, expect } from 'vitest'; - -describe('isValidStream()', () => { - it('should pass valid streams', () => { - expect( - isValidStream({ - type: 'file', - id: 'a', - flags: [], - captions: [], - qualities: { - '1080': { - type: 'mp4', - url: 'hello-world', - }, - }, - }), - ).toBe(true); - expect( - isValidStream({ - type: 'hls', - id: 'a', - flags: [], - captions: [], - playlist: 'hello-world', - }), - ).toBe(true); - }); - - it('should detect empty qualities', () => { - expect( - isValidStream({ - type: 'file', - id: 'a', - flags: [], - captions: [], - qualities: {}, - }), - ).toBe(false); - }); - - it('should detect empty stream urls', () => { - expect( - isValidStream({ - type: 'file', - id: 'a', - flags: [], - captions: [], - qualities: { - '1080': { - type: 'mp4', - url: '', - }, - }, - }), - ).toBe(false); - }); - - it('should detect emtpy HLS playlists', () => { - expect( - isValidStream({ - type: 'hls', - id: 'a', - flags: [], - captions: [], - playlist: '', - }), - ).toBe(false); - }); -}); diff --git a/packages/providers/src/__test__/tsconfig.json b/packages/providers/src/__test__/tsconfig.json deleted file mode 100644 index 238d5f2..0000000 --- a/packages/providers/src/__test__/tsconfig.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "esnext", - "lib": ["esnext"], - "module": "esnext", - "moduleResolution": "node", - "declaration": true, - "outDir": "./lib", - "strict": true, - "esModuleInterop": true, - "allowImportingTsExtensions": true, - "noEmit": true, - "experimentalDecorators": true, - "isolatedModules": false, - "skipLibCheck": true, - "paths": { - "@/*": ["../*"], - "@entrypoint": ["../index.ts"] - } - }, - "include": ["./"] -} From 8f0b90dac3f309925c09377ebb1821f0be20b768 Mon Sep 17 00:00:00 2001 From: Jorrin Date: Wed, 14 Aug 2024 22:56:57 +0200 Subject: [PATCH 36/49] some improvements (still broken) --- .../src/components/player/BottomControls.tsx | 5 +-- .../expo/src/components/player/PlayButton.tsx | 12 ++++--- .../src/components/player/ProgressBar.tsx | 8 +++++ .../src/components/player/VideoPlayer.tsx | 23 ++++--------- .../src/components/player/VideoSlider.tsx | 6 ++-- .../providers/src/providers/embeds/nsbx.ts | 34 +++++++++++++------ .../providers/src/providers/sources/nsbx.ts | 33 ++++++++++-------- 7 files changed, 70 insertions(+), 51 deletions(-) diff --git a/apps/expo/src/components/player/BottomControls.tsx b/apps/expo/src/components/player/BottomControls.tsx index 030befd..76c8562 100644 --- a/apps/expo/src/components/player/BottomControls.tsx +++ b/apps/expo/src/components/player/BottomControls.tsx @@ -45,11 +45,12 @@ export const BottomControls = () => { remainingTime: mapSecondsToTime(0), }; } - }, [player]); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [player?.currentTime]); const durationTime = useMemo(() => { return mapSecondsToTime(player?.duration ?? 0); - }, [player]); + }, [player?.duration]); const translateY = useSharedValue(128); diff --git a/apps/expo/src/components/player/PlayButton.tsx b/apps/expo/src/components/player/PlayButton.tsx index 33e66df..acc5ab6 100644 --- a/apps/expo/src/components/player/PlayButton.tsx +++ b/apps/expo/src/components/player/PlayButton.tsx @@ -1,3 +1,4 @@ +import { useState } from "react"; import { FontAwesome } from "@expo/vector-icons"; import { Spinner } from "tamagui"; @@ -8,6 +9,8 @@ export const PlayButton = () => { const playAudio = usePlayerStore((state) => state.playAudio); const pauseAudio = usePlayerStore((state) => state.pauseAudio); + const [isPlaying, setIsPlaying] = useState(player?.playing ?? false); + if (!player) return null; if (player.status === "loading") { @@ -16,19 +19,18 @@ export const PlayButton = () => { return ( { if (player.playing) { + player.pause(); void pauseAudio(); + setIsPlaying(false); } else { - void playAudio(); - } - - if (!player.playing) { player.play(); void playAudio(); + setIsPlaying(true); } }} /> diff --git a/apps/expo/src/components/player/ProgressBar.tsx b/apps/expo/src/components/player/ProgressBar.tsx index ec9bbcc..97cd0d6 100644 --- a/apps/expo/src/components/player/ProgressBar.tsx +++ b/apps/expo/src/components/player/ProgressBar.tsx @@ -2,6 +2,7 @@ import { useCallback } from "react"; import { TouchableOpacity } from "react-native"; import { usePlayerStore } from "~/stores/player/store"; +import { mapSecondsToTime } from "./utils"; import VideoSlider from "./VideoSlider"; export const ProgressBar = () => { @@ -11,6 +12,13 @@ export const ProgressBar = () => { const updateProgress = useCallback( (newProgress: number) => { if (!player) return; + console.log( + newProgress, + player.duration, + newProgress * player.duration, + mapSecondsToTime(newProgress * player.duration), + mapSecondsToTime(newProgress), + ); player.currentTime = newProgress * player.duration; }, [player], diff --git a/apps/expo/src/components/player/VideoPlayer.tsx b/apps/expo/src/components/player/VideoPlayer.tsx index 7f167dc..7e35c2e 100644 --- a/apps/expo/src/components/player/VideoPlayer.tsx +++ b/apps/expo/src/components/player/VideoPlayer.tsx @@ -84,11 +84,9 @@ export const VideoPlayer = () => { if (state === "playing") { player.play(); } - if (meta) { const media = convertMetaToScrapeMedia(meta); const watchHistoryItem = getWatchHistoryItem(media); - if (watchHistoryItem) { player.currentTime = watchHistoryItem.positionMillis / 1000; } @@ -158,7 +156,6 @@ export const VideoPlayer = () => { } else { runOnJS(setShowBrightnessOverlay)(false); } - player.volume = volume.value; }); const composedGesture = Gesture.Race( @@ -173,6 +170,7 @@ export const VideoPlayer = () => { void NavigationBar.setVisibilityAsync("hidden"); } + // TODO: Rerender with player.currentTime on this function call throws an error in expo-video useEffect(() => { const initializePlayer = async () => { if (isLocalFile) return; @@ -219,25 +217,15 @@ export const VideoPlayer = () => { void initializePlayer(); - const timeout = setTimeout(() => { - if (player.status === "loading") { - void dismissFullscreenPlayer(); - void router.back(); - } - }, 60000); - return () => { if (meta) { - const item = convertMetaToItemData(meta); - const scrapeMedia = convertMetaToScrapeMedia(meta); - updateWatchHistory(item, scrapeMedia, player.currentTime); + // const item = convertMetaToItemData(meta); + // const scrapeMedia = convertMetaToScrapeMedia(meta); + // updateWatchHistory(item, scrapeMedia, player.currentTime); } - clearTimeout(timeout); void synchronizePlayback(); }; }, [ - player.currentTime, - player.status, isLocalFile, dismissFullscreenPlayer, meta, @@ -280,7 +268,7 @@ export const VideoPlayer = () => { }; }, [player, meta, removeFromWatchHistory, autoPlay, setMeta, router]); - console.log("loading player", player); + console.log("VideoPlayer duration", player.currentTime, player.duration); return ( @@ -305,6 +293,7 @@ export const VideoPlayer = () => { }), }, ]} + nativeControls={false} onTouchStart={() => setIsIdle(!isIdle)} /> { const knobSize_ = 20; const trackSize_ = 8; const minimumValue = 0; - const maximumValue = player?.duration ?? 0; - const value = (player?.currentTime ?? 0) * 1000 ?? 0; + const maximumValue = player?.duration ?? 0 * 1000; + const value = player?.currentTime ?? 0 * 1000; // TODO: Buffers are not yet implemented in expo-video const bufferValue = 0; + console.log("VideoSlider duration", player?.currentTime, player?.duration); + const valueToX = (v: number) => { if (maximumValue === minimumValue) return 0; return (width * (v - minimumValue)) / (maximumValue - minimumValue); diff --git a/packages/providers/src/providers/embeds/nsbx.ts b/packages/providers/src/providers/embeds/nsbx.ts index 495486b..03f3942 100644 --- a/packages/providers/src/providers/embeds/nsbx.ts +++ b/packages/providers/src/providers/embeds/nsbx.ts @@ -1,13 +1,13 @@ -import { EmbedOutput, makeEmbed } from '@/providers/base'; -import { NotFoundError } from '@/utils/errors'; +import { EmbedOutput, makeEmbed } from "@/providers/base"; +import { NotFoundError } from "@/utils/errors"; const providers = [ { - id: 'delta', + id: "delta", rank: 699, }, { - id: 'alpha', + id: "alpha", rank: 695, }, ]; @@ -19,29 +19,41 @@ function embed(provider: { id: string; rank: number }) { rank: provider.rank, disabled: false, async scrape(ctx) { - const [query, baseUrl] = ctx.url.split('|'); + const [query] = ctx.url.split("|"); + const baseUrl = "https://api.nsbx.ru"; - const search = await ctx.fetcher.full('/search', { + const search = await ctx.fetcher.full("/search", { query: { query, provider: provider.id, }, - credentials: 'include', + credentials: "include", baseUrl, + headers: { + "X-Auth": + "KPgqlFaKGJTuve4uPEBxu3ssMTcPNL1443zD0T4a7TXQJaxDNt3pJSE4xgdYV8FdQOJ1nbfv6DwcNXltDLW9hmc5QlCEiPxkv5xQXgV69TMWZFvXqz94mwDSbhbr7xa3", + origin: "https://pseudo-flix.pro/", + }, }); - if (search.statusCode === 429) throw new Error('Rate limited'); - if (search.statusCode !== 200) throw new NotFoundError('Failed to search'); + if (search.statusCode === 429) throw new Error("Rate limited"); + if (search.statusCode !== 200) + throw new NotFoundError("Failed to search"); ctx.progress(50); - const result = await ctx.fetcher('/provider', { + const result = await ctx.fetcher("/provider", { query: { resourceId: search.body.url, provider: provider.id, }, - credentials: 'include', + credentials: "include", baseUrl, + headers: { + "X-Auth": + "KPgqlFaKGJTuve4uPEBxu3ssMTcPNL1443zD0T4a7TXQJaxDNt3pJSE4xgdYV8FdQOJ1nbfv6DwcNXltDLW9hmc5QlCEiPxkv5xQXgV69TMWZFvXqz94mwDSbhbr7xa3", + origin: "https://pseudo-flix.pro/", + }, }); ctx.progress(100); diff --git a/packages/providers/src/providers/sources/nsbx.ts b/packages/providers/src/providers/sources/nsbx.ts index 199e627..37675aa 100644 --- a/packages/providers/src/providers/sources/nsbx.ts +++ b/packages/providers/src/providers/sources/nsbx.ts @@ -1,30 +1,35 @@ -import { flags } from '@/entrypoint/utils/targets'; -import { SourcererOutput, makeSourcerer } from '@/providers/base'; -import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; -import { NotFoundError } from '@/utils/errors'; +import { flags } from "@/entrypoint/utils/targets"; +import { makeSourcerer, SourcererOutput } from "@/providers/base"; +import { MovieScrapeContext, ShowScrapeContext } from "@/utils/context"; +import { NotFoundError } from "@/utils/errors"; -async function comboScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promise { +async function comboScraper( + ctx: ShowScrapeContext | MovieScrapeContext, +): Promise { const query = { title: ctx.media.title, releaseYear: ctx.media.releaseYear, tmdbId: ctx.media.tmdbId, imdbId: ctx.media.imdbId, type: ctx.media.type, - ...(ctx.media.type === 'show' && { + ...(ctx.media.type === "show" && { season: ctx.media.season.number.toString(), episode: ctx.media.episode.number.toString(), }), }; - const res: { providers: string[]; endpoint: string } = await ctx.fetcher('https://api.nsbx.ru/status'); + const res: { providers: string[]; endpoint: string } = await ctx.fetcher( + "https://api.nsbx.ru/status", + ); - if (res.providers?.length === 0) throw new NotFoundError('No providers available'); - if (!res.endpoint) throw new Error('No endpoint returned'); + if (res.providers?.length === 0) + throw new NotFoundError("No providers available"); + if (!res.endpoint) throw new Error("No endpoint returned"); const embeds = res.providers.map((provider: string) => ({ - embedId: provider, - url: `${JSON.stringify(query)}|${res.endpoint}`, - })); + embedId: provider, + url: `${JSON.stringify(query)}|${res.endpoint}`, + })); return { embeds, @@ -32,8 +37,8 @@ async function comboScraper(ctx: ShowScrapeContext | MovieScrapeContext): Promis } export const nsbxScraper = makeSourcerer({ - id: 'nsbx', - name: 'NSBX', + id: "nsbx", + name: "NSBX", rank: 129, flags: [flags.CORS_ALLOWED], disabled: false, From ad83de97b013ff8c5324a38338aedd38a97ccf7d Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Fri, 16 Aug 2024 11:25:43 +0200 Subject: [PATCH 37/49] refactor: rewrite certificate check module to be more detailed --- .gitignore | 8 +-- .../check-ios-app-id/expo-module.config.json | 6 +++ apps/expo/modules/check-ios-app-id/index.ts | 9 ++++ .../ios/CheckIosAppId.podspec} | 6 +-- .../ios/CheckIosAppIdModule.swift | 54 +++++++++++++++++++ .../src/CheckIosAppIdModule.android.ts | 10 ++++ .../src/CheckIosAppIdModule.ts} | 7 ++- .../expo-module.config.json | 6 --- .../modules/check-ios-certificate/index.ts | 11 ---- .../ios/CheckIosCertificateModule.swift | 37 ------------- .../src/CheckIosCertificateModule.android.ts | 10 ---- .../modules/check-ios-marketplace/index.ts | 20 +------ .../src/CheckIosMarketplaceModule.ts | 19 ++++++- apps/expo/package.json | 2 +- apps/expo/src/app/(tabs)/downloads.tsx | 19 +++---- .../src/components/player/BottomControls.tsx | 14 +++-- 16 files changed, 127 insertions(+), 111 deletions(-) create mode 100644 apps/expo/modules/check-ios-app-id/expo-module.config.json create mode 100644 apps/expo/modules/check-ios-app-id/index.ts rename apps/expo/modules/{check-ios-certificate/ios/CheckIosCertificate.podspec => check-ios-app-id/ios/CheckIosAppId.podspec} (71%) create mode 100644 apps/expo/modules/check-ios-app-id/ios/CheckIosAppIdModule.swift create mode 100644 apps/expo/modules/check-ios-app-id/src/CheckIosAppIdModule.android.ts rename apps/expo/modules/{check-ios-certificate/src/CheckIosCertificateModule.ts => check-ios-app-id/src/CheckIosAppIdModule.ts} (55%) delete mode 100644 apps/expo/modules/check-ios-certificate/expo-module.config.json delete mode 100644 apps/expo/modules/check-ios-certificate/index.ts delete mode 100644 apps/expo/modules/check-ios-certificate/ios/CheckIosCertificateModule.swift delete mode 100644 apps/expo/modules/check-ios-certificate/src/CheckIosCertificateModule.android.ts diff --git a/.gitignore b/.gitignore index 9e9a2e8..3b3865b 100644 --- a/.gitignore +++ b/.gitignore @@ -17,10 +17,10 @@ coverage dist/ expo-env.d.ts apps/expo/.gitignore -ios/ -android/ -!modules/*/ios/ -!modules/*/android/ + +# Ignore top-level ios and android directories +apps/expo/ios/ +apps/expo/android/ # production build diff --git a/apps/expo/modules/check-ios-app-id/expo-module.config.json b/apps/expo/modules/check-ios-app-id/expo-module.config.json new file mode 100644 index 0000000..8717dc5 --- /dev/null +++ b/apps/expo/modules/check-ios-app-id/expo-module.config.json @@ -0,0 +1,6 @@ +{ + "platforms": ["ios"], + "ios": { + "modules": ["CheckIosAppIdModule"] + } +} diff --git a/apps/expo/modules/check-ios-app-id/index.ts b/apps/expo/modules/check-ios-app-id/index.ts new file mode 100644 index 0000000..666455b --- /dev/null +++ b/apps/expo/modules/check-ios-app-id/index.ts @@ -0,0 +1,9 @@ +import CheckIosAppIdModule from "./src/CheckIosAppIdModule"; + +export function isIncorrectAppId(): boolean { + return CheckIosAppIdModule.isIncorrectAppId(); +} + +export function getAppId(): string { + return CheckIosAppIdModule.getAppId(); +} diff --git a/apps/expo/modules/check-ios-certificate/ios/CheckIosCertificate.podspec b/apps/expo/modules/check-ios-app-id/ios/CheckIosAppId.podspec similarity index 71% rename from apps/expo/modules/check-ios-certificate/ios/CheckIosCertificate.podspec rename to apps/expo/modules/check-ios-app-id/ios/CheckIosAppId.podspec index 597e515..71d1c58 100644 --- a/apps/expo/modules/check-ios-certificate/ios/CheckIosCertificate.podspec +++ b/apps/expo/modules/check-ios-app-id/ios/CheckIosAppId.podspec @@ -1,8 +1,8 @@ Pod::Spec.new do |s| - s.name = 'CheckIosCertificate' + s.name = 'CheckIosAppId' s.version = '1.0.0' - s.summary = 'Check if iOS certificate is Development or Production.' - s.description = 'Check if iOS certificate is Development or Production.' + s.summary = 'Check if iOS App ID is explicit or wildcard.' + s.description = 'Check if iOS App ID is explicit or wildcard.' s.author = 'castdrian' s.homepage = 'https://docs.expo.dev/modules/' s.platforms = { :ios => '13.4', :tvos => '13.4' } diff --git a/apps/expo/modules/check-ios-app-id/ios/CheckIosAppIdModule.swift b/apps/expo/modules/check-ios-app-id/ios/CheckIosAppIdModule.swift new file mode 100644 index 0000000..e0ef1e9 --- /dev/null +++ b/apps/expo/modules/check-ios-app-id/ios/CheckIosAppIdModule.swift @@ -0,0 +1,54 @@ +import ExpoModulesCore + +public class CheckIosAppIdModule: Module { + public func definition() -> ModuleDefinition { + Name("CheckIosAppId") + + Function("isIncorrectAppId") { () -> Bool in + #if targetEnvironment(simulator) + return false + #else + guard let appId = self.extractAppId() else { + return false + } + + return appId.hasSuffix(".*") || (Bundle.main.bundleIdentifier != nil && !appId.contains(Bundle.main.bundleIdentifier!)) + #endif + } + + // Function to get the App ID from the provisioning profile + Function("getAppId") { () -> String? in + #if targetEnvironment(simulator) + return nil + #else + return self.extractAppId() + #endif + } + } + + // Helper function to extract the application-identifier value from the provisioning profile + private func extractAppId() -> String? { + guard let filePath = Bundle.main.path(forResource: "embedded", ofType: "mobileprovision") else { + return nil + } + + let fileURL = URL(fileURLWithPath: filePath) + do { + let data = try String(contentsOf: fileURL, encoding: .ascii) + let cleared = data.components(separatedBy: .whitespacesAndNewlines).joined() + + // Search for the application-identifier key and extract its value + if let range = cleared.range(of: "application-identifier") { + let substring = cleared[range.upperBound...] + if let endRange = substring.range(of: "") { + let appId = String(substring[.. ModuleDefinition { - // Sets the name of the module that JavaScript code will use to refer to the module. Takes a string as an argument. - // Can be inferred from module's class name, but it's recommended to set it explicitly for clarity. - // The module will be accessible from `requireNativeModule('CheckIosCertificate')` in JavaScript. - Name("CheckIosCertificate") - - // Defines a JavaScript synchronous function that runs the native code on the JavaScript thread. - Function("isDevelopmentProvisioningProfile") { () -> Any in - #if targetEnvironment(simulator) - // Running on the Simulator - return true - #else - // Check for provisioning profile for non-Simulator execution - guard let filePath = Bundle.main.path(forResource: "embedded", ofType: "mobileprovision") else { - return false - } - - let fileURL = URL(fileURLWithPath: filePath) - do { - let data = try String(contentsOf: fileURL, encoding: .ascii) - let cleared = data.components(separatedBy: .whitespacesAndNewlines).joined() - return cleared.contains("get-task-allow") - } catch { - // Handling error if the file read fails - print("Error reading provisioning profile: \(error)") - return false - } - #endif - } - } -} diff --git a/apps/expo/modules/check-ios-certificate/src/CheckIosCertificateModule.android.ts b/apps/expo/modules/check-ios-certificate/src/CheckIosCertificateModule.android.ts deleted file mode 100644 index fa041d2..0000000 --- a/apps/expo/modules/check-ios-certificate/src/CheckIosCertificateModule.android.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { UnavailabilityError } from "expo-modules-core"; - -export default { - isDevelopmentProvisioningProfile: () => { - throw new UnavailabilityError( - "CheckIosCertificate", - "isDevelopmentProvisioningProfile", - ); - }, -}; diff --git a/apps/expo/modules/check-ios-marketplace/index.ts b/apps/expo/modules/check-ios-marketplace/index.ts index 3b5f8c6..c6dd3e1 100644 --- a/apps/expo/modules/check-ios-marketplace/index.ts +++ b/apps/expo/modules/check-ios-marketplace/index.ts @@ -1,22 +1,6 @@ +import type { MarketplaceSource } from "./src/CheckIosMarketplaceModule"; import CheckIosMarketplaceModule from "./src/CheckIosMarketplaceModule"; -export enum MarketplaceSource { - AppStore = "App Store", - TestFlight = "TestFlight", - Marketplace = "Alternative marketplace", - Web = "Website", - Other = "Other", - Unknown = "Unknown", - Error = "Error", - Unavailable = "Unavailable", -} - -interface CheckIosMarketplaceModule { - getCurrentMarketplaceAsync(): Promise; -} - export async function getCurrentMarketplaceAsync(): Promise { - return ( - CheckIosMarketplaceModule as CheckIosMarketplaceModule - ).getCurrentMarketplaceAsync(); + return CheckIosMarketplaceModule.getCurrentMarketplaceAsync(); } diff --git a/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.ts b/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.ts index 5d729a3..a025047 100644 --- a/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.ts +++ b/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.ts @@ -1,5 +1,22 @@ import { requireNativeModule } from "expo-modules-core"; +export enum MarketplaceSource { + AppStore = "App Store", + TestFlight = "TestFlight", + Marketplace = "Alternative marketplace", + Web = "Website", + Other = "Other", + Unknown = "Unknown", + Error = "Error", + Unavailable = "Unavailable", +} + +interface CheckIosMarketplaceModule { + getCurrentMarketplaceAsync(): Promise; +} + // It loads the native module object from the JSI or falls back to // the bridge module (from NativeModulesProxy) if the remote debugger is on. -export default requireNativeModule("CheckIosMarketplace"); +export default requireNativeModule( + "CheckIosMarketplace", +) as CheckIosMarketplaceModule; diff --git a/apps/expo/package.json b/apps/expo/package.json index 3f86cfc..bf589dd 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -11,7 +11,7 @@ "android": "expo run:android", "ios": "expo run:ios", "apk": "expo prebuild --platform=android && cd android && ./gradlew assembleRelease && mv app/build/outputs/apk/release/app-release.apk app/build/movie-web.apk", - "ipa": "expo prebuild --platform=ios && cd ios && xcodebuild clean archive -workspace movieweb.xcworkspace -scheme movieweb -configuration Release -destination generic/platform=iOS -archivePath build/movieweb.xcarchive CODE_SIGN_IDENTITY=\"\" CODE_SIGNING_ALLOWED=NO | xcbeautify && cd build/movieweb.xcarchive/Products && mv Applications Payload && zip -r movie-web.ipa Payload && mv movie-web.ipa ../..", + "ipa": "expo prebuild --platform=ios && cd ios && xcodebuild archive -workspace movieweb.xcworkspace -scheme movieweb -configuration Release -destination generic/platform=iOS -archivePath build/movieweb.xcarchive CODE_SIGN_IDENTITY=\"\" CODE_SIGNING_ALLOWED=NO | xcbeautify && cd build/movieweb.xcarchive/Products && mv Applications Payload && zip -r movie-web.ipa Payload && mv movie-web.ipa ../..", "ipa:sim": "expo prebuild --platform=ios && cd ios && xcodebuild clean archive -workspace movieweb.xcworkspace -scheme movieweb -configuration Release -destination \"generic/platform=iOS Simulator\" -archivePath build/movieweb.xcarchive CODE_SIGN_IDENTITY=\"\" CODE_SIGNING_ALLOWED=NO | xcbeautify && cd build/movieweb.xcarchive/Products && mv Applications Payload && zip -r movie-web.ipa Payload && mv movie-web.ipa ../..", "format": "prettier --check . --ignore-path ../../.gitignore", "lint": "eslint .", diff --git a/apps/expo/src/app/(tabs)/downloads.tsx b/apps/expo/src/app/(tabs)/downloads.tsx index cc0997b..4be65bc 100644 --- a/apps/expo/src/app/(tabs)/downloads.tsx +++ b/apps/expo/src/app/(tabs)/downloads.tsx @@ -2,7 +2,7 @@ import React from "react"; import { Alert, Platform } from "react-native"; import { useFocusEffect, useRouter } from "expo-router"; import { MaterialCommunityIcons } from "@expo/vector-icons"; -import { isDevelopmentProvisioningProfile } from "modules/check-ios-certificate"; +import { getAppId, isIncorrectAppId } from "modules/check-ios-app-id"; import { ScrollView, useTheme, YStack } from "tamagui"; import type { ScrapeMedia } from "@movie-web/provider-utils"; @@ -81,10 +81,11 @@ const DownloadsScreen: React.FC = () => { useFocusEffect( React.useCallback(() => { - if (Platform.OS === "ios" && !isDevelopmentProvisioningProfile()) { + if (Platform.OS === "ios" && isIncorrectAppId()) { + const appId = getAppId(); Alert.alert( - "Production Certificate", - "Download functionality is not available when the application is signed with a distribution certificate.", + "Wildcard/Mismatching App ID", + `The application is signed with a wildcard or mismatching App ID (${appId}). Download functionality is not available when the application is signed with a wildcard or mismatching App ID.`, [ { text: "OK", @@ -148,14 +149,10 @@ const DownloadsScreen: React.FC = () => { onPress={() => handlePress(download.downloads[0]!.localPath)} /> ); - } else { - return ( - - ); } + return ( + + ); })} diff --git a/apps/expo/src/components/player/BottomControls.tsx b/apps/expo/src/components/player/BottomControls.tsx index 76c8562..d7dc574 100644 --- a/apps/expo/src/components/player/BottomControls.tsx +++ b/apps/expo/src/components/player/BottomControls.tsx @@ -5,7 +5,7 @@ import Animated, { useSharedValue, withTiming, } from "react-native-reanimated"; -import { isDevelopmentProvisioningProfile } from "modules/check-ios-certificate"; +import { isIncorrectAppId } from "modules/check-ios-app-id"; import { Text, View } from "tamagui"; import { LinearGradient } from "tamagui/linear-gradient"; @@ -39,12 +39,11 @@ export const BottomControls = () => { (player.duration ?? 0) - (player.currentTime ?? 0), )}`; return { currentTime: current, remainingTime: remaining }; - } else { - return { - currentTime: mapSecondsToTime(0), - remainingTime: mapSecondsToTime(0), - }; } + return { + currentTime: mapSecondsToTime(0), + remainingTime: mapSecondsToTime(0), + }; // eslint-disable-next-line react-hooks/exhaustive-deps }, [player?.currentTime]); @@ -110,8 +109,7 @@ export const BottomControls = () => { {Platform.OS === "android" || - (Platform.OS === "ios" && - isDevelopmentProvisioningProfile()) ? ( + (Platform.OS === "ios" && !isIncorrectAppId()) ? ( ) : null} From 1bf0cc541d5932551d5f56de00949e1a1f5e6cd6 Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Fri, 16 Aug 2024 11:39:32 +0200 Subject: [PATCH 38/49] fix: eat my ass --- apps/expo/modules/check-ios-app-id/src/CheckIosAppIdModule.ts | 1 + .../check-ios-marketplace/src/CheckIosMarketplaceModule.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/apps/expo/modules/check-ios-app-id/src/CheckIosAppIdModule.ts b/apps/expo/modules/check-ios-app-id/src/CheckIosAppIdModule.ts index e468cc6..4440b12 100644 --- a/apps/expo/modules/check-ios-app-id/src/CheckIosAppIdModule.ts +++ b/apps/expo/modules/check-ios-app-id/src/CheckIosAppIdModule.ts @@ -7,4 +7,5 @@ interface CheckIosAppIdModule { // It loads the native module object from the JSI or falls back to // the bridge module (from NativeModulesProxy) if the remote debugger is on. +// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion export default requireNativeModule("CheckIosAppId") as CheckIosAppIdModule; diff --git a/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.ts b/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.ts index a025047..9f1906f 100644 --- a/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.ts +++ b/apps/expo/modules/check-ios-marketplace/src/CheckIosMarketplaceModule.ts @@ -17,6 +17,7 @@ interface CheckIosMarketplaceModule { // It loads the native module object from the JSI or falls back to // the bridge module (from NativeModulesProxy) if the remote debugger is on. +// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion export default requireNativeModule( "CheckIosMarketplace", ) as CheckIosMarketplaceModule; From 38a6d8f7114712837acf41862707af1b6b975490 Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Sat, 17 Aug 2024 14:10:49 +0200 Subject: [PATCH 39/49] chore: expo 51 finally fixed this --- apps/expo/app.config.ts | 2 -- .../plugins/withRemoveiOSNotificationEntitlement.js | 11 ----------- 2 files changed, 13 deletions(-) delete mode 100644 apps/expo/src/plugins/withRemoveiOSNotificationEntitlement.js diff --git a/apps/expo/app.config.ts b/apps/expo/app.config.ts index e12b1d9..6f6d5c3 100644 --- a/apps/expo/app.config.ts +++ b/apps/expo/app.config.ts @@ -1,7 +1,6 @@ import type { ExpoConfig } from "expo/config"; import { version } from "./package.json"; -import withRemoveiOSNotificationEntitlement from "./src/plugins/withRemoveiOSNotificationEntitlement"; const defineConfig = (): ExpoConfig => ({ name: "movie-web", @@ -44,7 +43,6 @@ const defineConfig = (): ExpoConfig => ({ plugins: [ "expo-router", "expo-video", - [withRemoveiOSNotificationEntitlement as unknown as string], [ "expo-screen-orientation", { diff --git a/apps/expo/src/plugins/withRemoveiOSNotificationEntitlement.js b/apps/expo/src/plugins/withRemoveiOSNotificationEntitlement.js deleted file mode 100644 index ce5068f..0000000 --- a/apps/expo/src/plugins/withRemoveiOSNotificationEntitlement.js +++ /dev/null @@ -1,11 +0,0 @@ -const withEntitlementsPlist = - require("@expo/config-plugins").withEntitlementsPlist; - -const withRemoveiOSNotificationEntitlement = (config) => { - return withEntitlementsPlist(config, (mod) => { - delete mod.modResults["aps-environment"]; - return mod; - }); -}; - -module.exports = withRemoveiOSNotificationEntitlement; From 6c5bb84691c9f1663d2ce58945ea8025cd5c5e83 Mon Sep 17 00:00:00 2001 From: Jorrin Date: Mon, 19 Aug 2024 15:23:32 +0200 Subject: [PATCH 40/49] fix video player crashing on unmount --- apps/expo/src/app/videoPlayer.tsx | 10 +++ .../expo/src/components/player/BackButton.tsx | 3 + .../expo/src/components/player/SeekButton.tsx | 4 +- .../src/components/player/VideoPlayer.tsx | 63 ++++++++++++++----- apps/expo/src/stores/player/slices/video.ts | 12 +++- 5 files changed, 71 insertions(+), 21 deletions(-) diff --git a/apps/expo/src/app/videoPlayer.tsx b/apps/expo/src/app/videoPlayer.tsx index e574b0e..b37b3f9 100644 --- a/apps/expo/src/app/videoPlayer.tsx +++ b/apps/expo/src/app/videoPlayer.tsx @@ -1,3 +1,5 @@ +import { useEffect } from "react"; +import { BackHandler } from "react-native"; import { useLocalSearchParams } from "expo-router"; import type { ScrapeMedia } from "@movie-web/provider-utils"; @@ -10,6 +12,7 @@ import { PlayerStatus } from "~/stores/player/slices/interface"; import { usePlayerStore } from "~/stores/player/store"; export default function VideoPlayerWrapper() { + const resetVideo = usePlayerStore((state) => state.resetVideo); const playerStatus = usePlayerStore((state) => state.interface.playerStatus); const { presentFullscreenPlayer } = usePlayer(); @@ -31,6 +34,13 @@ export default function VideoPlayerWrapper() { void presentFullscreenPlayer(); + useEffect(() => { + BackHandler.addEventListener("hardwareBackPress", () => { + resetVideo(); + return false; + }); + }, [resetVideo]); + if (download) { return ; } diff --git a/apps/expo/src/components/player/BackButton.tsx b/apps/expo/src/components/player/BackButton.tsx index 26e3bfd..674e3fc 100644 --- a/apps/expo/src/components/player/BackButton.tsx +++ b/apps/expo/src/components/player/BackButton.tsx @@ -3,8 +3,10 @@ import { useRouter } from "expo-router"; import { Ionicons } from "@expo/vector-icons"; import { usePlayer } from "~/hooks/player/usePlayer"; +import { usePlayerStore } from "~/stores/player/store"; export const BackButton = () => { + const resetVideo = usePlayerStore((state) => state.resetVideo); const { dismissFullscreenPlayer } = usePlayer(); const router = useRouter(); @@ -12,6 +14,7 @@ export const BackButton = () => { { + resetVideo(); dismissFullscreenPlayer() .then(() => { if (router.canGoBack()) { diff --git a/apps/expo/src/components/player/SeekButton.tsx b/apps/expo/src/components/player/SeekButton.tsx index 19b0e81..164662d 100644 --- a/apps/expo/src/components/player/SeekButton.tsx +++ b/apps/expo/src/components/player/SeekButton.tsx @@ -22,8 +22,8 @@ export const SeekButton = ({ type }: SeekProps) => { onPress={() => { player.currentTime = type === "forward" - ? player.currentTime + 10000 - : player.currentTime - 10000; + ? player.currentTime + 10 + : player.currentTime - 10; void setAudioPositionAsync(player.currentTime); }} /> diff --git a/apps/expo/src/components/player/VideoPlayer.tsx b/apps/expo/src/components/player/VideoPlayer.tsx index 7e35c2e..8a429f3 100644 --- a/apps/expo/src/components/player/VideoPlayer.tsx +++ b/apps/expo/src/components/player/VideoPlayer.tsx @@ -1,5 +1,6 @@ +import type { VideoPlayer as VideoPlayerType } from "expo-video"; import type { SharedValue } from "react-native-reanimated"; -import React, { useEffect, useState } from "react"; +import React, { useEffect, useMemo, useState } from "react"; import { Dimensions, Platform } from "react-native"; import { Gesture, GestureDetector } from "react-native-gesture-handler"; import Animated, { @@ -11,11 +12,12 @@ import { useSafeAreaInsets } from "react-native-safe-area-context"; import { ResizeMode } from "expo-av"; import * as Haptics from "expo-haptics"; import { useKeepAwake } from "expo-keep-awake"; +import { requireNativeModule } from "expo-modules-core"; import * as NavigationBar from "expo-navigation-bar"; import * as Network from "expo-network"; import { useRouter } from "expo-router"; import * as StatusBar from "expo-status-bar"; -import { useVideoPlayer, VideoView } from "expo-video"; +import { VideoView } from "expo-video"; import { Feather } from "@expo/vector-icons"; import { Spinner, useTheme, View } from "tamagui"; @@ -41,6 +43,10 @@ import { import { CaptionRenderer } from "./CaptionRenderer"; import { ControlsOverlay } from "./ControlsOverlay"; +const ExpoVideoPlayer = + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + requireNativeModule("ExpoVideo").VideoPlayer as VideoPlayerType; + export const VideoPlayer = () => { useKeepAwake(); @@ -60,7 +66,6 @@ export const VideoPlayer = () => { const scale = useSharedValue(1); - const state = usePlayerStore((state) => state.interface.state); const isIdle = usePlayerStore((state) => state.interface.isIdle); const stream = usePlayerStore((state) => state.interface.currentStream); const selectedAudioTrack = useAudioTrackStore((state) => state.selectedTrack); @@ -80,24 +85,43 @@ export const VideoPlayer = () => { const { wifiDefaultQuality, mobileDataDefaultQuality } = useNetworkSettingsStore(); - const player = useVideoPlayer(videoSrc, (player) => { - if (state === "playing") { - player.play(); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const player: VideoPlayerType = useMemo( + // @ts-expect-error - ExpoVideoPlayer is not a valid component + // eslint-disable-next-line @typescript-eslint/no-unsafe-return + () => new ExpoVideoPlayer(videoSrc), + [videoSrc], + ); + + useEffect(() => { + if (player) { + setVideoPlayer(player); } - if (meta) { + }, [player, setVideoPlayer]); + + useEffect(() => { + const statusListener = player.addListener("statusChange", (status) => { + console.log("VideoPlayer status", status); + if (status === "readyToPlay") { + player.play(); + } + }); + + return () => { + statusListener.remove(); + }; + }, [getWatchHistoryItem, meta, player]); + + useEffect(() => { + if (meta && player.status === "readyToPlay" && player.currentTime < 1) { const media = convertMetaToScrapeMedia(meta); const watchHistoryItem = getWatchHistoryItem(media); if (watchHistoryItem) { player.currentTime = watchHistoryItem.positionMillis / 1000; } } - }); - - useEffect(() => { - if (player) { - setVideoPlayer(player); - } - }, [player, setVideoPlayer]); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [player.status]); const updateResizeMode = (newMode: ResizeMode) => { setResizeMode(newMode); @@ -219,12 +243,13 @@ export const VideoPlayer = () => { return () => { if (meta) { - // const item = convertMetaToItemData(meta); - // const scrapeMedia = convertMetaToScrapeMedia(meta); - // updateWatchHistory(item, scrapeMedia, player.currentTime); + const item = convertMetaToItemData(meta); + const scrapeMedia = convertMetaToScrapeMedia(meta); + updateWatchHistory(item, scrapeMedia, player.currentTime); } void synchronizePlayback(); }; + // eslint-disable-next-line react-hooks/exhaustive-deps }, [ isLocalFile, dismissFullscreenPlayer, @@ -241,6 +266,10 @@ export const VideoPlayer = () => { useEffect(() => { const playerStatusChange = player.addListener("statusChange", (status) => { + if (status === "readyToPlay") { + player.play(); + } + const isFinished = player.duration - player.currentTime < 1; if (meta && status === "idle" && meta.type === "movie" && isFinished) { const item = convertMetaToItemData(meta); diff --git a/apps/expo/src/stores/player/slices/video.ts b/apps/expo/src/stores/player/slices/video.ts index 8f65535..a8a4017 100644 --- a/apps/expo/src/stores/player/slices/video.ts +++ b/apps/expo/src/stores/player/slices/video.ts @@ -63,9 +63,17 @@ export const createVideoSlice: MakeSlice = (set) => ({ set({ isLocalFile }); }, resetVideo() { - set({ meta: null, isLocalFile: false }); set((s) => { - s.interface.playerStatus = PlayerStatus.SCRAPING; + s.player?.release(); + return { + meta: null, + isLocalFile: false, + videoSrc: null, + player: null, + interface: { + playerStatus: PlayerStatus.SCRAPING, + }, + }; }); }, }); From 3558cf21beb9477f0d409fe0903421afc6b4cee6 Mon Sep 17 00:00:00 2001 From: Jorrin Date: Mon, 19 Aug 2024 16:22:25 +0200 Subject: [PATCH 41/49] poll video timer --- .../src/components/player/BottomControls.tsx | 47 ++++++++++++------- .../expo/src/components/player/PlayButton.tsx | 15 +++++- 2 files changed, 44 insertions(+), 18 deletions(-) diff --git a/apps/expo/src/components/player/BottomControls.tsx b/apps/expo/src/components/player/BottomControls.tsx index d7dc574..ae51113 100644 --- a/apps/expo/src/components/player/BottomControls.tsx +++ b/apps/expo/src/components/player/BottomControls.tsx @@ -1,4 +1,4 @@ -import { useCallback, useMemo, useState } from "react"; +import { useCallback, useEffect, useMemo, useState } from "react"; import { Platform, TouchableOpacity } from "react-native"; import Animated, { useAnimatedStyle, @@ -27,29 +27,25 @@ export const BottomControls = () => { const isLocalFile = usePlayerStore((state) => state.isLocalFile); const [showRemaining, setShowRemaining] = useState(false); + const [localDuration, setLocalDuration] = useState(0); + const [localCurrentTime, setLocalCurrentTime] = useState(0); + const toggleTimeDisplay = useCallback(() => { setIsIdle(false); setShowRemaining(!showRemaining); }, [showRemaining, setIsIdle]); const { currentTime, remainingTime } = useMemo(() => { - if (player) { - const current = mapSecondsToTime(player.currentTime); - const remaining = `-${mapSecondsToTime( - (player.duration ?? 0) - (player.currentTime ?? 0), - )}`; - return { currentTime: current, remainingTime: remaining }; - } - return { - currentTime: mapSecondsToTime(0), - remainingTime: mapSecondsToTime(0), - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [player?.currentTime]); + const current = mapSecondsToTime(localCurrentTime); + const remaining = `-${mapSecondsToTime( + (localDuration ?? 0) - localCurrentTime, + )}`; + return { currentTime: current, remainingTime: remaining }; + }, [localCurrentTime, localDuration]); const durationTime = useMemo(() => { - return mapSecondsToTime(player?.duration ?? 0); - }, [player?.duration]); + return mapSecondsToTime(localDuration ?? 0); + }, [localDuration]); const translateY = useSharedValue(128); @@ -63,6 +59,25 @@ export const BottomControls = () => { }; }); + // TODO: No duration events in expo-video yet + useEffect(() => { + const interval = setInterval(() => { + console.log( + "checking video duration and time", + player?.duration, + player?.currentTime, + ); + if (player?.duration && player?.currentTime) { + setLocalDuration(player.duration); + setLocalCurrentTime(player.currentTime); + } + }, 1000); + + return () => { + clearInterval(interval); + }; + }, [player]); + return ( { const pauseAudio = usePlayerStore((state) => state.pauseAudio); const [isPlaying, setIsPlaying] = useState(player?.playing ?? false); + const [isLoading, setIsLoading] = useState(false); + + useEffect(() => { + const statusListener = player?.addListener("statusChange", (status) => { + setIsLoading(status === "loading"); + }); + + return () => { + statusListener?.remove(); + }; + }, [player]); if (!player) return null; - if (player.status === "loading") { + if (isLoading) { return ; } From 02ddd5901ab6001bc1a1c087bd2e1fb102864423 Mon Sep 17 00:00:00 2001 From: Jorrin Date: Sun, 8 Sep 2024 17:34:58 +0200 Subject: [PATCH 42/49] fix video slider --- .../src/components/player/BottomControls.tsx | 11 +- .../src/components/player/ProgressBar.tsx | 10 +- .../src/components/player/QualitySelector.tsx | 14 ++- .../src/components/player/VideoPlayer.tsx | 3 - .../src/components/player/VideoSlider.tsx | 3 +- apps/expo/src/hooks/player/useSourceScrape.ts | 1 + .../src/providers/sources/soapertv/index.ts | 114 ++++++++++-------- 7 files changed, 85 insertions(+), 71 deletions(-) diff --git a/apps/expo/src/components/player/BottomControls.tsx b/apps/expo/src/components/player/BottomControls.tsx index ae51113..ab93f66 100644 --- a/apps/expo/src/components/player/BottomControls.tsx +++ b/apps/expo/src/components/player/BottomControls.tsx @@ -62,14 +62,11 @@ export const BottomControls = () => { // TODO: No duration events in expo-video yet useEffect(() => { const interval = setInterval(() => { - console.log( - "checking video duration and time", - player?.duration, - player?.currentTime, - ); if (player?.duration && player?.currentTime) { - setLocalDuration(player.duration); - setLocalCurrentTime(player.currentTime); + requestAnimationFrame(() => { + setLocalDuration(player.duration); + setLocalCurrentTime(player.currentTime); + }); } }, 1000); diff --git a/apps/expo/src/components/player/ProgressBar.tsx b/apps/expo/src/components/player/ProgressBar.tsx index 97cd0d6..c98480f 100644 --- a/apps/expo/src/components/player/ProgressBar.tsx +++ b/apps/expo/src/components/player/ProgressBar.tsx @@ -2,7 +2,6 @@ import { useCallback } from "react"; import { TouchableOpacity } from "react-native"; import { usePlayerStore } from "~/stores/player/store"; -import { mapSecondsToTime } from "./utils"; import VideoSlider from "./VideoSlider"; export const ProgressBar = () => { @@ -12,14 +11,7 @@ export const ProgressBar = () => { const updateProgress = useCallback( (newProgress: number) => { if (!player) return; - console.log( - newProgress, - player.duration, - newProgress * player.duration, - mapSecondsToTime(newProgress * player.duration), - mapSecondsToTime(newProgress), - ); - player.currentTime = newProgress * player.duration; + player.currentTime = newProgress; }, [player], ); diff --git a/apps/expo/src/components/player/QualitySelector.tsx b/apps/expo/src/components/player/QualitySelector.tsx index d449c77..3360467 100644 --- a/apps/expo/src/components/player/QualitySelector.tsx +++ b/apps/expo/src/components/player/QualitySelector.tsx @@ -32,7 +32,19 @@ export const QualitySelector = (props: SheetProps) => { } else if (stream.type === "hls") { if (!hlsTracks?.video) return null; - qualityMap = hlsTracks.video.map((video) => ({ + const hlsTracksWithoutDuplicatedQualities = hlsTracks.video.filter( + (video, index, self) => { + return ( + index === + self.findIndex( + (v) => + v.properties[0]?.attributes.resolution === + video.properties[0]?.attributes.resolution, + ) + ); + }, + ); + qualityMap = hlsTracksWithoutDuplicatedQualities.map((video) => ({ quality: (video.properties[0]?.attributes.resolution as string) ?? "unknown", url: constructFullUrl(stream.playlist, video.uri), diff --git a/apps/expo/src/components/player/VideoPlayer.tsx b/apps/expo/src/components/player/VideoPlayer.tsx index 8a429f3..9707c65 100644 --- a/apps/expo/src/components/player/VideoPlayer.tsx +++ b/apps/expo/src/components/player/VideoPlayer.tsx @@ -101,7 +101,6 @@ export const VideoPlayer = () => { useEffect(() => { const statusListener = player.addListener("statusChange", (status) => { - console.log("VideoPlayer status", status); if (status === "readyToPlay") { player.play(); } @@ -297,8 +296,6 @@ export const VideoPlayer = () => { }; }, [player, meta, removeFromWatchHistory, autoPlay, setMeta, router]); - console.log("VideoPlayer duration", player.currentTime, player.duration); - return ( { // TODO: Buffers are not yet implemented in expo-video const bufferValue = 0; - console.log("VideoSlider duration", player?.currentTime, player?.duration); - const valueToX = (v: number) => { if (maximumValue === minimumValue) return 0; return (width * (v - minimumValue)) / (maximumValue - minimumValue); @@ -158,6 +156,7 @@ const VideoSlider = ({ onSlidingComplete }: VideoSliderProps) => { height: trackSize_, backgroundColor: theme.videoSliderFilled.val, borderRadius: trackSize_ / 2, + zIndex: 1, }, progressStyle, ]} diff --git a/apps/expo/src/hooks/player/useSourceScrape.ts b/apps/expo/src/hooks/player/useSourceScrape.ts index 954f78a..135d8ab 100644 --- a/apps/expo/src/hooks/player/useSourceScrape.ts +++ b/apps/expo/src/hooks/player/useSourceScrape.ts @@ -168,6 +168,7 @@ export function useScrape() { update: updateEvent, discoverEmbeds: discoverEmbedsEvent, }, + sourceOrder: ["insertunit"], }); return getResult(output); }, diff --git a/packages/providers/src/providers/sources/soapertv/index.ts b/packages/providers/src/providers/sources/soapertv/index.ts index 54e371f..0517cf4 100644 --- a/packages/providers/src/providers/sources/soapertv/index.ts +++ b/packages/providers/src/providers/sources/soapertv/index.ts @@ -1,60 +1,70 @@ -import { load } from 'cheerio'; +import { flags } from "@/entrypoint/utils/targets"; +import { Caption, labelToLanguageCode } from "@/providers/captions"; +import { Stream } from "@/providers/streams"; +import { MovieScrapeContext, ShowScrapeContext } from "@/utils/context"; +import { NotFoundError } from "@/utils/errors"; +import { load } from "cheerio"; -import { flags } from '@/entrypoint/utils/targets'; -import { Caption, labelToLanguageCode } from '@/providers/captions'; -import { Stream } from '@/providers/streams'; -import { MovieScrapeContext, ShowScrapeContext } from '@/utils/context'; -import { NotFoundError } from '@/utils/errors'; -import { convertPlaylistsToDataUrls } from '@/utils/playlist'; +import { makeSourcerer, SourcererOutput } from "../../base"; +import { InfoResponse } from "./types"; -import { InfoResponse } from './types'; -import { SourcererOutput, makeSourcerer } from '../../base'; +const baseUrl = "https://soaper.tv"; -const baseUrl = 'https://soaper.tv'; - -const universalScraper = async (ctx: MovieScrapeContext | ShowScrapeContext): Promise => { - const searchResult = await ctx.proxiedFetcher('/search.html', { +const universalScraper = async ( + ctx: MovieScrapeContext | ShowScrapeContext, +): Promise => { + const searchResult = await ctx.proxiedFetcher("/search.html", { baseUrl, query: { keyword: ctx.media.title, }, }); const searchResult$ = load(searchResult); - let showLink = searchResult$('a') + let showLink = searchResult$("a") .filter((_, el) => searchResult$(el).text() === ctx.media.title) - .attr('href'); - if (!showLink) throw new NotFoundError('Content not found'); + .attr("href"); + if (!showLink) throw new NotFoundError("Content not found"); - if (ctx.media.type === 'show') { + if (ctx.media.type === "show") { const seasonNumber = ctx.media.season.number; const episodeNumber = ctx.media.episode.number; const showPage = await ctx.proxiedFetcher(showLink, { baseUrl }); const showPage$ = load(showPage); - const seasonBlock = showPage$('h4') - .filter((_, el) => showPage$(el).text().trim().split(':')[0].trim() === `Season${seasonNumber}`) + const seasonBlock = showPage$("h4") + .filter( + (_, el) => + showPage$(el).text().trim().split(":")[0].trim() === + `Season${seasonNumber}`, + ) .parent(); - const episodes = seasonBlock.find('a').toArray(); + const episodes = seasonBlock.find("a").toArray(); showLink = showPage$( - episodes.find((el) => parseInt(showPage$(el).text().split('.')[0], 10) === episodeNumber), - ).attr('href'); + episodes.find( + (el) => + parseInt(showPage$(el).text().split(".")[0], 10) === episodeNumber, + ), + ).attr("href"); } - if (!showLink) throw new NotFoundError('Content not found'); + if (!showLink) throw new NotFoundError("Content not found"); const contentPage = await ctx.proxiedFetcher(showLink, { baseUrl }); const contentPage$ = load(contentPage); - const pass = contentPage$('#hId').attr('value'); + const pass = contentPage$("#hId").attr("value"); - if (!pass) throw new NotFoundError('Content not found'); + if (!pass) throw new NotFoundError("Content not found"); const formData = new URLSearchParams(); - formData.append('pass', pass); - formData.append('e2', '0'); - formData.append('server', '0'); + formData.append("pass", pass); + formData.append("e2", "0"); + formData.append("server", "0"); - const infoEndpoint = ctx.media.type === 'show' ? '/home/index/getEInfoAjax' : '/home/index/getMInfoAjax'; + const infoEndpoint = + ctx.media.type === "show" + ? "/home/index/getEInfoAjax" + : "/home/index/getMInfoAjax"; const streamRes = await ctx.proxiedFetcher(infoEndpoint, { baseUrl, - method: 'POST', + method: "POST", body: formData, headers: { referer: `${baseUrl}${showLink}`, @@ -66,11 +76,11 @@ const universalScraper = async (ctx: MovieScrapeContext | ShowScrapeContext): Pr const captions: Caption[] = []; for (const sub of streamResJson.subs) { // Some subtitles are named .srt, some are named :hi, or just - let language: string | null = ''; - if (sub.name.includes('.srt')) { - language = labelToLanguageCode(sub.name.split('.srt')[0]); - } else if (sub.name.includes(':')) { - language = sub.name.split(':')[0]; + let language: string | null = ""; + if (sub.name.includes(".srt")) { + language = labelToLanguageCode(sub.name.split(".srt")[0]); + } else if (sub.name.includes(":")) { + language = sub.name.split(":")[0]; } else { language = sub.name; } @@ -78,8 +88,8 @@ const universalScraper = async (ctx: MovieScrapeContext | ShowScrapeContext): Pr captions.push({ id: sub.path, - url: sub.path, - type: 'srt', + url: `${streamResJson.vtt}${sub.path}`, + type: "srt", hasCorsRestrictions: false, language, }); @@ -89,22 +99,28 @@ const universalScraper = async (ctx: MovieScrapeContext | ShowScrapeContext): Pr embeds: [], stream: [ { - id: 'primary', - playlist: await convertPlaylistsToDataUrls(ctx.proxiedFetcher, `${baseUrl}/${streamResJson.val}`), - type: 'hls', - proxyDepth: 2, - flags: [flags.CORS_ALLOWED], + id: "primary", + playlist: `${baseUrl}${streamResJson.val}`, + type: "hls", + flags: [flags.IP_LOCKED], captions, + headers: { + Referer: `${baseUrl}${showLink}`, + Origin: baseUrl, + }, }, ...(streamResJson.val_bak ? [ { - id: 'backup', - playlist: await convertPlaylistsToDataUrls(ctx.proxiedFetcher, `${baseUrl}/${streamResJson.val_bak}`), - type: 'hls', - flags: [flags.CORS_ALLOWED], - proxyDepth: 2, + id: "backup", + playlist: `${baseUrl}${streamResJson.val_bak}`, + type: "hls", + flags: [flags.IP_LOCKED], captions, + headers: { + Referer: `${baseUrl}${showLink}`, + Origin: baseUrl, + }, } as Stream, ] : []), @@ -113,8 +129,8 @@ const universalScraper = async (ctx: MovieScrapeContext | ShowScrapeContext): Pr }; export const soaperTvScraper = makeSourcerer({ - id: 'soapertv', - name: 'SoaperTV', + id: "soapertv", + name: "SoaperTV", rank: 126, flags: [flags.CORS_ALLOWED], scrapeMovie: universalScraper, From 169c88ecc16c0c57b7ac085ffa8ee5258bacce2c Mon Sep 17 00:00:00 2001 From: Jorrin Date: Sun, 17 Nov 2024 16:12:46 +0100 Subject: [PATCH 43/49] upgrade some packages --- apps/expo/app.config.ts | 7 +- apps/expo/package.json | 84 +- apps/expo/src/app/_layout.tsx | 1 - .../src/components/player/BottomControls.tsx | 18 +- .../expo/src/components/player/PlayButton.tsx | 4 +- .../src/components/player/QualitySelector.tsx | 3 +- .../src/components/player/VideoPlayer.tsx | 35 +- .../src/components/player/VideoSlider.tsx | 3 +- packages/providers/package.json | 2 +- pnpm-lock.yaml | 5701 +++++++++-------- 10 files changed, 3168 insertions(+), 2690 deletions(-) diff --git a/apps/expo/app.config.ts b/apps/expo/app.config.ts index 6f6d5c3..01981b1 100644 --- a/apps/expo/app.config.ts +++ b/apps/expo/app.config.ts @@ -19,6 +19,7 @@ const defineConfig = (): ExpoConfig => ({ }, assetBundlePatterns: ["**/*"], ios: { + newArchEnabled: true, bundleIdentifier: "dev.movieweb.mobile", supportsTablet: true, requireFullScreen: true, @@ -29,6 +30,7 @@ const defineConfig = (): ExpoConfig => ({ }, }, android: { + newArchEnabled: true, package: "dev.movieweb.mobile", permissions: ["WRITE_SETTINGS"], }, @@ -52,14 +54,11 @@ const defineConfig = (): ExpoConfig => ({ [ "expo-build-properties", { - ios: { - newArchEnabled: false, - }, android: { - newArchEnabled: false, minSdkVersion: 24, packagingOptions: { pickFirst: ["**/libcrypto.so"], + excludes: ["**/libreactnative.so"], }, }, }, diff --git a/apps/expo/package.json b/apps/expo/package.json index bf589dd..c22612e 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -21,67 +21,65 @@ "browserify-sign": "4.2.2" }, "dependencies": { - "@expo/metro-config": "~0.18.11", + "@expo/metro-config": "~0.19.1", "@movie-web/api": "workspace:*", "@movie-web/colors": "workspace:*", "@movie-web/provider-utils": "workspace:*", "@movie-web/tmdb": "workspace:*", "@octokit/rest": "^20.0.2", "@react-native-anywhere/polyfill-base64": "0.0.1-alpha.0", - "@react-navigation/native": "^6.1.18", + "@react-navigation/native": "^7.0.0", "@salihgun/react-native-video-processor": "^0.3.1", - "@tamagui/animations-moti": "1.108.3", - "@tamagui/babel-plugin": "1.108.3", - "@tamagui/config": "1.108.3", - "@tamagui/metro-plugin": "1.108.3", - "@tamagui/toast": "1.108.3", + "@tamagui/animations-moti": "1.116.15", + "@tamagui/babel-plugin": "1.116.15", + "@tamagui/config": "1.116.15", + "@tamagui/metro-plugin": "1.116.15", + "@tamagui/toast": "1.116.15", "@tanstack/react-query": "^5.51.23", "ajv": "^8.17.1", "burnt": "^0.12.2", "class-variance-authority": "^0.7.0", - "expo": "~51.0.26", - "expo-alternate-app-icons": "^0.1.9", - "expo-application": "~5.9.1", - "expo-av": "~14.0.6", - "expo-brightness": "~12.0.1", - "expo-build-properties": "~0.12.5", - "expo-clipboard": "~6.0.3", - "expo-constants": "~16.0.2", - "expo-file-system": "~17.0.1", - "expo-haptics": "~13.0.1", - "expo-keep-awake": "~13.0.2", - "expo-linear-gradient": "~13.0.2", - "expo-linking": "~6.3.1", - "expo-media-library": "~16.0.4", - "expo-navigation-bar": "~3.0.7", - "expo-network": "~6.0.1", + "expo": "~52.0.7", + "expo-alternate-app-icons": "^1.1.0", + "expo-application": "~6.0.1", + "expo-av": "~15.0.1", + "expo-brightness": "~13.0.2", + "expo-build-properties": "~0.13.1", + "expo-clipboard": "~7.0.0", + "expo-constants": "~17.0.3", + "expo-file-system": "~18.0.3", + "expo-haptics": "~14.0.0", + "expo-keep-awake": "~14.0.1", + "expo-linear-gradient": "~14.0.1", + "expo-linking": "~7.0.2", + "expo-media-library": "~17.0.2", + "expo-navigation-bar": "~4.0.3", + "expo-network": "~7.0.0", "expo-pod-pinner": "^1.0.1", - "expo-router": "~3.5.21", - "expo-screen-orientation": "~7.0.5", - "expo-splash-screen": "~0.27.5", - "expo-status-bar": "~1.12.1", - "expo-system-ui": "~3.0.7", - "expo-video": "~1.2.4", - "expo-web-browser": "~13.0.3", + "expo-router": "~4.0.6", + "expo-screen-orientation": "~8.0.0", + "expo-splash-screen": "~0.29.11", + "expo-status-bar": "~2.0.0", + "expo-system-ui": "~4.0.3", + "expo-video": "~2.0.0", + "expo-web-browser": "~14.0.1", "ffmpeg-kit-react-native": "^6.0.2", "immer": "^10.1.1", "iso-639-1": "^3.1.2", "react": "~18.3.1", "react-dom": "~18.3.1", - "react-native": "0.74.5", - "react-native-gesture-handler": "~2.18.1", + "react-native": "0.76.2", + "react-native-gesture-handler": "~2.20.2", "react-native-markdown-display": "^7.0.2", - "react-native-mmkv": "^2.12.2", - "react-native-modal": "^13.0.1", - "react-native-quick-base64": "^2.1.2", - "react-native-quick-crypto": "^0.7.3", - "react-native-reanimated": "~3.15.0", - "react-native-safe-area-context": "4.10.8", - "react-native-screens": "3.34.0", - "react-native-svg": "15.5.0", - "react-native-web": "^0.19.12", + "react-native-mmkv": "^3.1.0", + "react-native-quick-crypto": "^0.7.6", + "react-native-reanimated": "~3.16.1", + "react-native-safe-area-context": "4.12.0", + "react-native-screens": "^4.1.0", + "react-native-svg": "15.8.0", + "react-native-web": "^0.19.13", "subsrt-ts": "^2.1.2", - "tamagui": "1.108.3", + "tamagui": "1.116.15", "text-encoding-polyfill": "^0.6.7", "zustand": "^4.5.4" }, @@ -94,7 +92,7 @@ "@movie-web/tsconfig": "workspace:^0.1.0", "@tanstack/eslint-plugin-query": "^5.51.15", "@types/babel__core": "^7.20.5", - "@types/react": "~18.3.3", + "@types/react": "~18.3.12", "babel-plugin-module-resolver": "^5.0.2", "eslint": "^8.57.0", "prettier": "^3.2.5", diff --git a/apps/expo/src/app/_layout.tsx b/apps/expo/src/app/_layout.tsx index a8cd809..e40ef72 100644 --- a/apps/expo/src/app/_layout.tsx +++ b/apps/expo/src/app/_layout.tsx @@ -11,7 +11,6 @@ import { TamaguiProvider, Theme, useTheme } from "tamagui"; import tamaguiConfig from "tamagui.config"; import { useThemeStore } from "~/stores/theme"; -// @ts-expect-error - Without named import it causes an infinite loop import _styles from "../../tamagui-web.css"; export { diff --git a/apps/expo/src/components/player/BottomControls.tsx b/apps/expo/src/components/player/BottomControls.tsx index ab93f66..b1ca4af 100644 --- a/apps/expo/src/components/player/BottomControls.tsx +++ b/apps/expo/src/components/player/BottomControls.tsx @@ -59,19 +59,17 @@ export const BottomControls = () => { }; }); - // TODO: No duration events in expo-video yet useEffect(() => { - const interval = setInterval(() => { - if (player?.duration && player?.currentTime) { - requestAnimationFrame(() => { - setLocalDuration(player.duration); - setLocalCurrentTime(player.currentTime); - }); - } - }, 1000); + if (player?.duration) { + setLocalDuration(player.duration); + } + + const subscription = player?.addListener("timeUpdate", (payload) => { + setLocalCurrentTime(payload.currentTime); + }); return () => { - clearInterval(interval); + subscription?.remove(); }; }, [player]); diff --git a/apps/expo/src/components/player/PlayButton.tsx b/apps/expo/src/components/player/PlayButton.tsx index ae16a08..0b1cbe3 100644 --- a/apps/expo/src/components/player/PlayButton.tsx +++ b/apps/expo/src/components/player/PlayButton.tsx @@ -13,8 +13,8 @@ export const PlayButton = () => { const [isLoading, setIsLoading] = useState(false); useEffect(() => { - const statusListener = player?.addListener("statusChange", (status) => { - setIsLoading(status === "loading"); + const statusListener = player?.addListener("statusChange", (data) => { + setIsLoading(data.status === "loading"); }); return () => { diff --git a/apps/expo/src/components/player/QualitySelector.tsx b/apps/expo/src/components/player/QualitySelector.tsx index 3360467..8247f08 100644 --- a/apps/expo/src/components/player/QualitySelector.tsx +++ b/apps/expo/src/components/player/QualitySelector.tsx @@ -14,7 +14,8 @@ export const QualitySelector = (props: SheetProps) => { const stream = usePlayerStore((state) => state.interface.currentStream); const hlsTracks = usePlayerStore((state) => state.interface.hlsTracks); - if (!player || !videoSrc || !stream) return null; + if (!player || !videoSrc || typeof videoSrc === "number" || !stream) + return null; let qualityMap: { quality: string; url: string }[]; let currentQuality: string | undefined; diff --git a/apps/expo/src/components/player/VideoPlayer.tsx b/apps/expo/src/components/player/VideoPlayer.tsx index 9707c65..2b04ad4 100644 --- a/apps/expo/src/components/player/VideoPlayer.tsx +++ b/apps/expo/src/components/player/VideoPlayer.tsx @@ -1,6 +1,5 @@ -import type { VideoPlayer as VideoPlayerType } from "expo-video"; import type { SharedValue } from "react-native-reanimated"; -import React, { useEffect, useMemo, useState } from "react"; +import React, { useEffect, useState } from "react"; import { Dimensions, Platform } from "react-native"; import { Gesture, GestureDetector } from "react-native-gesture-handler"; import Animated, { @@ -12,12 +11,11 @@ import { useSafeAreaInsets } from "react-native-safe-area-context"; import { ResizeMode } from "expo-av"; import * as Haptics from "expo-haptics"; import { useKeepAwake } from "expo-keep-awake"; -import { requireNativeModule } from "expo-modules-core"; import * as NavigationBar from "expo-navigation-bar"; import * as Network from "expo-network"; import { useRouter } from "expo-router"; import * as StatusBar from "expo-status-bar"; -import { VideoView } from "expo-video"; +import { createVideoPlayer, VideoView } from "expo-video"; import { Feather } from "@expo/vector-icons"; import { Spinner, useTheme, View } from "tamagui"; @@ -43,10 +41,6 @@ import { import { CaptionRenderer } from "./CaptionRenderer"; import { ControlsOverlay } from "./ControlsOverlay"; -const ExpoVideoPlayer = - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - requireNativeModule("ExpoVideo").VideoPlayer as VideoPlayerType; - export const VideoPlayer = () => { useKeepAwake(); @@ -85,13 +79,7 @@ export const VideoPlayer = () => { const { wifiDefaultQuality, mobileDataDefaultQuality } = useNetworkSettingsStore(); - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - const player: VideoPlayerType = useMemo( - // @ts-expect-error - ExpoVideoPlayer is not a valid component - // eslint-disable-next-line @typescript-eslint/no-unsafe-return - () => new ExpoVideoPlayer(videoSrc), - [videoSrc], - ); + const player = createVideoPlayer(videoSrc); useEffect(() => { if (player) { @@ -100,8 +88,8 @@ export const VideoPlayer = () => { }, [player, setVideoPlayer]); useEffect(() => { - const statusListener = player.addListener("statusChange", (status) => { - if (status === "readyToPlay") { + const statusListener = player.addListener("statusChange", (data) => { + if (data.status === "readyToPlay") { player.play(); } }); @@ -264,18 +252,23 @@ export const VideoPlayer = () => { ]); useEffect(() => { - const playerStatusChange = player.addListener("statusChange", (status) => { - if (status === "readyToPlay") { + const playerStatusChange = player.addListener("statusChange", (data) => { + if (data.status === "readyToPlay") { player.play(); } const isFinished = player.duration - player.currentTime < 1; - if (meta && status === "idle" && meta.type === "movie" && isFinished) { + if ( + meta && + data.status === "idle" && + meta.type === "movie" && + isFinished + ) { const item = convertMetaToItemData(meta); removeFromWatchHistory(item); } - if (autoPlay && status === "idle" && meta?.type === "show") { + if (autoPlay && data.status === "idle" && meta?.type === "show") { getNextEpisode(meta) .then((nextEpisodeMeta) => { if (!nextEpisodeMeta) return; diff --git a/apps/expo/src/components/player/VideoSlider.tsx b/apps/expo/src/components/player/VideoSlider.tsx index 9bb2d27..3b1985d 100644 --- a/apps/expo/src/components/player/VideoSlider.tsx +++ b/apps/expo/src/components/player/VideoSlider.tsx @@ -42,8 +42,7 @@ const VideoSlider = ({ onSlidingComplete }: VideoSliderProps) => { const minimumValue = 0; const maximumValue = player?.duration ?? 0 * 1000; const value = player?.currentTime ?? 0 * 1000; - // TODO: Buffers are not yet implemented in expo-video - const bufferValue = 0; + const bufferValue = player?.bufferedPosition ?? 0 * 1000; const valueToX = (v: number) => { if (maximumValue === minimumValue) return 0; diff --git a/packages/providers/package.json b/packages/providers/package.json index 3adedf6..70f9a90 100644 --- a/packages/providers/package.json +++ b/packages/providers/package.json @@ -81,7 +81,7 @@ "iso-639-1": "^3.1.2", "nanoid": "^3.3.7", "node-fetch": "^3.3.2", - "react-native": "0.74.5", + "react-native": "0.76.2", "set-cookie-parser": "^2.7.0", "unpacker": "^1.0.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 00d7c59..969c28e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: link:tooling/prettier '@turbo/gen': specifier: ^1.11.3 - version: 1.13.4(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4) + version: 1.13.4(@swc/core@1.9.2(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4) prettier: specifier: ^3.2.5 version: 3.3.3 @@ -27,8 +27,8 @@ importers: apps/expo: dependencies: '@expo/metro-config': - specifier: ~0.18.11 - version: 0.18.11 + specifier: ~0.19.1 + version: 0.19.1 '@movie-web/api': specifier: workspace:* version: link:../../packages/api @@ -48,26 +48,26 @@ importers: specifier: 0.0.1-alpha.0 version: 0.0.1-alpha.0 '@react-navigation/native': - specifier: ^6.1.18 - version: 6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + specifier: ^7.0.0 + version: 7.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) '@salihgun/react-native-video-processor': specifier: ^0.3.1 - version: 0.3.1(ffmpeg-kit-react-native@6.0.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-video@5.2.1)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + version: 0.3.1(ffmpeg-kit-react-native@6.0.2(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-video@5.2.1)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) '@tamagui/animations-moti': - specifier: 1.108.3 - version: 1.108.3(moti@0.29.0(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react@18.3.1) + specifier: 1.116.15 + version: 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.16.1(@babel/core@7.25.2)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react@18.3.1) '@tamagui/babel-plugin': - specifier: 1.108.3 - version: 1.108.3(react@18.3.1) + specifier: 1.116.15 + version: 1.116.15(@swc/helpers@0.5.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) '@tamagui/config': - specifier: 1.108.3 - version: 1.108.3(moti@0.29.0(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + specifier: 1.116.15 + version: 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.16.1(@babel/core@7.25.2)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) '@tamagui/metro-plugin': - specifier: 1.108.3 - version: 1.108.3(@babel/core@7.25.2)(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-svg@15.5.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4))) + specifier: 1.116.15 + version: 1.116.15(mxw2x3jpqaswfpi3djwupym5c4) '@tamagui/toast': - specifier: 1.108.3 - version: 1.108.3(react@18.3.1) + specifier: 1.116.15 + version: 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-query': specifier: ^5.51.23 version: 5.51.23(react@18.3.1) @@ -76,85 +76,85 @@ importers: version: 8.17.1 burnt: specifier: ^0.12.2 - version: 0.12.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + version: 0.12.2(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) class-variance-authority: specifier: ^0.7.0 version: 0.7.0 expo: - specifier: ~51.0.26 - version: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + specifier: ~52.0.7 + version: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) expo-alternate-app-icons: - specifier: ^0.1.9 - version: 0.1.9(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + specifier: ^1.1.0 + version: 1.1.0(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) expo-application: - specifier: ~5.9.1 - version: 5.9.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~6.0.1 + version: 6.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)) expo-av: - specifier: ~14.0.6 - version: 14.0.6(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~15.0.1 + version: 15.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-web@0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) expo-brightness: - specifier: ~12.0.1 - version: 12.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~13.0.2 + version: 13.0.2(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)) expo-build-properties: - specifier: ~0.12.5 - version: 0.12.5(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~0.13.1 + version: 0.13.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)) expo-clipboard: - specifier: ~6.0.3 - version: 6.0.3(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~7.0.0 + version: 7.0.0(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) expo-constants: - specifier: ~16.0.2 - version: 16.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~17.0.3 + version: 17.0.3(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)) expo-file-system: - specifier: ~17.0.1 - version: 17.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~18.0.3 + version: 18.0.3(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)) expo-haptics: - specifier: ~13.0.1 - version: 13.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~14.0.0 + version: 14.0.0(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)) expo-keep-awake: - specifier: ~13.0.2 - version: 13.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~14.0.1 + version: 14.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react@18.3.1) expo-linear-gradient: - specifier: ~13.0.2 - version: 13.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~14.0.1 + version: 14.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) expo-linking: - specifier: ~6.3.1 - version: 6.3.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~7.0.2 + version: 7.0.2(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) expo-media-library: - specifier: ~16.0.4 - version: 16.0.4(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~17.0.2 + version: 17.0.2(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)) expo-navigation-bar: - specifier: ~3.0.7 - version: 3.0.7(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~4.0.3 + version: 4.0.3(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) expo-network: - specifier: ~6.0.1 - version: 6.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~7.0.0 + version: 7.0.0(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react@18.3.1) expo-pod-pinner: specifier: ^1.0.1 version: 1.0.1 expo-router: - specifier: ~3.5.21 - version: 3.5.21(ga2zmoy2dqxl2qdy4qnq4p4acq) + specifier: ~4.0.6 + version: 4.0.6(rhni4cslmyckepb37nzlik3fdy) expo-screen-orientation: - specifier: ~7.0.5 - version: 7.0.5(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~8.0.0 + version: 8.0.0(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)) expo-splash-screen: - specifier: ~0.27.5 - version: 0.27.5(expo-modules-autolinking@1.11.1)(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~0.29.11 + version: 0.29.11(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)) expo-status-bar: - specifier: ~1.12.1 - version: 1.12.1 + specifier: ~2.0.0 + version: 2.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) expo-system-ui: - specifier: ~3.0.7 - version: 3.0.7(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~4.0.3 + version: 4.0.3(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-web@0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)) expo-video: - specifier: ~1.2.4 - version: 1.2.4(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~2.0.0 + version: 2.0.0(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) expo-web-browser: - specifier: ~13.0.3 - version: 13.0.3(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + specifier: ~14.0.1 + version: 14.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)) ffmpeg-kit-react-native: specifier: ^6.0.2 - version: 6.0.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + version: 6.0.2(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) immer: specifier: ^10.1.1 version: 10.1.1 @@ -168,53 +168,47 @@ importers: specifier: ~18.3.1 version: 18.3.1(react@18.3.1) react-native: - specifier: 0.74.5 - version: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + specifier: 0.76.2 + version: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) react-native-gesture-handler: - specifier: ~2.18.1 - version: 2.18.1(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + specifier: ~2.20.2 + version: 2.20.2(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) react-native-markdown-display: specifier: ^7.0.2 - version: 7.0.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + version: 7.0.2(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) react-native-mmkv: - specifier: ^2.12.2 - version: 2.12.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - react-native-modal: - specifier: ^13.0.1 - version: 13.0.1(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - react-native-quick-base64: - specifier: ^2.1.2 - version: 2.1.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + specifier: ^3.1.0 + version: 3.1.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) react-native-quick-crypto: - specifier: ^0.7.3 - version: 0.7.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + specifier: ^0.7.6 + version: 0.7.6(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) react-native-reanimated: - specifier: ~3.15.0 - version: 3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + specifier: ~3.16.1 + version: 3.16.1(@babel/core@7.25.2)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) react-native-safe-area-context: - specifier: 4.10.8 - version: 4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + specifier: 4.12.0 + version: 4.12.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) react-native-screens: - specifier: 3.34.0 - version: 3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + specifier: ^4.1.0 + version: 4.1.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) react-native-svg: - specifier: 15.5.0 - version: 15.5.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + specifier: 15.8.0 + version: 15.8.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) react-native-web: - specifier: ^0.19.12 - version: 0.19.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^0.19.13 + version: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) subsrt-ts: specifier: ^2.1.2 version: 2.1.2 tamagui: - specifier: 1.108.3 - version: 1.108.3(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + specifier: 1.116.15 + version: 1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) text-encoding-polyfill: specifier: ^0.6.7 version: 0.6.7 zustand: specifier: ^4.5.4 - version: 4.5.4(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) + version: 4.5.4(@types/react@18.3.12)(immer@10.1.1)(react@18.3.1) devDependencies: '@babel/core': specifier: ^7.25.2 @@ -241,8 +235,8 @@ importers: specifier: ^7.20.5 version: 7.20.5 '@types/react': - specifier: ~18.3.3 - version: 18.3.3 + specifier: ~18.3.12 + version: 18.3.12 babel-plugin-module-resolver: specifier: ^5.0.2 version: 5.0.2 @@ -351,8 +345,8 @@ importers: specifier: ^3.3.2 version: 3.3.2 react-native: - specifier: 0.74.5 - version: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + specifier: 0.76.2 + version: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) set-cookie-parser: specifier: ^2.7.0 version: 2.7.0 @@ -371,7 +365,7 @@ importers: version: link:../../tooling/typescript '@nabla/vite-plugin-eslint': specifier: ^2.0.4 - version: 2.0.4(eslint@8.57.0)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6)) + version: 2.0.4(eslint@8.57.0)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6)) '@types/cookie': specifier: ^0.6.0 version: 0.6.0 @@ -398,7 +392,7 @@ importers: version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) '@vitest/coverage-v8': specifier: ^1.6.0 - version: 1.6.0(vitest@1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6)) + version: 1.6.0(vitest@1.6.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6)) commander: specifier: ^12.1.0 version: 12.1.0 @@ -449,16 +443,16 @@ importers: version: 5.5.4 vite: specifier: ^5.3.5 - version: 5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + version: 5.4.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6) vite-node: specifier: ^1.6.0 - version: 1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + version: 1.6.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6) vite-plugin-dts: specifier: ^3.9.1 - version: 3.9.1(@types/node@22.2.0)(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6)) + version: 3.9.1(@types/node@22.2.0)(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6)) vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + version: 1.6.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6) packages/tmdb: dependencies: @@ -577,6 +571,14 @@ importers: packages: + '@0no-co/graphql.web@1.0.11': + resolution: {integrity: sha512-xuSJ9WXwTmtngWkbdEoopMo6F8NLtjy84UNAMsAr5C3/2SgAL/dEU10TMqTIsipqPQ8HA/7WzeqQ9DEQxSvPPA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + graphql: + optional: true + '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} @@ -592,10 +594,18 @@ packages: resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.25.2': resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.26.2': + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} + engines: {node: '>=6.9.0'} + '@babel/core@7.25.2': resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} @@ -604,10 +614,18 @@ packages: resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} engines: {node: '>=6.9.0'} + '@babel/generator@7.26.2': + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.24.7': resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} + '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} engines: {node: '>=6.9.0'} @@ -616,12 +634,22 @@ packages: resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.25.0': resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-create-class-features-plugin@7.25.9': + resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-create-regexp-features-plugin@7.25.2': resolution: {integrity: sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==} engines: {node: '>=6.9.0'} @@ -633,14 +661,14 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-environment-visitor@7.24.7': - resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.24.8': resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.24.7': resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} @@ -655,22 +683,42 @@ packages: resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.24.8': resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.25.9': + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} + engines: {node: '>=6.9.0'} + '@babel/helper-remap-async-to-generator@7.25.0': resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.25.0': resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.25.9': + resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-simple-access@7.24.7': resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} @@ -679,22 +727,42 @@ packages: resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} engines: {node: '>=6.9.0'} + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.24.8': resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.24.8': resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.25.0': resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} + engines: {node: '>=6.9.0'} + '@babel/helpers@7.25.0': resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} engines: {node: '>=6.9.0'} @@ -708,6 +776,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.26.2': + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3': resolution: {integrity: sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==} engines: {node: '>=6.9.0'} @@ -738,13 +811,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-proposal-async-generator-functions@7.20.7': - resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-class-properties@7.18.6': resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} @@ -764,13 +830,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-logical-assignment-operators@7.20.7': - resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} @@ -778,27 +837,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-numeric-separator@7.18.6': - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-object-rest-spread@7.20.7': - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-optional-catch-binding@7.18.6': - resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-optional-chaining@7.21.0': resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} @@ -817,6 +855,11 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-class-properties@7.12.13': resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: @@ -950,6 +993,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-generator-functions@7.25.9': + resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-to-generator@7.24.7': resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} engines: {node: '>=6.9.0'} @@ -974,6 +1023,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-class-properties@7.25.9': + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-class-static-block@7.24.7': resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} engines: {node: '>=6.9.0'} @@ -986,6 +1041,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-computed-properties@7.24.7': resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} engines: {node: '>=6.9.0'} @@ -1332,18 +1393,34 @@ packages: resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + '@babel/template@7.25.0': resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.3': resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.9': + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} + engines: {node: '>=6.9.0'} + '@babel/types@7.25.2': resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} engines: {node: '>=6.9.0'} + '@babel/types@7.26.0': + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -1364,14 +1441,20 @@ packages: '@emotion/memoize@0.7.4': resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + '@esbuild-plugins/tsconfig-paths@0.1.2': + resolution: {integrity: sha512-TusFR26Y+Ze+Zm+NdfqZTSG4XyrXKxIaAfYCL3jASEI/gHjSdoCujATjzNWaaXs6Sk6Bv2D7NLr4Jdz1gysy/Q==} + peerDependencies: + esbuild: '*' + typescript: '*' + '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.23.0': - resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==} + '@esbuild/aix-ppc64@0.24.0': + resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -1382,8 +1465,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.23.0': - resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==} + '@esbuild/android-arm64@0.24.0': + resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -1394,8 +1477,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.23.0': - resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==} + '@esbuild/android-arm@0.24.0': + resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -1406,8 +1489,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.23.0': - resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==} + '@esbuild/android-x64@0.24.0': + resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -1418,8 +1501,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.23.0': - resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==} + '@esbuild/darwin-arm64@0.24.0': + resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -1430,8 +1513,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.23.0': - resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==} + '@esbuild/darwin-x64@0.24.0': + resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -1442,8 +1525,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.23.0': - resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==} + '@esbuild/freebsd-arm64@0.24.0': + resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -1454,8 +1537,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.23.0': - resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==} + '@esbuild/freebsd-x64@0.24.0': + resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -1466,8 +1549,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.23.0': - resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==} + '@esbuild/linux-arm64@0.24.0': + resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -1478,8 +1561,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.23.0': - resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==} + '@esbuild/linux-arm@0.24.0': + resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -1490,8 +1573,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.23.0': - resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==} + '@esbuild/linux-ia32@0.24.0': + resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -1502,8 +1585,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.23.0': - resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==} + '@esbuild/linux-loong64@0.24.0': + resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -1514,8 +1597,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.23.0': - resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==} + '@esbuild/linux-mips64el@0.24.0': + resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -1526,8 +1609,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.23.0': - resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==} + '@esbuild/linux-ppc64@0.24.0': + resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -1538,8 +1621,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.23.0': - resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==} + '@esbuild/linux-riscv64@0.24.0': + resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -1550,8 +1633,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.23.0': - resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==} + '@esbuild/linux-s390x@0.24.0': + resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -1562,8 +1645,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.23.0': - resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==} + '@esbuild/linux-x64@0.24.0': + resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -1574,14 +1657,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.23.0': - resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==} + '@esbuild/netbsd-x64@0.24.0': + resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.23.0': - resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==} + '@esbuild/openbsd-arm64@0.24.0': + resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -1592,8 +1675,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.23.0': - resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==} + '@esbuild/openbsd-x64@0.24.0': + resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -1604,8 +1687,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.23.0': - resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==} + '@esbuild/sunos-x64@0.24.0': + resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -1616,8 +1699,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.23.0': - resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==} + '@esbuild/win32-arm64@0.24.0': + resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -1628,8 +1711,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.23.0': - resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==} + '@esbuild/win32-ia32@0.24.0': + resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -1640,8 +1723,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.23.0': - resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==} + '@esbuild/win32-x64@0.24.0': + resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -1668,39 +1751,52 @@ packages: resolution: {integrity: sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==} engines: {node: '>=0.10.0'} - '@expo/cli@0.18.28': - resolution: {integrity: sha512-fvbVPId6s6etindzP6Nzos/CS1NurMVy4JKozjebArHr63tBid5i/UY5Pp+4wTCAM20gB2SjRdwcwoL6HFC4Iw==} + '@expo/cli@0.21.5': + resolution: {integrity: sha512-hd0pC5ntZxon7IijOsqp5wPOMGtaQNvTPOc74EQc+WS+Cldd7cMNSKKVUI2X7Lrn2Zcje9ne/WgGCnMTjdcVgA==} hasBin: true '@expo/code-signing-certificates@0.0.5': resolution: {integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==} - '@expo/config-plugins@8.0.8': - resolution: {integrity: sha512-Fvu6IO13EUw0R9WeqxUO37FkM62YJBNcZb9DyJAOgMz7Ez/vaKQGEjKt9cwT+Q6uirtCATMgaq6VWAW7YW8xXw==} + '@expo/config-plugins@9.0.9': + resolution: {integrity: sha512-pbgbY3SwCMwkijhfe163J05BrTx4MqzeaV+nVgUMs7vRcjHY1tfM57Pdv6SPtgeDvZ8fvdXFXXzkJva+a7C9Bw==} - '@expo/config-types@51.0.2': - resolution: {integrity: sha512-IglkIoiDwJMY01lYkF/ZSBoe/5cR+O3+Gx6fpLFjLfgZGBTdyPkKa1g8NWoWQCk+D3cKL2MDbszT2DyRRB0YqQ==} + '@expo/config-types@52.0.0': + resolution: {integrity: sha512-6so3YcXlBOsTnxLruM1vsi0JgYRaP/kI8Nn8Ty0WRyQDH0u+uBKI5zN4KCLSp1j1Fc8/RKIJQ1tNJ8dEr0d7tA==} - '@expo/config@9.0.3': - resolution: {integrity: sha512-eOTNM8eOC8gZNHgenySRlc/lwmYY1NOgvjwA8LHuvPT7/eUwD93zrxu3lPD1Cc/P6C/2BcVdfH4hf0tLmDxnsg==} + '@expo/config@10.0.3': + resolution: {integrity: sha512-BrFMqoQXDl8O6gZqF2EtGtA1p8u3Sp8z6B8aJppEo5qrtPaxlyShkHwuLhlpLisQdipZWP89+meOqxk7bUOU2Q==} + + '@expo/config@10.0.4': + resolution: {integrity: sha512-pkvdPqKTaP6+Qvc8aTmDLQ9Dfwp98P1GO37MFKwsF5XormfN/9/eN8HfIRoM6d3uSIVKCcWW3X2yAEbNmOyfXw==} '@expo/devcert@1.1.4': resolution: {integrity: sha512-fqBODr8c72+gBSX5Ty3SIzaY4bXainlpab78+vEYEKL3fXmsOswMLf0+KE36mUEAa36BYabX7K3EiXOXX5OPMw==} - '@expo/env@0.3.0': - resolution: {integrity: sha512-OtB9XVHWaXidLbHvrVDeeXa09yvTl3+IQN884sO6PhIi2/StXfgSH/9zC7IvzrDB8kW3EBJ1PPLuCUJ2hxAT7Q==} + '@expo/env@0.4.0': + resolution: {integrity: sha512-g2JYFqck3xKIwJyK+8LxZ2ENZPWtRgjFWpeht9abnKgzXVXBeSNECFBkg+WQjQocSIdxXhEWM6hz4ZAe7Tc4ng==} + + '@expo/fingerprint@0.11.2': + resolution: {integrity: sha512-WPibADqymGSKkNNnrGfw4dRipz7F8DwMSv7zb6T9oTGtdRiObrUpGmtBXmvo6z9MqWkNRprEJNxPjvkkvMvwhQ==} + hasBin: true - '@expo/image-utils@0.5.1': - resolution: {integrity: sha512-U/GsFfFox88lXULmFJ9Shfl2aQGcwoKPF7fawSCLixIKtMCpsI+1r0h+5i0nQnmt9tHuzXZDL8+Dg1z6OhkI9A==} + '@expo/image-utils@0.6.3': + resolution: {integrity: sha512-v/JbCKBrHeudxn1gN1TgfPE/pWJSlLPrl29uXJBgrJFQVkViQvUHQNDhaS+UEa9wYI5HHh7XYmtzAehyG4L+GA==} '@expo/json-file@8.3.3': resolution: {integrity: sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==} - '@expo/metro-config@0.18.11': - resolution: {integrity: sha512-/uOq55VbSf9yMbUO1BudkUM2SsGW1c5hr9BnhIqYqcsFv0Jp5D3DtJ4rljDKaUeNLbwr6m7pqIrkSMq5NrYf4Q==} + '@expo/json-file@9.0.0': + resolution: {integrity: sha512-M+55xFVrFzDcgMDf+52lPDLjKB5xwRfStWlv/b/Vu2OLgxGZLWpxoPYjlRoHqxjPbCQIi2ZCbobK+0KuNhsELg==} + + '@expo/metro-config@0.19.1': + resolution: {integrity: sha512-PK5Tb/KY/0oyJu8Ro1TrMSfpxw6ZNLwazXBfUgpGqiyCDgZSEd92s897er9b7rg8465UyvkdA4m5vL4nzF5z6Q==} - '@expo/metro-runtime@3.2.1': - resolution: {integrity: sha512-L7xNo5SmK+rcuXDm/+VBBImpA7FZsVB+m/rNr3fNl5or+1+yrZe99ViF7LZ8DOoVqAqcb4aCAXvGrP2JNYo1/Q==} + '@expo/metro-config@0.19.4': + resolution: {integrity: sha512-2SWwYN8MZvMIRawWEr+1RBYncitPwu2VMACRYig+wBycJ9fsPb6BMVmBYi+3MHDUlJHNy/Bqfw++jn1eqBFETQ==} + + '@expo/metro-runtime@4.0.0': + resolution: {integrity: sha512-+zgCyuXqIzgZVN8h0g36sursGXBy3xqtJW9han7t/iR2HTTrrbEoep5ftW1a27bdSINU96ng+rSsPLbyHYeBvw==} peerDependencies: react-native: '*' @@ -1711,18 +1807,11 @@ packages: '@expo/package-manager@1.5.2': resolution: {integrity: sha512-IuA9XtGBilce0q8cyxtWINqbzMB1Fia0Yrug/O53HNuRSwQguV/iqjV68bsa4z8mYerePhcFgtvISWLAlNEbUA==} - '@expo/plist@0.1.3': - resolution: {integrity: sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==} - - '@expo/prebuild-config@7.0.6': - resolution: {integrity: sha512-Hts+iGBaG6OQ+N8IEMMgwQElzJeSTb7iUJ26xADEHkaexsucAK+V52dM8M4ceicvbZR9q8M+ebJEGj0MCNA3dQ==} - peerDependencies: - expo-modules-autolinking: '>=0.8.1' + '@expo/plist@0.2.0': + resolution: {integrity: sha512-F/IZJQaf8OIVnVA6XWUeMPC3OH6MV00Wxf0WC0JhTQht2QgjyHUa3U5Gs3vRtDq8tXNsZneOQRDVwpaOnd4zTQ==} - '@expo/prebuild-config@7.0.8': - resolution: {integrity: sha512-wH9NVg6HiwF5y9x0TxiMEeBF+ITPGDXy5/i6OUheSrKpPgb0lF1Mwzl/f2fLPXBEpl+ZXOQ8LlLW32b7K9lrNg==} - peerDependencies: - expo-modules-autolinking: '>=0.8.1' + '@expo/prebuild-config@8.0.17': + resolution: {integrity: sha512-HM+XpDox3fAZuXZXvy55VRcBbsZSDijGf8jI8i/pexgWvtsnt1ouelPXRuE1pXDicMX+lZO83QV+XkyLmBEXYQ==} '@expo/rudder-sdk-node@1.1.1': resolution: {integrity: sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==} @@ -1731,15 +1820,15 @@ packages: '@expo/sdk-runtime-versions@1.0.0': resolution: {integrity: sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==} - '@expo/server@0.4.4': - resolution: {integrity: sha512-q9ADBzMN5rZ/fgQ2mz5YIJuZ8gelQlhG2CQqToD+UvBLZvbaHCNxTTSs2KI1LzJvAaW5CWgWMatGvGF6iUQ0LA==} + '@expo/server@0.5.0': + resolution: {integrity: sha512-bfo5udr9C2feCn+vGQ9LvjRD2zFjMyBEnMWDZLYr5D8eCjqLjazGBpPKOVjWOhFR2SshKA3hUBkWEYrVpun0NQ==} '@expo/spawn-async@1.7.2': resolution: {integrity: sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew==} engines: {node: '>=12'} - '@expo/vector-icons@14.0.2': - resolution: {integrity: sha512-70LpmXQu4xa8cMxjp1fydgRPsalefnHaXLzIwaHMEzcZhnyjw2acZz8azRrZOslPVAWlxItOa2Dd7WtD/kI+CA==} + '@expo/vector-icons@14.0.4': + resolution: {integrity: sha512-+yKshcbpDfbV4zoXOgHxCwh7lkE9VVTT5T03OUlBsqfze1PLy6Hi4jp1vSb1GVbY6eskvMIivGVc9SKzIv0oEQ==} '@expo/xcpretty@4.3.1': resolution: {integrity: sha512-sqXgo1SCv+j4VtYEwl/bukuOIBrVgx6euIoCat3Iyx5oeoXwEA2USCoeL0IPubflMxncA2INkqJ/Wr3NGrSgzw==} @@ -1751,8 +1840,8 @@ packages: '@floating-ui/dom@1.6.10': resolution: {integrity: sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==} - '@floating-ui/react-dom@2.1.1': - resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==} + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' @@ -1763,8 +1852,8 @@ packages: react: '>=16.8.0' react-native: '>=0.64.0' - '@floating-ui/react@0.26.22': - resolution: {integrity: sha512-LNv4azPt8SpT4WW7Kku5JNVjLk2GcS0bGGjFTAgqOONRFo9r/aaGHHPpdiIuQbB1t8shmWyWqTTUDmZ9fcNshg==} + '@floating-ui/react@0.26.28': + resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' @@ -1772,16 +1861,8 @@ packages: '@floating-ui/utils@0.2.7': resolution: {integrity: sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==} - '@graphql-typed-document-node/core@3.2.0': - resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@hapi/hoek@9.3.0': - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - - '@hapi/topo@5.1.0': - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + '@floating-ui/utils@0.2.8': + resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} @@ -1813,6 +1894,10 @@ packages: resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} engines: {node: '>=12'} + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + '@istanbuljs/schema@0.1.3': resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} @@ -1833,6 +1918,10 @@ packages: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/types@26.6.2': resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} engines: {node: '>= 10.14.2'} @@ -2000,94 +2089,62 @@ packages: '@react-native-anywhere/polyfill-base64@0.0.1-alpha.0': resolution: {integrity: sha512-OF3idcETV622AyFvvK54ot2EG0G43tZTZJyWtFHtrEKUmoUvSuC5DOMeLino0TwBQJn2s26MBnIPVgokBJb/xw==} - '@react-native-community/cli-clean@13.6.9': - resolution: {integrity: sha512-7Dj5+4p9JggxuVNOjPbduZBAP1SUgNhLKVw5noBUzT/3ZpUZkDM+RCSwyoyg8xKWoE4OrdUAXwAFlMcFDPKykA==} - - '@react-native-community/cli-config@13.6.9': - resolution: {integrity: sha512-rFfVBcNojcMm+KKHE/xqpqXg8HoKl4EC7bFHUrahMJ+y/tZll55+oX/PGG37rzB8QzP2UbMQ19DYQKC1G7kXeg==} - '@react-native-community/cli-debugger-ui@13.6.9': resolution: {integrity: sha512-TkN7IdFmGPPvTpAo3nCAH9uwGCPxWBEAwpqEZDrq0NWllI7Tdie8vDpGdrcuCcKalmhq6OYnkXzeBah7O1Ztpw==} - '@react-native-community/cli-doctor@13.6.9': - resolution: {integrity: sha512-5quFaLdWFQB+677GXh5dGU9I5eg2z6Vg4jOX9vKnc9IffwyIFAyJfCZHrxLSRPDGNXD7biDQUdoezXYGwb6P/A==} - - '@react-native-community/cli-hermes@13.6.9': - resolution: {integrity: sha512-GvwiwgvFw4Ws+krg2+gYj8sR3g05evmNjAHkKIKMkDTJjZ8EdyxbkifRUs1ZCq3TMZy2oeblZBXCJVOH4W7ZbA==} - - '@react-native-community/cli-platform-android@13.6.9': - resolution: {integrity: sha512-9KsYGdr08QhdvT3Ht7e8phQB3gDX9Fs427NJe0xnoBh+PDPTI2BD5ks5ttsH8CzEw8/P6H8tJCHq6hf2nxd9cw==} - - '@react-native-community/cli-platform-apple@13.6.9': - resolution: {integrity: sha512-KoeIHfhxMhKXZPXmhQdl6EE+jGKWwoO9jUVWgBvibpVmsNjo7woaG/tfJMEWfWF3najX1EkQAoJWpCDBMYWtlA==} - - '@react-native-community/cli-platform-ios@13.6.9': - resolution: {integrity: sha512-CiUcHlGs8vE0CAB4oi1f+dzniqfGuhWPNrDvae2nm8dewlahTBwIcK5CawyGezjcJoeQhjBflh9vloska+nlnw==} - '@react-native-community/cli-server-api@13.6.9': resolution: {integrity: sha512-W8FSlCPWymO+tlQfM3E0JmM8Oei5HZsIk5S0COOl0MRi8h0NmHI4WSTF2GCfbFZkcr2VI/fRsocoN8Au4EZAug==} '@react-native-community/cli-tools@13.6.9': resolution: {integrity: sha512-OXaSjoN0mZVw3nrAwcY1PC0uMfyTd9fz7Cy06dh+EJc+h0wikABsVRzV8cIOPrVV+PPEEXE0DBrH20T2puZzgQ==} - '@react-native-community/cli-types@13.6.9': - resolution: {integrity: sha512-RLxDppvRxXfs3hxceW/mShi+6o5yS+kFPnPqZTaMKKR5aSg7LwDpLQW4K2D22irEG8e6RKDkZUeH9aL3vO2O0w==} - - '@react-native-community/cli@13.6.9': - resolution: {integrity: sha512-hFJL4cgLPxncJJd/epQ4dHnMg5Jy/7Q56jFvA3MHViuKpzzfTCJCB+pGY54maZbtym53UJON9WTGpM3S81UfjQ==} - engines: {node: '>=18'} - hasBin: true - - '@react-native/assets-registry@0.74.87': - resolution: {integrity: sha512-1XmRhqQchN+pXPKEKYdpJlwESxVomJOxtEnIkbo7GAlaN2sym84fHEGDXAjLilih5GVPpcpSmFzTy8jx3LtaFg==} + '@react-native/assets-registry@0.76.2': + resolution: {integrity: sha512-0CTWv/FqJzU1vsyx2JpCkyLSUOePU7DdKgFvtHdwOxFpOw3aBecszqZDGJADYV9WSZQlq6RV0HmIaWycGYCOMA==} engines: {node: '>=18'} - '@react-native/babel-plugin-codegen@0.74.87': - resolution: {integrity: sha512-+vJYpMnENFrwtgvDfUj+CtVJRJuUnzAUYT0/Pb68Sq9RfcZ5xdcCuUgyf7JO+akW2VTBoJY427wkcxU30qrWWw==} + '@react-native/babel-plugin-codegen@0.76.2': + resolution: {integrity: sha512-a1IfRho/ZUVbvzSu3JWkxsvqyEI7IXApPQikhGWw4e24QYsIYHdlIULs3rb0840lqpO1dbbuudfO7lmkpkbkMg==} engines: {node: '>=18'} - '@react-native/babel-preset@0.74.87': - resolution: {integrity: sha512-hyKpfqzN2nxZmYYJ0tQIHG99FQO0OWXp/gVggAfEUgiT+yNKas1C60LuofUsK7cd+2o9jrpqgqW4WzEDZoBlTg==} + '@react-native/babel-preset@0.76.2': + resolution: {integrity: sha512-/kbxZqy70mGONv23uZg7lm7ZCE4dO5dgMzVPz6QsveXIRHQBRLsSC+9w2iZEnYWpLayoWFmTbq8ZG+4W32D3bA==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' - '@react-native/codegen@0.74.87': - resolution: {integrity: sha512-GMSYDiD+86zLKgMMgz9z0k6FxmRn+z6cimYZKkucW4soGbxWsbjUAZoZ56sJwt2FJ3XVRgXCrnOCgXoH/Bkhcg==} + '@react-native/codegen@0.76.2': + resolution: {integrity: sha512-rIgdI5mHHnNTzAeDYH+ivKMIcv6vr04Ol+TmX77n1HjJkzMhQqSHWcX+Pq9oiu7l2zKkymadrw6OPD8VPgre8g==} engines: {node: '>=18'} peerDependencies: '@babel/preset-env': ^7.1.6 - '@react-native/community-cli-plugin@0.74.87': - resolution: {integrity: sha512-EgJG9lSr8x3X67dHQKQvU6EkO+3ksVlJHYIVv6U/AmW9dN80BEFxgYbSJ7icXS4wri7m4kHdgeq2PQ7/3vvrTQ==} - engines: {node: '>=18'} - - '@react-native/debugger-frontend@0.74.85': - resolution: {integrity: sha512-gUIhhpsYLUTYWlWw4vGztyHaX/kNlgVspSvKe2XaPA7o3jYKUoNLc3Ov7u70u/MBWfKdcEffWq44eSe3j3s5JQ==} - engines: {node: '>=18'} - - '@react-native/debugger-frontend@0.74.87': - resolution: {integrity: sha512-MN95DJLYTv4EqJc+9JajA3AJZSBYJz2QEJ3uWlHrOky2vKrbbRVaW1ityTmaZa2OXIvNc6CZwSRSE7xCoHbXhQ==} + '@react-native/community-cli-plugin@0.76.2': + resolution: {integrity: sha512-ZRL8oTGSMwXqTsVkRL9AVW8C/AZRnxCcFfhestsx//SrQt3J/hbtDOHTIGkkt5AEA0zEvb/UAAyIAN/wuN4llw==} engines: {node: '>=18'} + peerDependencies: + '@react-native-community/cli-server-api': '*' + peerDependenciesMeta: + '@react-native-community/cli-server-api': + optional: true - '@react-native/dev-middleware@0.74.85': - resolution: {integrity: sha512-BRmgCK5vnMmHaKRO+h8PKJmHHH3E6JFuerrcfE3wG2eZ1bcSr+QTu8DAlpxsDWvJvHpCi8tRJGauxd+Ssj/c7w==} + '@react-native/debugger-frontend@0.76.2': + resolution: {integrity: sha512-FIcz24Oya2wIO7rZD3dxVyK8t5ZD6Fojl9o7lrjnTWqMedcevRTtdSOIAf4ypksYH/x7HypovE2Zp8U65Xv0Mw==} engines: {node: '>=18'} - '@react-native/dev-middleware@0.74.87': - resolution: {integrity: sha512-7TmZ3hTHwooYgIHqc/z87BMe1ryrIqAUi+AF7vsD+EHCGxHFdMjSpf1BZ2SUPXuLnF2cTiTfV2RwhbPzx0tYIA==} + '@react-native/dev-middleware@0.76.2': + resolution: {integrity: sha512-qiowXpxofLk0lpIZps7fyyp9NiKlqBwh0R0yVub5l4EJcqjLonjsznYAHbusnPW9kb9MQSdovGPNv5b8RadJww==} engines: {node: '>=18'} - '@react-native/gradle-plugin@0.74.87': - resolution: {integrity: sha512-T+VX0N1qP+U9V4oAtn7FTX7pfsoVkd1ocyw9swYXgJqU2fK7hC9famW7b3s3ZiufPGPr1VPJe2TVGtSopBjL6A==} + '@react-native/gradle-plugin@0.76.2': + resolution: {integrity: sha512-KC5/uAeLoeD1dOjymx6gnNFHGGLB22xNYjrjrJNK5r0bw2O2KXp4rpB5VCT/2H5B48cVC0xPB7RIKOFrDHr5bQ==} engines: {node: '>=18'} - '@react-native/js-polyfills@0.74.87': - resolution: {integrity: sha512-M5Evdn76CuVEF0GsaXiGi95CBZ4IWubHqwXxV9vG9CC9kq0PSkoM2Pn7Lx7dgyp4vT7ccJ8a3IwHbe+5KJRnpw==} + '@react-native/js-polyfills@0.76.2': + resolution: {integrity: sha512-OXunyNn33fa7gQ6iU5rQcYZQsO7OkJIAr/TgVdoHxpOB4i+ZGsfv6df3JKriBVT1ZZm6ZTlKyIa4QpLq3p0dmw==} engines: {node: '>=18'} - '@react-native/metro-babel-transformer@0.74.87': - resolution: {integrity: sha512-UsJCO24sNax2NSPBmV1zLEVVNkS88kcgAiYrZHtYSwSjpl4WZ656tIeedBfiySdJ94Hr3kQmBYLipV5zk0NI1A==} + '@react-native/metro-babel-transformer@0.76.2': + resolution: {integrity: sha512-OIYhmWfN+HDyQLzoEg+2P0h7OopYk4djggg0M+k5e1a+g2dFNJILO/BsDobM8uLA8hAzClAJyJLZbPo5jeqdMA==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' @@ -2095,17 +2152,14 @@ packages: '@react-native/normalize-color@2.1.0': resolution: {integrity: sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA==} - '@react-native/normalize-colors@0.74.84': - resolution: {integrity: sha512-Y5W6x8cC5RuakUcTVUFNAIhUZ/tYpuqHZlRBoAuakrTwVuoNHXfQki8lj1KsYU7rW6e3VWgdEx33AfOQpdNp6A==} - - '@react-native/normalize-colors@0.74.85': - resolution: {integrity: sha512-pcE4i0X7y3hsAE0SpIl7t6dUc0B0NZLd1yv7ssm4FrLhWG+CGyIq4eFDXpmPU1XHmL5PPySxTAjEMiwv6tAmOw==} - '@react-native/normalize-colors@0.74.87': resolution: {integrity: sha512-Xh7Nyk/MPefkb0Itl5Z+3oOobeG9lfLb7ZOY2DKpFnoCE1TzBmib9vMNdFaLdSxLIP+Ec6icgKtdzYg8QUPYzA==} - '@react-native/virtualized-lists@0.74.87': - resolution: {integrity: sha512-lsGxoFMb0lyK/MiplNKJpD+A1EoEUumkLrCjH4Ht+ZlG8S0BfCxmskLZ6qXn3BiDSkLjfjI/qyZ3pnxNBvkXpQ==} + '@react-native/normalize-colors@0.76.2': + resolution: {integrity: sha512-ICoOpaTLPsFQjNLSM00NgQr6wal300cZZonHVSDXKntX+BfkLeuCHRtr/Mn+klTtW+/1v2/2FRm9dXjvyGf9Dw==} + + '@react-native/virtualized-lists@0.76.2': + resolution: {integrity: sha512-FzXvkHgKvJGf0pSuLy6878cxJ6mxWKgZsH9s2kO4LWJocI8Bi3ViDx7IGAWYuvN+Fnue5TKaqGPhfD+4XrKtYQ==} engines: {node: '>=18'} peerDependencies: '@types/react': ^18.2.6 @@ -2115,48 +2169,52 @@ packages: '@types/react': optional: true - '@react-navigation/bottom-tabs@6.5.20': - resolution: {integrity: sha512-ow6Z06iS4VqBO8d7FP+HsGjJLWt2xTWIvuWjpoCvsM/uQXzCRDIjBv9HaKcXbF0yTW7IMir0oDAbU5PFzEDdgA==} + '@react-navigation/bottom-tabs@7.0.1': + resolution: {integrity: sha512-j72pmsffXKWV/i9TFJ7dWiD4sUZVkt4cEaptV3C8FEgfKqF81JvsRg8hUmEZdwMFIyJBrymOAxVNYKbaEohh+A==} peerDependencies: - '@react-navigation/native': ^6.0.0 - react: '*' + '@react-navigation/native': ^7.0.0 + react: '>= 18.2.0' react-native: '*' - react-native-safe-area-context: '>= 3.0.0' - react-native-screens: '>= 3.0.0' + react-native-safe-area-context: '>= 4.0.0' + react-native-screens: '>= 4.0.0' - '@react-navigation/core@6.4.17': - resolution: {integrity: sha512-Nd76EpomzChWAosGqWOYE3ItayhDzIEzzZsT7PfGcRFDgW5miHV2t4MZcq9YIK4tzxZjVVpYbIynOOQQd1e0Cg==} + '@react-navigation/core@7.0.0': + resolution: {integrity: sha512-HZbWgx7Fco9orcQdAPgcq/G8C1/+Smm8LrzBsih1rBlpVornyEj8lumF6Y9fnYnHjuBhBydvYBgBqTwh87rWXA==} peerDependencies: react: '*' - '@react-navigation/elements@1.3.31': - resolution: {integrity: sha512-bUzP4Awlljx5RKEExw8WYtif8EuQni2glDaieYROKTnaxsu9kEIA515sXQgUDZU4Ob12VoL7+z70uO3qrlfXcQ==} + '@react-navigation/elements@2.0.0': + resolution: {integrity: sha512-kt2Q5WLJ9jjJMA/Jt8S3z3Jub2V+HIJ2LM4z+dZqL00FVsTfa4rSk3BTktI3MmBiUCgzUo6jPOxkxsUbjoL/ig==} peerDependencies: - '@react-navigation/native': ^6.0.0 - react: '*' + '@react-native-masked-view/masked-view': '>= 0.2.0' + '@react-navigation/native': ^7.0.0 + react: '>= 18.2.0' react-native: '*' - react-native-safe-area-context: '>= 3.0.0' + react-native-safe-area-context: '>= 4.0.0' + peerDependenciesMeta: + '@react-native-masked-view/masked-view': + optional: true - '@react-navigation/native-stack@6.9.26': - resolution: {integrity: sha512-++dueQ+FDj2XkZ902DVrK79ub1vp19nSdAZWxKRgd6+Bc0Niiesua6rMCqymYOVaYh+dagwkA9r00bpt/U5WLw==} + '@react-navigation/native-stack@7.0.0': + resolution: {integrity: sha512-OZEvXaQDZesWnib+XD7PgWaVeS95/oD/gCSmDXXQZLTtGBXutmLycGtvjunFHRAkQ8u3TB89oOhs9YxDBAXl5Q==} peerDependencies: - '@react-navigation/native': ^6.0.0 - react: '*' + '@react-navigation/native': ^7.0.0 + react: '>= 18.2.0' react-native: '*' - react-native-safe-area-context: '>= 3.0.0' - react-native-screens: '>= 3.0.0' + react-native-safe-area-context: '>= 4.0.0' + react-native-screens: '>= 4.0.0' - '@react-navigation/native@6.1.18': - resolution: {integrity: sha512-mIT9MiL/vMm4eirLcmw2h6h/Nm5FICtnYSdohq4vTLA2FF/6PNhByM7s8ffqoVfE5L0uAa6Xda1B7oddolUiGg==} + '@react-navigation/native@7.0.0': + resolution: {integrity: sha512-OkfVzQNAuvy6WduON+4ctLImQWybBnOEycVpEEFA3y8nheLuo4hT+ObyyYu2DVqtslltUlTNGcd2G7pbB7y/bA==} peerDependencies: - react: '*' + react: '>= 18.2.0' react-native: '*' - '@react-navigation/routers@6.1.9': - resolution: {integrity: sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA==} + '@react-navigation/routers@7.0.0': + resolution: {integrity: sha512-b2ehNmgAfDziTd0EERm0C9JI9JH1kdRS4SNBWbKQOVPv23WG+5ExovwWet26sGtMabLJ5lxSE8Z2/fByfggjNQ==} - '@remix-run/node@2.11.1': - resolution: {integrity: sha512-KCQPLSd5Y3OLCoJUQxxTGswALL1gZ+OgL3bf2ap6kITIp1AUZz3T4jqCNVVyWllVAU9gpCtrONaI+SiWf+8b2w==} + '@remix-run/node@2.14.0': + resolution: {integrity: sha512-ou16LMJYv0ElIToZ6dDqaLjv1T3iBEwuJTBahveEA8NkkACIWODJ2fgUYf1UKLMKHVdHjNImLzS37HdSZY0Q6g==} engines: {node: '>=18.0.0'} peerDependencies: typescript: ^5.1.0 @@ -2164,12 +2222,12 @@ packages: typescript: optional: true - '@remix-run/router@1.19.0': - resolution: {integrity: sha512-zDICCLKEwbVYTS6TjYaWtHXxkdoUvD/QXvyVZjGCsWz5vyH7aFeONlPffPdW+Y/t6KT0MgXb2Mfjun9YpWN1dA==} + '@remix-run/router@1.21.0': + resolution: {integrity: sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA==} engines: {node: '>=14.0.0'} - '@remix-run/server-runtime@2.11.1': - resolution: {integrity: sha512-j3AlrZul0javvPR6ZWdN32/l12t1E90sLeZI/k+4HpT0ifjqJVg8uG6alRJ0LLN9ae5BERYEslUebUqdfejSkQ==} + '@remix-run/server-runtime@2.14.0': + resolution: {integrity: sha512-9Th9UzDaoFFBD7zA5mRI1KT8JktFLN4ij9jPygrKBhG/kYmNIvhcMtq9VyjcbMvFK5natTyhOhrrKRIHtijD4w==} engines: {node: '>=18.0.0'} peerDependencies: typescript: ^5.1.0 @@ -2193,10 +2251,6 @@ packages: '@remix-run/web-stream@1.1.0': resolution: {integrity: sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==} - '@rnx-kit/chromium-edge-launcher@1.0.0': - resolution: {integrity: sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg==} - engines: {node: '>=14.15'} - '@rollup/pluginutils@5.1.0': resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} @@ -2325,15 +2379,6 @@ packages: '@segment/loosely-validate-event@2.0.0': resolution: {integrity: sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==} - '@sideway/address@4.1.5': - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} - - '@sideway/formula@3.0.1': - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - - '@sideway/pinpoint@2.0.0': - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} @@ -2343,68 +2388,68 @@ packages: '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@swc/core-darwin-arm64@1.7.10': - resolution: {integrity: sha512-TYp4x/9w/C/yMU1olK5hTKq/Hi7BjG71UJ4V1U1WxI1JA3uokjQ/GoktDfmH5V5pX4dgGSOJwUe2RjoN8Z/XnA==} + '@swc/core-darwin-arm64@1.9.2': + resolution: {integrity: sha512-nETmsCoY29krTF2PtspEgicb3tqw7Ci5sInTI03EU5zpqYbPjoPH99BVTjj0OsF53jP5MxwnLI5Hm21lUn1d6A==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.7.10': - resolution: {integrity: sha512-P3LJjAWh5yLc6p5IUwV5LgRfA3R1oDCZDMabYyb2BVQuJTD4MfegW9DhBcUUF5dhBLwq3191KpLVzE+dLTbiXw==} + '@swc/core-darwin-x64@1.9.2': + resolution: {integrity: sha512-9gD+bwBz8ZByjP6nZTXe/hzd0tySIAjpDHgkFiUrc+5zGF+rdTwhcNrzxNHJmy6mw+PW38jqII4uspFHUqqxuQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.7.10': - resolution: {integrity: sha512-yGOFjE7w/akRTmqGY3FvWYrqbxO7OB2N2FHj2LO5HtzXflfoABb5RyRvdEquX+17J6mEpu4EwjYNraTD/WHIEQ==} + '@swc/core-linux-arm-gnueabihf@1.9.2': + resolution: {integrity: sha512-kYq8ief1Qrn+WmsTWAYo4r+Coul4dXN6cLFjiPZ29Cv5pyU+GFvSPAB4bEdMzwy99rCR0u2P10UExaeCjurjvg==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.7.10': - resolution: {integrity: sha512-SPWsgWHfdWKKjLrYlvhxcdBJ7Ruy6crJbPoE9NfD95eJEjMnS2yZTqj2ChFsY737WeyhWYlHzgYhYOVCp83YwQ==} + '@swc/core-linux-arm64-gnu@1.9.2': + resolution: {integrity: sha512-n0W4XiXlmEIVqxt+rD3ZpkogsEWUk1jJ+i5bQNgB+1JuWh0fBE8c/blDgTQXa0GB5lTPVDZQussgdNOCnAZwiA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.7.10': - resolution: {integrity: sha512-PUi50bkNqnBL3Z/Zq6jSfwgN9A/taA6u2Zou0tjDJi7oVdpjdr7SxNgCGzMJ/nNg5D/IQn1opM1jktMvpsPAuQ==} + '@swc/core-linux-arm64-musl@1.9.2': + resolution: {integrity: sha512-8xzrOmsyCC1zrx2Wzx/h8dVsdewO1oMCwBTLc1gSJ/YllZYTb04pNm6NsVbzUX2tKddJVRgSJXV10j/NECLwpA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.7.10': - resolution: {integrity: sha512-Sc+pY55gknCAmBQBR6DhlA7jZSxHaLSDb5Sevzi6DOFMXR79NpA6zWTNKwp1GK2AnRIkbAfvYLgOxS5uWTFVpg==} + '@swc/core-linux-x64-gnu@1.9.2': + resolution: {integrity: sha512-kZrNz/PjRQKcchWF6W292jk3K44EoVu1ad5w+zbS4jekIAxsM8WwQ1kd+yjUlN9jFcF8XBat5NKIs9WphJCVXg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.7.10': - resolution: {integrity: sha512-g5NKx2LXaGd0K26hmEts1Cvb7ptIvq3MHSgr6/D1tRPcDZw1Sp0dYsmyOv0ho4F5GOJyiCooG3oE9FXdb7jIpQ==} + '@swc/core-linux-x64-musl@1.9.2': + resolution: {integrity: sha512-TTIpR4rjMkhX1lnFR+PSXpaL83TrQzp9znRdp2TzYrODlUd/R20zOwSo9vFLCyH6ZoD47bccY7QeGZDYT3nlRg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.7.10': - resolution: {integrity: sha512-plRIsOcfy9t9Q/ivm5DA7I0HaIvfAWPbI+bvVRrr3C/1K2CSqnqZJjEWOAmx2LiyipijNnEaFYuLBp0IkGuJpg==} + '@swc/core-win32-arm64-msvc@1.9.2': + resolution: {integrity: sha512-+Eg2d4icItKC0PMjZxH7cSYFLWk0aIp94LNmOw6tPq0e69ax6oh10upeq0D1fjWsKLmOJAWEvnXlayZcijEXDw==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.7.10': - resolution: {integrity: sha512-GntrVNT23viHtbfzmlK8lfBiKeajH24GzbDT7qXhnoO20suUPcyYZxyvCb4gWM2zu8ZBTPHNlqfrNsriQCZ+lQ==} + '@swc/core-win32-ia32-msvc@1.9.2': + resolution: {integrity: sha512-nLWBi4vZDdM/LkiQmPCakof8Dh1/t5EM7eudue04V1lIcqx9YHVRS3KMwEaCoHLGg0c312Wm4YgrWQd9vwZ5zQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.7.10': - resolution: {integrity: sha512-uXIF8GuSappe1imm6Lf7pHGepfCBjDQlS+qTqvEGE0wZAsL1IVATK9P/cH/OCLfJXeQDTLeSYmrpwjtXNt46tQ==} + '@swc/core-win32-x64-msvc@1.9.2': + resolution: {integrity: sha512-ik/k+JjRJBFkXARukdU82tSVx0CbExFQoQ78qTO682esbYXzjdB5eLVkoUbwen299pnfr88Kn4kyIqFPTje8Xw==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.7.10': - resolution: {integrity: sha512-l0xrFwBQ9atizhmV94yC2nwcecTk/oftofwMNPiFMGe56dqdmi2ArHaTV3PCtMlgaUH6rGCehoRMt5OrCI1ktg==} + '@swc/core@1.9.2': + resolution: {integrity: sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -2418,465 +2463,476 @@ packages: '@swc/helpers@0.5.12': resolution: {integrity: sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==} - '@swc/types@0.1.12': - resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} + '@swc/types@0.1.15': + resolution: {integrity: sha512-XKaZ+dzDIQ9Ot9o89oJQ/aluI17+VvUnIpYJTcZtvv1iYX6MzHh3Ik2CSR7MdPKpPwfZXHBeCingb2b4PoDVdw==} - '@tamagui/accordion@1.108.3': - resolution: {integrity: sha512-BZTzFWj9Tq1hG9xJA8S4xbPt2vEE37DVe3v4sA35RD4i9HCA82vyR+uPsfAxIbAAdmet+1AkMoUbpW0f378JZg==} + '@tamagui/accordion@1.116.15': + resolution: {integrity: sha512-rmYMBPSf77asp6IgBTSeBzyNB0+AfybKgNuDOwWMXlAvdnjwYhDxle/5ALZGGgytSHfLQyIll3FwAqxLTWiqVw==} peerDependencies: react: '*' - '@tamagui/adapt@1.108.3': - resolution: {integrity: sha512-wUOdwkwFzfrVCsSsbRWZrF0M926NJvaxXk085gxR4bzx4PnZ3iGX8GuNvwX6rG3LCP4ljSDNy/ihZlmmQTms4Q==} + '@tamagui/adapt@1.116.15': + resolution: {integrity: sha512-p+01j19C4yaXb3t67r5n3sEg5ZtPVqD7Ojs0BtySgP86Vx18PJ9O18r3jlyK1W2yDwBMKyGBHafJaANG+L/Ozg==} - '@tamagui/alert-dialog@1.108.3': - resolution: {integrity: sha512-DMKHbwNVN4xMg86eDEtlTDVXeKiLYcXInDCLuwYs42kE+xG6mCpF60aXnLZfniN/H0zQlZGfdjgpgLrN7TRSfQ==} + '@tamagui/alert-dialog@1.116.15': + resolution: {integrity: sha512-UhgvR4W36F9bTEx40gsPQ37TlvrA4xHTW0TPL1zAE11SgzfN3xl3i6CMyfZrs4WzUeRBITptetZpKxVmANGz9w==} peerDependencies: react: '*' - '@tamagui/animate-presence@1.108.3': - resolution: {integrity: sha512-wufxg9SClAlFngPsnumzuHq+JrYqtF0EN+r5fhDFzwZzsQorWD/R8TVe3tvlgTiLv6wvWZC53u8IUNF+mVKMUw==} + '@tamagui/animate-presence@1.116.15': + resolution: {integrity: sha512-kXRvwLnR0gWNqnqrbnw4fi1H+9t/bZ++lmLH1hl2EUFTuec3+KJttF4nuHdsl0IJ6uFPApiUutdDDpIgiYbxGA==} - '@tamagui/animate@1.108.3': - resolution: {integrity: sha512-jm/k8OBQhEb3B7zXQNbYnCer3GAMoDbty2NYhkZWCd2TKaX8TBwqOt9C+ENsji3kXtVE212C5jw25+7qbBJoUQ==} + '@tamagui/animate@1.116.15': + resolution: {integrity: sha512-hwOaVWg+u16NW51NdYVKA5+l77kj1NAtKOD4MG89CrzMlX8GFR8np7M+AUO6yzn4cYscnE53Y4LeJBIjgigGSA==} - '@tamagui/animations-css@1.108.3': - resolution: {integrity: sha512-Cnj3p9PiJq5yJDw5nbFbwTa+9ARLqAZ4Cp0zFUGKMRZa2YDM/gKZWcrE9vba1m0FGv0rqhSBUyj26O7Kw5WNHw==} + '@tamagui/animations-css@1.116.15': + resolution: {integrity: sha512-WXEHdSFBGAZcW/KESG2kombQpc/TPOSkMvrKY4QH2S6BxtiqfrS1OlQ2wLu+HZcPA22W7IBEGV4oyoYnWAJ/LA==} peerDependencies: react: '*' - '@tamagui/animations-moti@1.108.3': - resolution: {integrity: sha512-rcajrx2RIxmi7BHL71ZZpGSIyj6T2KgcnqjG83BB7xYgdHhfHgj6Png5tYjGLCsRsD8syD6LKuReKq9XrZNSaQ==} + '@tamagui/animations-moti@1.116.15': + resolution: {integrity: sha512-QWY4ET56G78ciL5NYFNfjXRCJGrKJvKLmGtyFXxJUe2IwgbA1BGtiyyFmBYTT4eMCLkiHFLAjOjcYZRDiuH8xg==} peerDependencies: - moti: '*' react: '*' - '@tamagui/animations-react-native@1.108.3': - resolution: {integrity: sha512-b1D8qJHc1Wb0Sn45HqkjAujxCfadf9Zesurt9v0lD9R4uPYld93gmSyiqx3U7MjkkypGcJW5op1LindF5o69jg==} + '@tamagui/animations-react-native@1.116.15': + resolution: {integrity: sha512-T1eDrkebXUKACce8K75vVKzdAuXIGG2845ne4Y+yJshahGjbmz47LZ5o+OmhRoGtr1Jo/fYRvO1pS4xz0DrmqA==} peerDependencies: react: '*' - '@tamagui/aria-hidden@1.108.3': - resolution: {integrity: sha512-fjeBAtrmBSR5MHM1T7FaO1HTwZW9xiA3VwbDR4abBY3XXLbdek/db42DDIObQjPKEp6sbAUpejVFfdwKvkaqwQ==} + '@tamagui/aria-hidden@1.116.15': + resolution: {integrity: sha512-+FQe96F5XG4W1/I0XKgkgwE9P3v0+cSzyKTX1QaDvQDS5B2nar8DPLaGS+6fgbfJNw4I0vHZuVf/zNulKTN3Ug==} peerDependencies: react: '*' - '@tamagui/avatar@1.108.3': - resolution: {integrity: sha512-XY1hU1zvEV41n+5o1HycgaR7VRtsjhurPoKlgBg9YL3vxP7FWVv1ARJqbVUVZe7eZLdQ239KDpx3NUxR+/Ok0g==} + '@tamagui/avatar@1.116.15': + resolution: {integrity: sha512-JU8tUyA0wIrcl3Ic6hPPxTleDmZWWZTxArhIdleMldsbNzfC9Wr1TACQcx4+AwyRagjZm0Xmgxg4M6qB2FQrSA==} peerDependencies: react: '*' - '@tamagui/babel-plugin-fully-specified@1.108.3': - resolution: {integrity: sha512-1BXDL+y1mJ65mUXq+HxZqwvEvtOXhjd9hmfPRerb7O9d4mcfEvMJarLBZTg99lVXC39l/nI0ZVIZDnhWeEMKpA==} + '@tamagui/babel-plugin-fully-specified@1.116.15': + resolution: {integrity: sha512-HU4S/fnM/Hsx+uERG/Xr5cdD1rC2nF+uNhqiOitJNoRaplVJOBTe5e/31HYmqcGa6hWvKS4RFp09LvZ+PVwrYw==} - '@tamagui/babel-plugin@1.108.3': - resolution: {integrity: sha512-QWTjFZtpqdGFB6qkMK9aL+CMbnwZVscDH1bXGRYdyVxgJuO9c5p3Nmgt7watyj1v+nJ6icD9ntf3Ka438Q2eJQ==} + '@tamagui/babel-plugin@1.116.15': + resolution: {integrity: sha512-fdA7qwBKnc8tICnmhw2x8Qtv9JMPigcNCFMLWMvhIC3Ox1Bt80Jm136/vTJkay8w8ZxLsqFpaBZiDKZDEuOEDA==} - '@tamagui/build@1.108.3': - resolution: {integrity: sha512-kNFwpXQX1MD6VqIWAaERu7GneY3/1LETH0IyA3DMet5NhnNpJn43WRdJ9QITFRnEwd80YPOXcc+lmbPpHVQbVA==} + '@tamagui/build@1.116.15': + resolution: {integrity: sha512-vq2MzOorg9vR7LgNibmXNCB2EHmHE5CuNMKr9PsbRmgwtzksGNd69fXnyG2fNpt/J4aKQ9cOXDDYrz+5yC0lwg==} hasBin: true - '@tamagui/button@1.108.3': - resolution: {integrity: sha512-GR31p7+CbPhHAoEeFh6cyPGt3TAA2el5a9gSdbLNp10rdLbo/bYdk2vdOxaFZaXcV0fgX1cZt72Y7rhlOO0fQQ==} + '@tamagui/button@1.116.15': + resolution: {integrity: sha512-W5ZpOUI5etcf3Nid4BA46qaCtkim8W6AnUEB0Le0qzj/0umT8MWXWhAV3hA3pc4Rx6iu0MzSKFsu3D6bqq45iQ==} peerDependencies: react: '*' - '@tamagui/card@1.108.3': - resolution: {integrity: sha512-yZ2vKWvHSsMXBOVRZbMxDvb5XM+wfp5TnKk8hBabT0bnpGfJgYWO/qC6dV+zyio3YSeDp89vPtRirtxXHkXogw==} + '@tamagui/card@1.116.15': + resolution: {integrity: sha512-HTfVMBqYp+mkhvmgEkjn4fnNDxD52MaINKh8oLrgNCZajQq1yb0uJCv4vORCfW/bwpwT6O3vZklUUDNaMisGXA==} peerDependencies: react: '*' - '@tamagui/checkbox-headless@1.108.3': - resolution: {integrity: sha512-H4p1rxPbBmlTDKW0kvOclbnpjHg9+RiNiviWFnJoZtSZ8gIpBXi53uKzWCpNkISMDgX89FM5jVgm0ATMW/V/NQ==} + '@tamagui/checkbox-headless@1.116.15': + resolution: {integrity: sha512-6mhT/i9ZUvrEbyh0etPgVdYJgqdmf/LAakK+51S/Rj4t92FNKnh5HUz9gpKnrkIZgbsyflgWfB1OFzhlpbBfQQ==} peerDependencies: react: '*' - '@tamagui/checkbox@1.108.3': - resolution: {integrity: sha512-qo+zFsDB6S7w/A1y/mmSQqc+I60tTYfUm/qRiSunFYpdtdo6fSaoXopRx+hXwFrHgMuph/iedcNHaFbRDCxWpw==} + '@tamagui/checkbox@1.116.15': + resolution: {integrity: sha512-fHn0Wkew0G8MbLV0gPVV8rpREm5LRtbM4TwOql7olwI7qy+yAGs+C2qEyho+pZ3kx3UKT/zAVkikYzw5fBDkIw==} peerDependencies: react: '*' - '@tamagui/cli-color@1.108.3': - resolution: {integrity: sha512-ipY167e3YkOxUTljdQ3otU39o6YB8iCAzR98n24D+qrgQSDgBZetdz1/xUzxScOxJNWmkmePKaRRPHH8IvtD4A==} + '@tamagui/cli-color@1.116.15': + resolution: {integrity: sha512-a5jftxeP8VvDSvdt0v3QxBZ3lh6x3yT4COKJSWnKrpfghRJGTlxwdqAGVUQYKdgTw4bOC8nse+wk836nVPfc9g==} - '@tamagui/collapsible@1.108.3': - resolution: {integrity: sha512-LNJuZv3gtd37TvvkwDooV96G/bRhZYco5lBzoAROCXFUgGYxpw8l2lto4Ymi3PPUfcwpOAUeKSAUHBW4YiD6hA==} + '@tamagui/collapsible@1.116.15': + resolution: {integrity: sha512-4Q5eE1j+klAVT9Sc9aj1mW03s7WFucU5GhgiHy9/7oVC5cHhyIOezunTHKYR+CZLRUJmlow9PFx50nXBF/pnXA==} peerDependencies: react: '*' - '@tamagui/collection@1.108.3': - resolution: {integrity: sha512-nGSFYOoLYCg9p7UGz4bgBLy849bCBPlTdXWgXq43pmHCuYIUBPhmpTQ2mDJNQDAUBJShtNc2QILyqC5OCNgYYA==} + '@tamagui/collection@1.116.15': + resolution: {integrity: sha512-E0KTSTIszqQFI1anLVgHhVdnc+5t1PLBtRwcj884jKs5ULEG/e+koOsxDMw3ietsVhMAi5tMsmiRvRae5OTOMA==} peerDependencies: react: '*' - '@tamagui/colors@1.108.3': - resolution: {integrity: sha512-qxoRqv6hCvan0WKAYmnqKasoN/iodp7gIanI6dnF6bPpN194igU5fxdcJyomhqY65fAtx0DRZCuixBkz/Q0a/g==} + '@tamagui/colors@1.116.15': + resolution: {integrity: sha512-w+wrb39DQh+EVE+OzwIDP9FzRu3PjK+mDZ9auoj+L0FogVP+7bSybE9hkmDhAW0zrp5Xl4nexsvtYX+6IJwDmw==} - '@tamagui/compose-refs@1.108.3': - resolution: {integrity: sha512-3PhDjZl4/tYE+0i/4AR6rWQRZAKVvx79ZVOEPYdZ94wWNQONYWGuVG6XzRqJ84brjXJFXcG2se2/U+bEH5AE5g==} + '@tamagui/compose-refs@1.116.15': + resolution: {integrity: sha512-BCkGLFz4ApyZH0HG3vJLQVQO3lrwrNS9kXDkKc8TY9M92FW11XzvTiQEay70CFmLOWEmfMXuhEO8FdceJVotEg==} peerDependencies: react: '*' - '@tamagui/config-default@1.108.3': - resolution: {integrity: sha512-QFyGmZes3Wd/gmXHyd3s2bz18rfVf/FiRCTekcaH9KDl15ZJXAy74SZQKyApbSH0keKUpS2QHSy49z4XcR8vmg==} + '@tamagui/config-default@1.116.15': + resolution: {integrity: sha512-YYJbM/+WJ59XyN0p21qOuKwuLbQ8nlPkBq5MzYR1d0rBRX9r5dOysdYaCFTUHZkDi+p7jnkS8pK/5/CaV1jfwA==} - '@tamagui/config@1.108.3': - resolution: {integrity: sha512-1HQSc/0lKPS5o4NVkx7QbCDyVQZPkDAwhkl6rCW3tAvMBFNKFRgIWs7/uri5FjjkuLEvxJ5BL3jF1cO1yRvH+g==} + '@tamagui/config@1.116.15': + resolution: {integrity: sha512-vVjYrLi4XbCTHWwQIrVzXCFCKwGH1Kyo4psnbHaqjK1Q5JAkJEuJIXxbE8pK1DiHAOoGQ2bxK1t2R+cpo0Mr5Q==} - '@tamagui/constants@1.108.3': - resolution: {integrity: sha512-2NtkGx5tYnt/VNA6KnPJpRyNgwXV5nx2U991w4X13gTYwebjz9keVKkZnTGAaehnZIxySspQ/7fjPknoqndK1w==} + '@tamagui/constants@1.116.15': + resolution: {integrity: sha512-pu2q+N69xoT0QhMfe538iJ0NBfKj56C7QbTiz2qLCRuPcB1+4v6YzXo0b2/od8SkK4qKv+vCIvXzi6i38KXerA==} peerDependencies: react: '*' - '@tamagui/core@1.108.3': - resolution: {integrity: sha512-xiHyupGbywCNzMaiui851Gf+Dx+NodeQ5XM9hEzv+ILqDf8DpbuLKbwmz8jC7GRebWacyu/z5e8Si65QKd/pag==} + '@tamagui/core@1.116.15': + resolution: {integrity: sha512-dUTcrjKIhcycYsBORPTjWNmNy9BlzKuU+1CyK15c2MBngQIqte3rk1h3vQKAMre8ItXiN6tqJP3PN8NBB7neyQ==} - '@tamagui/create-context@1.108.3': - resolution: {integrity: sha512-CxJSjyLtTmbTfEkyZv/xnCSi/j7ptTSabLQMqZGeaJ6BK2YsHnlZLX2QervwFLHhyMbnPCGdDsXgM9nvHG5+4w==} + '@tamagui/create-context@1.116.15': + resolution: {integrity: sha512-PMQBVSsplzNc/DOiFe0ADG/IWNkvTskbJcOp8xT8ZlE7IiekaAT+sToeQErBkQ+LxTIGVwx3IPGg/g5j7gWi8w==} peerDependencies: react: '*' - '@tamagui/create-theme@1.108.3': - resolution: {integrity: sha512-mqwi4MrUW6kz6AZrS+jWNbDxHhfT4XqzMnpGaRianWhNr6+b4IoJ4rvA5keh92zI5v1/+RXZBUZg3SVLtvIGHg==} + '@tamagui/create-theme@1.116.15': + resolution: {integrity: sha512-Qe8+gXqDiDHd8fTdpwoqlo+1lZcXmWLBC2VRMgYY9oSkDYGIc2pd3o/BXdwGHfJ5NS1LUQmkyl8N7YRJwKyVrg==} - '@tamagui/cubic-bezier-animator@1.108.3': - resolution: {integrity: sha512-G6XdqMrj69XQ3U8hfYxzvm4792irNaVTr9ViZWBWtsytO9EGRJSZ85wh0l3TPrTW2a+lXxoKWTyC38oenPBNyQ==} + '@tamagui/cubic-bezier-animator@1.116.15': + resolution: {integrity: sha512-U8Z22GvLG82nIuK/202vbmrMA2uBFydsK8Nyfg1ZCc+BjDXxbPHhVMhd3MqKW8zbNvkyJ7Ofo7+JDJYN5RO5Vg==} - '@tamagui/dialog@1.108.3': - resolution: {integrity: sha512-+Fa6D0qpMm6OXHwWeFl412HG+LuuRoFFO6ogAwH3iVulu32aW63AVR1jUQkPhqD7l9wLsEjwlVbEAviWqtinWw==} + '@tamagui/dialog@1.116.15': + resolution: {integrity: sha512-v8XVrFXMGNdlmT2PBALXLN4hAWsD1H+1CiwH541AeXo45vzVHrEVEKeWUPMBVdGv6gYvgFucLwjeaZ1T4snOaA==} peerDependencies: react: '*' - '@tamagui/dismissable@1.108.3': - resolution: {integrity: sha512-9lP5qbodRVKl+qEfp4LVnO3izfCWLo4ITt5kXUBCZO/MxEtfNy2eMO/1jxVNZhxzzh7cGhWWUYtIpu71F8dTuQ==} + '@tamagui/dismissable@1.116.15': + resolution: {integrity: sha512-t+QP36YzlTDHAVQf14bzh60TDTR8JE44PriTImtQrpZGSTEJ8mHodZpC2/qywa1CYubSiGZ1LUDr2MGgI3Rg6w==} peerDependencies: react: '*' - '@tamagui/elements@1.108.3': - resolution: {integrity: sha512-Ee4a1ApG/RnJnPiy0ZeTT70IAxi+0nbsoW9a1Za9Dj0rXFeP8CArwYQ0OF6fXw3D1rQPNzNLNRumOhCV3/KVRg==} + '@tamagui/elements@1.116.15': + resolution: {integrity: sha512-5j1GYDOce0LmZS9OAfAZWFct+wRbZV8NhRcOwySsKz+KFgAdwQIObWFKM2wbDg8MMe3m7bUFL+H4j6eF9/s9RQ==} peerDependencies: react: '*' - '@tamagui/fake-react-native@1.108.3': - resolution: {integrity: sha512-oC7nqOCz36k7AU4690jD/2yb4h3Q16lkrj21Rx6fnbsPohNYJP2hsbXn2rKjoPxaR4TNnoZnnEvHEJZT/w+yRQ==} + '@tamagui/fake-react-native@1.116.15': + resolution: {integrity: sha512-ZkCa6P052XlT42yQHYzl4fqoHe5s/mKY3b79dWvDFbsrsCPI1WoxdJF4Y6+kG/fE2Cd7xbEZArKE+dESZn0H4g==} - '@tamagui/floating@1.108.3': - resolution: {integrity: sha512-r3izOth5BnH1JBS4kRoZfOapJRJwnc1YG/6mpaHHvF1JhpbfjzHZZycNOf0Ny/9PbR2pr3Ou/K4CseOS35vEug==} + '@tamagui/floating@1.116.15': + resolution: {integrity: sha512-IUdNmbsF3nZ7h7Q2qPea6tBSGragBrLhDEUmwdyJpAD2relOnM2yPU8tfsQMSIcC5/t+wPP2TFxf21vfYDJewQ==} peerDependencies: react: '*' - '@tamagui/focus-scope@1.108.3': - resolution: {integrity: sha512-QScsh2aP0gMA7ClTH+JFbMFGTfzPezFd4+BlvdYTnfzK2jDczeB8YNXSBIvlZUHuLrnLZspItWjstVyO7UD8ew==} + '@tamagui/focus-scope@1.116.15': + resolution: {integrity: sha512-7sVbM/dkr2s3bdrJVGuBMWHrJwPuMXeO+yQYm83dt+FJ+W7UnpZijBonLFLsaTXDU3RMsKaEo/CbLiXQOxHimw==} peerDependencies: react: '*' - '@tamagui/focusable@1.108.3': - resolution: {integrity: sha512-b11P9KhvKE48/sbS/8vBWU8qyBi2VnHF8nX4SIgxabEsdanb3b4mSqwLhFpjICxhV2KLNK4wQAYZmG8k6aSoeA==} + '@tamagui/focusable@1.116.15': + resolution: {integrity: sha512-AXFZpFQeDfYzFSQzqhsyrZBPUGa9nHz5Ux354Aedi9x52pWfGq4TAQ1cFieZdRzvm/bo2V6iq8C9FBknH2js8g==} peerDependencies: react: '*' - '@tamagui/font-inter@1.108.3': - resolution: {integrity: sha512-JLIW2FWsmyKKZIN8c9Q0b6VDai94AabioochYgYTNOzd9VESoNRqLfVcLFv+nRX9isc04SmhhN2BmPTiIsjuEg==} + '@tamagui/font-inter@1.116.15': + resolution: {integrity: sha512-fO8J/qTHvYICzhqsUrZ6iT/vlh+ThO1RyyqDcIipweNDMO23xaTYXEkrhA0engS+q686c6KsUEqf6ZQMGUfR5Q==} - '@tamagui/font-silkscreen@1.108.3': - resolution: {integrity: sha512-/M/TW4V1n/yeT8eroGVMw2BK8ruM+Af9pYzZ0SdWhzcOEoexyQmfdqPWeC1gswRB3aZb3VsjKTEzNFEnN90o2w==} + '@tamagui/font-silkscreen@1.116.15': + resolution: {integrity: sha512-/avFML0RcFL2BTGNEtlebliEl2l0qnYtrPE6th9de9yBigQszPNyK6ffWnXBcND6Earr/W+Nm0rTe3r+vjJwig==} - '@tamagui/font-size@1.108.3': - resolution: {integrity: sha512-/EwoxJ93QTvrYiHiSjviqudFyy2Na1R9LFFAFkW/v9Kb79+ADAmJId+FdLCqOku5J3TDhoyGuBPnKzpNKUOUtg==} + '@tamagui/font-size@1.116.15': + resolution: {integrity: sha512-Y+tUf9rqfKLnKTqKg7/hqP+5T+96HVsQ1WyFgvuByTJ8ai1wK8CipJK6n4PQpTd5D2Jmtf2A3i+NvYjevd7B8Q==} peerDependencies: react: '*' - '@tamagui/form@1.108.3': - resolution: {integrity: sha512-DQjCi3urB72kHEZTQcFbduRalmvErZEYHuQjWK5hkafKmIv7UzxUxZO5P5I+t8E4KUFTyT/oaS6mSf/uch7yGQ==} + '@tamagui/form@1.116.15': + resolution: {integrity: sha512-6VxQWBT/LRrOVP+52nHWCZMAsNIaAlvnQmvhmYTTrkH8hSJ0JncR3uePb1wnc2O2ig1sUUU9C+GTzc8GCW8V5g==} peerDependencies: react: '*' - '@tamagui/generate-themes@1.108.3': - resolution: {integrity: sha512-bb82CO6WDuFtaWCbGt8bR31ZJK1D+qN28vCSAx6a3i2yZFbl1HR6nGP4pGsnOn9QvWo0L5tXDec/A1mFA+65Tg==} + '@tamagui/generate-themes@1.116.15': + resolution: {integrity: sha512-+adrmDjMVjgsT23uYqab2f9O3asmB/aPS+JxkrjXw+Z5Dn35BCTED2NoUYb1bLC178Ksk9vIN9A/EBfm0/Y+sg==} - '@tamagui/get-button-sized@1.108.3': - resolution: {integrity: sha512-C8zMmiEsr1Ve7MR4Z3/Xx1B7arWloKoFU7ny7p3JT1fLVXco8ISw5XlOh+ZmaHhRr21xMwNJbIzSGKHtpNIX5w==} + '@tamagui/get-button-sized@1.116.15': + resolution: {integrity: sha512-XEFsLUeh/4qUNqv594M8pEKFwLbZzDbasIfL1HW6mvq4R/8VGnZzYT/tpZRVPkHn0sV1Su5+t3QYd7MVAF4P5A==} peerDependencies: react: '*' - '@tamagui/get-font-sized@1.108.3': - resolution: {integrity: sha512-DEQbKxVghLMJOpOOemtEXa+n6KkL9gHbLHRKH1XwSUzhi9FXid5PhgJl48Kq7FpVo1eIyf/tHYquqD+Hcz/H6Q==} + '@tamagui/get-font-sized@1.116.15': + resolution: {integrity: sha512-h3LfTaKlMnbqC/GF6vAlpIfEWtqkbdZR2iMiZXzEL18ennB93gBibilWkfwkSvGkhlSJN0NS0M+qutlzWa4+OQ==} peerDependencies: react: '*' - '@tamagui/get-token@1.108.3': - resolution: {integrity: sha512-cGqutxm3BG+70wmBO1WSVPR5crgdK9+lDHJ0YETtZIThkxekOVc1QNxRa0Rin0Bk6YT6u3SIAzjnoFjiinozzA==} + '@tamagui/get-token@1.116.15': + resolution: {integrity: sha512-sadMMDsaeuyYpCv7iHrZL3DnspJtvsF1rkOLrz+tNouZn+R/IMmsi6fseo6x/9KbVLy0iLFTF2A4eUpLn/QcPA==} peerDependencies: react: '*' - '@tamagui/group@1.108.3': - resolution: {integrity: sha512-4xsfvofdmWl/y/Rkij7EnxuVk6WCKCPZeiXNLBBaPFe3pcOL9QoBNygI+Yficj5VjhVS2cbI0qNbj1C0Ei2nag==} + '@tamagui/group@1.116.15': + resolution: {integrity: sha512-LZNHRgBWbaFoNyXSxi6p0ZMxYj6a/KITF9MthGG7iGLqSLJuSItrKr+gZM46AEG7/4sVqF7nIkel2rWL9tjc7Q==} peerDependencies: react: '*' - '@tamagui/helpers-node@1.108.3': - resolution: {integrity: sha512-tCLF1th1XVsgPYUkbc8npUu/dqah6UrA5er2K6lKO8ijVBAesGQFQfw4r7KpeHTWsewKUPJFSauMSTGAwr6QQA==} + '@tamagui/helpers-node@1.116.15': + resolution: {integrity: sha512-nz1CQUO7ThduXmxpO64j+lc/q+CJnsdqc2tbvqCTF+oL8CX5WFjzDIxyufnTp1iaw21/46SjMRN/13LEUSRqaw==} - '@tamagui/helpers-tamagui@1.108.3': - resolution: {integrity: sha512-LhBHZvrU0lAoTMVRgUVpYiAv/8xXRpUxF7U25yeDyNbwKO6Vtu1+7cVBo1lgURynKOGsgI5KfAkyy9Q0YQyavQ==} + '@tamagui/helpers-tamagui@1.116.15': + resolution: {integrity: sha512-JEI6O2Y4a06I5M9zQQG34ohd4e+YKdCADKp5NzSuwc98zg5E4zroW3gvsS7EAea/6GUyDjwuSHDO9Uh9zM14tg==} peerDependencies: react: '*' - '@tamagui/helpers@1.108.3': - resolution: {integrity: sha512-I/s1SBAmons5rZ33LejFNVJ148H6KaUoLWaF7Fz2z+xGjsPKbv7LLzfHOLVty2nQtVOeVvA/csSjjajgaFvxLA==} + '@tamagui/helpers@1.116.15': + resolution: {integrity: sha512-kHadj8jw2rNB3hHcCQcUOoCl5P+gh1KhC7cqqpnD9ZY2E86rHyvCOT+3bGbr+u//D0P5Z9TfdCI5ibutTLDMHw==} - '@tamagui/image@1.108.3': - resolution: {integrity: sha512-9CgQlUe9KH+Jcjr9p6n8CkVhtrpmRpDzY6AAdEhYAiXjBK3tUs/eQLaeU+gIo05b2LYBl3Hb7YMq+HthTRRhGw==} + '@tamagui/image@1.116.15': + resolution: {integrity: sha512-Kqb/h3lSGt87ZT1vtUcj6MTlbwQrJrg4byF3TftiGj+THgIuUXD3hTN4DZqr7VF9bhf0SVfjI85gcGYt2nVJbw==} peerDependencies: react: '*' - '@tamagui/label@1.108.3': - resolution: {integrity: sha512-6LKJUY3PKEAU0rcOixGVUhXGGkYFH+1conMDzB+P1robLS3z7OqXnpyByGBpqmL/6QhuL9FpUUj123Yg7OSCGQ==} + '@tamagui/label@1.116.15': + resolution: {integrity: sha512-h/jawiaAKWLYLKxwP41GrPItFC9+AYv5z5XBwLbu5CBmbW/HbcjaghmvUMsBZLDvyaXUX4KzdsrYGladlnLKoQ==} peerDependencies: react: '*' react-native: '*' - '@tamagui/linear-gradient@1.108.3': - resolution: {integrity: sha512-QMuAzedefmhTOjmsykg6jSSnz4V9yyRfNUDpWOIxb9RPkNiDTGhUy6FJ/YuTjFF+S9MxW1ikrFMyAtik46r0zw==} + '@tamagui/linear-gradient@1.116.15': + resolution: {integrity: sha512-gyO0y/xTsg/N/qwyGEVEWm8O1QwfGvGBVm3ZYwKa204ZfKGISb7bMPCNrXQE9tE1OYGtGRfw3EGKvqKS4ewpBQ==} peerDependencies: react: '*' - '@tamagui/list-item@1.108.3': - resolution: {integrity: sha512-YnOjNRiOx4grW7k3qD4VQcSrSxPCzD9y4tY6uZC7Nrl1og5cm0zi0UQaMJQqfyTVZQGV5UBGHh6zhaG8h84TlQ==} + '@tamagui/list-item@1.116.15': + resolution: {integrity: sha512-g4hAvwRdE4XTGx2mGeaj1DjyTpGqEJolmLXS9NVuW6gYewNbHxqmKSnvujInpbIHC/rdUInXNLGGrhVirWfrwQ==} peerDependencies: react: '*' - '@tamagui/metro-plugin@1.108.3': - resolution: {integrity: sha512-lUF97LE4DcF7am7VMiyHaauERHMzYHcG1zpdRdKJ8N8+1taWF+fIjG8JfeMibmvFW4sP/QSFAqKeuomldOYseA==} + '@tamagui/metro-plugin@1.116.15': + resolution: {integrity: sha512-NyRRqAMdXjea7lebx57bce599izu0lgdo6ZIEQGIlV7X8+vNLDKUiZi2vw1iAzrN2CI0/nMKsehRmhP6BIzDwg==} - '@tamagui/normalize-css-color@1.108.3': - resolution: {integrity: sha512-fcJi/QXMYuVaTqerIISTu4LF00KxwQGETdCTpMs8lKFGw/8fubR7P1tirJJz5xQmMokIaS33bYAi5Jy09q9+ow==} + '@tamagui/normalize-css-color@1.116.15': + resolution: {integrity: sha512-444U32At8PU6yewQyO3td+j5u+PeG7J7zn7AZzPYurp9+HdT4DIAGVum1TQ1X/UsEozajcHRliVz6xp5iYL3yA==} - '@tamagui/polyfill-dev@1.108.3': - resolution: {integrity: sha512-4FM9RmvWNGu9h3ClwYAoBiNbn3pMo5kyb9IyebHkIE+Z1yDE77hOLxjlyZ5AyjiKzW2rJ7fERynW1TnjO5f1qQ==} + '@tamagui/polyfill-dev@1.116.15': + resolution: {integrity: sha512-aZx29UsTB6N4FnZMnusdGWOyL8OZHDYMdsOXDu8h8OsjI+TJdW6jaHnU5n0iLCkKzLud4KXRKIm3LXkO3uAfAw==} - '@tamagui/popover@1.108.3': - resolution: {integrity: sha512-gHbpvVxvW3et+6iQTUdAM1aKef/gIUXvWcV/otX6buE2TbqW4MsCXfXdAcyC7NU0lD18adVti1L3bLO54pk+lA==} + '@tamagui/popover@1.116.15': + resolution: {integrity: sha512-GDGuIdklQT3MLQCYx35kMX9+JZSKqWSSEyPkGQGpQ1qXcf34AySwNS2C/OCobckSwimyeieSqBPoarEjgJ9s+A==} peerDependencies: react: '*' - '@tamagui/popper@1.108.3': - resolution: {integrity: sha512-LbDsV3HaU1nn4ltIzNvr0OZltXB2cUH8PAkyIzIK8FPmhJ6UKs5EUl2/OTpSj9FLgAnIO89mbLVbi+4Q8XkawA==} + '@tamagui/popper@1.116.15': + resolution: {integrity: sha512-mQiH1SX306PyZMOqCHkWoRzFJzAVIDa1QshmTAKrQvvzV3iX3ZJSPXyfXAMtHgXuuHtdPL86AV7ZP560YuQ/+Q==} peerDependencies: react: '*' - '@tamagui/portal@1.108.3': - resolution: {integrity: sha512-2v5+FOQP40HFXW42MQdV6zDoyUY4Nsz0GCircgZkSd7t+k1EHHwgrdoWgdcm9jqx6Uyu/2tOv+vUBKurhqg6JQ==} - peerDependencies: - react: '*' + '@tamagui/portal@1.116.15': + resolution: {integrity: sha512-G8dDfcDAtFupG1YoYEv7N3XlfA5Kur0v57+dCUq7xA+1beqqAQvq6vx4D8olwqrbv7o9zPKNPNATb9ugy75n7w==} - '@tamagui/progress@1.108.3': - resolution: {integrity: sha512-yBm0EnoVC02uyrnlHyZJL3cZY975cCRJV/FxoGApyHDIsWO+M688W1rsLEq8Hj3WUFh4vgy9UHX/aIg6ZX3x7w==} + '@tamagui/progress@1.116.15': + resolution: {integrity: sha512-ma9/R7XVCaNVItBuMoB6X6t7Y2OdUhq8IQJgnBKO763OcAASy/lD3fAHVp0Yhmt8q0nJmRfbtSdmggjvlsR0Pg==} peerDependencies: react: '*' - '@tamagui/proxy-worm@1.108.3': - resolution: {integrity: sha512-OIiOw6GH/wtSGlaG/SW2YO/LANzafd5WscvfLdvmqnTNqq/Hfl8VAwfk0DLT+OidSCFb/ro8uljAoQMbbBn7mg==} + '@tamagui/proxy-worm@1.116.15': + resolution: {integrity: sha512-MOwYp6lkgeq1Lzz/Fjxjc7Q65Jf/ygBFmvzwgXK9PIULRAo+Mp02UkEwMD1o6aYkpoIpy+ogaX9bYZ2QaV58aw==} - '@tamagui/radio-group@1.108.3': - resolution: {integrity: sha512-VpBZuRFr1dzXcDf2UT59tM3n0dPkvUCY19xpl97MEUPlP25VFN0wou0EaFTZbbbflBc0JxLa0D/xvPA4zR9k2g==} + '@tamagui/radio-group@1.116.15': + resolution: {integrity: sha512-BagpVXQJpCSzVCOZZiQB1c9iFNPJLUhaYMLPyt6E5a7a3HXZT5Kg6dqy0ZkjHpuNH/NN9mmupetRJ4pHcUvtOg==} peerDependencies: react: '*' - '@tamagui/radio-headless@1.108.3': - resolution: {integrity: sha512-WiAQWgn76JQg0vadM1xd1Mjzdmt/pSHdVR1qqpttjsDjAK9B63GLnCmvagC9mXLcwS64DJkH9x6o7TIa/xdHfQ==} + '@tamagui/radio-headless@1.116.15': + resolution: {integrity: sha512-mZydocIkUEheSX2pFwig1tcg80GFnblfxxOEQV/+rbPyFq0wI3T9b+nlh12aXElmKzDz6+IxB2JD80PFSpxIlA==} peerDependencies: react: '*' - '@tamagui/react-native-media-driver@1.108.3': - resolution: {integrity: sha512-SJpZnAKlrreSAkOK6M0IOHj0QWxreSKAAkVtoyLK5fw3wd2ls1Qkhp8uxvZ406vy5ZgEPHZHg6tCLlRNqgaR7Q==} + '@tamagui/react-native-media-driver@1.116.15': + resolution: {integrity: sha512-+drd5bDZcntZunk1cwtLbcW5bdEzWlGMKuPwFNzN4Hz2Po1ai5xKJrBfoPvUuGuSTzQgbI2MARBQw6zMIt4YnQ==} peerDependencies: react-native: '*' - '@tamagui/react-native-use-pressable@1.108.3': - resolution: {integrity: sha512-ssXGrZekvPjWdi91Nb8VQOW5jNFoYvXEKwwZhkdbHivipbpT3YgEn/Nhi2iyf6kBI69TsVE2cVg4P4GRiBT2+Q==} + '@tamagui/react-native-use-pressable@1.116.15': + resolution: {integrity: sha512-yUjPCl2bwA0WI/1/wNbV0gmNEAirGBu9pcxzvhtndILmsfYdsydNNDRN2ws9tA/XT6ZgASn0Hoz5Eo9145L/cw==} peerDependencies: react: '*' - '@tamagui/react-native-use-responder-events@1.108.3': - resolution: {integrity: sha512-QTcd0Ug3cgx+CZ1EoDcVDkUG1H4GTuvJTOGSizyqpGtQAAsTjvO3x8+VsRI3Q0kf/0YjviLFY719ltxuxpkHzA==} + '@tamagui/react-native-use-responder-events@1.116.15': + resolution: {integrity: sha512-p+Z+4HcM6DV1BZNH/mDHGLe1D+mIIcJMjJ2w0uouCIZEBDMjUWqrlzeGLkHH8HGEoGWyQJh9ndo5GAhSGpnP5A==} + peerDependencies: + react: '*' + + '@tamagui/react-native-web-internals@1.116.15': + resolution: {integrity: sha512-rjCTwqqq+bldcK01Mn4f1cX/iZ66KEvqtcvtmSwQH4l4bLXy7WKhsun3cDNzfvdUa2hP0EAwcxfo4PhB/hndsQ==} + + '@tamagui/react-native-web-lite@1.116.15': + resolution: {integrity: sha512-cm3QsABi54luAVDOLWeJ2cdv79GD/Qbn0z7zUq+PfBeaSXbqKOfYJc9F7NXkjMwre0K0Ah15ZjzluEE1alU0fw==} peerDependencies: react: '*' - '@tamagui/remove-scroll@1.108.3': - resolution: {integrity: sha512-8GZRLzZvoddGNkA+clKMEEJpOXrFm6vcf/DQAkISpWLyJNX8dJ9Z4PK6aPi4WdOt9VKMt65dfeuvaugNHZc+pA==} + '@tamagui/remove-scroll@1.116.15': + resolution: {integrity: sha512-lFRrdRB0oxGWYx6UUEK9Y6YUi4MsQK5bR5pOhbIuB1XhigKlqZMBl0xMxrihjuvIJGlJkrovubzU3xV05H994Q==} peerDependencies: react: '*' - '@tamagui/roving-focus@1.108.3': - resolution: {integrity: sha512-PD7+YjilGkJcf8jxcNCD1yLiL1NLbaJUefT+pl3a0jTDTVKErifNch/Px5TEzeuhg+lC834V9URfBJ2m1NBjHw==} + '@tamagui/roving-focus@1.116.15': + resolution: {integrity: sha512-gm20jX/BFHKUyJY5NTBmaCj3mknSqTS7inSTTy6T2RnrVNMVodxUPdu7Ltr2fTC2L25x8bjcdusLACL2Lr59QQ==} peerDependencies: react: '*' - '@tamagui/scroll-view@1.108.3': - resolution: {integrity: sha512-6URr1GFoZGqeKsX06pFVWMksSa+l7DygvVe5rNqCykb3rwkMQWBipKVIL0+UkU/Nq1WG2SEshaomgCu+5KqFLQ==} + '@tamagui/scroll-view@1.116.15': + resolution: {integrity: sha512-i/EALOuPshXKarFSxbo9oU4xm1yO6oaFQRwB0tuuDHmIz651JY2cSaVeYi+9o/839fVX9yhZiN4zWPQ+XcJr8w==} peerDependencies: react: '*' - '@tamagui/select@1.108.3': - resolution: {integrity: sha512-0vV702UfjOVkCjXDBWkAEr1WWYoxyhGuRXGphrAUOs/uvttc2AHgj1GAkGgcn6SJAOPzMT+W5sAwZxzChZEgpQ==} + '@tamagui/select@1.116.15': + resolution: {integrity: sha512-6LQB/Ies8tBAjcQt4U4p1Au5fR5mkhVJbvGaJou9H2rXQVkljifGJHL9wyBxuJSyYMFAKDe8IdsbuUHJGTafwA==} peerDependencies: react: '*' - '@tamagui/separator@1.108.3': - resolution: {integrity: sha512-f2Oaan/8GbyrXiSk03efvcZtjuwv8JcLBfu40vozRL90935VRuFNUXiPugBsduqDGn2UViN0Z6lG2Ic/NLXjWg==} + '@tamagui/separator@1.116.15': + resolution: {integrity: sha512-quGslyLnSh6souhtKIV7POROPeaoJyKq+bqIlNBrpXAoJOyJ9TUidOaOcJOT3AV0p7zIk+xidI2kaoHqP83oHQ==} peerDependencies: react: '*' - '@tamagui/shapes@1.108.3': - resolution: {integrity: sha512-njwPNM0E80X79qrh78QiWc8cl3lDr8KGMnP7KRJgrL9O8QaYaz2Sp0Mm353cyIhh29h1px1LvRCDyIIuncPZFw==} + '@tamagui/shapes@1.116.15': + resolution: {integrity: sha512-mkPDJOruUMTRtwLqBZOxe/ec7Mc/E0TgNUrKJQ9jVPXR8QcB4qvsBR7E4jwoenvyXTeZpHvQmXuSn5R81OP40Q==} peerDependencies: react: '*' - '@tamagui/sheet@1.108.3': - resolution: {integrity: sha512-8OI8hy2wV+Uq5VIIIeEiIiKGoRPnEjH2V0YE1vS57BCAJdJyEEWOQwZLRv/HYDp/6aqFCAEKNJ2ap39EVf6r3w==} + '@tamagui/sheet@1.116.15': + resolution: {integrity: sha512-jyj8bR9HlDOcYh0Pk/eX9FV6+kynBFHdevBvS/eos7qqUvr7GZQcYrzICnpuffRNV6M72URiTxdkZ8rnsL42XA==} peerDependencies: react: '*' - '@tamagui/shorthands@1.108.3': - resolution: {integrity: sha512-ebWL7cXAhUFZ3fomdDj/xw/Pjgl346zydLq+fj3ZVuebYMwQomC2de2Z9YS/n6L3vWJFNMEr7KKV7uIU1MCnnA==} + '@tamagui/shorthands@1.116.15': + resolution: {integrity: sha512-IFSwHOK2nigmIBBXX6Wd4YNYhHzM61KhYnFPqlitncRpIiJxt/Zp5DCIoZgRp7FsvQu/a091nlL0iEr21j6S8Q==} - '@tamagui/simple-hash@1.108.3': - resolution: {integrity: sha512-ZIYZAZxca9t3ZJH8AlvalaIpjszNug9m8s/AVycy9zMksuUhNIPqaG/YZaSLeaPAXBXkqZ/wRjBkhM4Dk8cczQ==} + '@tamagui/simple-hash@1.116.15': + resolution: {integrity: sha512-eTPPxSY09YCeKCSP0dm+7ObiaAKN+PVp8PF7MCVzuVh5Ov889YwfgwH7mKE+ATFM20FFu8/S5fBVfogS318u8g==} - '@tamagui/slider@1.108.3': - resolution: {integrity: sha512-msekjl5zzURZ4T2M31sRW4GngRa3SDtdxr+svBmkkcZ1euw74fSKhG6TC+PKZudX/6sp2bUVCDUxjVtp5Ci9Cw==} + '@tamagui/slider@1.116.15': + resolution: {integrity: sha512-oz3uzqSrAcXDMearQLmG1inh+q5/VHP0NWjvj+q1rqraMKGNHV2HMHxxOz/0D2aSvpLvFzZpCeunam9eDKPt6w==} peerDependencies: react: '*' - '@tamagui/stacks@1.108.3': - resolution: {integrity: sha512-dtVD4Bq2eklCVWPSShV7ASwxjYraXyDK848kTNgOmRpM+sIVB1PVXHgNMAwHitxmnpcmUifDKEsr3TGO7ujZiQ==} + '@tamagui/stacks@1.116.15': + resolution: {integrity: sha512-MBNd0M+r9l8e66S26r9zgR/+FnpyKFq0hrOtUbMbKF+3z/zqKtZ1XXpPu5MBIL9OnVug2zFpVWeprwv9bccxQg==} peerDependencies: react: '*' - '@tamagui/static@1.108.3': - resolution: {integrity: sha512-v8rxIYOe9GTzOkdX3YyGEbopDib1PXRbEa1BYz9nky4IuPrIvAJ6DHUWuYMZfOhRI/Eh1BaJDhV1n987YsyB+g==} + '@tamagui/start-transition@1.116.15': + resolution: {integrity: sha512-8ldrc+eGTbktcQysKNB5rf+3UvnrXhIydcmnRlXWtCdDpMHcwIQF9kob5UoHeGrqzBbWCV6ux9EDYk4EiFwXqw==} + + '@tamagui/static@1.116.15': + resolution: {integrity: sha512-I3q34tqx0D+x2sT+bqOKLnD3M07sLj6nPctyuH9RnO+IKShwhPLR3yxmZ5Xty3LPGXP9r3BwN8faU5+OVF/m2A==} peerDependencies: react: '*' - '@tamagui/switch-headless@1.108.3': - resolution: {integrity: sha512-FhlEfkxNm8pcGKXLGf3bbWcaHwv7RURzouVww/j5u70rm8owRA++7WVpS8zypZUF6kl/nDxmBvljEm2P1ksjPw==} + '@tamagui/switch-headless@1.116.15': + resolution: {integrity: sha512-OjHc0IiA+R15LfYWNoQQ9uLP58jFmJfMqeqoayJwUTMIX/g7tLaGDX7//aswwBdK7PWH89i9pkfs653q4GZ72A==} peerDependencies: react: '*' - '@tamagui/switch@1.108.3': - resolution: {integrity: sha512-YwgqOt9odxkkbCbQTFxSoKE1Tw593D9h1jAe6yhDKvbujKx1HdI5o1Q1ylc3NQouBqMOHh8QksYzcX1qpAFERw==} + '@tamagui/switch@1.116.15': + resolution: {integrity: sha512-zNsLqgybHmO/lp9MvwXvfhjyB78H2hEQQbjuHAIoC3Yy1vvZFuoiFTjeMXiEiqhrwxMZjE7UoCdo4QhsToJlCQ==} peerDependencies: react: '*' - '@tamagui/tabs@1.108.3': - resolution: {integrity: sha512-Es9r5oS5fkP2KK/WIdbqZRGaqKuOUZ/EpBkg1CPo7uaeuScJAoMMu2tN06pWcG9Nv7G+ZUHyozkF67kLIbf6eQ==} + '@tamagui/tabs@1.116.15': + resolution: {integrity: sha512-MgkUBOuU3ohLu3u+fMhrTCkpjS4zXZfZZcg2naX6emxhoFniQ8Ow10hPL7gPoa7xCw8XlXmvE63M+L9W4YGHRw==} peerDependencies: react: '*' - '@tamagui/text@1.108.3': - resolution: {integrity: sha512-04kf17aTHN70DoeOffi5WGMb0P/k/9XntBBklEgFaUlhsNAjtoDzwWwoY3SIsGycM3ESORIdd2UqfebloTiJtQ==} + '@tamagui/text@1.116.15': + resolution: {integrity: sha512-IPSqR5LrhQhr5BeUp8Rnm3RKPukXjbOGo/EKdnSwQA+PojF/ZyCDwqkXjlPCJWQXu7MYzHRmQ4QE9/gaJGXb+g==} peerDependencies: react: '*' - '@tamagui/theme-builder@1.108.3': - resolution: {integrity: sha512-psTH+/ExNCAnCmwFwKPHlmeNnkVEQE9UH6RtXRaYSMOC7QX2G/lOKvEm7H8MVLq2KuBHOcSW1EB6dJjCrrS65w==} + '@tamagui/theme-builder@1.116.15': + resolution: {integrity: sha512-FMW+EBwb17IcESA4gtteqq3TM0xngHFNjcpJhICNu/3M0geR9s9OYd81Q8Bmdcz0FPlkjgUdTYv0kPA4ZorHLw==} - '@tamagui/theme@1.108.3': - resolution: {integrity: sha512-T2LX5S/4QNqXaVkFaAaeA7GcxgfKEgwbGuleLyNUihcP/ippWgiz5C680xoJVUf8VNrSo9+WwKnnchLcExx1uA==} + '@tamagui/theme@1.116.15': + resolution: {integrity: sha512-hPj59O3fIIvm7zLUo9qF4T3jWGOBoXI6rtsZeh9ozkEI5Q3hih5xqVNspG0ES6TWU+ZtpjEVAgr+Shfjvr57HA==} peerDependencies: react: '*' - '@tamagui/themes@1.108.3': - resolution: {integrity: sha512-gkpfIcmTQZeomAmErEhCf+bZhyBaAySRXaBdDDf3RKuc9x4sD4Y/FcviDLqu5i/LCqEJAIJcKzlpe/kg7uMRjA==} + '@tamagui/themes@1.116.15': + resolution: {integrity: sha512-7WlGrTxkfO/YaHgPboOk8m9Tyh49WfBZaD9SXvxOpUNohq2g2ZJlVVUgqjxw1ubQF3yHxNzEdv/gEarAo+P1Hw==} - '@tamagui/timer@1.108.3': - resolution: {integrity: sha512-YVLaV1toDFjVjs9LlOZeN28YJo67nKI4Tx0A/6MIYQJKJ/WNPuc3bJJZWJJVIPIM38PZaZ/sCYjGbF0TisyZKA==} + '@tamagui/timer@1.116.15': + resolution: {integrity: sha512-3jRW6wmrxsgdyQwMSxmfjBjvx2qLL/Nwsk4+JgPuDrFFKMKCurQOmUJPHX1tzw9+NEgGWDnXu2W3SvANWPxLjQ==} - '@tamagui/toast@1.108.3': - resolution: {integrity: sha512-VzVFvuuIXAChODSSWg+RakfxIZ9sRagbalFwtvotIBV8XSr+60+VyggyGS9z3tMeyGncS08tzaNIbIj3TJWjTg==} + '@tamagui/toast@1.116.15': + resolution: {integrity: sha512-SIkKZ9uB1zkYkllR2EG+GwwDGMN5nHFdeW5MxZTPAiJzmusaAoka4IgwsOwoyDcTbewuSyE7DiM/qP/L6hL64g==} peerDependencies: react: '*' - '@tamagui/toggle-group@1.108.3': - resolution: {integrity: sha512-WLjM3vypWGSyNCNJYWQsGsaP+sCD/jwlPhiCiHKUSyr5PA9EwO14IKUlZrNLgT8A+AKJZxpcziU3590lCFhVfw==} + '@tamagui/toggle-group@1.116.15': + resolution: {integrity: sha512-aBCQ6qAQoiEeOovD9WivuMKh/ovCE6ZysWqLjJDvL2dHfdN1CQg+MUCm/P/0452YkrkNdu63VezcXppeUePLDw==} peerDependencies: react: '*' - '@tamagui/tooltip@1.108.3': - resolution: {integrity: sha512-Xkpkz3QFFyu+v7e1ECX6Ks3D4GzldeZGOaOVcUF5CySzZdSnmvtnVqdjredKUPhKSH5yvHuo5knxv/NzsYiU3g==} + '@tamagui/tooltip@1.116.15': + resolution: {integrity: sha512-UldFu0GsAs0kv81do8OnXbzH6bumW9sUvKN2jW3daM9su65QbHhijcmU5V/8PtucGYpUxk7sz+Rj6J0gSsdxVg==} peerDependencies: react: '*' - '@tamagui/types@1.108.3': - resolution: {integrity: sha512-oFoj7sdldt/TkeUrKnlUA2vbzR2VkMk0KyZTDDM8cnQ7ao0N9WlxWQwzioNgf3ISH2jL33NOcmGc9V4+Kre6mA==} + '@tamagui/types@1.116.15': + resolution: {integrity: sha512-PUdw53pzQz8vY+TJ13Pqwl8Za2supciCNpmJalvQyQlKq/QNK3XeiBv/vVeBvCXiGsVjBoT+J+Xl8baRFVN/qg==} - '@tamagui/use-callback-ref@1.108.3': - resolution: {integrity: sha512-Q7Gg/FGhCNAkefsFwwpWffzH/TiOyYcsiu2lK9EieMqlIRZkfRX58ZSvQ6+G2CaA+RrSGfQs4juvSflaNDB5IA==} + '@tamagui/use-callback-ref@1.116.15': + resolution: {integrity: sha512-8dcJiZ+46+qdw5dgsWYlHOdDGVbPnTbmYj9sRXhNEZ7L3bi6qmgJ9lzL6gnDTdXGWaYsweOK4utLExjvxwOraQ==} - '@tamagui/use-constant@1.108.3': - resolution: {integrity: sha512-PQRKtls3bgOSDLyXmGBQ77fOHVJiCh3rBr23NBX5gH/kCnNWVC+fbFg0nrOLfGwQkZGuoLi9IpjEsPa1/L46uQ==} + '@tamagui/use-constant@1.116.15': + resolution: {integrity: sha512-Hya9S5uQ62JoaLZ05wsBPnWkddF6dGpdc7iU82Ifg5YfzA/EVINO6cty4YhTzbCrmIReUvTl9Dh/eGP3QyDmlQ==} peerDependencies: react: '*' - '@tamagui/use-controllable-state@1.108.3': - resolution: {integrity: sha512-XAckayVU/n1oyPks7WTHpg5iTWK4AgKRh13UkuCGlAW6jbaE0mzqqA7hwIraEj7t5Yk2IJ+lvzLeqXPSBZc1JA==} + '@tamagui/use-controllable-state@1.116.15': + resolution: {integrity: sha512-ffYq3xIUTTDiTMpyqu3Dei8c5iHhp/qbCtcnFLu1BHlWP2VMgv3LZLIvNfTy1tkSHCm/KIMKY4kyjr/mC72AZA==} peerDependencies: react: '*' - '@tamagui/use-debounce@1.108.3': - resolution: {integrity: sha512-LenDu+0w/hv9DTMiXKb9PwoDajkqeu4xKeuUoTo5+zfm/cN2vagm1GeZfjHhoXx6XW88liD/RBmb/eUQvQ16IA==} + '@tamagui/use-debounce@1.116.15': + resolution: {integrity: sha512-3UBfyEJQoFXCo1IbelItVEdR6hAawjUgzRlCpv3DQ9r8qmdAB9Bn7JuKAoGtctVxIIc8eMca/p0N/Qiqp3akAg==} peerDependencies: react: '*' - '@tamagui/use-did-finish-ssr@1.108.3': - resolution: {integrity: sha512-0vRf0/pfkfXzWyfFjNo12XNd6li0Negq+a/x9BGE+bhW5rWm8cB+D+1rW2lFysWxqHFeAfjSelzmdXmV8RZj5Q==} + '@tamagui/use-did-finish-ssr@1.116.15': + resolution: {integrity: sha512-8z8pbHH6RPt4PxFPoPN2IblimWNfJUniCl4UuL1iYUU83DOjrS7H5iMJATgP1F0UtVPa3RwJeBET4FIwc3MIgg==} peerDependencies: react: '*' - '@tamagui/use-direction@1.108.3': - resolution: {integrity: sha512-QiWJ1OKLyyJov0fZaFk89mM4vxGO4yjXIxChc80bpdlvYRcZ2t29JtTfkWjR06J16Q76ZrzQ3ZLPw3KyLScbNA==} + '@tamagui/use-direction@1.116.15': + resolution: {integrity: sha512-aWVTCQe9lg2pXggPKPOnkxdS70TdHL3Aiuq9uBl1sm0B0DgxiQQElLJpwj7ePxm6BLVmahiIPg75VX6O277wIg==} peerDependencies: react: '*' - '@tamagui/use-escape-keydown@1.108.3': - resolution: {integrity: sha512-+N/OqMX+Xz4kPrmhBPsrqcsQnNQTwVAeIh6bTIiAicjGpZbxzI3aUNKOPKE/3jj122Y+R0tMuL/U86mSoIHz6Q==} + '@tamagui/use-escape-keydown@1.116.15': + resolution: {integrity: sha512-iRjFNwjAvLH3nS03FsPLH+WORTQf8TpXhvb4rQrYejPXUfX7FuRkuEQzuch4GLTV7F3l3wdcxTXdAs7+ti7Axg==} - '@tamagui/use-event@1.108.3': - resolution: {integrity: sha512-roD8+m63APQxUzQMFK2zepQICW8IIfF/tieMmR8xWwuUkHCqo2iU3eUDLwwkWgi6NAeE9Yd9OP6WO8NHNiMvPA==} + '@tamagui/use-event@1.116.15': + resolution: {integrity: sha512-t2gsKL+zrWCPm2nd3AxtpAmBnt6YsN/RzckeOEVPfXAw7yJtNPDVSq7JvyaPO+R8pIgJz8W8PBocEbku9++uUA==} peerDependencies: react: '*' - '@tamagui/use-force-update@1.108.3': - resolution: {integrity: sha512-v8jrDF2SEACu+zeDQBP5UwwHQfvtz71H/TKUjcw7D4TeYe7GwGrMwBAxXnD9qqW/7iaLAtW/jknFgpMzk9Dk5A==} + '@tamagui/use-force-update@1.116.15': + resolution: {integrity: sha512-4/uTbexJwD1vcHL5j9IcySU5MX2NeJ2691UfOT5YBFfWLaTtAI+6W9Wlyg4Sba2Udxo/m7AboI60oqJhzh3XAA==} peerDependencies: react: '*' - '@tamagui/use-keyboard-visible@1.108.3': - resolution: {integrity: sha512-07M+PBO5n1cdLuPzybmkti+KNdlW88c5W2NcX5JzVnSM8blmY9KLUEfNm6z/Qp0Fs6B8I3sr+ojWvscaxDGTYg==} + '@tamagui/use-keyboard-visible@1.116.15': + resolution: {integrity: sha512-2A/R9627AgZdSGVEy6X64+dDi5XodhQ0Szk9Wl3y4uOCIDSWlTeiBGxRIMZoLCV97R1YgFvW2jgKladWl6P/DQ==} peerDependencies: react: '*' - '@tamagui/use-presence@1.108.3': - resolution: {integrity: sha512-w7iCmVLwWMLQIGkYZuCwEUjtfj5klz7BxNvR/toFOFLRRKP6F6GNP4L2Zx9NAGtG5FUVjEJ6lkuGHWvFh2HcIA==} + '@tamagui/use-presence@1.116.15': + resolution: {integrity: sha512-0Nr9oxTeFTvKcgaH9bSsuNQw2TRD+dAg2Kk91rwCv9FowQJkS2jcwvXsLau2VbMIwEFwhO+B+w8u9x127mgAOw==} peerDependencies: react: '*' - '@tamagui/use-previous@1.108.3': - resolution: {integrity: sha512-iV6Al/kc6NCtqqJanPEeWGIzUcCspw4cx0dMSlIINbG7RKuFqGUyw+tADT9+lXlHEGtgu47j3kmTBeZNRNzLpg==} + '@tamagui/use-previous@1.116.15': + resolution: {integrity: sha512-oTL5Eo6KUgJxKgyegdEykZarlqePwqIKPdScU8Mld3WBSBDNNsztDazmex1dXvotTcX9mjc6TA8ocSNhP+rHig==} - '@tamagui/use-window-dimensions@1.108.3': - resolution: {integrity: sha512-jtjrnxJ33nkPtwbNzPpa3BE/23HKctytCNvuSJ7SmSpSoLU5pyV6lUI4XU8q2OF8faoCRI8LkGwA5KQI+zslOg==} + '@tamagui/use-window-dimensions@1.116.15': + resolution: {integrity: sha512-NFCq/xS+uqg52wUwHqatSYuF/azWT0A/bQd9wztcR3/u3tPbbow9W9hHOS3hMGrP0ej5htqgJBfiHZ4T7JNWDA==} peerDependencies: react: '*' - '@tamagui/visually-hidden@1.108.3': - resolution: {integrity: sha512-6pypsL/ojY11yV+uMEfqbwRO08v7psKo52uKjqeBUlYJ2PQ++jedH3UYazKgfSKTkp3XoLjNyshiSMxcpkCLtw==} + '@tamagui/visually-hidden@1.116.15': + resolution: {integrity: sha512-IHt7dIXM+khOU6qRuBhjjrGxp+/AaEo72TLTzUF5cEisFvxrkeVOD+uK7juAVpenEN2q6Lb4+MiLc6XtsdE8IQ==} peerDependencies: react: '*' - '@tamagui/web@1.108.3': - resolution: {integrity: sha512-T/dN7hzhl9yPwuRy15IbrZU+2lqEJcVuNrNNkj7MwLP3hRHOBD92AyOwxNi6POl6fAXUyw9kLu9oeapXmDLa+g==} + '@tamagui/web@1.116.15': + resolution: {integrity: sha512-iIop/DimXB09GS6MGigUkN6ZsUUrG0mK6Ldw1BGb5vy4z5V2+u8mc9nIVvwMN2fE4A7nKqmlsTWdK+1aB3Krkg==} + peerDependencies: + react: '*' + react-dom: '*' '@tanstack/eslint-plugin-query@5.51.15': resolution: {integrity: sha512-btX03EOGvNxTGJDqHMmQwfSt/hp93Z8I4FNBijoyEdDnjGi4jVjpGP7nEi9LaMnHFsylucptVGb6GQngWs07bA==} @@ -2947,6 +3003,9 @@ packages: '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + '@types/hammerjs@2.0.45': resolution: {integrity: sha512-qkcUlZmX6c4J8q45taBKTL3p+LbITgyx7qhlPYOdOHZB7B31K0mXbP5YA7i7SgDeEGuI9MnumiKPEMrxg8j3KQ==} @@ -2980,9 +3039,6 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@18.19.44': - resolution: {integrity: sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==} - '@types/node@22.2.0': resolution: {integrity: sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==} @@ -2992,8 +3048,8 @@ packages: '@types/randombytes@2.0.3': resolution: {integrity: sha512-+NRgihTfuURllWCiIAhm1wsJqzsocnqXM77V/CalsdJIYSRGEHMnritxh+6EsBklshC+clo1KgnN14qgSGeQdw==} - '@types/react@18.3.3': - resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + '@types/react@18.3.12': + resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} '@types/set-cookie-parser@2.4.10': resolution: {integrity: sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==} @@ -3110,15 +3166,13 @@ packages: '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@urql/core@2.3.6': - resolution: {integrity: sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==} - peerDependencies: - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + '@urql/core@5.0.8': + resolution: {integrity: sha512-1GOnUw7/a9bzkcM0+U8U5MmxW2A7FE5YquuEmcJzTtW5tIs2EoS4F2ITpuKBjRBbyRjZgO860nWFPo1m4JImGA==} - '@urql/exchange-retry@0.3.0': - resolution: {integrity: sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==} + '@urql/exchange-retry@1.3.0': + resolution: {integrity: sha512-FLt+d81gP4oiHah4hWFDApimc+/xABWMU1AMYsZ1PVB0L0YPtrMCjbOp9WMM7hBzy4gbTDrG24sio0dCfSh/HQ==} peerDependencies: - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 + '@urql/core': ^5.0.0 '@vitest/coverage-v8@1.6.0': resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} @@ -3172,6 +3226,7 @@ packages: '@xmldom/xmldom@0.7.13': resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==} engines: {node: '>=10.0.0'} + deprecated: this version is no longer supported, please update to at least 0.8.* '@xmldom/xmldom@0.8.10': resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} @@ -3202,10 +3257,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - agent-base@7.1.1: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} @@ -3244,9 +3295,6 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-fragments@0.2.1: - resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} - ansi-regex@4.1.1: resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} engines: {node: '>=6'} @@ -3360,10 +3408,6 @@ packages: resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} engines: {node: '>=4'} - astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} - astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} @@ -3397,15 +3441,24 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + babel-literal-to-ast@2.1.0: resolution: {integrity: sha512-CxfpQ0ysQ0bZOhlaPgcWjl79Em16Rhqc6++UAFn0A3duiXmuyhhj8yyl9PYbj0I0CyjrHovdDbp2QEKT7uIMxw==} peerDependencies: '@babel/core': ^7.1.2 - babel-plugin-fully-specified@1.3.0: - resolution: {integrity: sha512-STW+rXLxwCB839gmwBizuipaDBb/iGZ5Vg0bmfynYLyXRTWgofXDrePuW5VvBJq2x8yB6xvT+3J7Z0U79uQYNw==} - peerDependencies: - '@babel/core': '*' + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} babel-plugin-module-resolver@5.0.2: resolution: {integrity: sha512-9KtaCazHee2xc0ibfqsDeamwDps6FZNo5S0Q81dUqEuFzVwPhcT4J5jOqIVvgCA3Q/wO9hKYxN/Ds3tIsp5ygg==} @@ -3425,11 +3478,14 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-plugin-react-compiler@0.0.0: - resolution: {integrity: sha512-Kigl0V36a/6hLVH7+CCe1CCtU3mFBqBd829V//VtuG7I/pyq+B2QZJqOefd63snQmdfCryNhO9XW1FbGPBvYDA==} + babel-plugin-react-native-web@0.19.13: + resolution: {integrity: sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==} - babel-plugin-react-native-web@0.19.12: - resolution: {integrity: sha512-eYZ4+P6jNcB37lObWIg0pUbi7+3PKoU1Oie2j0C8UF3cXyXoR74tO2NBjI/FORb2LJyItJZEAmjU5pSaJYEL1w==} + babel-plugin-syntax-hermes-parser@0.23.1: + resolution: {integrity: sha512-uNLD0tk2tLUjGFdmCk+u/3FEw2o+BAwW4g+z2QVlxJrzZYOOPADroEcNtTPt5lNiScctaUmnsTkVEnOwZUOLhA==} + + babel-plugin-syntax-hermes-parser@0.25.1: + resolution: {integrity: sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==} babel-plugin-tester@11.0.4: resolution: {integrity: sha512-cqswtpSPo0e++rZB0l/54EG17LL25l9gLgh59yXfnmNxX+2lZTIOpx2zt4YI9QIClVXc8xf63J6yWwKkzy0jNg==} @@ -3440,8 +3496,27 @@ packages: babel-plugin-transform-flow-enums@0.0.2: resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} - babel-preset-expo@11.0.13: - resolution: {integrity: sha512-5oUXyxnIVyDUhG4a306PpT2c9HhKx0tG4LXjpSIA/dERzwGvU8LUxDSD6yCohhRSsPZIoR7u2mnH0PypqFqYnQ==} + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-expo@12.0.1: + resolution: {integrity: sha512-9T2o+aeKnHOtQhk/undQbibJv02bdCgfs68ZwgAdueljDBcs2oVfq41qG9XThYwa6Dn7CdfnoEUsIyFqBwjcVw==} + peerDependencies: + babel-plugin-react-compiler: ^19.0.0-beta-9ee70a1-20241017 + react-compiler-runtime: ^19.0.0-beta-8a03594-20241020 + peerDependenciesMeta: + babel-plugin-react-compiler: + optional: true + react-compiler-runtime: + optional: true + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -3521,6 +3596,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -3608,6 +3688,9 @@ packages: caniuse-lite@1.0.30001651: resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} + caniuse-lite@1.0.30001680: + resolution: {integrity: sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==} + chai@4.5.0: resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} engines: {node: '>=4'} @@ -3670,6 +3753,9 @@ packages: peerDependencies: devtools-protocol: '*' + chromium-edge-launcher@0.2.0: + resolution: {integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==} + ci-info@2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} @@ -3700,8 +3786,8 @@ packages: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} @@ -3715,10 +3801,6 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - clone@2.1.2: - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} - engines: {node: '>=0.8'} - clsx@2.0.0: resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} engines: {node: '>=6'} @@ -3746,9 +3828,6 @@ packages: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} - colorette@1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -3873,10 +3952,6 @@ packages: crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} - crypto-random-string@1.0.0: - resolution: {integrity: sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==} - engines: {node: '>=4'} - crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} @@ -3910,9 +3985,6 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - dag-map@1.0.2: - resolution: {integrity: sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==} - damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -3940,9 +4012,6 @@ packages: resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} engines: {node: '>= 0.4'} - dayjs@1.11.12: - resolution: {integrity: sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==} - de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -3971,10 +4040,6 @@ packages: supports-color: optional: true - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} @@ -4124,6 +4189,9 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + electron-to-chromium@1.5.56: + resolution: {integrity: sha512-7lXb9dAvimCFdvUMTyucD4mnIndt/xhRKFAlky0CyFogdnNmdPQNoHI23msF/2V4mpTxMzgMdjK4+YRlFlRQZw==} + electron-to-chromium@1.5.6: resolution: {integrity: sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw==} @@ -4140,6 +4208,10 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} @@ -4170,11 +4242,6 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} - envinfo@7.13.0: - resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} - engines: {node: '>=4'} - hasBin: true - eol@0.9.1: resolution: {integrity: sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==} @@ -4238,13 +4305,13 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.23.0: - resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==} + esbuild@0.24.0: + resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} engines: {node: '>=18'} hasBin: true - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} escape-html@1.0.3: @@ -4374,6 +4441,7 @@ packages: eslint@8.57.0: resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true espree@9.6.1: @@ -4434,113 +4502,136 @@ packages: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - expo-alternate-app-icons@0.1.9: - resolution: {integrity: sha512-PXJThr6pcbrv9pXcxYaK1iOlXiGV/1uOEX9W9a9TzcGZy1wg4MtTbOTC5MqNknf928vQ6+WEe1IlxBUStdl72A==} + expo-alternate-app-icons@1.1.0: + resolution: {integrity: sha512-rYpRCPo6+XyAuk7Jjj6QmjmS+PClLKtBZxGm+b51obQnn9cujZzPGLJEiUDVDR6I88f+SGxI4GIAmAr8EBV9JQ==} peerDependencies: - expo: '*' + expo: '>=51' react: '*' react-native: '*' - expo-application@5.9.1: - resolution: {integrity: sha512-uAfLBNZNahnDZLRU41ZFmNSKtetHUT9Ua557/q189ua0AWV7pQjoVAx49E4953feuvqc9swtU3ScZ/hN1XO/FQ==} + expo-application@6.0.1: + resolution: {integrity: sha512-w+1quSmKp8SYKT+GAFHSN5c6u+PqoVRIfpsLyRQrQdOnBA9dA8Hw6JT9sHNFmA30A2v1b/sdYZE3qKuRJFNSWQ==} peerDependencies: expo: '*' - expo-asset@10.0.10: - resolution: {integrity: sha512-0qoTIihB79k+wGus9wy0JMKq7DdenziVx3iUkGvMAy2azscSgWH6bd2gJ9CGnhC6JRd3qTMFBL0ou/fx7WZl7A==} + expo-asset@11.0.1: + resolution: {integrity: sha512-WatvD7JVC89EsllXFYcS/rji3ajVzE2B/USo0TqedsETixwyVCQfrrvCdCPQyuKghrxVNEj8bQ/Qbea/RZLYjg==} peerDependencies: expo: '*' + react: '*' + react-native: '*' - expo-av@14.0.6: - resolution: {integrity: sha512-8FHKgMYo49C5hhgG0ssRRd454VQ82TuujhMdlz7ScJBihEXa89kWKpfk9bXrvetFtrJoAmYuGxsXCJCygZhxfA==} + expo-av@15.0.1: + resolution: {integrity: sha512-2d4j7RTH9Y5nI1FoC0woRjqnj5G8sF0al2iW6kG21PPs/CgS4QARbHxMrPxKpUXrC6iu+6EMj2h5H6T0nqteFg==} peerDependencies: expo: '*' + react: '*' + react-native: '*' + react-native-web: '*' + peerDependenciesMeta: + react-native-web: + optional: true - expo-brightness@12.0.1: - resolution: {integrity: sha512-Jdi8+9YeixWdg0Z2A/f3YnQ86+iMLuGyqcTi8UTipGotTHZBG8UuV1Gab/2tttOhUK2cfv4Hc2zDbkKFP6F1JQ==} + expo-brightness@13.0.2: + resolution: {integrity: sha512-ygsGZjd2D5BQp3QWJQEVdjqui1U7KCVMoHEtNo6h/JXoMg1GhB91y0eDCzQ2hTr4ZCxHQDJSbqZ6kxaa2Y2rMA==} peerDependencies: expo: '*' + react-native: '*' - expo-build-properties@0.12.5: - resolution: {integrity: sha512-donC1le0PYfLKCPKRMGQoixuWuwDWCngzXSoQXUPsgHTDHQUKr8aw+lcWkTwZcItgNovcnk784I0dyfYDcxybA==} + expo-build-properties@0.13.1: + resolution: {integrity: sha512-7tDlAM0PPkXC0B00C6/FG19sMzwxZNyiDfn22AWVbBxWxZE1/3RqxPgT3MlPVNfvy+wJw7jt/qbAb0S06wFYVg==} peerDependencies: expo: '*' - expo-clipboard@6.0.3: - resolution: {integrity: sha512-RIKDsuHkYfaspifbFpVC8sBVFKR05L7Pj7mU2/XkbrW9m01OBNvdpGraXEMsTFCx97xMGsZpEw9pPquL4j4xVg==} + expo-clipboard@7.0.0: + resolution: {integrity: sha512-4Vuv1zZPTOiKzIeC0BIGUN8nyzkXlE6jKchtLxcoksBjHPdG5W2eH05B+hppTrK9N3+Xh02z4j3h1cFRqPJ1fw==} peerDependencies: expo: '*' + react: '*' + react-native: '*' - expo-constants@16.0.2: - resolution: {integrity: sha512-9tNY3OVO0jfiMzl7ngb6IOyR5VFzNoN5OOazUWoeGfmMqVB5kltTemRvKraK9JRbBKIw+SOYLEmF0sEqgFZ6OQ==} + expo-constants@17.0.3: + resolution: {integrity: sha512-lnbcX2sAu8SucHXEXxSkhiEpqH+jGrf+TF+MO6sHWIESjwOUVVYlT8qYdjR9xbxWmqFtrI4KV44FkeJf2DaFjQ==} peerDependencies: expo: '*' + react-native: '*' - expo-file-system@17.0.1: - resolution: {integrity: sha512-dYpnZJqTGj6HCYJyXAgpFkQWsiCH3HY1ek2cFZVHFoEc5tLz9gmdEgTF6nFHurvmvfmXqxi7a5CXyVm0aFYJBw==} + expo-file-system@18.0.3: + resolution: {integrity: sha512-HKe0dGW3FWYFi1F3THVnTRueTG7j0onmEpUJKRB4UbjeHD2723cn/EutcG216wvrJeebe8w3+00F8Z4xk+9Jrw==} peerDependencies: expo: '*' + react-native: '*' - expo-font@12.0.9: - resolution: {integrity: sha512-seTCyf0tbgkAnp3ZI9ZfK9QVtURQUgFnuj+GuJ5TSnN0XsOtVe1s2RxTvmMgkfuvfkzcjJ69gyRpsZS1cC8hjw==} + expo-font@13.0.1: + resolution: {integrity: sha512-8JE47B+6cLeKWr5ql8gU6YsPHjhrz1vMrTqYMm72No/8iW8Sb/uL4Oc0dpmbjq3hLLXBY0xPBQOgU7FQ6Y04Vg==} peerDependencies: expo: '*' + react: '*' - expo-haptics@13.0.1: - resolution: {integrity: sha512-qG0EOLDE4bROVT3DtUSyV9g3iB3YFu9j3711X7SNNEnBDXc+2/p3wGDPTnJvPW0ao6HG3/McAOrBQA5hVSdWng==} + expo-haptics@14.0.0: + resolution: {integrity: sha512-5tYJN+2axYF22BtG1elBQAV1aZPUOCtr9sItClfm4jDoekGiPCxZG/nylcA3DVh2bUHMSll4Y98qjFFFhwZ1Cw==} peerDependencies: expo: '*' - expo-keep-awake@13.0.2: - resolution: {integrity: sha512-kKiwkVg/bY0AJ5q1Pxnm/GvpeB6hbNJhcFsoOWDh2NlpibhCLaHL826KHUM+WsnJRbVRxJ+K9vbPRHEMvFpVyw==} + expo-keep-awake@14.0.1: + resolution: {integrity: sha512-c5mGCAIk2YM+Vsdy90BlEJ4ZX+KG5Au9EkJUIxXWlpnuKmDAJ3N+5nEZ7EUO1ZTheqoSBeAo4jJ8rTWPU+JXdw==} peerDependencies: expo: '*' + react: '*' - expo-linear-gradient@13.0.2: - resolution: {integrity: sha512-EDcILUjRKu4P1rtWcwciN6CSyGtH7Bq4ll3oTRV7h3h8oSzSilH1g6z7kTAMlacPBKvMnkkWOGzW6KtgMKEiTg==} + expo-linear-gradient@14.0.1: + resolution: {integrity: sha512-apGtUO9AZ52ZWvX9f6K9TamWw8XcUby7jZ0Pcvd5LxUO7pl7tDPx2VlKqpzbhhS4yfCiUwX58wqocwVnE/0ZVg==} peerDependencies: expo: '*' + react: '*' + react-native: '*' - expo-linking@6.3.1: - resolution: {integrity: sha512-xuZCntSBGWCD/95iZ+mTUGTwHdy8Sx+immCqbUBxdvZ2TN61P02kKg7SaLS8A4a/hLrSCwrg5tMMwu5wfKr35g==} + expo-linking@7.0.2: + resolution: {integrity: sha512-bNm7LLfDwbgfs5wysK0ZhsL5gTJyYzBmK/E1IozcSpxezjXpIMDCVnkjDSfgcayGveOOGepMZk7x9zU2feYDMA==} + peerDependencies: + react: '*' + react-native: '*' - expo-media-library@16.0.4: - resolution: {integrity: sha512-nX9iN8+XAoERDVGPpDdUbhFwvfYdBpkgTAxwDOYL7heASYCOdxfqQtXy/jv1+QZpj0epaR6Owq/LUn1lVP3ykg==} + expo-media-library@17.0.2: + resolution: {integrity: sha512-GXY9sd8l6tK22thhLyi6DNwR4UgQo+VfIQBUSRVM6DjJSjkfpIEAVdQn0wSSDlCyIp6znWh2xQcRLXmF53jBxA==} peerDependencies: expo: '*' + react-native: '*' - expo-modules-autolinking@1.11.1: - resolution: {integrity: sha512-2dy3lTz76adOl7QUvbreMCrXyzUiF8lygI7iFJLjgIQIVH+43KnFWE5zBumpPbkiaq0f0uaFpN9U0RGQbnKiMw==} + expo-modules-autolinking@2.0.2: + resolution: {integrity: sha512-n3jC7VoJLfOLGk8NWhEAvM5zSjbLh1kMUSo76nJupx5/vASxDdzihppYebrKrNXPHq5mcw8Jr+r7YB+8xHx7QQ==} hasBin: true - expo-modules-core@1.12.20: - resolution: {integrity: sha512-CCXjlgT8lDAufgt912P1W7TwD+KAylfIttc1Doh1a0hAfkdkUsDRmrgthnYrrxEo2ECVpbaB71Epp1bnZ1rRrA==} + expo-modules-core@2.0.3: + resolution: {integrity: sha512-S/Ozg6NhLkMc7k+qSLzOtjCexuimkYXHM/PCZtbn53nkuNYyaLpfVfrsJsRWxLIMe8ftbm6cDrKlN5mJ6lNODg==} - expo-navigation-bar@3.0.7: - resolution: {integrity: sha512-KCNHyZ58zoN4xdy7D1lUdJvveCYNVQHGSX4M6xO/SZypvI6GZbLzKSN6Lx4GDGEFxG6Kb+EAckZl48tSiNeGYQ==} + expo-navigation-bar@4.0.3: + resolution: {integrity: sha512-9p9/hfhr4ukmK6oXoTx1DoiFLn3UmWLPOAbe8a5vxk5anP+vJ6nfkKYXoUHBoqgszpOIbQtAy0F7tI5u5XGfAw==} peerDependencies: expo: '*' + react: '*' + react-native: '*' - expo-network@6.0.1: - resolution: {integrity: sha512-WXXvkt1H75ojHVa263Jq+qjIyMzCfaoRzHKzOBMuSyDDcma9WpvKJpR1YpEQZH/zDhSfkKvh7Q3wRGOJr1J+dQ==} + expo-network@7.0.0: + resolution: {integrity: sha512-/5TsShGCJyvkjHBATUY9IZnmkXWKB//8vUzVMDXMw46XzwjwYDrums7nt7tJlZ1NILzMeS5FyikOxXIq9wJSEw==} peerDependencies: expo: '*' + react: '*' expo-pod-pinner@1.0.1: resolution: {integrity: sha512-UeyCRXrI13tjb+rtQkjBjgs+eS1KntAgTRnLoawFdMp8s1T2bOcm9P4cIrFlLHt9aZBLLMdHra1TY6LiMI3+kw==} - expo-router@3.5.21: - resolution: {integrity: sha512-0rqt1ViwZ+a+obODGX1e7krRlRwhxwTHdMdhfpWU9rCLm9B4sr5k77LBAd8V7MRS7FGGZBA93CgYxKfpO/arng==} + expo-router@4.0.6: + resolution: {integrity: sha512-voEomHB7V6r7FlTMVJAxInbbo8+Y7VSuMroFmRCxr3YlcI0eY3R8QpqTVLn1Q66g1MVUCsWhq3nswC3TpHfT9A==} peerDependencies: - '@react-navigation/drawer': ^6.5.8 + '@react-navigation/drawer': ^7.0.0 '@testing-library/jest-native': '*' expo: '*' expo-constants: '*' expo-linking: '*' - expo-status-bar: '*' react-native-reanimated: '*' react-native-safe-area-context: '*' - react-native-screens: '*' + react-native-screens: ^4.0.0 peerDependenciesMeta: '@react-navigation/drawer': optional: true @@ -4549,37 +4640,62 @@ packages: react-native-reanimated: optional: true - expo-screen-orientation@7.0.5: - resolution: {integrity: sha512-1j0MzVzYpjKQo4BWowQ3ZYwC3OnddX/8k06C8VYTAxMyd8ou1k+rG4tm+GIV2n2RSzc3g7cfPlQwSYr3/SGmbg==} + expo-screen-orientation@8.0.0: + resolution: {integrity: sha512-1pKmx8pDk8zO8lFJVbVQao1Qj26qG/W93+xZp0Cxvzd3n/v7SGDLDJ1V/zBxlxxu58AczEzsGEI2ScZVon2Xow==} peerDependencies: expo: '*' + react-native: '*' - expo-splash-screen@0.27.5: - resolution: {integrity: sha512-9rdZuLkFCfgJBxrheUsOEOIW6Rp+9NVlpSE0hgXQwbTCLTncf00IHSE8/L2NbFyeDLNjof1yZBppaV7tXHRUzA==} + expo-splash-screen@0.29.11: + resolution: {integrity: sha512-lDURVc7y+INe78cC2c0GFErmHxtiXLGmUCMJEdZqZraGDq8HUcYiZgLkr2vlKNEKZ/ZuUlExJIqwgo7I/mCSYA==} peerDependencies: expo: '*' - expo-status-bar@1.12.1: - resolution: {integrity: sha512-/t3xdbS8KB0prj5KG5w7z+wZPFlPtkgs95BsmrP/E7Q0xHXTcDcQ6Cu2FkFuRM+PKTb17cJDnLkawyS5vDLxMA==} + expo-status-bar@2.0.0: + resolution: {integrity: sha512-vxxdpvpNDMTEc5uTiIrbTvySKKUsOACmfl8OZuUdjNle05oGqwtq3v5YObwym/njSByjoyuZX8UpXBZnxvarwQ==} + peerDependencies: + react: '*' + react-native: '*' - expo-system-ui@3.0.7: - resolution: {integrity: sha512-KAs72F5JKhdIfPR9ZNVlRubTPK9uUuevPy5oYEp12xNEzSQcjZKvypH5NpwJuNWkXzrp3n3vZ+3pXsudA7J3KA==} + expo-system-ui@4.0.3: + resolution: {integrity: sha512-33Wbc6vGq1WL+eGPnMuKNygXWKMBbpiTpBpNY84elgBcoBUIHvR0xnhpg0HRRtg2piwmhZd7qq1vclpryzZCgA==} peerDependencies: expo: '*' + react-native: '*' + react-native-web: '*' + peerDependenciesMeta: + react-native-web: + optional: true - expo-video@1.2.4: - resolution: {integrity: sha512-pBK9mt7vYAbuPQjCSQxHQ7xrNjbmRheJep7JIStEg57O183/JRfP2blKuXniiSt1HBdZYPdoQnGRa3jGMXB9pg==} + expo-video@2.0.0: + resolution: {integrity: sha512-ntP6B2MGERk+wAaa9bQvgp+pcK9nivJXWxeuVXPifxL9kG02+jZSPE+X4sNH+tANr1inLui3B250GMBSD3MwoQ==} peerDependencies: expo: '*' + react: '*' + react-native: '*' - expo-web-browser@13.0.3: - resolution: {integrity: sha512-HXb7y82ApVJtqk8tManyudtTrCtx8xcUnVzmJECeHCB0SsWSQ+penVLZxJkcyATWoJOsFMnfVSVdrTcpKKGszQ==} + expo-web-browser@14.0.1: + resolution: {integrity: sha512-QM9F3ie+UyIOoBvqFmT6CZojb1vMc2H+7ZlMT5dEu1PL2jtYyOeK2hLfbt/EMt7CBm/w+P29H9W9Y9gdebOkuQ==} peerDependencies: expo: '*' + react-native: '*' - expo@51.0.26: - resolution: {integrity: sha512-7ThQa6CVbiVtk4GNw0E9CewSzXYOeHkcRTCGorBZVcjAu6SuxbdWEtl0RI01/VpRKV+6I+yy/BmGnCl7lFRILg==} + expo@52.0.7: + resolution: {integrity: sha512-AXN+FmYF8jR+IUJCuETO9iuMZ2DdGpL175kvHveBM/cS4MQsF7oe1MTnCRLyXQ92BDUZlqjWqWTX1sY3ysPoZw==} hasBin: true + peerDependencies: + '@expo/dom-webview': '*' + '@expo/metro-runtime': '*' + react: '*' + react-native: '*' + react-native-webview: '*' + peerDependenciesMeta: + '@expo/dom-webview': + optional: true + '@expo/metro-runtime': + optional: true + react-native-webview: + optional: true exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} @@ -4618,10 +4734,6 @@ packages: fast-uri@3.0.1: resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} - fast-xml-parser@4.4.1: - resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} - hasBin: true - fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} @@ -4827,6 +4939,10 @@ packages: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + get-port@3.2.0: resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} engines: {node: '>=4'} @@ -4874,10 +4990,6 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true - glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - deprecated: Glob versions prior to v9 are no longer supported - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -4923,12 +5035,6 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - graphql-tag@2.12.6: - resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} - engines: {node: '>=10'} - peerDependencies: - graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - graphql@15.8.0: resolution: {integrity: sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==} engines: {node: '>= 10.x'} @@ -4975,21 +5081,29 @@ packages: header-case@1.0.1: resolution: {integrity: sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==} - hermes-estree@0.19.1: - resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} - hermes-estree@0.23.0: resolution: {integrity: sha512-Rkp0PNLGpORw4ktsttkVbpYJbrYKS3hAnkxu8D9nvQi6LvSbuPa+tYw/t2u3Gjc35lYd/k95YkjqyTcN4zspag==} - hermes-parser@0.19.1: - resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} + hermes-estree@0.23.1: + resolution: {integrity: sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==} + + hermes-estree@0.24.0: + resolution: {integrity: sha512-LyoXLB7IFzeZW0EvAbGZacbxBN7t6KKSDqFJPo3Ydow7wDlrDjXwsdiAHV6XOdvEN9MEuWXsSIFN4tzpyrXIHw==} + + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} hermes-parser@0.23.0: resolution: {integrity: sha512-xLwM4ylfHGwrm+2qXfO1JT/fnqEDGSnpS/9hQ4VLtqTexSviu2ZpBgz07U8jVtndq67qdb/ps0qvaWDZ3fkTyg==} - hermes-profile-transformer@0.0.6: - resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} - engines: {node: '>=8'} + hermes-parser@0.23.1: + resolution: {integrity: sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==} + + hermes-parser@0.24.0: + resolution: {integrity: sha512-IJooSvvu2qNRe7oo9Rb04sUT4omtZqZqf9uq9WM25Tb6v3usmvA93UqfnnoWs5V0uYjEl9Al6MNU10MCGKLwpg==} + + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} hey-listen@1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} @@ -5004,6 +5118,10 @@ packages: resolution: {integrity: sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==} engines: {node: '>=10'} + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -5018,10 +5136,6 @@ packages: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - https-proxy-agent@7.0.5: resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} engines: {node: '>= 14'} @@ -5177,10 +5291,6 @@ packages: engines: {node: '>=8'} hasBin: true - is-extglob@1.0.0: - resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==} - engines: {node: '>=0.10.0'} - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -5188,10 +5298,6 @@ packages: is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -5200,10 +5306,6 @@ packages: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} - is-glob@2.0.1: - resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==} - engines: {node: '>=0.10.0'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -5212,10 +5314,6 @@ packages: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} - is-invalid-path@0.1.0: - resolution: {integrity: sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==} - engines: {node: '>=0.10.0'} - is-lower-case@1.1.3: resolution: {integrity: sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==} @@ -5294,10 +5392,6 @@ packages: is-upper-case@1.1.2: resolution: {integrity: sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==} - is-valid-path@0.1.1: - resolution: {integrity: sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==} - engines: {node: '>=0.10.0'} - is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} @@ -5342,6 +5436,10 @@ packages: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + istanbul-lib-report@3.0.1: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} @@ -5371,6 +5469,10 @@ packages: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-message-util@29.7.0: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5379,6 +5481,10 @@ packages: resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5401,9 +5507,6 @@ packages: jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - joi@17.13.3: - resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} - join-component@1.1.0: resolution: {integrity: sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==} @@ -5445,6 +5548,11 @@ packages: engines: {node: '>=4'} hasBin: true + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -5454,10 +5562,6 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-schema-deref-sync@0.13.0: - resolution: {integrity: sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==} - engines: {node: '>=6.0.0'} - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -5521,26 +5625,26 @@ packages: lighthouse-logger@1.4.2: resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} - lightningcss-darwin-arm64@1.19.0: - resolution: {integrity: sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==} + lightningcss-darwin-arm64@1.22.0: + resolution: {integrity: sha512-aH2be3nNny+It5YEVm8tBSSdRlBVWQV8m2oJ7dESiYRzyY/E/bQUe2xlw5caaMuhlM9aoTMtOH25yzMhir0qPg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-arm64@1.22.0: - resolution: {integrity: sha512-aH2be3nNny+It5YEVm8tBSSdRlBVWQV8m2oJ7dESiYRzyY/E/bQUe2xlw5caaMuhlM9aoTMtOH25yzMhir0qPg==} + lightningcss-darwin-arm64@1.27.0: + resolution: {integrity: sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.19.0: - resolution: {integrity: sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==} + lightningcss-darwin-x64@1.22.0: + resolution: {integrity: sha512-9KHRFA0Y6mNxRHeoQMp0YaI0R0O2kOgUlYPRjuasU4d+pI8NRhVn9bt0yX9VPs5ibWX1RbDViSPtGJvYYrfVAQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-darwin-x64@1.22.0: - resolution: {integrity: sha512-9KHRFA0Y6mNxRHeoQMp0YaI0R0O2kOgUlYPRjuasU4d+pI8NRhVn9bt0yX9VPs5ibWX1RbDViSPtGJvYYrfVAQ==} + lightningcss-darwin-x64@1.27.0: + resolution: {integrity: sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] @@ -5551,11 +5655,11 @@ packages: cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.19.0: - resolution: {integrity: sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==} + lightningcss-freebsd-x64@1.27.0: + resolution: {integrity: sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==} engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] + cpu: [x64] + os: [freebsd] lightningcss-linux-arm-gnueabihf@1.22.0: resolution: {integrity: sha512-epQGvXIjOuxrZpMpMnRjK54ZqzhiHhCPLtHvw2fb6NeK2kK9YtF0wqmeTBiQ1AkbWfnnXGTstYaFNiadNK+StQ==} @@ -5563,10 +5667,10 @@ packages: cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.19.0: - resolution: {integrity: sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==} + lightningcss-linux-arm-gnueabihf@1.27.0: + resolution: {integrity: sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==} engines: {node: '>= 12.0.0'} - cpu: [arm64] + cpu: [arm] os: [linux] lightningcss-linux-arm64-gnu@1.22.0: @@ -5575,8 +5679,8 @@ packages: cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.19.0: - resolution: {integrity: sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==} + lightningcss-linux-arm64-gnu@1.27.0: + resolution: {integrity: sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -5587,10 +5691,10 @@ packages: cpu: [arm64] os: [linux] - lightningcss-linux-x64-gnu@1.19.0: - resolution: {integrity: sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==} + lightningcss-linux-arm64-musl@1.27.0: + resolution: {integrity: sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==} engines: {node: '>= 12.0.0'} - cpu: [x64] + cpu: [arm64] os: [linux] lightningcss-linux-x64-gnu@1.22.0: @@ -5599,8 +5703,8 @@ packages: cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.19.0: - resolution: {integrity: sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==} + lightningcss-linux-x64-gnu@1.27.0: + resolution: {integrity: sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -5611,10 +5715,16 @@ packages: cpu: [x64] os: [linux] - lightningcss-win32-x64-msvc@1.19.0: - resolution: {integrity: sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==} + lightningcss-linux-x64-musl@1.27.0: + resolution: {integrity: sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==} engines: {node: '>= 12.0.0'} cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.27.0: + resolution: {integrity: sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] os: [win32] lightningcss-win32-x64-msvc@1.22.0: @@ -5623,14 +5733,20 @@ packages: cpu: [x64] os: [win32] - lightningcss@1.19.0: - resolution: {integrity: sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==} + lightningcss-win32-x64-msvc@1.27.0: + resolution: {integrity: sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==} engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] lightningcss@1.22.0: resolution: {integrity: sha512-+z0qvwRVzs4XGRXelnWRNwqsXUx8k3bSkbP8vD42kYKSk3z9OM2P3e/gagT7ei/gwh8DTS80LZOFZV6lm8Z8Fg==} engines: {node: '>= 12.0.0'} + lightningcss@1.27.0: + resolution: {integrity: sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==} + engines: {node: '>= 12.0.0'} + lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -5697,10 +5813,6 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} - logkitty@0.7.1: - resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} - hasBin: true - loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -5764,15 +5876,9 @@ packages: engines: {node: '>=0.10'} hasBin: true - md5@2.2.1: - resolution: {integrity: sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==} - md5@2.3.0: resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} - md5hex@1.0.0: - resolution: {integrity: sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ==} - mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} @@ -5785,9 +5891,6 @@ packages: memoize-one@6.0.0: resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} - memory-cache@0.2.0: - resolution: {integrity: sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==} - merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -5799,60 +5902,118 @@ packages: resolution: {integrity: sha512-GXHueUzgzcazfzORDxDzWS9jVVRV6u+cR6TGvHOfGdfLzJCj7/D0PretLfyq+MwN20twHxLW+BUXkoaB8sCQBg==} engines: {node: '>=18'} + metro-babel-transformer@0.81.0: + resolution: {integrity: sha512-Dc0QWK4wZIeHnyZ3sevWGTnnSkIDDn/SWyfrn99zbKbDOCoCYy71PAn9uCRrP/hduKLJQOy+tebd63Rr9D8tXg==} + engines: {node: '>=18.18'} + metro-cache-key@0.80.10: resolution: {integrity: sha512-57qBhO3zQfoU/hP4ZlLW5hVej2jVfBX6B4NcSfMj4LgDPL3YknWg80IJBxzQfjQY/m+fmMLmPy8aUMHzUp/guA==} engines: {node: '>=18'} + metro-cache-key@0.81.0: + resolution: {integrity: sha512-qX/IwtknP9bQZL78OK9xeSvLM/xlGfrs6SlUGgHvrxtmGTRSsxcyqxR+c+7ch1xr05n62Gin/O44QKg5V70rNQ==} + engines: {node: '>=18.18'} + metro-cache@0.80.10: resolution: {integrity: sha512-8CBtDJwMguIE5RvV3PU1QtxUG8oSSX54mIuAbRZmcQ0MYiOl9JdrMd4JCBvIyhiZLoSStph425SMyCSnjtJsdA==} engines: {node: '>=18'} + metro-cache@0.81.0: + resolution: {integrity: sha512-DyuqySicHXkHUDZFVJmh0ygxBSx6pCKUrTcSgb884oiscV/ROt1Vhye+x+OIHcsodyA10gzZtrVtxIFV4l9I4g==} + engines: {node: '>=18.18'} + metro-config@0.80.10: resolution: {integrity: sha512-0GYAw0LkmGbmA81FepKQepL1KU/85Cyv7sAiWm6QWeV6AcVCpsKg6jGLqGHJ0LLPL60rWzA4TV1DQAlzdJAEtA==} engines: {node: '>=18'} + metro-config@0.81.0: + resolution: {integrity: sha512-6CinEaBe3WLpRlKlYXXu8r1UblJhbwD6Gtnoib5U8j6Pjp7XxMG9h/DGMeNp9aGLDu1OieUqiXpFo7O0/rR5Kg==} + engines: {node: '>=18.18'} + metro-core@0.80.10: resolution: {integrity: sha512-nwBB6HbpGlNsZMuzxVqxqGIOsn5F3JKpsp8PziS7Z4mV8a/jA1d44mVOgYmDa2q5WlH5iJfRIIhdz24XRNDlLA==} engines: {node: '>=18'} + metro-core@0.81.0: + resolution: {integrity: sha512-CVkM5YCOAFkNMvJai6KzA0RpztzfEKRX62/PFMOJ9J7K0uq/UkOFLxcgpcncMIrfy0PbfEj811b69tjULUQe1Q==} + engines: {node: '>=18.18'} + metro-file-map@0.80.10: resolution: {integrity: sha512-ytsUq8coneaN7ZCVk1IogojcGhLIbzWyiI2dNmw2nnBgV/0A+M5WaTTgZ6dJEz3dzjObPryDnkqWPvIGLCPtiw==} engines: {node: '>=18'} + metro-file-map@0.81.0: + resolution: {integrity: sha512-zMDI5uYhQCyxbye/AuFx/pAbsz9K+vKL7h1ShUXdN2fz4VUPiyQYRsRqOoVG1DsiCgzd5B6LW0YW77NFpjDQeg==} + engines: {node: '>=18.18'} + metro-minify-terser@0.80.10: resolution: {integrity: sha512-Xyv9pEYpOsAerrld7cSLIcnCCpv8ItwysOmTA+AKf1q4KyE9cxrH2O2SA0FzMCkPzwxzBWmXwHUr+A89BpEM6g==} engines: {node: '>=18'} + metro-minify-terser@0.81.0: + resolution: {integrity: sha512-U2ramh3W822ZR1nfXgIk+emxsf5eZSg10GbQrT0ZizImK8IZ5BmJY+BHRIkQgHzWFpExOVxC7kWbGL1bZALswA==} + engines: {node: '>=18.18'} + metro-resolver@0.80.10: resolution: {integrity: sha512-EYC5CL7f+bSzrqdk1bylKqFNGabfiI5PDctxoPx70jFt89Jz+ThcOscENog8Jb4LEQFG6GkOYlwmPpsi7kx3QA==} engines: {node: '>=18'} + metro-resolver@0.81.0: + resolution: {integrity: sha512-Uu2Q+buHhm571cEwpPek8egMbdSTqmwT/5U7ZVNpK6Z2ElQBBCxd7HmFAslKXa7wgpTO2FAn6MqGeERbAtVDUA==} + engines: {node: '>=18.18'} + metro-runtime@0.80.10: resolution: {integrity: sha512-Xh0N589ZmSIgJYAM+oYwlzTXEHfASZac9TYPCNbvjNTn0EHKqpoJ/+Im5G3MZT4oZzYv4YnvzRtjqS5k0tK94A==} engines: {node: '>=18'} + metro-runtime@0.81.0: + resolution: {integrity: sha512-6oYB5HOt37RuGz2eV4A6yhcl+PUTwJYLDlY9vhT+aVjbUWI6MdBCf69vc4f5K5Vpt+yOkjy+2LDwLS0ykWFwYw==} + engines: {node: '>=18.18'} + metro-source-map@0.80.10: resolution: {integrity: sha512-EyZswqJW8Uukv/HcQr6K19vkMXW1nzHAZPWJSEyJFKIbgp708QfRZ6vnZGmrtFxeJEaFdNup4bGnu8/mIOYlyA==} engines: {node: '>=18'} + metro-source-map@0.81.0: + resolution: {integrity: sha512-TzsVxhH83dyxg4A4+L1nzNO12I7ps5IHLjKGZH3Hrf549eiZivkdjYiq/S5lOB+p2HiQ+Ykcwtmcja95LIC62g==} + engines: {node: '>=18.18'} + metro-symbolicate@0.80.10: resolution: {integrity: sha512-qAoVUoSxpfZ2DwZV7IdnQGXCSsf2cAUExUcZyuCqGlY5kaWBb0mx2BL/xbMFDJ4wBp3sVvSBPtK/rt4J7a0xBA==} engines: {node: '>=18'} hasBin: true + metro-symbolicate@0.81.0: + resolution: {integrity: sha512-C/1rWbNTPYp6yzID8IPuQPpVGzJ2rbWYBATxlvQ9dfK5lVNoxcwz77hjcY8ISLsRRR15hyd/zbjCNKPKeNgE1Q==} + engines: {node: '>=18.18'} + hasBin: true + metro-transform-plugins@0.80.10: resolution: {integrity: sha512-leAx9gtA+2MHLsCeWK6XTLBbv2fBnNFu/QiYhWzMq8HsOAP4u1xQAU0tSgPs8+1vYO34Plyn79xTLUtQCRSSUQ==} engines: {node: '>=18'} + metro-transform-plugins@0.81.0: + resolution: {integrity: sha512-uErLAPBvttGCrmGSCa0dNHlOTk3uJFVEVWa5WDg6tQ79PRmuYRwzUgLhVzn/9/kyr75eUX3QWXN79Jvu4txt6Q==} + engines: {node: '>=18.18'} + metro-transform-worker@0.80.10: resolution: {integrity: sha512-zNfNLD8Rz99U+JdOTqtF2o7iTjcDMMYdVS90z6+81Tzd2D0lDWVpls7R1hadS6xwM+ymgXFQTjM6V6wFoZaC0g==} engines: {node: '>=18'} + metro-transform-worker@0.81.0: + resolution: {integrity: sha512-HrQ0twiruhKy0yA+9nK5bIe3WQXZcC66PXTvRIos61/EASLAP2DzEmW7IxN/MGsfZegN2UzqL2CG38+mOB45vg==} + engines: {node: '>=18.18'} + metro@0.80.10: resolution: {integrity: sha512-FDPi0X7wpafmDREXe1lgg3WzETxtXh6Kpq8+IwsG35R2tMyp2kFIqDdshdohuvDt1J/qDARcEPq7V/jElTb1kA==} engines: {node: '>=18'} hasBin: true + metro@0.81.0: + resolution: {integrity: sha512-kzdzmpL0gKhEthZ9aOV7sTqvg6NuTxDV8SIm9pf9sO8VVEbKrQk5DNcwupOUjgPPFAuKUc2NkT0suyT62hm2xg==} + engines: {node: '>=18.18'} + hasBin: true + micromatch@4.0.7: resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} @@ -6060,14 +6221,14 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - node-stream-zip@1.15.0: - resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} - engines: {node: '>=0.12.0'} - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + npm-package-arg@11.0.3: + resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} + engines: {node: ^16.14.0 || >=18.0.0} + npm-package-arg@7.0.0: resolution: {integrity: sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==} @@ -6093,6 +6254,10 @@ packages: resolution: {integrity: sha512-dJHyB0S6JkMorUSfSGcYGkkg9kmq3qDUu3ygZUKIfkr47XOPuG35r2Sk6tbwtHXbdKIXmcMvM8DF2CwgdyaHfQ==} engines: {node: '>=18'} + ob1@0.81.0: + resolution: {integrity: sha512-6Cvrkxt1tqaRdWqTAMcVYEiO5i1xcF9y7t06nFdjFqkfPsEloCf8WwhXdwBpNUkVYSQlSGS7cDgVQR86miBfBQ==} + engines: {node: '>=18.18'} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -6339,12 +6504,12 @@ packages: pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - performant-array-to-tree@1.11.0: - resolution: {integrity: sha512-YwCqIDvnaebXaKuKQhI5yJD6ryDc3FxvoeX/5ougXTKDUWb7s5S2BuBgIyftCa4sBe1+ZU5Kmi4RJy+pjjjrpw==} - picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -6522,6 +6687,10 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + proc-log@4.2.0: + resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -6577,11 +6746,6 @@ packages: resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} engines: {node: '>=6'} - querystring@0.2.1: - resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - queue-lit@1.5.2: resolution: {integrity: sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==} engines: {node: '>=12'} @@ -6623,6 +6787,12 @@ packages: peerDependencies: react: '>=17.0.0' + react-helmet-async@1.3.0: + resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -6632,9 +6802,6 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-native-animatable@1.3.3: - resolution: {integrity: sha512-2ckIxZQAsvWn25Ho+DK3d1mXIgj7tITkrS4pYDvx96WyOttSvzzFeQnM2od0+FUMzILbdHDsDEqZvnz1DYNQ1w==} - react-native-css-interop@0.0.34: resolution: {integrity: sha512-gz9b0RAyqy5Q/ogPQie8zkWHI+UFhn8JOPELUAV4k2XNkuXzfPRWDMSjQww51ozh7qx7oBKSYDnaCB/D6XgJ1Q==} engines: {node: '>=18'} @@ -6654,8 +6821,8 @@ packages: react-native-fit-image@1.5.5: resolution: {integrity: sha512-Wl3Vq2DQzxgsWKuW4USfck9zS7YzhvLNPpkwUUCF90bL32e1a0zOVQ3WsJILJOwzmPdHfzZmWasiiAUNBkhNkg==} - react-native-gesture-handler@2.18.1: - resolution: {integrity: sha512-WF2fxQ5kTaxHghlkBM4YxO86SyGWVwrSNgJ1E8z/ZtL2xD5B3bg5agvuVFfOzvceC114yq71s6E9vKPz94ZxRw==} + react-native-gesture-handler@2.20.2: + resolution: {integrity: sha512-HqzFpFczV4qCnwKlvSAvpzEXisL+Z9fsR08YV5LfJDkzuArMhBu2sOoSPUF/K62PCoAb+ObGlTC83TKHfUd0vg==} peerDependencies: react: '*' react-native: '*' @@ -6665,23 +6832,23 @@ packages: peerDependencies: react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-native-is-edge-to-edge@1.1.6: + resolution: {integrity: sha512-1pHnFTlBahins6UAajXUqeCOHew9l9C2C8tErnpGC3IyLJzvxD+TpYAixnCbrVS52f7+NvMttbiSI290XfwN0w==} + peerDependencies: + react: '>=18.2.0' + react-native: '>=0.73.0' + react-native-markdown-display@7.0.2: resolution: {integrity: sha512-Mn4wotMvMfLAwbX/huMLt202W5DsdpMO/kblk+6eUs55S57VVNni1gzZCh5qpznYLjIQELNh50VIozEfY6fvaQ==} peerDependencies: react: '>=16.2.0' react-native: '>=0.50.4' - react-native-mmkv@2.12.2: - resolution: {integrity: sha512-6058Aq0p57chPrUutLGe9fYoiDVDNMU2PKV+lLFUJ3GhoHvUrLdsS1PDSCLr00yqzL4WJQ7TTzH+V8cpyrNcfg==} - peerDependencies: - react: '*' - react-native: '>=0.71.0' - - react-native-modal@13.0.1: - resolution: {integrity: sha512-UB+mjmUtf+miaG/sDhOikRfBOv0gJdBU2ZE1HtFWp6UixW9jCk/bhGdHUgmZljbPpp0RaO/6YiMmQSSK3kkMaw==} + react-native-mmkv@3.1.0: + resolution: {integrity: sha512-HDh89nYVSufHMweZ3TVNUHQp2lsEh1ApaoV08bUOU1nrlmGgC3I7tGUn1Uy40Hs7yRMPKx5NWKE5Dh86jTVrwg==} peerDependencies: react: '*' - react-native: '>=0.65.0' + react-native: '*' react-native-quick-base64@2.1.2: resolution: {integrity: sha512-xghaXpWdB0ji8OwYyo0fWezRroNxiNFCNFpGUIyE7+qc4gA/IGWnysIG5L0MbdoORv8FkTKUvfd6yCUN5R2VFA==} @@ -6689,33 +6856,33 @@ packages: react: '*' react-native: '*' - react-native-quick-crypto@0.7.3: - resolution: {integrity: sha512-Fw0/N5qwbGAMuzMeF6pS6P6v3R/iZEuqwc4Yim2s/hEqr5lJ+Yeh1JhXPEpDUXI1ndTzV/qUdfji6V8r/B5+KA==} + react-native-quick-crypto@0.7.6: + resolution: {integrity: sha512-ElIBJ0N9bU+xKTWO653cI8XJJSVF50leVuziigWrOe+XEuUEuaf057Opx76vLiJuSltGNcXwcF7A56eooi0mPw==} peerDependencies: react: '*' react-native: '*' - react-native-reanimated@3.15.0: - resolution: {integrity: sha512-yGxOyYAAu/5CyjonM2SgsM5sviiiK8HiHL9jT1bKfRxMLnNX9cFP8/UXRkbMT7ZXIfOlCvNFR0AqnphpuXIPVA==} + react-native-reanimated@3.16.1: + resolution: {integrity: sha512-Wnbo7toHZ6kPLAD8JWKoKCTfNoqYOMW5vUEP76Rr4RBmJCrdXj6oauYP0aZnZq8NCbiP5bwwu7+RECcWtoetnQ==} peerDependencies: '@babel/core': ^7.0.0-0 react: '*' react-native: '*' - react-native-safe-area-context@4.10.8: - resolution: {integrity: sha512-Jx1lovhvIdYygg0UsMCBUJN0Wvj9GlA5bbcBLzjZf93uJpNHzaiHC4hR280+sNVK1+/pMHEyEkXVHDZE5JWn0w==} + react-native-safe-area-context@4.12.0: + resolution: {integrity: sha512-ukk5PxcF4p3yu6qMZcmeiZgowhb5AsKRnil54YFUUAXVIS7PJcMHGGC+q44fCiBg44/1AJk5njGMez1m9H0BVQ==} peerDependencies: react: '*' react-native: '*' - react-native-screens@3.34.0: - resolution: {integrity: sha512-8ri3Pd9QcpfXnVckOe/Lnto+BXmSPHV/Q0RB0XW0gDKsCv5wi5k7ez7g1SzgiYHl29MSdiqgjH30zUyOOowOaw==} + react-native-screens@4.1.0: + resolution: {integrity: sha512-tCBwe7fRMpoi/nIgZxE86N8b2SH8d5PlfGaQO8lgqlXqIyvwqm3u1HJCaA0tsacPyzhW7vVtRfQyq9e1j0S2gA==} peerDependencies: react: '*' react-native: '*' - react-native-svg@15.5.0: - resolution: {integrity: sha512-/DUPfmSf3eXt59WjG8hlRKVPzqVjM7duG9vJH6UYAJesj3NtYcyFsO5sYpSkovlOwagk84PibcVb92bBwMSmng==} + react-native-svg@15.8.0: + resolution: {integrity: sha512-KHJzKpgOjwj1qeZzsBjxNdoIgv2zNCO9fVcoq2TEhTRsVV5DGTZ9JzUZwybd7q4giT/H3RdtqC3u44dWdO0Ffw==} peerDependencies: react: '*' react-native: '*' @@ -6723,27 +6890,19 @@ packages: react-native-video@5.2.1: resolution: {integrity: sha512-aJlr9MeTuQ0LpZ4n+EC9RvhoKeiPbLtI2Rxy8u7zo/wzGevbRpWHSBj9xZ5YDBXnAVXzuqyNIkGhdw7bfdIBZw==} - react-native-web-internals@1.108.3: - resolution: {integrity: sha512-ZMmDd1F+9kZOOUERPr6kZpi+cQ9iy8ZP131TJ1WyXA+p4REs/ScnzyemBd9LkPP12Eka+1xsMFMZejFLz/zOYw==} - - react-native-web-lite@1.108.3: - resolution: {integrity: sha512-qWDznJM6xenrVke6MJzJ5iKo2UTetXoelQGAKfEckiFx/V5D4dBwQdgENPzA62r3e5uK/ViMeR4Dg/1fhk8k0Q==} - peerDependencies: - react: '*' - - react-native-web@0.19.12: - resolution: {integrity: sha512-o2T0oztoVDQjztt4YksO9S1XRjoH/AqcSvifgWLrPJgGVbMWsfhILgl6lfUdEamVZzZSVV/2gqDVMAk/qq7mZw==} + react-native-web@0.19.13: + resolution: {integrity: sha512-etv3bN8rJglrRCp/uL4p7l8QvUNUC++QwDbdZ8CB7BvZiMvsxfFIRM1j04vxNldG3uo2puRd6OSWR3ibtmc29A==} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - react-native@0.74.5: - resolution: {integrity: sha512-Bgg2WvxaGODukJMTZFTZBNMKVaROHLwSb8VAGEdrlvKwfb1hHg/3aXTUICYk7dwgAnb+INbGMwnF8yeAgIUmqw==} + react-native@0.76.2: + resolution: {integrity: sha512-mkEBKGOmJxhfq8IOsvmk0QuTzlBt9vS+uo0gwbqfUmEDqoC359v80zhUf94WimYBrBkpRQWFbEu5iqMDHrYzlQ==} engines: {node: '>=18'} hasBin: true peerDependencies: '@types/react': ^18.2.6 - react: 18.2.0 + react: ^18.2.0 peerDependenciesMeta: '@types/react': optional: true @@ -6762,8 +6921,8 @@ packages: '@types/react': optional: true - react-remove-scroll@2.5.5: - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + react-remove-scroll@2.6.0: + resolution: {integrity: sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==} engines: {node: '>=10'} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6772,11 +6931,6 @@ packages: '@types/react': optional: true - react-shallow-renderer@16.15.0: - resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-style-singleton@2.2.1: resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} @@ -6820,11 +6974,6 @@ packages: resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} engines: {node: '>= 0.4'} - reforest@0.13.0: - resolution: {integrity: sha512-f0It/s51f1UWCCCni0viULALDBhxWBPFnLmZRYtKcz4zYeNWqeNTdcnU/OpBry9tk+jyMQcH3MLK8UdzsAvA5w==} - peerDependencies: - react: '>=16.8' - regenerate-unicode-properties@10.1.1: resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} engines: {node: '>=4'} @@ -6871,9 +7020,6 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - requireg@0.2.2: resolution: {integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==} engines: {node: '>= 4.0.0'} @@ -6896,6 +7042,9 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve-workspace-root@2.0.0: + resolution: {integrity: sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw==} + resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} @@ -7011,6 +7160,10 @@ packages: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} + send@0.19.1: + resolution: {integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==} + engines: {node: '>= 0.8.0'} + sentence-case@2.1.1: resolution: {integrity: sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==} @@ -7022,8 +7175,8 @@ packages: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + server-only@0.0.1: + resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} set-cookie-parser@2.7.0: resolution: {integrity: sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==} @@ -7111,10 +7264,6 @@ packages: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} - slice-ansi@2.1.0: - resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} - engines: {node: '>=6'} - slice-ansi@4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} @@ -7311,9 +7460,6 @@ packages: strip-literal@2.1.0: resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} - strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - structured-headers@0.4.1: resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} @@ -7327,11 +7473,6 @@ packages: resolution: {integrity: sha512-45yNlK42Z0pz4lAaNYbR5P60M2jmHl+gfAaiJxDIXsXXqoE7TkDCzl/00HgWyZXKkdIU6s8FiNtRvrlOZb+5Qg==} hasBin: true - sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} - hasBin: true - sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} @@ -7385,8 +7526,8 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - tamagui@1.108.3: - resolution: {integrity: sha512-WZz/VH+T9mCXLakkfqV1EXWsGaL/28O3LSiZpfI76ELmia1tGzXcgx1v5fM0GnSvghPOtkcBGQxIdtqe0rO47Q==} + tamagui@1.116.15: + resolution: {integrity: sha512-j5uW8fGRD5T19EFD5+rVFt3voFiFCQXz7MH2DdkInt7jUzLB7dKKXiQaZp/2Fp/i4pBWRrIYFUNWayYfZ3q98g==} peerDependencies: react: '*' @@ -7404,10 +7545,6 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} - temp-dir@1.0.0: - resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} - engines: {node: '>=4'} - temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} @@ -7416,10 +7553,6 @@ packages: resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} engines: {node: '>=6.0.0'} - tempy@0.3.0: - resolution: {integrity: sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==} - engines: {node: '>=8'} - tempy@0.7.1: resolution: {integrity: sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==} engines: {node: '>=10'} @@ -7507,10 +7640,6 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - traverse@0.6.9: - resolution: {integrity: sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==} - engines: {node: '>= 0.4'} - ts-api-utils@1.3.0: resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} @@ -7571,8 +7700,8 @@ packages: cpu: [arm64] os: [linux] - turbo-stream@2.2.0: - resolution: {integrity: sha512-FKFg7A0To1VU4CH9YmSMON5QphK0BXjSoiC7D9yMh+mEEbXLUP9qJ4hEt1qcjKtzncs1OpcnjZO8NgrlVbZH+g==} + turbo-stream@2.4.0: + resolution: {integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==} turbo-windows-64@1.13.4: resolution: {integrity: sha512-OFFhXHOFLN7A78vD/dlVuuSSVEB3s9ZBj18Tm1hk3aW1HTWTuAw0ReN6ZNlVObZUHvGy8d57OAGGxf2bT3etQw==} @@ -7612,10 +7741,6 @@ packages: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - type-fest@0.3.1: - resolution: {integrity: sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==} - engines: {node: '>=6'} - type-fest@0.7.1: resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} engines: {node: '>=8'} @@ -7640,10 +7765,6 @@ packages: resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} - typedarray.prototype.slice@1.0.3: - resolution: {integrity: sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==} - engines: {node: '>= 0.4'} - typescript@5.4.2: resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} engines: {node: '>=14.17'} @@ -7654,6 +7775,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + ua-parser-js@1.0.38: resolution: {integrity: sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==} @@ -7674,9 +7800,6 @@ packages: unbzip2-stream@1.4.3: resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici-types@6.13.0: resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==} @@ -7708,10 +7831,6 @@ packages: resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - unique-string@1.0.0: - resolution: {integrity: sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==} - engines: {node: '>=4'} - unique-string@2.0.0: resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} @@ -7744,6 +7863,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + update-check@1.5.4: resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} @@ -7756,9 +7881,6 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - url-join@4.0.0: - resolution: {integrity: sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA==} - urlpattern-polyfill@10.0.0: resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} @@ -7792,6 +7914,11 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 + use-sync-external-store@1.2.2: + resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -7813,9 +7940,6 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - valid-url@1.0.9: - resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==} - validate-npm-package-name@3.0.0: resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} @@ -7961,9 +8085,6 @@ packages: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} - which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - which-typed-array@1.1.15: resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} @@ -7982,8 +8103,8 @@ packages: engines: {node: '>=8'} hasBin: true - wonka@4.0.15: - resolution: {integrity: sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==} + wonka@6.3.4: + resolution: {integrity: sha512-CjpbqNtBGNAeyNS/9W6q3kSkKE52+FjIj7AkFlLr11s/VWGUu6a2CdYSdGxocIhIVjaW/zchesBQUKPVU69Cqg==} word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} @@ -8010,6 +8131,10 @@ packages: write-file-atomic@2.4.3: resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + ws@6.2.3: resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} peerDependencies: @@ -8069,9 +8194,6 @@ packages: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -8087,18 +8209,10 @@ packages: engines: {node: '>= 14'} hasBin: true - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -8143,6 +8257,10 @@ packages: snapshots: + '@0no-co/graphql.web@1.0.11(graphql@15.8.0)': + optionalDependencies: + graphql: 15.8.0 + '@alloc/quick-lru@5.2.0': {} '@ampproject/remapping@2.3.0': @@ -8159,8 +8277,16 @@ snapshots: '@babel/highlight': 7.24.7 picocolors: 1.0.1 + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.25.2': {} + '@babel/compat-data@7.26.2': {} + '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.3.0 @@ -8183,19 +8309,31 @@ snapshots: '@babel/generator@7.25.0': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.26.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 + '@babel/generator@7.26.2': + dependencies: + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.26.0 + + '@babel/helper-annotate-as-pure@7.25.9': + dependencies: + '@babel/types': 7.26.0 '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -8207,15 +8345,36 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.25.9': + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.25.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.25.9 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.25.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.25.9 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -8223,36 +8382,39 @@ snapshots: '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-annotate-as-pure': 7.25.9 regexpu-core: 5.3.2 semver: 6.3.1 '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 debug: 4.3.6 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: - supports-color - '@babel/helper-environment-visitor@7.24.7': + '@babel/helper-member-expression-to-functions@7.24.8': dependencies: - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color - '@babel/helper-member-expression-to-functions@7.24.8': + '@babel/helper-member-expression-to-functions@7.25.9': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -8268,16 +8430,31 @@ snapshots: '@babel/helper-optimise-call-expression@7.24.7': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.26.0 + + '@babel/helper-optimise-call-expression@7.25.9': + dependencies: + '@babel/types': 7.26.0 '@babel/helper-plugin-utils@7.24.8': {} + '@babel/helper-plugin-utils@7.25.9': {} + '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-wrap-function': 7.25.0 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color @@ -8286,53 +8463,87 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.25.9(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color '@babel/helper-string-parser@7.24.8': {} + '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-validator-identifier@7.24.7': {} + '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-option@7.24.8': {} + '@babel/helper-validator-option@7.25.9': {} + '@babel/helper-wrap-function@7.25.0': dependencies: - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-wrap-function@7.25.9': + dependencies: + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color '@babel/helpers@7.25.0': dependencies: '@babel/template': 7.25.0 - '@babel/types': 7.25.2 + '@babel/types': 7.26.0 '@babel/highlight@7.24.7': dependencies: - '@babel/helper-validator-identifier': 7.24.7 + '@babel/helper-validator-identifier': 7.25.9 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.1 + picocolors: 1.1.1 '@babel/parser@7.25.3': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.26.0 + + '@babel/parser@7.26.2': + dependencies: + '@babel/types': 7.26.0 '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.25.2)': dependencies: @@ -8369,29 +8580,19 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color '@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - supports-color @@ -8399,59 +8600,37 @@ snapshots: '@babel/plugin-proposal-export-default-from@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.25.2)': + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.25.2)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2)': dependencies: - '@babel/compat-data': 7.25.2 '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - - '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.2)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': dependencies: @@ -8466,7 +8645,7 @@ snapshots: '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': dependencies: @@ -8476,7 +8655,7 @@ snapshots: '@babel/plugin-syntax-export-default-from@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2)': dependencies: @@ -8486,7 +8665,7 @@ snapshots: '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.25.2)': dependencies: @@ -8511,7 +8690,7 @@ snapshots: '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': dependencies: @@ -8556,7 +8735,7 @@ snapshots: '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': dependencies: @@ -8567,7 +8746,7 @@ snapshots: '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-async-generator-functions@7.25.0(@babel/core@7.25.2)': dependencies: @@ -8579,6 +8758,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.25.2) + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -8606,6 +8794,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -8627,6 +8823,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.25.2) + '@babel/traverse': 7.25.9 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -8678,7 +8886,7 @@ snapshots: '@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2)': @@ -8769,7 +8977,7 @@ snapshots: '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.25.2)': @@ -8803,8 +9011,8 @@ snapshots: '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) transitivePeerDependencies: - supports-color @@ -8840,7 +9048,7 @@ snapshots: '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.25.2)': dependencies: @@ -8852,29 +9060,29 @@ snapshots: '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/types': 7.25.2 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.25.2)': dependencies: @@ -8891,7 +9099,7 @@ snapshots: dependencies: '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.2) babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) @@ -8902,7 +9110,7 @@ snapshots: '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2)': dependencies: @@ -8920,7 +9128,7 @@ snapshots: '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.25.2)': dependencies: @@ -8930,10 +9138,10 @@ snapshots: '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - supports-color @@ -8953,7 +9161,7 @@ snapshots: dependencies: '@babel/core': 7.25.2 '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.25.2)': dependencies: @@ -9053,22 +9261,22 @@ snapshots: '@babel/preset-flow@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.2) '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/types': 7.25.2 + '@babel/types': 7.26.0 esutils: 2.0.3 '@babel/preset-react@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.25.2) @@ -9079,8 +9287,8 @@ snapshots: '@babel/preset-typescript@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) @@ -9107,19 +9315,41 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@babel/traverse@7.25.3': dependencies: '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.3 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 '@babel/template': 7.25.0 - '@babel/types': 7.25.2 + '@babel/types': 7.26.0 + debug: 4.3.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/traverse@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 debug: 4.3.6 globals: 11.12.0 transitivePeerDependencies: @@ -9131,12 +9361,17 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 + '@babel/types@7.26.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@bcoe/v8-coverage@0.2.3': {} - '@craftzdog/react-native-buffer@6.0.5(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@craftzdog/react-native-buffer@6.0.5(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: ieee754: 1.2.1 - react-native-quick-base64: 2.1.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-quick-base64: 2.1.2(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - react - react-native @@ -9157,145 +9392,155 @@ snapshots: '@emotion/memoize@0.7.4': optional: true + '@esbuild-plugins/tsconfig-paths@0.1.2(esbuild@0.24.0)(typescript@5.5.4)': + dependencies: + debug: 4.3.6 + esbuild: 0.24.0 + find-up: 5.0.0 + strip-json-comments: 3.1.1 + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.23.0': + '@esbuild/aix-ppc64@0.24.0': optional: true '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.23.0': + '@esbuild/android-arm64@0.24.0': optional: true '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.23.0': + '@esbuild/android-arm@0.24.0': optional: true '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.23.0': + '@esbuild/android-x64@0.24.0': optional: true '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.23.0': + '@esbuild/darwin-arm64@0.24.0': optional: true '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.23.0': + '@esbuild/darwin-x64@0.24.0': optional: true '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.23.0': + '@esbuild/freebsd-arm64@0.24.0': optional: true '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.23.0': + '@esbuild/freebsd-x64@0.24.0': optional: true '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.23.0': + '@esbuild/linux-arm64@0.24.0': optional: true '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.23.0': + '@esbuild/linux-arm@0.24.0': optional: true '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.23.0': + '@esbuild/linux-ia32@0.24.0': optional: true '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.23.0': + '@esbuild/linux-loong64@0.24.0': optional: true '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.23.0': + '@esbuild/linux-mips64el@0.24.0': optional: true '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.23.0': + '@esbuild/linux-ppc64@0.24.0': optional: true '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.23.0': + '@esbuild/linux-riscv64@0.24.0': optional: true '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.23.0': + '@esbuild/linux-s390x@0.24.0': optional: true '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.23.0': + '@esbuild/linux-x64@0.24.0': optional: true '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.23.0': + '@esbuild/netbsd-x64@0.24.0': optional: true - '@esbuild/openbsd-arm64@0.23.0': + '@esbuild/openbsd-arm64@0.24.0': optional: true '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.23.0': + '@esbuild/openbsd-x64@0.24.0': optional: true '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.23.0': + '@esbuild/sunos-x64@0.24.0': optional: true '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.23.0': + '@esbuild/win32-arm64@0.24.0': optional: true '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.23.0': + '@esbuild/win32-ia32@0.24.0': optional: true '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.23.0': + '@esbuild/win32-x64@0.24.0': optional: true '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': @@ -9325,27 +9570,28 @@ snapshots: dependencies: uuid: 8.3.2 - '@expo/cli@0.18.28(expo-modules-autolinking@1.11.1)': + '@expo/cli@0.21.5(graphql@15.8.0)': dependencies: + '@0no-co/graphql.web': 1.0.11(graphql@15.8.0) '@babel/runtime': 7.25.0 '@expo/code-signing-certificates': 0.0.5 - '@expo/config': 9.0.3 - '@expo/config-plugins': 8.0.8 + '@expo/config': 10.0.4 + '@expo/config-plugins': 9.0.9 '@expo/devcert': 1.1.4 - '@expo/env': 0.3.0 - '@expo/image-utils': 0.5.1 - '@expo/json-file': 8.3.3 - '@expo/metro-config': 0.18.11 + '@expo/env': 0.4.0 + '@expo/image-utils': 0.6.3 + '@expo/json-file': 9.0.0 + '@expo/metro-config': 0.19.4 '@expo/osascript': 2.1.3 '@expo/package-manager': 1.5.2 - '@expo/plist': 0.1.3 - '@expo/prebuild-config': 7.0.8(expo-modules-autolinking@1.11.1) + '@expo/plist': 0.2.0 + '@expo/prebuild-config': 8.0.17 '@expo/rudder-sdk-node': 1.1.1 '@expo/spawn-async': 1.7.2 '@expo/xcpretty': 4.3.1 - '@react-native/dev-middleware': 0.74.85 - '@urql/core': 2.3.6(graphql@15.8.0) - '@urql/exchange-retry': 0.3.0(graphql@15.8.0) + '@react-native/dev-middleware': 0.76.2 + '@urql/core': 5.0.8(graphql@15.8.0) + '@urql/exchange-retry': 1.3.0(@urql/core@5.0.8(graphql@15.8.0)) accepts: 1.3.8 arg: 5.0.2 better-opn: 3.0.2 @@ -9354,34 +9600,27 @@ snapshots: cacache: 18.0.4 chalk: 4.1.2 ci-info: 3.9.0 + compression: 1.7.4 connect: 3.7.0 debug: 4.3.6 env-editor: 0.4.2 fast-glob: 3.3.2 - find-yarn-workspace-root: 2.0.0 form-data: 3.0.1 freeport-async: 2.0.0 fs-extra: 8.1.0 getenv: 1.0.0 - glob: 7.2.3 - graphql: 15.8.0 - graphql-tag: 2.12.6(graphql@15.8.0) - https-proxy-agent: 5.0.1 + glob: 10.4.5 internal-ip: 4.3.0 is-docker: 2.2.1 is-wsl: 2.2.0 - js-yaml: 3.14.1 - json-schema-deref-sync: 0.13.0 lodash.debounce: 4.0.8 - md5hex: 1.0.0 minimatch: 3.1.2 - node-fetch: 2.7.0 node-forge: 1.3.1 - npm-package-arg: 7.0.0 - open: 8.4.2 + npm-package-arg: 11.0.3 ora: 3.4.0 picomatch: 3.0.1 pretty-bytes: 5.6.0 + pretty-format: 29.7.0 progress: 2.0.3 prompts: 2.4.2 qrcode-terminal: 0.11.0 @@ -9391,7 +9630,7 @@ snapshots: resolve-from: 5.0.0 resolve.exports: 2.0.2 semver: 7.6.3 - send: 0.18.0 + send: 0.19.1 slugify: 1.6.6 source-map-support: 0.5.21 stacktrace-parser: 0.1.10 @@ -9400,14 +9639,14 @@ snapshots: temp-dir: 2.0.0 tempy: 0.7.1 terminal-link: 2.1.1 - text-table: 0.2.0 - url-join: 4.0.0 + undici: 6.19.7 + unique-string: 2.0.0 wrap-ansi: 7.0.0 ws: 8.18.0 transitivePeerDependencies: - bufferutil - encoding - - expo-modules-autolinking + - graphql - supports-color - utf-8-validate @@ -9416,17 +9655,16 @@ snapshots: node-forge: 1.3.1 nullthrows: 1.1.1 - '@expo/config-plugins@8.0.8': + '@expo/config-plugins@9.0.9': dependencies: - '@expo/config-types': 51.0.2 - '@expo/json-file': 8.3.3 - '@expo/plist': 0.1.3 + '@expo/config-types': 52.0.0 + '@expo/json-file': 9.0.0 + '@expo/plist': 0.2.0 '@expo/sdk-runtime-versions': 1.0.0 chalk: 4.1.2 debug: 4.3.6 - find-up: 5.0.0 getenv: 1.0.0 - glob: 7.1.6 + glob: 10.4.5 resolve-from: 5.0.0 semver: 7.6.3 slash: 3.0.0 @@ -9436,21 +9674,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/config-types@51.0.2': {} + '@expo/config-types@52.0.0': {} - '@expo/config@9.0.3': + '@expo/config@10.0.3': dependencies: '@babel/code-frame': 7.10.4 - '@expo/config-plugins': 8.0.8 - '@expo/config-types': 51.0.2 - '@expo/json-file': 8.3.3 + '@expo/config-plugins': 9.0.9 + '@expo/config-types': 52.0.0 + '@expo/json-file': 9.0.0 + deepmerge: 4.3.1 getenv: 1.0.0 - glob: 7.1.6 + glob: 10.4.5 require-from-string: 2.0.2 resolve-from: 5.0.0 + resolve-workspace-root: 2.0.0 semver: 7.6.3 slugify: 1.6.6 - sucrase: 3.34.0 + sucrase: 3.35.0 + transitivePeerDependencies: + - supports-color + + '@expo/config@10.0.4': + dependencies: + '@babel/code-frame': 7.10.4 + '@expo/config-plugins': 9.0.9 + '@expo/config-types': 52.0.0 + '@expo/json-file': 9.0.0 + deepmerge: 4.3.1 + getenv: 1.0.0 + glob: 10.4.5 + require-from-string: 2.0.2 + resolve-from: 5.0.0 + resolve-workspace-root: 2.0.0 + semver: 7.6.3 + slugify: 1.6.6 + sucrase: 3.35.0 transitivePeerDependencies: - supports-color @@ -9471,7 +9729,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/env@0.3.0': + '@expo/env@0.4.0': dependencies: chalk: 4.1.2 debug: 4.3.6 @@ -9481,20 +9739,33 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/image-utils@0.5.1': + '@expo/fingerprint@0.11.2': + dependencies: + '@expo/spawn-async': 1.7.2 + arg: 5.0.2 + chalk: 4.1.2 + debug: 4.3.6 + find-up: 5.0.0 + getenv: 1.0.0 + minimatch: 3.1.2 + p-limit: 3.1.0 + resolve-from: 5.0.0 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + + '@expo/image-utils@0.6.3': dependencies: '@expo/spawn-async': 1.7.2 chalk: 4.1.2 fs-extra: 9.0.0 getenv: 1.0.0 jimp-compact: 0.16.1 - node-fetch: 2.7.0 parse-png: 2.1.0 resolve-from: 5.0.0 semver: 7.6.3 - tempy: 0.3.0 - transitivePeerDependencies: - - encoding + temp-dir: 2.0.0 + unique-string: 2.0.0 '@expo/json-file@8.3.3': dependencies: @@ -9502,32 +9773,61 @@ snapshots: json5: 2.2.3 write-file-atomic: 2.4.3 - '@expo/metro-config@0.18.11': + '@expo/json-file@9.0.0': + dependencies: + '@babel/code-frame': 7.10.4 + json5: 2.2.3 + write-file-atomic: 2.4.3 + + '@expo/metro-config@0.19.1': dependencies: '@babel/core': 7.25.2 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 - '@expo/config': 9.0.3 - '@expo/env': 0.3.0 - '@expo/json-file': 8.3.3 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + '@expo/config': 10.0.3 + '@expo/env': 0.4.0 + '@expo/json-file': 9.0.0 '@expo/spawn-async': 1.7.2 chalk: 4.1.2 debug: 4.3.6 - find-yarn-workspace-root: 2.0.0 fs-extra: 9.1.0 getenv: 1.0.0 - glob: 7.2.3 + glob: 10.4.5 jsc-safe-url: 0.2.4 - lightningcss: 1.19.0 + lightningcss: 1.27.0 + minimatch: 3.1.2 postcss: 8.4.41 resolve-from: 5.0.0 transitivePeerDependencies: - supports-color - '@expo/metro-runtime@3.2.1(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))': + '@expo/metro-config@0.19.4': dependencies: - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + '@babel/core': 7.25.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + '@expo/config': 10.0.4 + '@expo/env': 0.4.0 + '@expo/json-file': 9.0.0 + '@expo/spawn-async': 1.7.2 + chalk: 4.1.2 + debug: 4.3.6 + fs-extra: 9.1.0 + getenv: 1.0.0 + glob: 10.4.5 + jsc-safe-url: 0.2.4 + lightningcss: 1.27.0 + minimatch: 3.1.2 + postcss: 8.4.41 + resolve-from: 5.0.0 + transitivePeerDependencies: + - supports-color + + '@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))': + dependencies: + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) '@expo/osascript@2.1.3': dependencies: @@ -9549,46 +9849,26 @@ snapshots: split: 1.0.1 sudo-prompt: 9.1.1 - '@expo/plist@0.1.3': + '@expo/plist@0.2.0': dependencies: '@xmldom/xmldom': 0.7.13 base64-js: 1.5.1 xmlbuilder: 14.0.0 - '@expo/prebuild-config@7.0.6(expo-modules-autolinking@1.11.1)': + '@expo/prebuild-config@8.0.17': dependencies: - '@expo/config': 9.0.3 - '@expo/config-plugins': 8.0.8 - '@expo/config-types': 51.0.2 - '@expo/image-utils': 0.5.1 - '@expo/json-file': 8.3.3 - '@react-native/normalize-colors': 0.74.84 + '@expo/config': 10.0.4 + '@expo/config-plugins': 9.0.9 + '@expo/config-types': 52.0.0 + '@expo/image-utils': 0.6.3 + '@expo/json-file': 9.0.0 + '@react-native/normalize-colors': 0.76.2 debug: 4.3.6 - expo-modules-autolinking: 1.11.1 fs-extra: 9.1.0 resolve-from: 5.0.0 semver: 7.6.3 xml2js: 0.6.0 transitivePeerDependencies: - - encoding - - supports-color - - '@expo/prebuild-config@7.0.8(expo-modules-autolinking@1.11.1)': - dependencies: - '@expo/config': 9.0.3 - '@expo/config-plugins': 8.0.8 - '@expo/config-types': 51.0.2 - '@expo/image-utils': 0.5.1 - '@expo/json-file': 8.3.3 - '@react-native/normalize-colors': 0.74.85 - debug: 4.3.6 - expo-modules-autolinking: 1.11.1 - fs-extra: 9.1.0 - resolve-from: 5.0.0 - semver: 7.6.3 - xml2js: 0.6.0 - transitivePeerDependencies: - - encoding - supports-color '@expo/rudder-sdk-node@1.1.1': @@ -9605,9 +9885,9 @@ snapshots: '@expo/sdk-runtime-versions@1.0.0': {} - '@expo/server@0.4.4(typescript@5.5.4)': + '@expo/server@0.5.0(typescript@5.5.4)': dependencies: - '@remix-run/node': 2.11.1(typescript@5.5.4) + '@remix-run/node': 2.14.0(typescript@5.5.4) abort-controller: 3.0.0 debug: 4.3.6 source-map-support: 0.5.21 @@ -9619,7 +9899,7 @@ snapshots: dependencies: cross-spawn: 7.0.3 - '@expo/vector-icons@14.0.2': + '@expo/vector-icons@14.0.4': dependencies: prop-types: 15.8.1 @@ -9639,37 +9919,29 @@ snapshots: '@floating-ui/core': 1.6.7 '@floating-ui/utils': 0.2.7 - '@floating-ui/react-dom@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@floating-ui/react-dom@2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@floating-ui/dom': 1.6.10 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@floating-ui/react-native@0.10.6(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@floating-ui/react-native@0.10.6(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: '@floating-ui/core': 1.6.7 react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) - '@floating-ui/react@0.26.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@floating-ui/react@0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@floating-ui/utils': 0.2.7 + '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/utils': 0.2.8 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tabbable: 6.2.0 '@floating-ui/utils@0.2.7': {} - '@graphql-typed-document-node/core@3.2.0(graphql@15.8.0)': - dependencies: - graphql: 15.8.0 - - '@hapi/hoek@9.3.0': {} - - '@hapi/topo@5.1.0': - dependencies: - '@hapi/hoek': 9.3.0 + '@floating-ui/utils@0.2.8': {} '@humanwhocodes/config-array@0.11.14': dependencies: @@ -9706,6 +9978,14 @@ snapshots: '@isaacs/ttlcache@1.4.1': {} + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + '@istanbuljs/schema@0.1.3': {} '@jest/create-cache-key-function@29.7.0': @@ -9732,6 +10012,26 @@ snapshots: dependencies: '@sinclair/typebox': 0.27.8 + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.25.2 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.7 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + '@jest/types@26.6.2': dependencies: '@types/istanbul-lib-coverage': 2.0.6 @@ -9739,6 +10039,7 @@ snapshots: '@types/node': 22.2.0 '@types/yargs': 15.0.19 chalk: 4.1.2 + optional: true '@jest/types@29.6.3': dependencies: @@ -9846,13 +10147,13 @@ snapshots: hey-listen: 1.0.8 tslib: 2.6.3 - '@nabla/vite-plugin-eslint@2.0.4(eslint@8.57.0)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6))': + '@nabla/vite-plugin-eslint@2.0.4(eslint@8.57.0)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6))': dependencies: '@types/eslint': 8.56.11 chalk: 4.1.2 debug: 4.3.6 eslint: 8.57.0 - vite: 5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + vite: 5.4.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6) transitivePeerDependencies: - supports-color @@ -9970,90 +10271,12 @@ snapshots: dependencies: base-64: 0.1.0 - '@react-native-community/cli-clean@13.6.9': - dependencies: - '@react-native-community/cli-tools': 13.6.9 - chalk: 4.1.2 - execa: 5.1.1 - fast-glob: 3.3.2 - transitivePeerDependencies: - - encoding - - '@react-native-community/cli-config@13.6.9': - dependencies: - '@react-native-community/cli-tools': 13.6.9 - chalk: 4.1.2 - cosmiconfig: 5.2.1 - deepmerge: 4.3.1 - fast-glob: 3.3.2 - joi: 17.13.3 - transitivePeerDependencies: - - encoding - '@react-native-community/cli-debugger-ui@13.6.9': dependencies: serve-static: 1.15.0 transitivePeerDependencies: - supports-color - - '@react-native-community/cli-doctor@13.6.9': - dependencies: - '@react-native-community/cli-config': 13.6.9 - '@react-native-community/cli-platform-android': 13.6.9 - '@react-native-community/cli-platform-apple': 13.6.9 - '@react-native-community/cli-platform-ios': 13.6.9 - '@react-native-community/cli-tools': 13.6.9 - chalk: 4.1.2 - command-exists: 1.2.9 - deepmerge: 4.3.1 - envinfo: 7.13.0 - execa: 5.1.1 - hermes-profile-transformer: 0.0.6 - node-stream-zip: 1.15.0 - ora: 5.4.1 - semver: 7.6.3 - strip-ansi: 5.2.0 - wcwidth: 1.0.1 - yaml: 2.5.0 - transitivePeerDependencies: - - encoding - - '@react-native-community/cli-hermes@13.6.9': - dependencies: - '@react-native-community/cli-platform-android': 13.6.9 - '@react-native-community/cli-tools': 13.6.9 - chalk: 4.1.2 - hermes-profile-transformer: 0.0.6 - transitivePeerDependencies: - - encoding - - '@react-native-community/cli-platform-android@13.6.9': - dependencies: - '@react-native-community/cli-tools': 13.6.9 - chalk: 4.1.2 - execa: 5.1.1 - fast-glob: 3.3.2 - fast-xml-parser: 4.4.1 - logkitty: 0.7.1 - transitivePeerDependencies: - - encoding - - '@react-native-community/cli-platform-apple@13.6.9': - dependencies: - '@react-native-community/cli-tools': 13.6.9 - chalk: 4.1.2 - execa: 5.1.1 - fast-glob: 3.3.2 - fast-xml-parser: 4.4.1 - ora: 5.4.1 - transitivePeerDependencies: - - encoding - - '@react-native-community/cli-platform-ios@13.6.9': - dependencies: - '@react-native-community/cli-platform-apple': 13.6.9 - transitivePeerDependencies: - - encoding + optional: true '@react-native-community/cli-server-api@13.6.9': dependencies: @@ -10071,6 +10294,7 @@ snapshots: - encoding - supports-color - utf-8-validate + optional: true '@react-native-community/cli-tools@13.6.9': dependencies: @@ -10087,73 +10311,45 @@ snapshots: sudo-prompt: 9.2.1 transitivePeerDependencies: - encoding + optional: true - '@react-native-community/cli-types@13.6.9': - dependencies: - joi: 17.13.3 - - '@react-native-community/cli@13.6.9': - dependencies: - '@react-native-community/cli-clean': 13.6.9 - '@react-native-community/cli-config': 13.6.9 - '@react-native-community/cli-debugger-ui': 13.6.9 - '@react-native-community/cli-doctor': 13.6.9 - '@react-native-community/cli-hermes': 13.6.9 - '@react-native-community/cli-server-api': 13.6.9 - '@react-native-community/cli-tools': 13.6.9 - '@react-native-community/cli-types': 13.6.9 - chalk: 4.1.2 - commander: 9.5.0 - deepmerge: 4.3.1 - execa: 5.1.1 - find-up: 4.1.0 - fs-extra: 8.1.0 - graceful-fs: 4.2.11 - prompts: 2.4.2 - semver: 7.6.3 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@react-native/assets-registry@0.74.87': {} + '@react-native/assets-registry@0.76.2': {} - '@react-native/babel-plugin-codegen@0.74.87(@babel/preset-env@7.25.3(@babel/core@7.25.2))': + '@react-native/babel-plugin-codegen@0.76.2(@babel/preset-env@7.25.3(@babel/core@7.25.2))': dependencies: - '@react-native/codegen': 0.74.87(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + '@react-native/codegen': 0.76.2(@babel/preset-env@7.25.3(@babel/core@7.25.2)) transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/babel-preset@0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))': + '@react-native/babel-preset@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))': dependencies: '@babel/core': 7.25.2 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.25.2) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) '@babel/plugin-proposal-export-default-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.25.2) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.25.2) '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.25.2) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.25.2) '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.2) '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.2) + '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.25.2) '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.25.2) + '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) @@ -10161,47 +10357,51 @@ snapshots: '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) - '@babel/template': 7.25.0 - '@react-native/babel-plugin-codegen': 0.74.87(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + '@babel/template': 7.25.9 + '@react-native/babel-plugin-codegen': 0.76.2(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + babel-plugin-syntax-hermes-parser: 0.25.1 babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.25.2) react-refresh: 0.14.2 transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/codegen@0.74.87(@babel/preset-env@7.25.3(@babel/core@7.25.2))': + '@react-native/codegen@0.76.2(@babel/preset-env@7.25.3(@babel/core@7.25.2))': dependencies: - '@babel/parser': 7.25.3 + '@babel/parser': 7.26.2 '@babel/preset-env': 7.25.3(@babel/core@7.25.2) glob: 7.2.3 - hermes-parser: 0.19.1 + hermes-parser: 0.23.1 invariant: 2.2.4 jscodeshift: 0.14.0(@babel/preset-env@7.25.3(@babel/core@7.25.2)) mkdirp: 0.5.6 nullthrows: 1.1.1 + yargs: 17.7.2 transitivePeerDependencies: - supports-color - '@react-native/community-cli-plugin@0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))': + '@react-native/community-cli-plugin@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)': dependencies: - '@react-native-community/cli-server-api': 13.6.9 - '@react-native-community/cli-tools': 13.6.9 - '@react-native/dev-middleware': 0.74.87 - '@react-native/metro-babel-transformer': 0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + '@react-native/dev-middleware': 0.76.2 + '@react-native/metro-babel-transformer': 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) chalk: 4.1.2 execa: 5.1.1 - metro: 0.80.10 - metro-config: 0.80.10 - metro-core: 0.80.10 + invariant: 2.2.4 + metro: 0.81.0 + metro-config: 0.81.0 + metro-core: 0.81.0 node-fetch: 2.7.0 - querystring: 0.2.1 readline: 1.3.0 + semver: 7.6.3 + optionalDependencies: + '@react-native-community/cli-server-api': 13.6.9 transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' @@ -10210,61 +10410,35 @@ snapshots: - supports-color - utf-8-validate - '@react-native/debugger-frontend@0.74.85': {} - - '@react-native/debugger-frontend@0.74.87': {} - - '@react-native/dev-middleware@0.74.85': - dependencies: - '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.74.85 - '@rnx-kit/chromium-edge-launcher': 1.0.0 - chrome-launcher: 0.15.2 - connect: 3.7.0 - debug: 2.6.9 - node-fetch: 2.7.0 - nullthrows: 1.1.1 - open: 7.4.2 - selfsigned: 2.4.1 - serve-static: 1.15.0 - temp-dir: 2.0.0 - ws: 6.2.3 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate + '@react-native/debugger-frontend@0.76.2': {} - '@react-native/dev-middleware@0.74.87': + '@react-native/dev-middleware@0.76.2': dependencies: '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.74.87 - '@rnx-kit/chromium-edge-launcher': 1.0.0 + '@react-native/debugger-frontend': 0.76.2 chrome-launcher: 0.15.2 + chromium-edge-launcher: 0.2.0 connect: 3.7.0 debug: 2.6.9 - node-fetch: 2.7.0 nullthrows: 1.1.1 open: 7.4.2 selfsigned: 2.4.1 serve-static: 1.15.0 - temp-dir: 2.0.0 ws: 6.2.3 transitivePeerDependencies: - bufferutil - - encoding - supports-color - utf-8-validate - '@react-native/gradle-plugin@0.74.87': {} + '@react-native/gradle-plugin@0.76.2': {} - '@react-native/js-polyfills@0.74.87': {} + '@react-native/js-polyfills@0.76.2': {} - '@react-native/metro-babel-transformer@0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))': + '@react-native/metro-babel-transformer@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))': dependencies: '@babel/core': 7.25.2 - '@react-native/babel-preset': 0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) - hermes-parser: 0.19.1 + '@react-native/babel-preset': 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + hermes-parser: 0.23.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' @@ -10272,75 +10446,79 @@ snapshots: '@react-native/normalize-color@2.1.0': {} - '@react-native/normalize-colors@0.74.84': {} - - '@react-native/normalize-colors@0.74.85': {} - '@react-native/normalize-colors@0.74.87': {} - '@react-native/virtualized-lists@0.74.87(@types/react@18.3.3)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@react-native/normalize-colors@0.76.2': {} + + '@react-native/virtualized-lists@0.76.2(@types/react@18.3.12)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.12 - '@react-navigation/bottom-tabs@6.5.20(@react-navigation/native@6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-screens@3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@react-navigation/bottom-tabs@7.0.1(@react-navigation/native@7.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-screens@4.1.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: - '@react-navigation/elements': 1.3.31(@react-navigation/native@6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@react-navigation/native': 6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@react-navigation/elements': 2.0.0(@react-navigation/native@7.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@react-navigation/native': 7.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) color: 4.2.3 react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) - react-native-safe-area-context: 4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - react-native-screens: 3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - warn-once: 0.1.1 + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) + react-native-safe-area-context: 4.12.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react-native-screens: 4.1.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - '@react-native-masked-view/masked-view' - '@react-navigation/core@6.4.17(react@18.3.1)': + '@react-navigation/core@7.0.0(react@18.3.1)': dependencies: - '@react-navigation/routers': 6.1.9 + '@react-navigation/routers': 7.0.0 escape-string-regexp: 4.0.0 nanoid: 3.3.7 query-string: 7.1.3 react: 18.3.1 - react-is: 16.13.1 + react-is: 18.3.1 use-latest-callback: 0.2.1(react@18.3.1) + use-sync-external-store: 1.2.2(react@18.3.1) - '@react-navigation/elements@1.3.31(@react-navigation/native@6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@react-navigation/elements@2.0.0(@react-navigation/native@7.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: - '@react-navigation/native': 6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@react-navigation/native': 7.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + color: 4.2.3 react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) - react-native-safe-area-context: 4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) + react-native-safe-area-context: 4.12.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - '@react-navigation/native-stack@6.9.26(@react-navigation/native@6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-screens@3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@react-navigation/native-stack@7.0.0(@react-navigation/native@7.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-screens@4.1.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: - '@react-navigation/elements': 1.3.31(@react-navigation/native@6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@react-navigation/native': 6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@react-navigation/elements': 2.0.0(@react-navigation/native@7.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@react-navigation/native': 7.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) - react-native-safe-area-context: 4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - react-native-screens: 3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) + react-native-safe-area-context: 4.12.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react-native-screens: 4.1.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) warn-once: 0.1.1 + transitivePeerDependencies: + - '@react-native-masked-view/masked-view' - '@react-navigation/native@6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@react-navigation/native@7.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: - '@react-navigation/core': 6.4.17(react@18.3.1) + '@react-navigation/core': 7.0.0(react@18.3.1) escape-string-regexp: 4.0.0 fast-deep-equal: 3.1.3 nanoid: 3.3.7 react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) + use-latest-callback: 0.2.1(react@18.3.1) - '@react-navigation/routers@6.1.9': + '@react-navigation/routers@7.0.0': dependencies: nanoid: 3.3.7 - '@remix-run/node@2.11.1(typescript@5.5.4)': + '@remix-run/node@2.14.0(typescript@5.5.4)': dependencies: - '@remix-run/server-runtime': 2.11.1(typescript@5.5.4) + '@remix-run/server-runtime': 2.14.0(typescript@5.5.4) '@remix-run/web-fetch': 4.4.2 '@web3-storage/multipart-parser': 1.0.0 cookie-signature: 1.2.1 @@ -10350,17 +10528,17 @@ snapshots: optionalDependencies: typescript: 5.5.4 - '@remix-run/router@1.19.0': {} + '@remix-run/router@1.21.0': {} - '@remix-run/server-runtime@2.11.1(typescript@5.5.4)': + '@remix-run/server-runtime@2.14.0(typescript@5.5.4)': dependencies: - '@remix-run/router': 1.19.0 + '@remix-run/router': 1.21.0 '@types/cookie': 0.6.0 '@web3-storage/multipart-parser': 1.0.0 cookie: 0.6.0 set-cookie-parser: 2.7.0 source-map: 0.7.4 - turbo-stream: 2.2.0 + turbo-stream: 2.4.0 optionalDependencies: typescript: 5.5.4 @@ -10392,17 +10570,6 @@ snapshots: dependencies: web-streams-polyfill: 3.3.3 - '@rnx-kit/chromium-edge-launcher@1.0.0': - dependencies: - '@types/node': 18.19.44 - escape-string-regexp: 4.0.0 - is-wsl: 2.2.0 - lighthouse-logger: 1.4.2 - mkdirp: 1.0.4 - rimraf: 3.0.2 - transitivePeerDependencies: - - supports-color - '@rollup/pluginutils@5.1.0(rollup@4.20.0)': dependencies: '@types/estree': 1.0.5 @@ -10491,11 +10658,11 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@salihgun/react-native-video-processor@0.3.1(ffmpeg-kit-react-native@6.0.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-video@5.2.1)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@salihgun/react-native-video-processor@0.3.1(ffmpeg-kit-react-native@6.0.2(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-video@5.2.1)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: - ffmpeg-kit-react-native: 6.0.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + ffmpeg-kit-react-native: 6.0.2(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) react-native-video: 5.2.1 '@scure/base@1.1.7': {} @@ -10510,14 +10677,6 @@ snapshots: component-type: 1.2.2 join-component: 1.1.0 - '@sideway/address@4.1.5': - dependencies: - '@hapi/hoek': 9.3.0 - - '@sideway/formula@3.0.1': {} - - '@sideway/pinpoint@2.0.0': {} - '@sinclair/typebox@0.27.8': {} '@sinonjs/commons@3.0.1': @@ -10528,51 +10687,51 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 - '@swc/core-darwin-arm64@1.7.10': + '@swc/core-darwin-arm64@1.9.2': optional: true - '@swc/core-darwin-x64@1.7.10': + '@swc/core-darwin-x64@1.9.2': optional: true - '@swc/core-linux-arm-gnueabihf@1.7.10': + '@swc/core-linux-arm-gnueabihf@1.9.2': optional: true - '@swc/core-linux-arm64-gnu@1.7.10': + '@swc/core-linux-arm64-gnu@1.9.2': optional: true - '@swc/core-linux-arm64-musl@1.7.10': + '@swc/core-linux-arm64-musl@1.9.2': optional: true - '@swc/core-linux-x64-gnu@1.7.10': + '@swc/core-linux-x64-gnu@1.9.2': optional: true - '@swc/core-linux-x64-musl@1.7.10': + '@swc/core-linux-x64-musl@1.9.2': optional: true - '@swc/core-win32-arm64-msvc@1.7.10': + '@swc/core-win32-arm64-msvc@1.9.2': optional: true - '@swc/core-win32-ia32-msvc@1.7.10': + '@swc/core-win32-ia32-msvc@1.9.2': optional: true - '@swc/core-win32-x64-msvc@1.7.10': + '@swc/core-win32-x64-msvc@1.9.2': optional: true - '@swc/core@1.7.10(@swc/helpers@0.5.12)': + '@swc/core@1.9.2(@swc/helpers@0.5.12)': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.12 + '@swc/types': 0.1.15 optionalDependencies: - '@swc/core-darwin-arm64': 1.7.10 - '@swc/core-darwin-x64': 1.7.10 - '@swc/core-linux-arm-gnueabihf': 1.7.10 - '@swc/core-linux-arm64-gnu': 1.7.10 - '@swc/core-linux-arm64-musl': 1.7.10 - '@swc/core-linux-x64-gnu': 1.7.10 - '@swc/core-linux-x64-musl': 1.7.10 - '@swc/core-win32-arm64-msvc': 1.7.10 - '@swc/core-win32-ia32-msvc': 1.7.10 - '@swc/core-win32-x64-msvc': 1.7.10 + '@swc/core-darwin-arm64': 1.9.2 + '@swc/core-darwin-x64': 1.9.2 + '@swc/core-linux-arm-gnueabihf': 1.9.2 + '@swc/core-linux-arm64-gnu': 1.9.2 + '@swc/core-linux-arm64-musl': 1.9.2 + '@swc/core-linux-x64-gnu': 1.9.2 + '@swc/core-linux-x64-musl': 1.9.2 + '@swc/core-win32-arm64-msvc': 1.9.2 + '@swc/core-win32-ia32-msvc': 1.9.2 + '@swc/core-win32-x64-msvc': 1.9.2 '@swc/helpers': 0.5.12 '@swc/counter@0.1.3': {} @@ -10581,511 +10740,577 @@ snapshots: dependencies: tslib: 2.6.3 - '@swc/types@0.1.12': + '@swc/types@0.1.15': dependencies: '@swc/counter': 0.1.3 - '@tamagui/accordion@1.108.3(react@18.3.1)': - dependencies: - '@tamagui/collapsible': 1.108.3(react@18.3.1) - '@tamagui/collection': 1.108.3(react@18.3.1) - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/polyfill-dev': 1.108.3 - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/accordion@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/collapsible': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/collection': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/polyfill-dev': 1.116.15 + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/adapt@1.108.3(react@18.3.1)': + '@tamagui/adapt@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/portal': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - react + - react-dom - '@tamagui/alert-dialog@1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': - dependencies: - '@tamagui/animate-presence': 1.108.3(react@18.3.1) - '@tamagui/aria-hidden': 1.108.3(react@18.3.1) - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/dialog': 1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/dismissable': 1.108.3(react@18.3.1) - '@tamagui/focus-scope': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/polyfill-dev': 1.108.3 - '@tamagui/popper': 1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/portal': 1.108.3(react@18.3.1) - '@tamagui/remove-scroll': 1.108.3(@types/react@18.3.3)(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/text': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/alert-dialog@1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/animate-presence': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/aria-hidden': 1.116.15(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/dialog': 1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/dismissable': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/focus-scope': 1.116.15(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/polyfill-dev': 1.116.15 + '@tamagui/popper': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/portal': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/remove-scroll': 1.116.15(@types/react@18.3.12)(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/text': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) react: 18.3.1 transitivePeerDependencies: - '@types/react' - react-dom - react-native - '@tamagui/animate-presence@1.108.3(react@18.3.1)': + '@tamagui/animate-presence@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/use-constant': 1.108.3(react@18.3.1) - '@tamagui/use-force-update': 1.108.3(react@18.3.1) - '@tamagui/use-presence': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/use-constant': 1.116.15(react@18.3.1) + '@tamagui/use-force-update': 1.116.15(react@18.3.1) + '@tamagui/use-presence': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - react + - react-dom - '@tamagui/animate@1.108.3(react@18.3.1)': + '@tamagui/animate@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/animate-presence': 1.108.3(react@18.3.1) + '@tamagui/animate-presence': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - react + - react-dom - '@tamagui/animations-css@1.108.3(react@18.3.1)': + '@tamagui/animations-css@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/cubic-bezier-animator': 1.108.3 - '@tamagui/use-presence': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/cubic-bezier-animator': 1.116.15 + '@tamagui/use-presence': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/animations-moti@1.108.3(moti@0.29.0(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react@18.3.1)': + '@tamagui/animations-moti@1.116.15(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.16.1(@babel/core@7.25.2)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/use-presence': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) - moti: 0.29.0(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@tamagui/use-presence': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + moti: 0.29.0(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.16.1(@babel/core@7.25.2)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom + - react-native-reanimated - '@tamagui/animations-react-native@1.108.3(react@18.3.1)': + '@tamagui/animations-react-native@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/use-presence': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/use-presence': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/aria-hidden@1.108.3(react@18.3.1)': + '@tamagui/aria-hidden@1.116.15(react@18.3.1)': dependencies: aria-hidden: 1.2.4 react: 18.3.1 - '@tamagui/avatar@1.108.3(react@18.3.1)': + '@tamagui/avatar@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/image': 1.108.3(react@18.3.1) - '@tamagui/shapes': 1.108.3(react@18.3.1) - '@tamagui/text': 1.108.3(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/image': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/shapes': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/text': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/babel-plugin-fully-specified@1.108.3': + '@tamagui/babel-plugin-fully-specified@1.116.15': dependencies: '@babel/core': 7.25.2 transitivePeerDependencies: - supports-color - '@tamagui/babel-plugin@1.108.3(react@18.3.1)': + '@tamagui/babel-plugin@1.116.15(@swc/helpers@0.5.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': dependencies: - '@babel/generator': 7.25.0 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 - '@tamagui/static': 1.108.3(react@18.3.1) + '@babel/generator': 7.26.2 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@tamagui/static': 1.116.15(@swc/helpers@0.5.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) transitivePeerDependencies: + - '@swc/helpers' - encoding - react + - react-dom - supports-color + - typescript - '@tamagui/build@1.108.3': + '@tamagui/build@1.116.15(@swc/helpers@0.5.12)': dependencies: '@babel/core': 7.25.2 - '@tamagui/babel-plugin-fully-specified': 1.108.3 + '@swc/core': 1.9.2(@swc/helpers@0.5.12) + '@tamagui/babel-plugin-fully-specified': 1.116.15 '@types/fs-extra': 9.0.13 - babel-plugin-fully-specified: 1.3.0(@babel/core@7.25.2) chokidar: 3.6.0 - esbuild: 0.23.0 - esbuild-plugin-es5: 2.1.1(esbuild@0.23.0) - esbuild-register: 3.6.0(esbuild@0.23.0) + esbuild: 0.24.0 + esbuild-plugin-es5: 2.1.1(esbuild@0.24.0) + esbuild-register: 3.6.0(esbuild@0.24.0) execa: 5.1.1 fast-glob: 3.3.2 fs-extra: 11.2.0 lodash.debounce: 4.0.8 + typescript: 5.6.3 transitivePeerDependencies: + - '@swc/helpers' - supports-color - '@tamagui/button@1.108.3(react@18.3.1)': + '@tamagui/button@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/font-size': 1.108.3(react@18.3.1) - '@tamagui/get-button-sized': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/helpers-tamagui': 1.108.3(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/text': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/font-size': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/get-button-sized': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/helpers-tamagui': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/text': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/card@1.108.3(react@18.3.1)': + '@tamagui/card@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/checkbox-headless@1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@tamagui/checkbox-headless@1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/focusable': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/label': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) - '@tamagui/use-previous': 1.108.3 + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/focusable': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/label': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) + '@tamagui/use-previous': 1.116.15 react: 18.3.1 transitivePeerDependencies: + - react-dom - react-native - '@tamagui/checkbox@1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': - dependencies: - '@tamagui/checkbox-headless': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/focusable': 1.108.3(react@18.3.1) - '@tamagui/font-size': 1.108.3(react@18.3.1) - '@tamagui/get-token': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/helpers-tamagui': 1.108.3(react@18.3.1) - '@tamagui/label': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) - '@tamagui/use-previous': 1.108.3 + '@tamagui/checkbox@1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/checkbox-headless': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/focusable': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/font-size': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/get-token': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/helpers-tamagui': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/label': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) + '@tamagui/use-previous': 1.116.15 react: 18.3.1 transitivePeerDependencies: + - react-dom - react-native - '@tamagui/cli-color@1.108.3': {} + '@tamagui/cli-color@1.116.15': {} - '@tamagui/collapsible@1.108.3(react@18.3.1)': + '@tamagui/collapsible@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/animate-presence': 1.108.3(react@18.3.1) - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/polyfill-dev': 1.108.3 - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/animate-presence': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/polyfill-dev': 1.116.15 + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/collection@1.108.3(react@18.3.1)': + '@tamagui/collection@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/polyfill-dev': 1.108.3 - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/polyfill-dev': 1.116.15 + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/colors@1.108.3': {} + '@tamagui/colors@1.116.15': {} - '@tamagui/compose-refs@1.108.3(react@18.3.1)': + '@tamagui/compose-refs@1.116.15(react@18.3.1)': dependencies: react: 18.3.1 - '@tamagui/config-default@1.108.3(react@18.3.1)': + '@tamagui/config-default@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/animations-css': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/shorthands': 1.108.3 + '@tamagui/animations-css': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/shorthands': 1.116.15 transitivePeerDependencies: - react + - react-dom - '@tamagui/config@1.108.3(moti@0.29.0(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': - dependencies: - '@tamagui/animations-css': 1.108.3(react@18.3.1) - '@tamagui/animations-moti': 1.108.3(moti@0.29.0(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1))(react@18.3.1) - '@tamagui/animations-react-native': 1.108.3(react@18.3.1) - '@tamagui/colors': 1.108.3 - '@tamagui/font-inter': 1.108.3(react@18.3.1) - '@tamagui/font-silkscreen': 1.108.3(react@18.3.1) - '@tamagui/react-native-media-driver': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/shorthands': 1.108.3 - '@tamagui/themes': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/config@1.116.15(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.16.1(@babel/core@7.25.2)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/animations-css': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/animations-moti': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.16.1(@babel/core@7.25.2)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react@18.3.1) + '@tamagui/animations-react-native': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/colors': 1.116.15 + '@tamagui/font-inter': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/font-silkscreen': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/react-native-media-driver': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/shorthands': 1.116.15 + '@tamagui/themes': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - - moti - react + - react-dom - react-native + - react-native-reanimated - '@tamagui/constants@1.108.3(react@18.3.1)': + '@tamagui/constants@1.116.15(react@18.3.1)': dependencies: react: 18.3.1 - '@tamagui/core@1.108.3(react@18.3.1)': + '@tamagui/core@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/react-native-use-pressable': 1.108.3(react@18.3.1) - '@tamagui/react-native-use-responder-events': 1.108.3(react@18.3.1) - '@tamagui/use-event': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/react-native-use-pressable': 1.116.15(react@18.3.1) + '@tamagui/react-native-use-responder-events': 1.116.15(react@18.3.1) + '@tamagui/use-event': 1.116.15(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - react + - react-dom - '@tamagui/create-context@1.108.3(react@18.3.1)': + '@tamagui/create-context@1.116.15(react@18.3.1)': dependencies: react: 18.3.1 - '@tamagui/create-theme@1.108.3(react@18.3.1)': + '@tamagui/create-theme@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - react + - react-dom - '@tamagui/cubic-bezier-animator@1.108.3': {} - - '@tamagui/dialog@1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': - dependencies: - '@tamagui/adapt': 1.108.3(react@18.3.1) - '@tamagui/animate-presence': 1.108.3(react@18.3.1) - '@tamagui/aria-hidden': 1.108.3(react@18.3.1) - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/dismissable': 1.108.3(react@18.3.1) - '@tamagui/focus-scope': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/polyfill-dev': 1.108.3 - '@tamagui/popper': 1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/portal': 1.108.3(react@18.3.1) - '@tamagui/remove-scroll': 1.108.3(@types/react@18.3.3)(react@18.3.1) - '@tamagui/sheet': 1.108.3(@types/react@18.3.3)(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/text': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/cubic-bezier-animator@1.116.15': {} + + '@tamagui/dialog@1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/adapt': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/animate-presence': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/aria-hidden': 1.116.15(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/dismissable': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/focus-scope': 1.116.15(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/polyfill-dev': 1.116.15 + '@tamagui/popper': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/portal': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/remove-scroll': 1.116.15(@types/react@18.3.12)(react@18.3.1) + '@tamagui/sheet': 1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/text': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) react: 18.3.1 transitivePeerDependencies: - '@types/react' - react-dom - react-native - '@tamagui/dismissable@1.108.3(react@18.3.1)': + '@tamagui/dismissable@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/use-escape-keydown': 1.108.3 - '@tamagui/use-event': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/use-escape-keydown': 1.116.15 + '@tamagui/use-event': 1.116.15(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/elements@1.108.3(react@18.3.1)': + '@tamagui/elements@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/fake-react-native@1.108.3': {} + '@tamagui/fake-react-native@1.116.15': {} - '@tamagui/floating@1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@tamagui/floating@1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: - '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@floating-ui/react-native': 0.10.6(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/react-native': 0.10.6(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) react: 18.3.1 transitivePeerDependencies: - react-dom - react-native - '@tamagui/focus-scope@1.108.3(react@18.3.1)': + '@tamagui/focus-scope@1.116.15(react@18.3.1)': dependencies: - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/use-event': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/start-transition': 1.116.15 + '@tamagui/use-event': 1.116.15(react@18.3.1) react: 18.3.1 - '@tamagui/focusable@1.108.3(react@18.3.1)': + '@tamagui/focusable@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/font-inter@1.108.3(react@18.3.1)': + '@tamagui/font-inter@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - react + - react-dom - '@tamagui/font-silkscreen@1.108.3(react@18.3.1)': + '@tamagui/font-silkscreen@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - react + - react-dom - '@tamagui/font-size@1.108.3(react@18.3.1)': + '@tamagui/font-size@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/form@1.108.3(react@18.3.1)': + '@tamagui/form@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/focusable': 1.108.3(react@18.3.1) - '@tamagui/get-button-sized': 1.108.3(react@18.3.1) - '@tamagui/get-font-sized': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/text': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/focusable': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/get-button-sized': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/get-font-sized': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/text': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/generate-themes@1.108.3(esbuild@0.23.0)(react@18.3.1)': + '@tamagui/generate-themes@1.116.15(esbuild@0.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/create-theme': 1.108.3(react@18.3.1) - '@tamagui/theme-builder': 1.108.3(react@18.3.1) - '@tamagui/types': 1.108.3 - esbuild-register: 3.6.0(esbuild@0.23.0) + '@tamagui/create-theme': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/theme-builder': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/types': 1.116.15 + esbuild-register: 3.6.0(esbuild@0.24.0) fs-extra: 11.2.0 transitivePeerDependencies: - esbuild - react + - react-dom - supports-color - '@tamagui/get-button-sized@1.108.3(react@18.3.1)': + '@tamagui/get-button-sized@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/get-token': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/get-token': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/get-font-sized@1.108.3(react@18.3.1)': + '@tamagui/get-font-sized@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/get-token@1.108.3(react@18.3.1)': + '@tamagui/get-token@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/group@1.108.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)': + '@tamagui/group@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) react: 18.3.1 - reforest: 0.13.0(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) transitivePeerDependencies: - - '@types/react' - - immer + - react-dom - '@tamagui/helpers-node@1.108.3': + '@tamagui/helpers-node@1.116.15': dependencies: - '@tamagui/types': 1.108.3 + '@tamagui/types': 1.116.15 - '@tamagui/helpers-tamagui@1.108.3(react@18.3.1)': + '@tamagui/helpers-tamagui@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/helpers@1.108.3(react@18.3.1)': + '@tamagui/helpers@1.116.15(react@18.3.1)': dependencies: - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/simple-hash': 1.108.3 + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/simple-hash': 1.116.15 transitivePeerDependencies: - react - '@tamagui/image@1.108.3(react@18.3.1)': + '@tamagui/image@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/label@1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@tamagui/label@1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/focusable': 1.108.3(react@18.3.1) - '@tamagui/get-button-sized': 1.108.3(react@18.3.1) - '@tamagui/get-font-sized': 1.108.3(react@18.3.1) - '@tamagui/text': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/focusable': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/get-button-sized': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/get-font-sized': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/text': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) + transitivePeerDependencies: + - react-dom - '@tamagui/linear-gradient@1.108.3(react@18.3.1)': + '@tamagui/linear-gradient@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/list-item@1.108.3(react@18.3.1)': + '@tamagui/list-item@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/font-size': 1.108.3(react@18.3.1) - '@tamagui/get-font-sized': 1.108.3(react@18.3.1) - '@tamagui/get-token': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/helpers-tamagui': 1.108.3(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/text': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/font-size': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/get-font-sized': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/get-token': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/helpers-tamagui': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/text': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/metro-plugin@1.108.3(@babel/core@7.25.2)(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-svg@15.5.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)))': + '@tamagui/metro-plugin@1.116.15(mxw2x3jpqaswfpi3djwupym5c4)': dependencies: - '@tamagui/static': 1.108.3(react@18.3.1) + '@tamagui/static': 1.116.15(@swc/helpers@0.5.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) fs-extra: 11.2.0 metro-config: 0.80.10 metro-transform-worker: 0.80.10 - react-native-css-interop: 0.0.34(@babel/core@7.25.2)(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-svg@15.5.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4))) + react-native-css-interop: 0.0.34(@babel/core@7.25.2)(react-native-reanimated@3.16.1(@babel/core@7.25.2)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-svg@15.8.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4))) transitivePeerDependencies: - '@babel/core' + - '@swc/helpers' - bufferutil - encoding - react + - react-dom - react-native - react-native-reanimated - react-native-safe-area-context - react-native-svg - supports-color - tailwindcss + - typescript - utf-8-validate - '@tamagui/normalize-css-color@1.108.3': + '@tamagui/normalize-css-color@1.116.15': dependencies: '@react-native/normalize-color': 2.1.0 - '@tamagui/polyfill-dev@1.108.3': {} - - '@tamagui/popover@1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/react': 0.26.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tamagui/adapt': 1.108.3(react@18.3.1) - '@tamagui/animate': 1.108.3(react@18.3.1) - '@tamagui/aria-hidden': 1.108.3(react@18.3.1) - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/dismissable': 1.108.3(react@18.3.1) - '@tamagui/floating': 1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/focus-scope': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/polyfill-dev': 1.108.3 - '@tamagui/popper': 1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/portal': 1.108.3(react@18.3.1) - '@tamagui/remove-scroll': 1.108.3(@types/react@18.3.3)(react@18.3.1) - '@tamagui/scroll-view': 1.108.3(react@18.3.1) - '@tamagui/sheet': 1.108.3(@types/react@18.3.3)(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/polyfill-dev@1.116.15': {} + + '@tamagui/popover@1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/adapt': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/animate': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/aria-hidden': 1.116.15(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/dismissable': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/floating': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/focus-scope': 1.116.15(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/polyfill-dev': 1.116.15 + '@tamagui/popper': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/portal': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/remove-scroll': 1.116.15(@types/react@18.3.12)(react@18.3.1) + '@tamagui/scroll-view': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/sheet': 1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) react: 18.3.1 react-freeze: 1.0.4(react@18.3.1) transitivePeerDependencies: @@ -11093,450 +11318,516 @@ snapshots: - react-dom - react-native - '@tamagui/popper@1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@tamagui/popper@1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/floating': 1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/get-token': 1.108.3(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/floating': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/get-token': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/start-transition': 1.116.15 + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) react: 18.3.1 transitivePeerDependencies: - react-dom - react-native - '@tamagui/portal@1.108.3(react@18.3.1)': + '@tamagui/portal@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/use-did-finish-ssr': 1.108.3(react@18.3.1) - '@tamagui/use-event': 1.108.3(react@18.3.1) - react: 18.3.1 + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/start-transition': 1.116.15 + '@tamagui/use-did-finish-ssr': 1.116.15(react@18.3.1) + '@tamagui/use-event': 1.116.15(react@18.3.1) + transitivePeerDependencies: + - react + - react-dom - '@tamagui/progress@1.108.3(react@18.3.1)': + '@tamagui/progress@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/get-token': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/get-token': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/proxy-worm@1.108.3': {} - - '@tamagui/radio-group@1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': - dependencies: - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/focusable': 1.108.3(react@18.3.1) - '@tamagui/get-token': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/label': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/radio-headless': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/roving-focus': 1.108.3(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) - '@tamagui/use-previous': 1.108.3 + '@tamagui/proxy-worm@1.116.15': {} + + '@tamagui/radio-group@1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/focusable': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/get-token': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/label': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/radio-headless': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/roving-focus': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) + '@tamagui/use-previous': 1.116.15 react: 18.3.1 transitivePeerDependencies: + - react-dom - react-native - '@tamagui/radio-headless@1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@tamagui/radio-headless@1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/focusable': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/label': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) - '@tamagui/use-previous': 1.108.3 + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/focusable': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/label': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) + '@tamagui/use-previous': 1.116.15 react: 18.3.1 transitivePeerDependencies: + - react-dom - react-native - '@tamagui/react-native-media-driver@1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@tamagui/react-native-media-driver@1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/web': 1.108.3(react@18.3.1) - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) transitivePeerDependencies: - react + - react-dom - '@tamagui/react-native-use-pressable@1.108.3(react@18.3.1)': + '@tamagui/react-native-use-pressable@1.116.15(react@18.3.1)': dependencies: react: 18.3.1 - '@tamagui/react-native-use-responder-events@1.108.3(react@18.3.1)': + '@tamagui/react-native-use-responder-events@1.116.15(react@18.3.1)': dependencies: react: 18.3.1 - '@tamagui/remove-scroll@1.108.3(@types/react@18.3.3)(react@18.3.1)': + '@tamagui/react-native-web-internals@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/normalize-css-color': 1.116.15 + '@tamagui/react-native-use-pressable': 1.116.15(react@18.3.1) + '@tamagui/react-native-use-responder-events': 1.116.15(react@18.3.1) + '@tamagui/simple-hash': 1.116.15 + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + transitivePeerDependencies: + - react + - react-dom + + '@tamagui/react-native-web-lite@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: + '@tamagui/normalize-css-color': 1.116.15 + '@tamagui/react-native-use-pressable': 1.116.15(react@18.3.1) + '@tamagui/react-native-use-responder-events': 1.116.15(react@18.3.1) + '@tamagui/react-native-web-internals': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + invariant: 2.2.4 react: 18.3.1 - react-remove-scroll: 2.5.5(@types/react@18.3.3)(react@18.3.1) + transitivePeerDependencies: + - react-dom + + '@tamagui/remove-scroll@1.116.15(@types/react@18.3.12)(react@18.3.1)': + dependencies: + react: 18.3.1 + react-remove-scroll: 2.6.0(@types/react@18.3.12)(react@18.3.1) transitivePeerDependencies: - '@types/react' - '@tamagui/roving-focus@1.108.3(react@18.3.1)': - dependencies: - '@tamagui/collection': 1.108.3(react@18.3.1) - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) - '@tamagui/use-direction': 1.108.3(react@18.3.1) - '@tamagui/use-event': 1.108.3(react@18.3.1) + '@tamagui/roving-focus@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/collection': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) + '@tamagui/use-direction': 1.116.15(react@18.3.1) + '@tamagui/use-event': 1.116.15(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/scroll-view@1.108.3(react@18.3.1)': + '@tamagui/scroll-view@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/select@1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/react': 0.26.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@floating-ui/react-native': 0.10.6(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/adapt': 1.108.3(react@18.3.1) - '@tamagui/animate-presence': 1.108.3(react@18.3.1) - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/dismissable': 1.108.3(react@18.3.1) - '@tamagui/focus-scope': 1.108.3(react@18.3.1) - '@tamagui/get-token': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/list-item': 1.108.3(react@18.3.1) - '@tamagui/portal': 1.108.3(react@18.3.1) - '@tamagui/remove-scroll': 1.108.3(@types/react@18.3.3)(react@18.3.1) - '@tamagui/separator': 1.108.3(react@18.3.1) - '@tamagui/sheet': 1.108.3(@types/react@18.3.3)(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/text': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) - '@tamagui/use-debounce': 1.108.3(react@18.3.1) - '@tamagui/use-event': 1.108.3(react@18.3.1) - '@tamagui/use-previous': 1.108.3 + '@tamagui/select@1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/react-native': 0.10.6(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/adapt': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/animate-presence': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/dismissable': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/focus-scope': 1.116.15(react@18.3.1) + '@tamagui/get-token': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/list-item': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/portal': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/remove-scroll': 1.116.15(@types/react@18.3.12)(react@18.3.1) + '@tamagui/separator': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/sheet': 1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/text': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) + '@tamagui/use-debounce': 1.116.15(react@18.3.1) + '@tamagui/use-event': 1.116.15(react@18.3.1) + '@tamagui/use-previous': 1.116.15 react: 18.3.1 transitivePeerDependencies: - '@types/react' - react-dom - react-native - '@tamagui/separator@1.108.3(react@18.3.1)': + '@tamagui/separator@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/shapes@1.108.3(react@18.3.1)': + '@tamagui/shapes@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/sheet@1.108.3(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@tamagui/animate-presence': 1.108.3(react@18.3.1) - '@tamagui/animations-react-native': 1.108.3(react@18.3.1) - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/portal': 1.108.3(react@18.3.1) - '@tamagui/remove-scroll': 1.108.3(@types/react@18.3.3)(react@18.3.1) - '@tamagui/scroll-view': 1.108.3(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/use-constant': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) - '@tamagui/use-keyboard-visible': 1.108.3(react@18.3.1) + '@tamagui/sheet@1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/adapt': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/animate-presence': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/animations-react-native': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/portal': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/remove-scroll': 1.116.15(@types/react@18.3.12)(react@18.3.1) + '@tamagui/scroll-view': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/use-constant': 1.116.15(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) + '@tamagui/use-did-finish-ssr': 1.116.15(react@18.3.1) + '@tamagui/use-keyboard-visible': 1.116.15(react@18.3.1) react: 18.3.1 transitivePeerDependencies: - '@types/react' + - react-dom - '@tamagui/shorthands@1.108.3': {} + '@tamagui/shorthands@1.116.15': {} - '@tamagui/simple-hash@1.108.3': {} + '@tamagui/simple-hash@1.116.15': {} - '@tamagui/slider@1.108.3(react@18.3.1)': + '@tamagui/slider@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/get-token': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) - '@tamagui/use-debounce': 1.108.3(react@18.3.1) - '@tamagui/use-direction': 1.108.3(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/get-token': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) + '@tamagui/use-debounce': 1.116.15(react@18.3.1) + '@tamagui/use-direction': 1.116.15(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/stacks@1.108.3(react@18.3.1)': + '@tamagui/stacks@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/core': 1.108.3(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/static@1.108.3(react@18.3.1)': + '@tamagui/start-transition@1.116.15': {} + + '@tamagui/static@1.116.15(@swc/helpers@0.5.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': dependencies: '@babel/core': 7.25.2 - '@babel/generator': 7.25.0 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/parser': 7.25.3 + '@babel/generator': 7.26.2 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/parser': 7.26.2 '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) - '@babel/runtime': 7.25.0 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 - '@tamagui/build': 1.108.3 - '@tamagui/cli-color': 1.108.3 - '@tamagui/config-default': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/fake-react-native': 1.108.3 - '@tamagui/generate-themes': 1.108.3(esbuild@0.23.0)(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/helpers-node': 1.108.3 - '@tamagui/proxy-worm': 1.108.3 - '@tamagui/shorthands': 1.108.3 - '@tamagui/types': 1.108.3 + '@babel/runtime': 7.26.0 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + '@esbuild-plugins/tsconfig-paths': 0.1.2(esbuild@0.24.0)(typescript@5.5.4) + '@tamagui/build': 1.116.15(@swc/helpers@0.5.12) + '@tamagui/cli-color': 1.116.15 + '@tamagui/config-default': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/fake-react-native': 1.116.15 + '@tamagui/generate-themes': 1.116.15(esbuild@0.24.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/helpers-node': 1.116.15 + '@tamagui/proxy-worm': 1.116.15 + '@tamagui/react-native-web-internals': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/react-native-web-lite': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/shorthands': 1.116.15 + '@tamagui/types': 1.116.15 babel-literal-to-ast: 2.1.0(@babel/core@7.25.2) - browserslist: 4.23.3 + browserslist: 4.24.2 check-dependency-version-consistency: 4.1.0 - esbuild: 0.23.0 - esbuild-register: 3.6.0(esbuild@0.23.0) + esbuild: 0.24.0 + esbuild-register: 3.6.0(esbuild@0.24.0) + fast-glob: 3.3.2 find-cache-dir: 3.3.2 find-root: 1.1.0 fs-extra: 11.2.0 invariant: 2.2.4 + js-yaml: 4.1.0 lodash: 4.17.21 react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-native-web: 0.19.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-native-web-internals: 1.108.3 - react-native-web-lite: 1.108.3(react@18.3.1) + react-native-web: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: + - '@swc/helpers' - encoding + - react-dom - supports-color + - typescript - '@tamagui/switch-headless@1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': + '@tamagui/switch-headless@1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/label': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/use-previous': 1.108.3 + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/label': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/use-previous': 1.116.15 react: 18.3.1 transitivePeerDependencies: + - react-dom - react-native - '@tamagui/switch@1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': - dependencies: - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/focusable': 1.108.3(react@18.3.1) - '@tamagui/get-token': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/label': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/switch-headless': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) - '@tamagui/use-previous': 1.108.3 + '@tamagui/switch@1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/focusable': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/get-token': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/label': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/switch-headless': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) + '@tamagui/use-previous': 1.116.15 react: 18.3.1 transitivePeerDependencies: + - react-dom - react-native - '@tamagui/tabs@1.108.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)': - dependencies: - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/get-button-sized': 1.108.3(react@18.3.1) - '@tamagui/group': 1.108.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/roving-focus': 1.108.3(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) - '@tamagui/use-direction': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/tabs@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/get-button-sized': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/group': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/roving-focus': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) + '@tamagui/use-direction': 1.116.15(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 transitivePeerDependencies: - - '@types/react' - - immer + - react-dom - '@tamagui/text@1.108.3(react@18.3.1)': + '@tamagui/text@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/get-font-sized': 1.108.3(react@18.3.1) - '@tamagui/helpers-tamagui': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/get-font-sized': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers-tamagui': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/theme-builder@1.108.3(react@18.3.1)': + '@tamagui/theme-builder@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/create-theme': 1.108.3(react@18.3.1) + '@tamagui/create-theme': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) color2k: 2.0.3 transitivePeerDependencies: - react + - react-dom - '@tamagui/theme@1.108.3(react@18.3.1)': + '@tamagui/theme@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/themes@1.108.3(react@18.3.1)': + '@tamagui/themes@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/colors': 1.108.3 - '@tamagui/create-theme': 1.108.3(react@18.3.1) - '@tamagui/theme-builder': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/colors': 1.116.15 + '@tamagui/create-theme': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/theme-builder': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - react + - react-dom - '@tamagui/timer@1.108.3': {} - - '@tamagui/toast@1.108.3(react@18.3.1)': - dependencies: - '@tamagui/animate-presence': 1.108.3(react@18.3.1) - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/dismissable': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/polyfill-dev': 1.108.3 - '@tamagui/portal': 1.108.3(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/text': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) - '@tamagui/visually-hidden': 1.108.3(react@18.3.1) + '@tamagui/timer@1.116.15': {} + + '@tamagui/toast@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/animate-presence': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/dismissable': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/polyfill-dev': 1.116.15 + '@tamagui/portal': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/start-transition': 1.116.15 + '@tamagui/text': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) + '@tamagui/visually-hidden': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/toggle-group@1.108.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1)': - dependencies: - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/focusable': 1.108.3(react@18.3.1) - '@tamagui/font-size': 1.108.3(react@18.3.1) - '@tamagui/get-token': 1.108.3(react@18.3.1) - '@tamagui/group': 1.108.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/helpers-tamagui': 1.108.3(react@18.3.1) - '@tamagui/roving-focus': 1.108.3(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) - '@tamagui/use-direction': 1.108.3(react@18.3.1) - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/toggle-group@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/focusable': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/font-size': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/get-token': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/group': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/helpers-tamagui': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/roving-focus': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) + '@tamagui/use-direction': 1.116.15(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 transitivePeerDependencies: - - '@types/react' - - immer - - '@tamagui/tooltip@1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/react': 0.26.22(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/floating': 1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/get-token': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/polyfill-dev': 1.108.3 - '@tamagui/popover': 1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/popper': 1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/text': 1.108.3(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) + - react-dom + + '@tamagui/tooltip@1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/floating': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/get-token': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/polyfill-dev': 1.116.15 + '@tamagui/popover': 1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/popper': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/text': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) react: 18.3.1 transitivePeerDependencies: - '@types/react' - react-dom - react-native - '@tamagui/types@1.108.3': {} + '@tamagui/types@1.116.15': {} - '@tamagui/use-callback-ref@1.108.3': {} + '@tamagui/use-callback-ref@1.116.15': {} - '@tamagui/use-constant@1.108.3(react@18.3.1)': + '@tamagui/use-constant@1.116.15(react@18.3.1)': dependencies: react: 18.3.1 - '@tamagui/use-controllable-state@1.108.3(react@18.3.1)': + '@tamagui/use-controllable-state@1.116.15(react@18.3.1)': dependencies: - '@tamagui/use-event': 1.108.3(react@18.3.1) + '@tamagui/start-transition': 1.116.15 + '@tamagui/use-event': 1.116.15(react@18.3.1) react: 18.3.1 - '@tamagui/use-debounce@1.108.3(react@18.3.1)': + '@tamagui/use-debounce@1.116.15(react@18.3.1)': dependencies: react: 18.3.1 - '@tamagui/use-did-finish-ssr@1.108.3(react@18.3.1)': + '@tamagui/use-did-finish-ssr@1.116.15(react@18.3.1)': dependencies: - '@tamagui/constants': 1.108.3(react@18.3.1) react: 18.3.1 - '@tamagui/use-direction@1.108.3(react@18.3.1)': + '@tamagui/use-direction@1.116.15(react@18.3.1)': dependencies: react: 18.3.1 - '@tamagui/use-escape-keydown@1.108.3': + '@tamagui/use-escape-keydown@1.116.15': dependencies: - '@tamagui/use-callback-ref': 1.108.3 + '@tamagui/use-callback-ref': 1.116.15 - '@tamagui/use-event@1.108.3(react@18.3.1)': + '@tamagui/use-event@1.116.15(react@18.3.1)': dependencies: - '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) react: 18.3.1 - '@tamagui/use-force-update@1.108.3(react@18.3.1)': + '@tamagui/use-force-update@1.116.15(react@18.3.1)': dependencies: react: 18.3.1 - '@tamagui/use-keyboard-visible@1.108.3(react@18.3.1)': + '@tamagui/use-keyboard-visible@1.116.15(react@18.3.1)': dependencies: react: 18.3.1 - '@tamagui/use-presence@1.108.3(react@18.3.1)': + '@tamagui/use-presence@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 + transitivePeerDependencies: + - react-dom - '@tamagui/use-previous@1.108.3': {} + '@tamagui/use-previous@1.116.15': {} - '@tamagui/use-window-dimensions@1.108.3(react@18.3.1)': + '@tamagui/use-window-dimensions@1.116.15(react@18.3.1)': dependencies: - '@tamagui/constants': 1.108.3(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) react: 18.3.1 - '@tamagui/visually-hidden@1.108.3(react@18.3.1)': + '@tamagui/visually-hidden@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tamagui/web': 1.108.3(react@18.3.1) + '@tamagui/web': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 - - '@tamagui/web@1.108.3(react@18.3.1)': - dependencies: - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/helpers': 1.108.3(react@18.3.1) - '@tamagui/normalize-css-color': 1.108.3 - '@tamagui/timer': 1.108.3 - '@tamagui/types': 1.108.3 - '@tamagui/use-did-finish-ssr': 1.108.3(react@18.3.1) - '@tamagui/use-event': 1.108.3(react@18.3.1) - '@tamagui/use-force-update': 1.108.3(react@18.3.1) transitivePeerDependencies: - - react + - react-dom + + '@tamagui/web@1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/helpers': 1.116.15(react@18.3.1) + '@tamagui/normalize-css-color': 1.116.15 + '@tamagui/timer': 1.116.15 + '@tamagui/types': 1.116.15 + '@tamagui/use-did-finish-ssr': 1.116.15(react@18.3.1) + '@tamagui/use-event': 1.116.15(react@18.3.1) + '@tamagui/use-force-update': 1.116.15(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) '@tanstack/eslint-plugin-query@5.51.15(eslint@8.57.0)(typescript@5.5.4)': dependencies: @@ -11563,7 +11854,7 @@ snapshots: '@tsconfig/node16@1.0.4': {} - '@turbo/gen@1.13.4(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)': + '@turbo/gen@1.13.4(@swc/core@1.9.2(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)': dependencies: '@turbo/workspaces': 1.13.4 chalk: 2.4.2 @@ -11573,7 +11864,7 @@ snapshots: minimatch: 9.0.5 node-plop: 0.26.3 proxy-agent: 6.4.0 - ts-node: 10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -11610,16 +11901,16 @@ snapshots: '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.26.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.26.0 '@types/cookie@0.6.0': {} @@ -11641,6 +11932,10 @@ snapshots: '@types/minimatch': 5.1.2 '@types/node': 22.2.0 + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 22.2.0 + '@types/hammerjs@2.0.45': {} '@types/inquirer@6.5.0': @@ -11675,10 +11970,6 @@ snapshots: dependencies: '@types/node': 22.2.0 - '@types/node@18.19.44': - dependencies: - undici-types: 5.26.5 - '@types/node@22.2.0': dependencies: undici-types: 6.13.0 @@ -11689,7 +11980,7 @@ snapshots: dependencies: '@types/node': 22.2.0 - '@types/react@18.3.3': + '@types/react@18.3.12': dependencies: '@types/prop-types': 15.7.12 csstype: 3.1.3 @@ -11713,6 +12004,7 @@ snapshots: '@types/yargs@15.0.19': dependencies: '@types/yargs-parser': 21.0.3 + optional: true '@types/yargs@17.0.33': dependencies: @@ -11844,19 +12136,19 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@urql/core@2.3.6(graphql@15.8.0)': + '@urql/core@5.0.8(graphql@15.8.0)': dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@15.8.0) - graphql: 15.8.0 - wonka: 4.0.15 + '@0no-co/graphql.web': 1.0.11(graphql@15.8.0) + wonka: 6.3.4 + transitivePeerDependencies: + - graphql - '@urql/exchange-retry@0.3.0(graphql@15.8.0)': + '@urql/exchange-retry@1.3.0(@urql/core@5.0.8(graphql@15.8.0))': dependencies: - '@urql/core': 2.3.6(graphql@15.8.0) - graphql: 15.8.0 - wonka: 4.0.15 + '@urql/core': 5.0.8(graphql@15.8.0) + wonka: 6.3.4 - '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6))': + '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -11871,7 +12163,7 @@ snapshots: std-env: 3.7.0 strip-literal: 2.1.0 test-exclude: 6.0.0 - vitest: 1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + vitest: 1.6.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6) transitivePeerDependencies: - supports-color @@ -11919,7 +12211,7 @@ snapshots: '@vue/compiler-core@3.4.37': dependencies: - '@babel/parser': 7.25.3 + '@babel/parser': 7.26.2 '@vue/shared': 3.4.37 entities: 5.0.0 estree-walker: 2.0.2 @@ -11974,12 +12266,6 @@ snapshots: acorn@8.12.1: {} - agent-base@6.0.2: - dependencies: - debug: 4.3.6 - transitivePeerDependencies: - - supports-color - agent-base@7.1.1: dependencies: debug: 4.3.6 @@ -12022,12 +12308,6 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-fragments@0.2.1: - dependencies: - colorette: 1.4.0 - slice-ansi: 2.1.0 - strip-ansi: 5.2.0 - ansi-regex@4.1.1: {} ansi-regex@5.0.1: {} @@ -12053,7 +12333,8 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - appdirsjs@1.2.7: {} + appdirsjs@1.2.7: + optional: true application-config-path@0.1.1: {} @@ -12156,8 +12437,6 @@ snapshots: dependencies: tslib: 2.6.3 - astral-regex@1.0.0: {} - astral-regex@2.0.0: {} async-limiter@1.0.1: {} @@ -12182,18 +12461,44 @@ snapshots: dependencies: '@babel/core': 7.25.2 - babel-literal-to-ast@2.1.0(@babel/core@7.25.2): + babel-jest@29.7.0(@babel/core@7.25.2): dependencies: '@babel/core': 7.25.2 - '@babel/parser': 7.25.3 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.25.2) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 transitivePeerDependencies: - supports-color - babel-plugin-fully-specified@1.3.0(@babel/core@7.25.2): + babel-literal-to-ast@2.1.0(@babel/core@7.25.2): dependencies: '@babel/core': 7.25.2 + '@babel/parser': 7.26.2 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.25.9 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.6 babel-plugin-module-resolver@5.0.2: dependencies: @@ -12227,9 +12532,15 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-react-compiler@0.0.0: {} + babel-plugin-react-native-web@0.19.13: {} + + babel-plugin-syntax-hermes-parser@0.23.1: + dependencies: + hermes-parser: 0.23.1 - babel-plugin-react-native-web@0.19.12: {} + babel-plugin-syntax-hermes-parser@0.25.1: + dependencies: + hermes-parser: 0.25.1 babel-plugin-tester@11.0.4(@babel/core@7.25.2): dependencies: @@ -12248,7 +12559,26 @@ snapshots: transitivePeerDependencies: - '@babel/core' - babel-preset-expo@11.0.13(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)): + babel-preset-current-node-syntax@1.1.0(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) + + babel-preset-expo@12.0.1(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)): dependencies: '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.25.2) @@ -12256,15 +12586,20 @@ snapshots: '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) '@babel/preset-react': 7.24.7(@babel/core@7.25.2) '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) - '@react-native/babel-preset': 0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) - babel-plugin-react-compiler: 0.0.0 - babel-plugin-react-native-web: 0.19.12 + '@react-native/babel-preset': 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + babel-plugin-react-native-web: 0.19.13 react-refresh: 0.14.2 transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' - supports-color + babel-preset-jest@29.6.3(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2) + balanced-match@1.0.2: {} bare-events@2.4.2: @@ -12350,6 +12685,13 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) + browserslist@4.24.2: + dependencies: + caniuse-lite: 1.0.30001680 + electron-to-chromium: 1.5.56 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.2) + bser@2.1.1: dependencies: node-int64: 0.4.0 @@ -12379,11 +12721,11 @@ snapshots: builtins@1.0.3: {} - burnt@0.12.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + burnt@0.12.2(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) sf-symbols-typescript: 1.0.0 sonner: 0.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: @@ -12443,6 +12785,8 @@ snapshots: caniuse-lite@1.0.30001651: {} + caniuse-lite@1.0.30001680: {} + chai@4.5.0: dependencies: assertion-error: 1.1.0 @@ -12561,6 +12905,17 @@ snapshots: urlpattern-polyfill: 10.0.0 zod: 3.23.8 + chromium-edge-launcher@0.2.0: + dependencies: + '@types/node': 22.2.0 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + mkdirp: 1.0.4 + rimraf: 3.0.2 + transitivePeerDependencies: + - supports-color + ci-info@2.0.0: {} ci-info@3.9.0: {} @@ -12583,11 +12938,7 @@ snapshots: cli-width@3.0.0: {} - cliui@6.0.0: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 + client-only@0.0.1: {} cliui@8.0.1: dependencies: @@ -12603,8 +12954,6 @@ snapshots: clone@1.0.4: {} - clone@2.1.2: {} - clsx@2.0.0: {} color-convert@1.9.3: @@ -12631,8 +12980,6 @@ snapshots: color-convert: 2.0.1 color-string: 1.9.1 - colorette@1.4.0: {} - combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -12755,8 +13102,6 @@ snapshots: crypto-js@4.2.0: {} - crypto-random-string@1.0.0: {} - crypto-random-string@2.0.0: {} css-color-keywords@1.0.0: {} @@ -12790,8 +13135,6 @@ snapshots: csstype@3.1.3: {} - dag-map@1.0.2: {} - damerau-levenshtein@1.0.8: {} data-uri-to-buffer@3.0.1: {} @@ -12818,8 +13161,6 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.1 - dayjs@1.11.12: {} - de-indent@1.0.2: {} debug@2.6.9: @@ -12834,8 +13175,6 @@ snapshots: dependencies: ms: 2.1.2 - decamelize@1.2.0: {} - decode-uri-component@0.2.2: {} deep-eql@4.1.4: @@ -13004,6 +13343,8 @@ snapshots: ee-first@1.1.1: {} + electron-to-chromium@1.5.56: {} + electron-to-chromium@1.5.6: {} eme-encryption-scheme-polyfill@2.1.5: {} @@ -13014,6 +13355,8 @@ snapshots: encodeurl@1.0.2: {} + encodeurl@2.0.0: {} + end-of-stream@1.4.4: dependencies: once: 1.4.0 @@ -13038,8 +13381,6 @@ snapshots: env-paths@2.2.1: {} - envinfo@7.13.0: {} - eol@0.9.1: {} error-ex@1.3.2: @@ -13054,6 +13395,7 @@ snapshots: dependencies: accepts: 1.3.8 escape-html: 1.0.3 + optional: true es-abstract@1.23.3: dependencies: @@ -13159,17 +13501,17 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 - esbuild-plugin-es5@2.1.1(esbuild@0.23.0): + esbuild-plugin-es5@2.1.1(esbuild@0.24.0): dependencies: - '@swc/core': 1.7.10(@swc/helpers@0.5.12) + '@swc/core': 1.9.2(@swc/helpers@0.5.12) '@swc/helpers': 0.5.12 deepmerge: 4.3.1 - esbuild: 0.23.0 + esbuild: 0.24.0 - esbuild-register@3.6.0(esbuild@0.23.0): + esbuild-register@3.6.0(esbuild@0.24.0): dependencies: debug: 4.3.6 - esbuild: 0.23.0 + esbuild: 0.24.0 transitivePeerDependencies: - supports-color @@ -13199,34 +13541,34 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.23.0: + esbuild@0.24.0: optionalDependencies: - '@esbuild/aix-ppc64': 0.23.0 - '@esbuild/android-arm': 0.23.0 - '@esbuild/android-arm64': 0.23.0 - '@esbuild/android-x64': 0.23.0 - '@esbuild/darwin-arm64': 0.23.0 - '@esbuild/darwin-x64': 0.23.0 - '@esbuild/freebsd-arm64': 0.23.0 - '@esbuild/freebsd-x64': 0.23.0 - '@esbuild/linux-arm': 0.23.0 - '@esbuild/linux-arm64': 0.23.0 - '@esbuild/linux-ia32': 0.23.0 - '@esbuild/linux-loong64': 0.23.0 - '@esbuild/linux-mips64el': 0.23.0 - '@esbuild/linux-ppc64': 0.23.0 - '@esbuild/linux-riscv64': 0.23.0 - '@esbuild/linux-s390x': 0.23.0 - '@esbuild/linux-x64': 0.23.0 - '@esbuild/netbsd-x64': 0.23.0 - '@esbuild/openbsd-arm64': 0.23.0 - '@esbuild/openbsd-x64': 0.23.0 - '@esbuild/sunos-x64': 0.23.0 - '@esbuild/win32-arm64': 0.23.0 - '@esbuild/win32-ia32': 0.23.0 - '@esbuild/win32-x64': 0.23.0 - - escalade@3.1.2: {} + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 + + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -13504,190 +13846,237 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - expo-alternate-app-icons@0.1.9(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + expo-alternate-app-icons@1.1.0(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) - expo-application@5.9.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-application@6.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - expo-asset@10.0.10(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-asset@11.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) - expo-constants: 16.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + '@expo/image-utils': 0.6.3 + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + expo-constants: 17.0.3(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)) invariant: 2.2.4 md5-file: 3.2.3 + react: 18.3.1 + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) transitivePeerDependencies: - supports-color - expo-av@14.0.6(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-av@15.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-web@0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + react-native-web: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - expo-brightness@12.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-brightness@13.0.2(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) - expo-build-properties@0.12.5(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-build-properties@0.13.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)): dependencies: ajv: 8.17.1 - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) semver: 7.6.3 - expo-clipboard@6.0.3(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-clipboard@7.0.0(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) - expo-constants@16.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-constants@17.0.3(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)): dependencies: - '@expo/config': 9.0.3 - '@expo/env': 0.3.0 - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + '@expo/config': 10.0.4 + '@expo/env': 0.4.0 + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) transitivePeerDependencies: - supports-color - expo-file-system@17.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-file-system@18.0.3(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) + web-streams-polyfill: 3.3.3 - expo-font@12.0.9(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-font@13.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react@18.3.1): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) fontfaceobserver: 2.3.0 + react: 18.3.1 - expo-haptics@13.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-haptics@14.0.0(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) - expo-keep-awake@13.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-keep-awake@14.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react@18.3.1): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react: 18.3.1 - expo-linear-gradient@13.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-linear-gradient@14.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) - expo-linking@6.3.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-linking@7.0.2(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: - expo-constants: 16.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) + expo-constants: 17.0.3(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)) invariant: 2.2.4 + react: 18.3.1 + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) transitivePeerDependencies: - expo - supports-color - expo-media-library@16.0.4(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-media-library@17.0.2(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) - expo-modules-autolinking@1.11.1: + expo-modules-autolinking@2.0.2: dependencies: + '@expo/spawn-async': 1.7.2 chalk: 4.1.2 commander: 7.2.0 fast-glob: 3.3.2 find-up: 5.0.0 fs-extra: 9.1.0 + require-from-string: 2.0.2 + resolve-from: 5.0.0 - expo-modules-core@1.12.20: + expo-modules-core@2.0.3: dependencies: invariant: 2.2.4 - expo-navigation-bar@3.0.7(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-navigation-bar@4.0.3(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: - '@react-native/normalize-colors': 0.74.85 + '@react-native/normalize-colors': 0.76.2 debug: 4.3.6 - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) transitivePeerDependencies: - supports-color - expo-network@6.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-network@7.0.0(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react@18.3.1): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react: 18.3.1 expo-pod-pinner@1.0.1: {} - expo-router@3.5.21(ga2zmoy2dqxl2qdy4qnq4p4acq): + expo-router@4.0.6(rhni4cslmyckepb37nzlik3fdy): dependencies: - '@expo/metro-runtime': 3.2.1(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1)) - '@expo/server': 0.4.4(typescript@5.5.4) + '@expo/metro-runtime': 4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)) + '@expo/server': 0.5.0(typescript@5.5.4) '@radix-ui/react-slot': 1.0.1(react@18.3.1) - '@react-navigation/bottom-tabs': 6.5.20(@react-navigation/native@6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-screens@3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@react-navigation/native': 6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@react-navigation/native-stack': 6.9.26(@react-navigation/native@6.1.18(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-screens@3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) - expo-constants: 16.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) - expo-linking: 6.3.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) - expo-splash-screen: 0.27.5(expo-modules-autolinking@1.11.1)(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) - expo-status-bar: 1.12.1 + '@react-navigation/bottom-tabs': 7.0.1(@react-navigation/native@7.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-screens@4.1.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@react-navigation/native': 7.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@react-navigation/native-stack': 7.0.0(@react-navigation/native@7.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-screens@4.1.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + client-only: 0.0.1 + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + expo-constants: 17.0.3(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)) + expo-linking: 7.0.2(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-native-helmet-async: 2.0.4(react@18.3.1) - react-native-safe-area-context: 4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - react-native-screens: 3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-is-edge-to-edge: 1.1.6(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react-native-safe-area-context: 4.12.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react-native-screens: 4.1.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) schema-utils: 4.2.0 + semver: 7.6.3 + server-only: 0.0.1 optionalDependencies: - react-native-reanimated: 3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-reanimated: 3.16.1(@babel/core@7.25.2)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - - encoding - - expo-modules-autolinking + - '@react-native-masked-view/masked-view' - react + - react-dom - react-native - supports-color - typescript - expo-screen-orientation@7.0.5(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-screen-orientation@8.0.0(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) - expo-splash-screen@0.27.5(expo-modules-autolinking@1.11.1)(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-splash-screen@0.29.11(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)): dependencies: - '@expo/prebuild-config': 7.0.6(expo-modules-autolinking@1.11.1) - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + '@expo/prebuild-config': 8.0.17 + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - - encoding - - expo-modules-autolinking - supports-color - expo-status-bar@1.12.1: {} + expo-status-bar@2.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) - expo-system-ui@3.0.7(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-system-ui@4.0.3(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-web@0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)): dependencies: - '@react-native/normalize-colors': 0.74.85 + '@react-native/normalize-colors': 0.76.2 debug: 4.3.6 - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) + optionalDependencies: + react-native-web: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - supports-color - expo-video@1.2.4(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-video@2.0.0(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react: 18.3.1 + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) - expo-web-browser@13.0.3(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))): + expo-web-browser@14.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)): dependencies: - expo: 51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) - expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)): + expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.25.0 - '@expo/cli': 0.18.28(expo-modules-autolinking@1.11.1) - '@expo/config': 9.0.3 - '@expo/config-plugins': 8.0.8 - '@expo/metro-config': 0.18.11 - '@expo/vector-icons': 14.0.2 - babel-preset-expo: 11.0.13(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) - expo-asset: 10.0.10(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) - expo-file-system: 17.0.1(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) - expo-font: 12.0.9(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) - expo-keep-awake: 13.0.2(expo@51.0.26(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))) - expo-modules-autolinking: 1.11.1 - expo-modules-core: 1.12.20 + '@expo/cli': 0.21.5(graphql@15.8.0) + '@expo/config': 10.0.4 + '@expo/config-plugins': 9.0.9 + '@expo/fingerprint': 0.11.2 + '@expo/metro-config': 0.19.4 + '@expo/vector-icons': 14.0.4 + babel-preset-expo: 12.0.1(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + expo-asset: 11.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + expo-constants: 17.0.3(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)) + expo-file-system: 18.0.3(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)) + expo-font: 13.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react@18.3.1) + expo-keep-awake: 14.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react@18.3.1) + expo-modules-autolinking: 2.0.2 + expo-modules-core: 2.0.3 fbemitter: 3.0.0 + react: 18.3.1 + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) + web-streams-polyfill: 3.3.3 whatwg-url-without-unicode: 8.0.0-3 + optionalDependencies: + '@expo/metro-runtime': 4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)) transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' + - babel-plugin-react-compiler - bufferutil - encoding + - graphql + - react-compiler-runtime - supports-color - utf-8-validate @@ -13731,10 +14120,6 @@ snapshots: fast-uri@3.0.1: {} - fast-xml-parser@4.4.1: - dependencies: - strnum: 1.0.5 - fastq@1.17.1: dependencies: reusify: 1.0.4 @@ -13774,10 +14159,10 @@ snapshots: fetch-retry@4.1.1: {} - ffmpeg-kit-react-native@6.0.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + ffmpeg-kit-react-native@6.0.2(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) figures@3.2.0: dependencies: @@ -13982,6 +14367,8 @@ snapshots: get-nonce@1.0.1: {} + get-package-type@0.1.0: {} + get-port@3.2.0: {} get-stream@4.1.0: @@ -14034,15 +14421,6 @@ snapshots: package-json-from-dist: 1.0.0 path-scurry: 1.11.1 - glob@7.1.6: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -14111,12 +14489,8 @@ snapshots: graphemer@1.4.0: {} - graphql-tag@2.12.6(graphql@15.8.0): - dependencies: - graphql: 15.8.0 - tslib: 2.6.3 - - graphql@15.8.0: {} + graphql@15.8.0: + optional: true handlebars@4.7.8: dependencies: @@ -14156,21 +14530,29 @@ snapshots: no-case: 2.3.2 upper-case: 1.1.3 - hermes-estree@0.19.1: {} - hermes-estree@0.23.0: {} - hermes-parser@0.19.1: - dependencies: - hermes-estree: 0.19.1 + hermes-estree@0.23.1: {} + + hermes-estree@0.24.0: {} + + hermes-estree@0.25.1: {} hermes-parser@0.23.0: dependencies: hermes-estree: 0.23.0 - hermes-profile-transformer@0.0.6: + hermes-parser@0.23.1: dependencies: - source-map: 0.7.4 + hermes-estree: 0.23.1 + + hermes-parser@0.24.0: + dependencies: + hermes-estree: 0.24.0 + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 hey-listen@1.0.8: {} @@ -14184,6 +14566,10 @@ snapshots: dependencies: lru-cache: 6.0.0 + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + html-escaper@2.0.2: {} htmlparser2@8.0.2: @@ -14208,13 +14594,6 @@ snapshots: transitivePeerDependencies: - supports-color - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.3.6 - transitivePeerDependencies: - - supports-color - https-proxy-agent@7.0.5: dependencies: agent-base: 7.1.1 @@ -14381,36 +14760,24 @@ snapshots: is-docker@2.2.1: {} - is-extglob@1.0.0: {} - is-extglob@2.1.1: {} is-finalizationregistry@1.0.2: dependencies: call-bind: 1.0.7 - is-fullwidth-code-point@2.0.0: {} - is-fullwidth-code-point@3.0.0: {} is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.2 - is-glob@2.0.1: - dependencies: - is-extglob: 1.0.0 - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 is-interactive@1.0.0: {} - is-invalid-path@0.1.0: - dependencies: - is-glob: 2.0.1 - is-lower-case@1.1.3: dependencies: lower-case: 1.1.4 @@ -14470,10 +14837,6 @@ snapshots: dependencies: upper-case: 1.1.3 - is-valid-path@0.1.1: - dependencies: - is-invalid-path: 0.1.0 - is-weakmap@2.0.2: {} is-weakref@1.0.2: @@ -14485,7 +14848,8 @@ snapshots: call-bind: 1.0.7 get-intrinsic: 1.2.4 - is-wsl@1.1.0: {} + is-wsl@1.1.0: + optional: true is-wsl@2.2.0: dependencies: @@ -14505,6 +14869,16 @@ snapshots: istanbul-lib-coverage@3.2.2: {} + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.25.2 + '@babel/parser': 7.26.2 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.2 @@ -14551,9 +14925,25 @@ snapshots: jest-get-type@29.6.3: {} + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 22.2.0 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.7 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.24.7 + '@babel/code-frame': 7.26.2 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -14569,6 +14959,8 @@ snapshots: '@types/node': 22.2.0 jest-util: 29.7.0 + jest-regex-util@29.6.3: {} + jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -14600,14 +14992,6 @@ snapshots: jju@1.4.0: {} - joi@17.13.3: - dependencies: - '@hapi/hoek': 9.3.0 - '@hapi/topo': 5.1.0 - '@sideway/address': 4.1.5 - '@sideway/formula': 3.0.1 - '@sideway/pinpoint': 2.0.0 - join-component@1.1.0: {} js-tokens@4.0.0: {} @@ -14632,7 +15016,7 @@ snapshots: jscodeshift@0.14.0(@babel/preset-env@7.25.3(@babel/core@7.25.2)): dependencies: '@babel/core': 7.25.2 - '@babel/parser': 7.25.3 + '@babel/parser': 7.26.2 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) @@ -14658,23 +15042,14 @@ snapshots: jsesc@2.5.2: {} + jsesc@3.0.2: {} + json-buffer@3.0.1: {} json-parse-better-errors@1.0.2: {} json-parse-even-better-errors@2.3.1: {} - json-schema-deref-sync@0.13.0: - dependencies: - clone: 2.1.2 - dag-map: 1.0.2 - is-valid-path: 0.1.1 - lodash: 4.17.21 - md5: 2.2.1 - memory-cache: 0.2.0 - traverse: 0.6.9 - valid-url: 1.0.9 - json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -14736,69 +15111,62 @@ snapshots: transitivePeerDependencies: - supports-color - lightningcss-darwin-arm64@1.19.0: - optional: true - lightningcss-darwin-arm64@1.22.0: optional: true - lightningcss-darwin-x64@1.19.0: + lightningcss-darwin-arm64@1.27.0: optional: true lightningcss-darwin-x64@1.22.0: optional: true + lightningcss-darwin-x64@1.27.0: + optional: true + lightningcss-freebsd-x64@1.22.0: optional: true - lightningcss-linux-arm-gnueabihf@1.19.0: + lightningcss-freebsd-x64@1.27.0: optional: true lightningcss-linux-arm-gnueabihf@1.22.0: optional: true - lightningcss-linux-arm64-gnu@1.19.0: + lightningcss-linux-arm-gnueabihf@1.27.0: optional: true lightningcss-linux-arm64-gnu@1.22.0: optional: true - lightningcss-linux-arm64-musl@1.19.0: + lightningcss-linux-arm64-gnu@1.27.0: optional: true lightningcss-linux-arm64-musl@1.22.0: optional: true - lightningcss-linux-x64-gnu@1.19.0: + lightningcss-linux-arm64-musl@1.27.0: optional: true lightningcss-linux-x64-gnu@1.22.0: optional: true - lightningcss-linux-x64-musl@1.19.0: + lightningcss-linux-x64-gnu@1.27.0: optional: true lightningcss-linux-x64-musl@1.22.0: optional: true - lightningcss-win32-x64-msvc@1.19.0: + lightningcss-linux-x64-musl@1.27.0: + optional: true + + lightningcss-win32-arm64-msvc@1.27.0: optional: true lightningcss-win32-x64-msvc@1.22.0: optional: true - lightningcss@1.19.0: - dependencies: - detect-libc: 1.0.3 - optionalDependencies: - lightningcss-darwin-arm64: 1.19.0 - lightningcss-darwin-x64: 1.19.0 - lightningcss-linux-arm-gnueabihf: 1.19.0 - lightningcss-linux-arm64-gnu: 1.19.0 - lightningcss-linux-arm64-musl: 1.19.0 - lightningcss-linux-x64-gnu: 1.19.0 - lightningcss-linux-x64-musl: 1.19.0 - lightningcss-win32-x64-msvc: 1.19.0 + lightningcss-win32-x64-msvc@1.27.0: + optional: true lightningcss@1.22.0: dependencies: @@ -14814,6 +15182,21 @@ snapshots: lightningcss-linux-x64-musl: 1.22.0 lightningcss-win32-x64-msvc: 1.22.0 + lightningcss@1.27.0: + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.27.0 + lightningcss-darwin-x64: 1.27.0 + lightningcss-freebsd-x64: 1.27.0 + lightningcss-linux-arm-gnueabihf: 1.27.0 + lightningcss-linux-arm64-gnu: 1.27.0 + lightningcss-linux-arm64-musl: 1.27.0 + lightningcss-linux-x64-gnu: 1.27.0 + lightningcss-linux-x64-musl: 1.27.0 + lightningcss-win32-arm64-msvc: 1.27.0 + lightningcss-win32-x64-msvc: 1.27.0 + lilconfig@2.1.0: {} lilconfig@3.1.2: {} @@ -14871,12 +15254,6 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 - logkitty@0.7.1: - dependencies: - ansi-fragments: 0.2.1 - dayjs: 1.11.12 - yargs: 15.4.1 - loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 @@ -14909,8 +15286,8 @@ snapshots: magicast@0.3.4: dependencies: - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 source-map-js: 1.2.0 make-dir@2.1.0: @@ -14946,20 +15323,12 @@ snapshots: dependencies: buffer-alloc: 1.2.0 - md5@2.2.1: - dependencies: - charenc: 0.0.2 - crypt: 0.0.2 - is-buffer: 1.1.6 - md5@2.3.0: dependencies: charenc: 0.0.2 crypt: 0.0.2 is-buffer: 1.1.6 - md5hex@1.0.0: {} - mdn-data@2.0.14: {} mdurl@1.0.1: {} @@ -14968,8 +15337,6 @@ snapshots: memoize-one@6.0.0: {} - memory-cache@0.2.0: {} - merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -14983,16 +15350,35 @@ snapshots: transitivePeerDependencies: - supports-color + metro-babel-transformer@0.81.0: + dependencies: + '@babel/core': 7.25.2 + flow-enums-runtime: 0.0.6 + hermes-parser: 0.24.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + metro-cache-key@0.80.10: dependencies: flow-enums-runtime: 0.0.6 + metro-cache-key@0.81.0: + dependencies: + flow-enums-runtime: 0.0.6 + metro-cache@0.80.10: dependencies: exponential-backoff: 3.1.1 flow-enums-runtime: 0.0.6 metro-core: 0.80.10 + metro-cache@0.81.0: + dependencies: + exponential-backoff: 3.1.1 + flow-enums-runtime: 0.0.6 + metro-core: 0.81.0 + metro-config@0.80.10: dependencies: connect: 3.7.0 @@ -15009,11 +15395,32 @@ snapshots: - supports-color - utf-8-validate - metro-core@0.80.10: + metro-config@0.81.0: + dependencies: + connect: 3.7.0 + cosmiconfig: 5.2.1 + flow-enums-runtime: 0.0.6 + jest-validate: 29.7.0 + metro: 0.81.0 + metro-cache: 0.81.0 + metro-core: 0.81.0 + metro-runtime: 0.81.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + metro-core@0.80.10: + dependencies: + flow-enums-runtime: 0.0.6 + lodash.throttle: 4.1.1 + metro-resolver: 0.80.10 + + metro-core@0.81.0: dependencies: flow-enums-runtime: 0.0.6 lodash.throttle: 4.1.1 - metro-resolver: 0.80.10 + metro-resolver: 0.81.0 metro-file-map@0.80.10: dependencies: @@ -15033,24 +15440,56 @@ snapshots: transitivePeerDependencies: - supports-color + metro-file-map@0.81.0: + dependencies: + anymatch: 3.1.3 + debug: 2.6.9 + fb-watchman: 2.0.2 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-worker: 29.7.0 + micromatch: 4.0.7 + node-abort-controller: 3.1.1 + nullthrows: 1.1.1 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + transitivePeerDependencies: + - supports-color + metro-minify-terser@0.80.10: dependencies: flow-enums-runtime: 0.0.6 terser: 5.31.6 + metro-minify-terser@0.81.0: + dependencies: + flow-enums-runtime: 0.0.6 + terser: 5.31.6 + metro-resolver@0.80.10: dependencies: flow-enums-runtime: 0.0.6 + metro-resolver@0.81.0: + dependencies: + flow-enums-runtime: 0.0.6 + metro-runtime@0.80.10: dependencies: '@babel/runtime': 7.25.0 flow-enums-runtime: 0.0.6 + metro-runtime@0.81.0: + dependencies: + '@babel/runtime': 7.25.0 + flow-enums-runtime: 0.0.6 + metro-source-map@0.80.10: dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 flow-enums-runtime: 0.0.6 invariant: 2.2.4 metro-symbolicate: 0.80.10 @@ -15061,6 +15500,21 @@ snapshots: transitivePeerDependencies: - supports-color + metro-source-map@0.81.0: + dependencies: + '@babel/traverse': 7.25.9 + '@babel/traverse--for-generate-function-map': '@babel/traverse@7.25.9' + '@babel/types': 7.26.0 + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-symbolicate: 0.81.0 + nullthrows: 1.1.1 + ob1: 0.81.0 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + metro-symbolicate@0.80.10: dependencies: flow-enums-runtime: 0.0.6 @@ -15073,12 +15527,35 @@ snapshots: transitivePeerDependencies: - supports-color + metro-symbolicate@0.81.0: + dependencies: + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-source-map: 0.81.0 + nullthrows: 1.1.1 + source-map: 0.5.7 + through2: 2.0.5 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + metro-transform-plugins@0.80.10: dependencies: '@babel/core': 7.25.2 - '@babel/generator': 7.25.0 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 + '@babel/generator': 7.26.2 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + flow-enums-runtime: 0.0.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + metro-transform-plugins@0.81.0: + dependencies: + '@babel/core': 7.25.2 + '@babel/generator': 7.26.2 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: @@ -15087,9 +15564,9 @@ snapshots: metro-transform-worker@0.80.10: dependencies: '@babel/core': 7.25.2 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 flow-enums-runtime: 0.0.6 metro: 0.80.10 metro-babel-transformer: 0.80.10 @@ -15105,15 +15582,35 @@ snapshots: - supports-color - utf-8-validate + metro-transform-worker@0.81.0: + dependencies: + '@babel/core': 7.25.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + flow-enums-runtime: 0.0.6 + metro: 0.81.0 + metro-babel-transformer: 0.81.0 + metro-cache: 0.81.0 + metro-cache-key: 0.81.0 + metro-minify-terser: 0.81.0 + metro-source-map: 0.81.0 + metro-transform-plugins: 0.81.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + metro@0.80.10: dependencies: - '@babel/code-frame': 7.24.7 + '@babel/code-frame': 7.26.2 '@babel/core': 7.25.2 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.3 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 accepts: 1.3.8 chalk: 4.1.2 ci-info: 2.0.0 @@ -15156,6 +15653,55 @@ snapshots: - supports-color - utf-8-validate + metro@0.81.0: + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/core': 7.25.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + accepts: 1.3.8 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 2.6.9 + denodeify: 1.2.1 + error-stack-parser: 2.1.4 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + hermes-parser: 0.24.0 + image-size: 1.1.1 + invariant: 2.2.4 + jest-worker: 29.7.0 + jsc-safe-url: 0.2.4 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.81.0 + metro-cache: 0.81.0 + metro-cache-key: 0.81.0 + metro-config: 0.81.0 + metro-core: 0.81.0 + metro-file-map: 0.81.0 + metro-resolver: 0.81.0 + metro-runtime: 0.81.0 + metro-source-map: 0.81.0 + metro-symbolicate: 0.81.0 + metro-transform-plugins: 0.81.0 + metro-transform-worker: 0.81.0 + mime-types: 2.1.35 + nullthrows: 1.1.1 + serialize-error: 2.1.0 + source-map: 0.5.7 + strip-ansi: 6.0.1 + throat: 5.0.0 + ws: 7.5.10 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + micromatch@4.0.7: dependencies: braces: 3.0.3 @@ -15171,7 +15717,8 @@ snapshots: mime@1.6.0: {} - mime@2.6.0: {} + mime@2.6.0: + optional: true mimic-fn@1.2.0: {} @@ -15241,10 +15788,10 @@ snapshots: pkg-types: 1.1.3 ufo: 1.5.4 - moti@0.29.0(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react@18.3.1): + moti@0.29.0(react-dom@18.3.1(react@18.3.1))(react-native-reanimated@3.16.1(@babel/core@7.25.2)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react@18.3.1): dependencies: framer-motion: 6.5.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-native-reanimated: 3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-reanimated: 3.16.1(@babel/core@7.25.2)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - react - react-dom @@ -15287,7 +15834,8 @@ snapshots: dependencies: lower-case: 1.1.4 - nocache@3.0.4: {} + nocache@3.0.4: + optional: true node-abort-controller@3.1.1: {} @@ -15327,10 +15875,15 @@ snapshots: node-releases@2.0.18: {} - node-stream-zip@1.15.0: {} - normalize-path@3.0.0: {} + npm-package-arg@11.0.3: + dependencies: + hosted-git-info: 7.0.2 + proc-log: 4.2.0 + semver: 7.6.3 + validate-npm-package-name: 5.0.1 + npm-package-arg@7.0.0: dependencies: hosted-git-info: 3.0.8 @@ -15360,6 +15913,10 @@ snapshots: dependencies: flow-enums-runtime: 0.0.6 + ob1@0.81.0: + dependencies: + flow-enums-runtime: 0.0.6 + object-assign@4.1.1: {} object-hash@3.0.0: {} @@ -15434,6 +15991,7 @@ snapshots: open@6.4.0: dependencies: is-wsl: 1.1.0 + optional: true open@7.4.2: dependencies: @@ -15569,7 +16127,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.24.7 + '@babel/code-frame': 7.26.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -15632,10 +16190,10 @@ snapshots: pend@1.2.0: {} - performant-array-to-tree@1.11.0: {} - picocolors@1.0.1: {} + picocolors@1.1.1: {} + picomatch@2.3.1: {} picomatch@3.0.1: {} @@ -15697,13 +16255,13 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.41 - postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)): + postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)): dependencies: lilconfig: 3.1.2 yaml: 2.5.0 optionalDependencies: postcss: 8.4.41 - ts-node: 10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4) + ts-node: 10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4) postcss-nested@6.2.0(postcss@8.4.41): dependencies: @@ -15720,7 +16278,7 @@ snapshots: postcss@8.4.41: dependencies: nanoid: 3.3.7 - picocolors: 1.0.1 + picocolors: 1.1.1 source-map-js: 1.2.0 prelude-ls@1.2.1: {} @@ -15747,6 +16305,7 @@ snapshots: ansi-regex: 5.0.1 ansi-styles: 4.3.0 react-is: 17.0.2 + optional: true pretty-format@29.7.0: dependencies: @@ -15754,6 +16313,8 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 + proc-log@4.2.0: {} + process-nextick-args@2.0.1: {} process@0.11.10: {} @@ -15834,8 +16395,6 @@ snapshots: split-on-first: 1.1.0 strict-uri-encode: 2.0.0 - querystring@0.2.1: {} - queue-lit@1.5.2: {} queue-microtask@1.2.3: {} @@ -15879,30 +16438,37 @@ snapshots: dependencies: react: 18.3.1 + react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@babel/runtime': 7.25.0 + invariant: 2.2.4 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-fast-compare: 3.2.2 + shallowequal: 1.1.0 + react-is@16.13.1: {} - react-is@17.0.2: {} + react-is@17.0.2: + optional: true react-is@18.3.1: {} - react-native-animatable@1.3.3: - dependencies: - prop-types: 15.8.1 - - react-native-css-interop@0.0.34(@babel/core@7.25.2)(react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native-svg@15.5.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4))): + react-native-css-interop@0.0.34(@babel/core@7.25.2)(react-native-reanimated@3.16.1(@babel/core@7.25.2)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-safe-area-context@4.12.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-svg@15.8.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)(tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4))): dependencies: '@babel/helper-module-imports': 7.24.7 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 babel-plugin-tester: 11.0.4(@babel/core@7.25.2) lightningcss: 1.22.0 react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) - react-native-reanimated: 3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - tailwindcss: 3.4.10(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) + react-native-reanimated: 3.16.1(@babel/core@7.25.2)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + tailwindcss: 3.4.10(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)) optionalDependencies: - react-native-safe-area-context: 4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - react-native-svg: 15.5.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + react-native-safe-area-context: 4.12.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + react-native-svg: 15.8.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@babel/core' - supports-color @@ -15911,14 +16477,14 @@ snapshots: dependencies: prop-types: 15.8.1 - react-native-gesture-handler@2.18.1(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + react-native-gesture-handler@2.20.2(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: '@egjs/hammerjs': 2.0.17 hoist-non-react-statics: 3.3.2 invariant: 2.2.4 prop-types: 15.8.1 react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) react-native-helmet-async@2.0.4(react@18.3.1): dependencies: @@ -15927,49 +16493,47 @@ snapshots: react-fast-compare: 3.2.2 shallowequal: 1.1.0 - react-native-markdown-display@7.0.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + react-native-is-edge-to-edge@1.1.6(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): + dependencies: + react: 18.3.1 + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) + + react-native-markdown-display@7.0.2(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: css-to-react-native: 3.2.0 markdown-it: 10.0.0 prop-types: 15.8.1 react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) react-native-fit-image: 1.5.5 - react-native-mmkv@2.12.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): - dependencies: - react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) - - react-native-modal@13.0.1(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + react-native-mmkv@3.1.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: - prop-types: 15.8.1 react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) - react-native-animatable: 1.3.3 + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) - react-native-quick-base64@2.1.2(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + react-native-quick-base64@2.1.2(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: base64-js: 1.5.1 react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) - react-native-quick-crypto@0.7.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + react-native-quick-crypto@0.7.6(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: - '@craftzdog/react-native-buffer': 6.0.5(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@craftzdog/react-native-buffer': 6.0.5(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) events: 3.3.0 react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) readable-stream: 4.5.2 string_decoder: 1.3.0 util: 0.12.5 - react-native-reanimated@3.15.0(@babel/core@7.25.2)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + react-native-reanimated@3.16.1(@babel/core@7.25.2)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.25.2) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.25.2) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.25.2) '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) @@ -15979,28 +16543,28 @@ snapshots: convert-source-map: 2.0.0 invariant: 2.2.4 react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) transitivePeerDependencies: - supports-color - react-native-safe-area-context@4.10.8(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + react-native-safe-area-context@4.12.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) - react-native-screens@3.34.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + react-native-screens@4.1.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 react-freeze: 1.0.4(react@18.3.1) - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) warn-once: 0.1.1 - react-native-svg@15.5.0(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): + react-native-svg@15.8.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: css-select: 5.1.0 css-tree: 1.1.3 react: 18.3.1 - react-native: 0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1) + react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) warn-once: 0.1.1 react-native-video@5.2.1: @@ -16010,26 +16574,7 @@ snapshots: prop-types: 15.8.1 shaka-player: 2.5.23 - react-native-web-internals@1.108.3: - dependencies: - '@tamagui/normalize-css-color': 1.108.3 - '@tamagui/react-native-use-pressable': 1.108.3(react@18.3.1) - '@tamagui/react-native-use-responder-events': 1.108.3(react@18.3.1) - '@tamagui/simple-hash': 1.108.3 - react: 18.3.1 - styleq: 0.1.3 - - react-native-web-lite@1.108.3(react@18.3.1): - dependencies: - '@tamagui/normalize-css-color': 1.108.3 - '@tamagui/react-native-use-pressable': 1.108.3(react@18.3.1) - '@tamagui/react-native-use-responder-events': 1.108.3(react@18.3.1) - invariant: 2.2.4 - react: 18.3.1 - react-native-web-internals: 1.108.3 - styleq: 0.1.3 - - react-native-web@0.19.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-native-web@0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.25.0 '@react-native/normalize-colors': 0.74.87 @@ -16044,51 +16589,53 @@ snapshots: transitivePeerDependencies: - encoding - react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1): + react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1): dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 13.6.9 - '@react-native-community/cli-platform-android': 13.6.9 - '@react-native-community/cli-platform-ios': 13.6.9 - '@react-native/assets-registry': 0.74.87 - '@react-native/codegen': 0.74.87(@babel/preset-env@7.25.3(@babel/core@7.25.2)) - '@react-native/community-cli-plugin': 0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2)) - '@react-native/gradle-plugin': 0.74.87 - '@react-native/js-polyfills': 0.74.87 - '@react-native/normalize-colors': 0.74.87 - '@react-native/virtualized-lists': 0.74.87(@types/react@18.3.3)(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) + '@react-native/assets-registry': 0.76.2 + '@react-native/codegen': 0.76.2(@babel/preset-env@7.25.3(@babel/core@7.25.2)) + '@react-native/community-cli-plugin': 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9) + '@react-native/gradle-plugin': 0.76.2 + '@react-native/js-polyfills': 0.76.2 + '@react-native/normalize-colors': 0.76.2 + '@react-native/virtualized-lists': 0.76.2(@types/react@18.3.12)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 + babel-jest: 29.7.0(@babel/core@7.25.2) + babel-plugin-syntax-hermes-parser: 0.23.1 base64-js: 1.5.1 chalk: 4.1.2 + commander: 12.1.0 event-target-shim: 5.0.1 flow-enums-runtime: 0.0.6 + glob: 7.2.3 invariant: 2.2.4 jest-environment-node: 29.7.0 jsc-android: 250231.0.0 memoize-one: 5.2.1 - metro-runtime: 0.80.10 - metro-source-map: 0.80.10 + metro-runtime: 0.81.0 + metro-source-map: 0.81.0 mkdirp: 0.5.6 nullthrows: 1.1.1 - pretty-format: 26.6.2 + pretty-format: 29.7.0 promise: 8.3.0 react: 18.3.1 react-devtools-core: 5.3.1 react-refresh: 0.14.2 - react-shallow-renderer: 16.15.0(react@18.3.1) regenerator-runtime: 0.13.11 scheduler: 0.24.0-canary-efb381bbf-20230505 + semver: 7.6.3 stacktrace-parser: 0.1.10 whatwg-fetch: 3.6.20 ws: 6.2.3 yargs: 17.7.2 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.12 transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' + - '@react-native-community/cli-server-api' - bufferutil - encoding - supports-color @@ -16096,39 +16643,33 @@ snapshots: react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.6(@types/react@18.3.3)(react@18.3.1): + react-remove-scroll-bar@2.3.6(@types/react@18.3.12)(react@18.3.1): dependencies: react: 18.3.1 - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) tslib: 2.6.3 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.12 - react-remove-scroll@2.5.5(@types/react@18.3.3)(react@18.3.1): + react-remove-scroll@2.6.0(@types/react@18.3.12)(react@18.3.1): dependencies: react: 18.3.1 - react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) + react-remove-scroll-bar: 2.3.6(@types/react@18.3.12)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.12)(react@18.3.1) tslib: 2.6.3 - use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) + use-callback-ref: 1.3.2(@types/react@18.3.12)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.12)(react@18.3.1) optionalDependencies: - '@types/react': 18.3.3 - - react-shallow-renderer@16.15.0(react@18.3.1): - dependencies: - object-assign: 4.1.1 - react: 18.3.1 - react-is: 18.3.1 + '@types/react': 18.3.12 - react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1): + react-style-singleton@2.2.1(@types/react@18.3.12)(react@18.3.1): dependencies: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.3.1 tslib: 2.6.3 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.12 react@18.3.1: dependencies: @@ -16185,15 +16726,6 @@ snapshots: globalthis: 1.0.4 which-builtin-type: 1.1.4 - reforest@0.13.0(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1): - dependencies: - performant-array-to-tree: 1.11.0 - react: 18.3.1 - zustand: 4.5.4(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - immer - regenerate-unicode-properties@10.1.1: dependencies: regenerate: 1.4.2 @@ -16243,8 +16775,6 @@ snapshots: require-from-string@2.0.2: {} - require-main-filename@2.0.0: {} - requireg@0.2.2: dependencies: nested-error-stacks: 2.0.1 @@ -16261,6 +16791,8 @@ snapshots: resolve-pkg-maps@1.0.0: {} + resolve-workspace-root@2.0.0: {} + resolve.exports@2.0.2: {} resolve@1.19.0: @@ -16409,6 +16941,24 @@ snapshots: transitivePeerDependencies: - supports-color + send@0.19.1: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + sentence-case@2.1.1: dependencies: no-case: 2.3.2 @@ -16425,7 +16975,7 @@ snapshots: transitivePeerDependencies: - supports-color - set-blocking@2.0.0: {} + server-only@0.0.1: {} set-cookie-parser@2.7.0: {} @@ -16509,12 +17059,6 @@ snapshots: slash@4.0.0: {} - slice-ansi@2.1.0: - dependencies: - ansi-styles: 3.2.1 - astral-regex: 1.0.0 - is-fullwidth-code-point: 2.0.0 - slice-ansi@4.0.0: dependencies: ansi-styles: 4.3.0 @@ -16716,8 +17260,6 @@ snapshots: dependencies: js-tokens: 9.0.0 - strnum@1.0.5: {} - structured-headers@0.4.1: {} style-value-types@5.0.0: @@ -16729,16 +17271,6 @@ snapshots: subsrt-ts@2.1.2: {} - sucrase@3.34.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - commander: 4.1.1 - glob: 7.1.6 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 @@ -16753,7 +17285,8 @@ snapshots: sudo-prompt@9.1.1: {} - sudo-prompt@9.2.1: {} + sudo-prompt@9.2.1: + optional: true supports-color@5.5.0: dependencies: @@ -16794,7 +17327,7 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)): + tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -16809,11 +17342,11 @@ snapshots: micromatch: 4.0.7 normalize-path: 3.0.0 object-hash: 3.0.0 - picocolors: 1.0.1 + picocolors: 1.1.1 postcss: 8.4.41 postcss-import: 15.1.0(postcss@8.4.41) postcss-js: 4.0.1(postcss@8.4.41) - postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)) + postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4)) postcss-nested: 6.2.0(postcss@8.4.41) postcss-selector-parser: 6.1.2 resolve: 1.22.8 @@ -16821,64 +17354,63 @@ snapshots: transitivePeerDependencies: - ts-node - tamagui@1.108.3(@types/react@18.3.3)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1): - dependencies: - '@tamagui/accordion': 1.108.3(react@18.3.1) - '@tamagui/adapt': 1.108.3(react@18.3.1) - '@tamagui/alert-dialog': 1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/animate-presence': 1.108.3(react@18.3.1) - '@tamagui/avatar': 1.108.3(react@18.3.1) - '@tamagui/button': 1.108.3(react@18.3.1) - '@tamagui/card': 1.108.3(react@18.3.1) - '@tamagui/checkbox': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/compose-refs': 1.108.3(react@18.3.1) - '@tamagui/constants': 1.108.3(react@18.3.1) - '@tamagui/core': 1.108.3(react@18.3.1) - '@tamagui/create-context': 1.108.3(react@18.3.1) - '@tamagui/dialog': 1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/elements': 1.108.3(react@18.3.1) - '@tamagui/fake-react-native': 1.108.3 - '@tamagui/focusable': 1.108.3(react@18.3.1) - '@tamagui/font-size': 1.108.3(react@18.3.1) - '@tamagui/form': 1.108.3(react@18.3.1) - '@tamagui/get-button-sized': 1.108.3(react@18.3.1) - '@tamagui/get-font-sized': 1.108.3(react@18.3.1) - '@tamagui/get-token': 1.108.3(react@18.3.1) - '@tamagui/group': 1.108.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) - '@tamagui/helpers-tamagui': 1.108.3(react@18.3.1) - '@tamagui/image': 1.108.3(react@18.3.1) - '@tamagui/label': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/linear-gradient': 1.108.3(react@18.3.1) - '@tamagui/list-item': 1.108.3(react@18.3.1) - '@tamagui/polyfill-dev': 1.108.3 - '@tamagui/popover': 1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/popper': 1.108.3(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/portal': 1.108.3(react@18.3.1) - '@tamagui/progress': 1.108.3(react@18.3.1) - '@tamagui/radio-group': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/react-native-media-driver': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/scroll-view': 1.108.3(react@18.3.1) - '@tamagui/select': 1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/separator': 1.108.3(react@18.3.1) - '@tamagui/shapes': 1.108.3(react@18.3.1) - '@tamagui/sheet': 1.108.3(@types/react@18.3.3)(react@18.3.1) - '@tamagui/slider': 1.108.3(react@18.3.1) - '@tamagui/stacks': 1.108.3(react@18.3.1) - '@tamagui/switch': 1.108.3(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/tabs': 1.108.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) - '@tamagui/text': 1.108.3(react@18.3.1) - '@tamagui/theme': 1.108.3(react@18.3.1) - '@tamagui/toggle-group': 1.108.3(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1) - '@tamagui/tooltip': 1.108.3(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@types/react@18.3.3)(react@18.3.1))(react@18.3.1) - '@tamagui/use-controllable-state': 1.108.3(react@18.3.1) - '@tamagui/use-debounce': 1.108.3(react@18.3.1) - '@tamagui/use-force-update': 1.108.3(react@18.3.1) - '@tamagui/use-window-dimensions': 1.108.3(react@18.3.1) - '@tamagui/visually-hidden': 1.108.3(react@18.3.1) + tamagui@1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): + dependencies: + '@tamagui/accordion': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/adapt': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/alert-dialog': 1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/animate-presence': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/avatar': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/button': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/card': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/checkbox': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/compose-refs': 1.116.15(react@18.3.1) + '@tamagui/constants': 1.116.15(react@18.3.1) + '@tamagui/core': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/create-context': 1.116.15(react@18.3.1) + '@tamagui/dialog': 1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/elements': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/fake-react-native': 1.116.15 + '@tamagui/focusable': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/font-size': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/form': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/get-button-sized': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/get-font-sized': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/get-token': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/group': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/helpers-tamagui': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/image': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/label': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/linear-gradient': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/list-item': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/polyfill-dev': 1.116.15 + '@tamagui/popover': 1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/popper': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/portal': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/progress': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/radio-group': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/react-native-media-driver': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/scroll-view': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/select': 1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/separator': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/shapes': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/sheet': 1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/slider': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/stacks': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/switch': 1.116.15(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/tabs': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/text': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/theme': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/toggle-group': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tamagui/tooltip': 1.116.15(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + '@tamagui/use-controllable-state': 1.116.15(react@18.3.1) + '@tamagui/use-debounce': 1.116.15(react@18.3.1) + '@tamagui/use-force-update': 1.116.15(react@18.3.1) + '@tamagui/use-window-dimensions': 1.116.15(react@18.3.1) + '@tamagui/visually-hidden': 1.116.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 transitivePeerDependencies: - '@types/react' - - immer - react-dom - react-native @@ -16907,20 +17439,12 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - temp-dir@1.0.0: {} - temp-dir@2.0.0: {} temp@0.8.4: dependencies: rimraf: 2.6.3 - tempy@0.3.0: - dependencies: - temp-dir: 1.0.0 - type-fest: 0.3.1 - unique-string: 1.0.0 - tempy@0.7.1: dependencies: del: 6.1.1 @@ -17012,19 +17536,13 @@ snapshots: tr46@0.0.3: {} - traverse@0.6.9: - dependencies: - gopd: 1.0.1 - typedarray.prototype.slice: 1.0.3 - which-typed-array: 1.1.15 - ts-api-utils@1.3.0(typescript@5.5.4): dependencies: typescript: 5.5.4 ts-interface-checker@0.1.13: {} - ts-node@10.9.2(@swc/core@1.7.10(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4): + ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.12))(@types/node@22.2.0)(typescript@5.5.4): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -17042,7 +17560,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.7.10(@swc/helpers@0.5.12) + '@swc/core': 1.9.2(@swc/helpers@0.5.12) tsc-alias@1.8.10: dependencies: @@ -17082,7 +17600,7 @@ snapshots: turbo-linux-arm64@1.13.4: optional: true - turbo-stream@2.2.0: {} + turbo-stream@2.4.0: {} turbo-windows-64@1.13.4: optional: true @@ -17113,8 +17631,6 @@ snapshots: type-fest@0.21.3: {} - type-fest@0.3.1: {} - type-fest@0.7.1: {} type-fest@3.13.1: {} @@ -17151,19 +17667,12 @@ snapshots: is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - typedarray.prototype.slice@1.0.3: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - typed-array-buffer: 1.0.2 - typed-array-byte-offset: 1.0.2 - typescript@5.4.2: {} typescript@5.5.4: {} + typescript@5.6.3: {} + ua-parser-js@1.0.38: {} uc.micro@1.0.6: {} @@ -17185,8 +17694,6 @@ snapshots: buffer: 5.7.1 through: 2.3.8 - undici-types@5.26.5: {} - undici-types@6.13.0: {} undici@6.19.7: {} @@ -17210,10 +17717,6 @@ snapshots: dependencies: imurmurhash: 0.1.4 - unique-string@1.0.0: - dependencies: - crypto-random-string: 1.0.0 - unique-string@2.0.0: dependencies: crypto-random-string: 2.0.0 @@ -17233,8 +17736,14 @@ snapshots: update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: browserslist: 4.23.3 - escalade: 3.1.2 - picocolors: 1.0.1 + escalade: 3.2.0 + picocolors: 1.1.1 + + update-browserslist-db@1.1.1(browserslist@4.24.2): + dependencies: + browserslist: 4.24.2 + escalade: 3.2.0 + picocolors: 1.1.1 update-check@1.5.4: dependencies: @@ -17251,33 +17760,35 @@ snapshots: dependencies: punycode: 2.3.1 - url-join@4.0.0: {} - urlpattern-polyfill@10.0.0: {} - use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1): + use-callback-ref@1.3.2(@types/react@18.3.12)(react@18.3.1): dependencies: react: 18.3.1 tslib: 2.6.3 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.12 use-latest-callback@0.2.1(react@18.3.1): dependencies: react: 18.3.1 - use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1): + use-sidecar@1.1.2(@types/react@18.3.12)(react@18.3.1): dependencies: detect-node-es: 1.1.0 react: 18.3.1 tslib: 2.6.3 optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.12 use-sync-external-store@1.2.0(react@18.3.1): dependencies: react: 18.3.1 + use-sync-external-store@1.2.2(react@18.3.1): + dependencies: + react: 18.3.1 + util-deprecate@1.0.2: {} util@0.12.5: @@ -17296,8 +17807,6 @@ snapshots: v8-compile-cache-lib@3.0.1: {} - valid-url@1.0.9: {} - validate-npm-package-name@3.0.0: dependencies: builtins: 1.0.3 @@ -17308,13 +17817,13 @@ snapshots: vary@1.1.2: {} - vite-node@1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6): + vite-node@1.6.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6): dependencies: cac: 6.7.14 debug: 4.3.6 pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + vite: 5.4.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6) transitivePeerDependencies: - '@types/node' - less @@ -17326,7 +17835,7 @@ snapshots: - supports-color - terser - vite-plugin-dts@3.9.1(@types/node@22.2.0)(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6)): + vite-plugin-dts@3.9.1(@types/node@22.2.0)(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6)): dependencies: '@microsoft/api-extractor': 7.43.0(@types/node@22.2.0) '@rollup/pluginutils': 5.1.0(rollup@4.20.0) @@ -17337,13 +17846,13 @@ snapshots: typescript: 5.5.4 vue-tsc: 1.8.27(typescript@5.5.4) optionalDependencies: - vite: 5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + vite: 5.4.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite@5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6): + vite@5.4.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6): dependencies: esbuild: 0.21.5 postcss: 8.4.41 @@ -17351,10 +17860,10 @@ snapshots: optionalDependencies: '@types/node': 22.2.0 fsevents: 2.3.3 - lightningcss: 1.22.0 + lightningcss: 1.27.0 terser: 5.31.6 - vitest@1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6): + vitest@1.6.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -17373,8 +17882,8 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.9.0 tinypool: 0.8.4 - vite: 5.4.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) - vite-node: 1.6.0(@types/node@22.2.0)(lightningcss@1.22.0)(terser@5.31.6) + vite: 5.4.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6) + vite-node: 1.6.0(@types/node@22.2.0)(lightningcss@1.27.0)(terser@5.31.6) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.2.0 @@ -17469,8 +17978,6 @@ snapshots: is-weakmap: 2.0.2 is-weakset: 2.0.3 - which-module@2.0.1: {} - which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 @@ -17492,7 +17999,7 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - wonka@4.0.15: {} + wonka@6.3.4: {} word-wrap@1.2.5: {} @@ -17524,6 +18031,11 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + ws@6.2.3: dependencies: async-limiter: 1.0.1 @@ -17550,8 +18062,6 @@ snapshots: xtend@4.0.2: {} - y18n@4.0.3: {} - y18n@5.0.8: {} yallist@3.1.1: {} @@ -17560,31 +18070,12 @@ snapshots: yaml@2.5.0: {} - yargs-parser@18.1.3: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - yargs-parser@21.1.1: {} - yargs@15.4.1: - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - yargs@17.7.2: dependencies: cliui: 8.0.1 - escalade: 3.1.2 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -17612,10 +18103,10 @@ snapshots: zod@3.23.8: {} - zustand@4.5.4(@types/react@18.3.3)(immer@10.1.1)(react@18.3.1): + zustand@4.5.4(@types/react@18.3.12)(immer@10.1.1)(react@18.3.1): dependencies: use-sync-external-store: 1.2.0(react@18.3.1) optionalDependencies: - '@types/react': 18.3.3 + '@types/react': 18.3.12 immer: 10.1.1 react: 18.3.1 From ee20dc6c6e1620fd71e7133761393771e256bdee Mon Sep 17 00:00:00 2001 From: Jorrin Date: Sun, 17 Nov 2024 19:07:18 +0100 Subject: [PATCH 44/49] fix infinite rerender --- apps/expo/src/components/player/VideoPlayer.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/expo/src/components/player/VideoPlayer.tsx b/apps/expo/src/components/player/VideoPlayer.tsx index 2b04ad4..f236f89 100644 --- a/apps/expo/src/components/player/VideoPlayer.tsx +++ b/apps/expo/src/components/player/VideoPlayer.tsx @@ -1,5 +1,5 @@ import type { SharedValue } from "react-native-reanimated"; -import React, { useEffect, useState } from "react"; +import React, { useEffect, useMemo, useState } from "react"; import { Dimensions, Platform } from "react-native"; import { Gesture, GestureDetector } from "react-native-gesture-handler"; import Animated, { @@ -79,10 +79,11 @@ export const VideoPlayer = () => { const { wifiDefaultQuality, mobileDataDefaultQuality } = useNetworkSettingsStore(); - const player = createVideoPlayer(videoSrc); + const player = useMemo(() => createVideoPlayer(videoSrc), [videoSrc]); useEffect(() => { if (player) { + player.timeUpdateEventInterval = 1; setVideoPlayer(player); } }, [player, setVideoPlayer]); From 95463dfa071d090a41f10149643027fb21e5d060 Mon Sep 17 00:00:00 2001 From: Jorrin Date: Sun, 17 Nov 2024 19:12:03 +0100 Subject: [PATCH 45/49] fix pipeline --- apps/expo/src/app/_layout.tsx | 1 - apps/expo/src/components/ui/Switch.tsx | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/expo/src/app/_layout.tsx b/apps/expo/src/app/_layout.tsx index e40ef72..4495d00 100644 --- a/apps/expo/src/app/_layout.tsx +++ b/apps/expo/src/app/_layout.tsx @@ -11,7 +11,6 @@ import { TamaguiProvider, Theme, useTheme } from "tamagui"; import tamaguiConfig from "tamagui.config"; import { useThemeStore } from "~/stores/theme"; -import _styles from "../../tamagui-web.css"; export { // Catch any errors thrown by the Layout component. diff --git a/apps/expo/src/components/ui/Switch.tsx b/apps/expo/src/components/ui/Switch.tsx index 721969e..a0f1f62 100644 --- a/apps/expo/src/components/ui/Switch.tsx +++ b/apps/expo/src/components/ui/Switch.tsx @@ -13,7 +13,7 @@ const MWSwitch = (props: SwitchProps) => { }, thumbColor: theme.switchThumbColor.val, }} - {...props} + {...(props as any)} /> ); }; From fa68bccf02261bc9629e4463e182119f38ab8a99 Mon Sep 17 00:00:00 2001 From: Jorrin Date: Sun, 17 Nov 2024 22:25:17 +0100 Subject: [PATCH 46/49] enable ipa --- .github/workflows/build-mobile.yml | 1 - apps/expo/src/app/sync/trust/[backendUrl].tsx | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build-mobile.yml b/.github/workflows/build-mobile.yml index 368ae14..b93fc9f 100644 --- a/.github/workflows/build-mobile.yml +++ b/.github/workflows/build-mobile.yml @@ -64,7 +64,6 @@ jobs: build-ios: runs-on: macos-14 - if: github.repository_owner != 'JorrinKievit' steps: - name: Checkout code diff --git a/apps/expo/src/app/sync/trust/[backendUrl].tsx b/apps/expo/src/app/sync/trust/[backendUrl].tsx index 35fcda8..42a1ec1 100644 --- a/apps/expo/src/app/sync/trust/[backendUrl].tsx +++ b/apps/expo/src/app/sync/trust/[backendUrl].tsx @@ -108,7 +108,7 @@ export default function Page() { Date: Sun, 17 Nov 2024 23:31:43 +0100 Subject: [PATCH 47/49] Update build-mobile.yml --- .github/workflows/build-mobile.yml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-mobile.yml b/.github/workflows/build-mobile.yml index b93fc9f..448744d 100644 --- a/.github/workflows/build-mobile.yml +++ b/.github/workflows/build-mobile.yml @@ -1,9 +1,15 @@ name: build mobile app on: - pull_request: - types: [opened, ready_for_review] - workflow_dispatch: + workflow_dispatch: # Manual trigger + inputs: + target: + description: "Choose the build target" + required: true + default: "android" + options: + - android + - ios permissions: contents: write @@ -11,6 +17,7 @@ permissions: jobs: build-android: + if: ${{ inputs.target == 'android' }} # Runs only if 'android' is selected runs-on: ubuntu-latest steps: @@ -63,6 +70,7 @@ jobs: path: ./apps/expo/android/app/build/movie-web.apk build-ios: + if: ${{ inputs.target == 'ios' }} # Runs only if 'ios' is selected runs-on: macos-14 steps: @@ -103,7 +111,7 @@ jobs: run: cd apps/expo && pnpm ipa - name: Upload movie-web.ipa as artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v3 with: name: ipa path: ./apps/expo/ios/build/movie-web.ipa From 6442d3b040cdc99199274b1cb273db43f3701be1 Mon Sep 17 00:00:00 2001 From: Jorrin Date: Sun, 17 Nov 2024 23:33:13 +0100 Subject: [PATCH 48/49] Update build-mobile.yml --- .github/workflows/build-mobile.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-mobile.yml b/.github/workflows/build-mobile.yml index 448744d..d72f743 100644 --- a/.github/workflows/build-mobile.yml +++ b/.github/workflows/build-mobile.yml @@ -4,6 +4,7 @@ on: workflow_dispatch: # Manual trigger inputs: target: + type: choice description: "Choose the build target" required: true default: "android" From fe8dcd65b70b05aca80f4097b28c9ce2e083843d Mon Sep 17 00:00:00 2001 From: Jorrin Date: Tue, 3 Dec 2024 23:49:32 +0100 Subject: [PATCH 49/49] start with expo-audio --- apps/expo/app.config.ts | 1 + apps/expo/package.json | 2 +- apps/expo/src/app/(tabs)/search.tsx | 4 +- apps/expo/src/app/(tabs)/settings.tsx | 8 +- apps/expo/src/app/_layout.tsx | 9 ++ apps/expo/src/components/DownloadItem.tsx | 2 +- apps/expo/src/components/item/ContextMenu.tsx | 12 +- .../components/player/AudioTrackSelector.tsx | 20 ++-- .../src/components/player/BottomControls.tsx | 5 +- .../expo/src/components/player/PlayButton.tsx | 38 +++---- .../src/components/player/ScraperProcess.tsx | 1 + .../expo/src/components/player/SeekButton.tsx | 7 +- .../src/components/player/VideoPlayer.tsx | 104 +++++++++--------- apps/expo/src/components/ui/Switch.tsx | 46 ++++---- apps/expo/src/hooks/player/useAudioTrack.ts | 88 --------------- apps/expo/src/hooks/player/useSourceScrape.ts | 1 + apps/expo/src/stores/player/slices/audio.ts | 55 ++------- apps/expo/tsconfig.json | 22 +++- pnpm-lock.yaml | 18 +-- 19 files changed, 156 insertions(+), 287 deletions(-) delete mode 100644 apps/expo/src/hooks/player/useAudioTrack.ts diff --git a/apps/expo/app.config.ts b/apps/expo/app.config.ts index 01981b1..1caf2e6 100644 --- a/apps/expo/app.config.ts +++ b/apps/expo/app.config.ts @@ -45,6 +45,7 @@ const defineConfig = (): ExpoConfig => ({ plugins: [ "expo-router", "expo-video", + "expo-audio", [ "expo-screen-orientation", { diff --git a/apps/expo/package.json b/apps/expo/package.json index c22612e..51394a5 100644 --- a/apps/expo/package.json +++ b/apps/expo/package.json @@ -42,7 +42,7 @@ "expo": "~52.0.7", "expo-alternate-app-icons": "^1.1.0", "expo-application": "~6.0.1", - "expo-av": "~15.0.1", + "expo-audio": "~0.3.0", "expo-brightness": "~13.0.2", "expo-build-properties": "~0.13.1", "expo-clipboard": "~7.0.0", diff --git a/apps/expo/src/app/(tabs)/search.tsx b/apps/expo/src/app/(tabs)/search.tsx index c6d15bf..aaf979f 100644 --- a/apps/expo/src/app/(tabs)/search.tsx +++ b/apps/expo/src/app/(tabs)/search.tsx @@ -111,8 +111,8 @@ export default function SearchScreen() { justifyContent: "center", }} > - - + + {data?.map((item, index) => ( s.setTheme); return ( - - } > - + - + ); } diff --git a/apps/expo/src/app/_layout.tsx b/apps/expo/src/app/_layout.tsx index 4495d00..3c2c7a4 100644 --- a/apps/expo/src/app/_layout.tsx +++ b/apps/expo/src/app/_layout.tsx @@ -1,6 +1,10 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ import { useEffect } from "react"; import { GestureHandlerRootView } from "react-native-gesture-handler"; +import { + configureReanimatedLogger, + ReanimatedLogLevel, +} from "react-native-reanimated"; import { useFonts } from "expo-font"; import { SplashScreen, Stack } from "expo-router"; import FontAwesome from "@expo/vector-icons/FontAwesome"; @@ -27,6 +31,11 @@ SplashScreen.preventAutoHideAsync().catch(() => { /* reloading the app might trigger this, so it's safe to ignore */ }); +configureReanimatedLogger({ + level: ReanimatedLogLevel.warn, + strict: false, +}); + const queryClient = new QueryClient(); export default function RootLayout() { diff --git a/apps/expo/src/components/DownloadItem.tsx b/apps/expo/src/components/DownloadItem.tsx index f62ef9a..db3c5b8 100644 --- a/apps/expo/src/components/DownloadItem.tsx +++ b/apps/expo/src/components/DownloadItem.tsx @@ -36,7 +36,7 @@ const formatBytes = (bytes: number, decimals = 2) => { }; export function DownloadItem(props: DownloadItemProps) { - const percentage = props.item.progress * 100; + const percentage = Math.round(props.item.progress * 100); const formattedFileSize = formatBytes(props.item.fileSize); const formattedDownloaded = formatBytes(props.item.downloaded); const { removeDownload, cancelDownload } = useDownloadManager(); diff --git a/apps/expo/src/components/item/ContextMenu.tsx b/apps/expo/src/components/item/ContextMenu.tsx index 5dea4c3..9152505 100644 --- a/apps/expo/src/components/item/ContextMenu.tsx +++ b/apps/expo/src/components/item/ContextMenu.tsx @@ -1,3 +1,4 @@ +import type { ComponentProps } from "react"; import { MaterialCommunityIcons } from "@expo/vector-icons"; import { Sheet, useTheme } from "tamagui"; @@ -12,6 +13,8 @@ export enum ContextMenuActions { Remove = "Remove", } +type IconName = ComponentProps["name"]; + export interface Action { title: ContextMenuActions; onPress: () => void; @@ -30,13 +33,8 @@ export const SheetContextMenu: React.FC = ({ }) => { const theme = useTheme(); - type IconName = - | "bookmark-outline" - | "bookmark-off-outline" - | "download-outline" - | "clock-remove-outline"; - const iconMap: Record = { + [ContextMenuActions.Remove]: "delete-outline", [ContextMenuActions.Bookmark]: "bookmark-outline", [ContextMenuActions.RemoveBookmark]: "bookmark-off-outline", [ContextMenuActions.Download]: "download-outline", @@ -70,7 +68,7 @@ export const SheetContextMenu: React.FC = ({ { const tracks = usePlayerStore((state) => state.interface.audioTracks); const setAudioTracks = usePlayerStore((state) => state.setAudioTracks); - const stream = usePlayerStore((state) => state.interface.currentStream); const selectedTrack = useAudioTrackStore((state) => state.selectedTrack); - const setSelectedAudioTrack = useAudioTrackStore( - (state) => state.setSelectedAudioTrack, - ); - - const { synchronizePlayback } = useAudioTrack(); + const player = usePlayerStore((state) => state.player); + const setAudioPlayer = usePlayerStore((state) => state.setAudioPlayer); useEffect(() => { if (tracks && selectedTrack) { @@ -47,7 +43,7 @@ export const AudioTrackSelector = () => { } }, [selectedTrack, setAudioTracks, tracks]); - if (!tracks?.length) return null; + if (!tracks?.length || !player) return null; return ( <> @@ -101,10 +97,10 @@ export const AudioTrackSelector = () => { ) } onPress={() => { - setSelectedAudioTrack(track); - if (stream) { - void synchronizePlayback(track, stream); - } + const newPlayer = createAudioPlayer(track.uri); + newPlayer.seekTo(player.currentTime).catch(console.error); + newPlayer.volume = player.volume; + setAudioPlayer(newPlayer); }} /> ))} diff --git a/apps/expo/src/components/player/BottomControls.tsx b/apps/expo/src/components/player/BottomControls.tsx index b1ca4af..7ab8f26 100644 --- a/apps/expo/src/components/player/BottomControls.tsx +++ b/apps/expo/src/components/player/BottomControls.tsx @@ -66,12 +66,15 @@ export const BottomControls = () => { const subscription = player?.addListener("timeUpdate", (payload) => { setLocalCurrentTime(payload.currentTime); + if (localDuration === 0) { + setLocalDuration(player.duration); + } }); return () => { subscription?.remove(); }; - }, [player]); + }, [player, localDuration]); return ( diff --git a/apps/expo/src/components/player/PlayButton.tsx b/apps/expo/src/components/player/PlayButton.tsx index 0b1cbe3..b7ad85d 100644 --- a/apps/expo/src/components/player/PlayButton.tsx +++ b/apps/expo/src/components/player/PlayButton.tsx @@ -1,4 +1,4 @@ -import { useEffect, useState } from "react"; +import { useEvent } from "expo"; import { FontAwesome } from "@expo/vector-icons"; import { Spinner } from "tamagui"; @@ -6,25 +6,18 @@ import { usePlayerStore } from "~/stores/player/store"; export const PlayButton = () => { const player = usePlayerStore((state) => state.player); - const playAudio = usePlayerStore((state) => state.playAudio); - const pauseAudio = usePlayerStore((state) => state.pauseAudio); + const audioPlayer = usePlayerStore((state) => state.audioPlayer); - const [isPlaying, setIsPlaying] = useState(player?.playing ?? false); - const [isLoading, setIsLoading] = useState(false); - - useEffect(() => { - const statusListener = player?.addListener("statusChange", (data) => { - setIsLoading(data.status === "loading"); - }); - - return () => { - statusListener?.remove(); - }; - }, [player]); + const { isPlaying } = useEvent(player!, "playingChange", { + isPlaying: player!.playing, + }); + const { status } = useEvent(player!, "statusChange", { + status: player!.status, + }); if (!player) return null; - if (isLoading) { + if (status === "loading") { return ; } @@ -34,15 +27,10 @@ export const PlayButton = () => { size={36} color="white" onPress={() => { - if (player.playing) { - player.pause(); - void pauseAudio(); - setIsPlaying(false); - } else { - player.play(); - void playAudio(); - setIsPlaying(true); - } + console.log("video player playing", player.playing); + console.log("audio player playing", audioPlayer?.playing); + player.playing ? player.pause() : player.play(); + audioPlayer?.playing ? audioPlayer?.pause() : audioPlayer?.play(); }} /> ); diff --git a/apps/expo/src/components/player/ScraperProcess.tsx b/apps/expo/src/components/player/ScraperProcess.tsx index 2a4bf81..6636a29 100644 --- a/apps/expo/src/components/player/ScraperProcess.tsx +++ b/apps/expo/src/components/player/ScraperProcess.tsx @@ -95,6 +95,7 @@ export const ScraperProcess = ({ ...streamResult.stream.headers, }, ); + console.log("Tracks", tracks); if (tracks) setHlsTracks(tracks); diff --git a/apps/expo/src/components/player/SeekButton.tsx b/apps/expo/src/components/player/SeekButton.tsx index 164662d..ae2b47d 100644 --- a/apps/expo/src/components/player/SeekButton.tsx +++ b/apps/expo/src/components/player/SeekButton.tsx @@ -8,9 +8,7 @@ interface SeekProps { export const SeekButton = ({ type }: SeekProps) => { const player = usePlayerStore((state) => state.player); - const setAudioPositionAsync = usePlayerStore( - (state) => state.setAudioPositionAsync, - ); + const audioPlayer = usePlayerStore((state) => state.audioPlayer); if (!player) return null; @@ -24,7 +22,8 @@ export const SeekButton = ({ type }: SeekProps) => { type === "forward" ? player.currentTime + 10 : player.currentTime - 10; - void setAudioPositionAsync(player.currentTime); + + if (audioPlayer) audioPlayer.currentTime = player.currentTime; }} /> ); diff --git a/apps/expo/src/components/player/VideoPlayer.tsx b/apps/expo/src/components/player/VideoPlayer.tsx index f236f89..ebb41e6 100644 --- a/apps/expo/src/components/player/VideoPlayer.tsx +++ b/apps/expo/src/components/player/VideoPlayer.tsx @@ -1,15 +1,10 @@ import type { SharedValue } from "react-native-reanimated"; -import React, { useEffect, useMemo, useState } from "react"; +import React, { useCallback, useEffect, useMemo, useState } from "react"; import { Dimensions, Platform } from "react-native"; import { Gesture, GestureDetector } from "react-native-gesture-handler"; -import Animated, { - runOnJS, - useAnimatedStyle, - useSharedValue, -} from "react-native-reanimated"; +import Animated, { runOnJS, useAnimatedStyle } from "react-native-reanimated"; import { useSafeAreaInsets } from "react-native-safe-area-context"; -import { ResizeMode } from "expo-av"; -import * as Haptics from "expo-haptics"; +import { createAudioPlayer } from "expo-audio"; import { useKeepAwake } from "expo-keep-awake"; import * as NavigationBar from "expo-navigation-bar"; import * as Network from "expo-network"; @@ -19,9 +14,13 @@ import { createVideoPlayer, VideoView } from "expo-video"; import { Feather } from "@expo/vector-icons"; import { Spinner, useTheme, View } from "tamagui"; -import { findHLSQuality, findQuality } from "@movie-web/provider-utils"; +import { + extractTracksFromHLS, + filterAudioTracks, + findHLSQuality, + findQuality, +} from "@movie-web/provider-utils"; -import { useAudioTrack } from "~/hooks/player/useAudioTrack"; import { useBrightness } from "~/hooks/player/useBrightness"; import { usePlayer } from "~/hooks/player/usePlayer"; import { useVolume } from "~/hooks/player/useVolume"; @@ -52,23 +51,21 @@ export const VideoPlayer = () => { } = useBrightness(); const { volume, showVolumeOverlay, setShowVolumeOverlay } = useVolume(); - const { synchronizePlayback } = useAudioTrack(); const { dismissFullscreenPlayer } = usePlayer(); const [isLoading, setIsLoading] = useState(true); - const [resizeMode, setResizeMode] = useState(ResizeMode.CONTAIN); const router = useRouter(); - const scale = useSharedValue(1); - const isIdle = usePlayerStore((state) => state.interface.isIdle); const stream = usePlayerStore((state) => state.interface.currentStream); const selectedAudioTrack = useAudioTrackStore((state) => state.selectedTrack); const videoSrc = usePlayerStore((state) => state.videoSrc); const setVideoSrc = usePlayerStore((state) => state.setVideoSrc); const setVideoPlayer = usePlayerStore((state) => state.setVideoPlayer); + const setAudioPlayer = usePlayerStore((state) => state.setAudioPlayer); const setIsIdle = usePlayerStore((state) => state.setIsIdle); - const toggleAudio = usePlayerStore((state) => state.toggleAudio); const toggleState = usePlayerStore((state) => state.toggleState); + const setHlsTracks = usePlayerStore((state) => state.setHlsTracks); + const setAudioTracks = usePlayerStore((state) => state.setAudioTracks); const meta = usePlayerStore((state) => state.meta); const setMeta = usePlayerStore((state) => state.setMeta); const isLocalFile = usePlayerStore((state) => state.isLocalFile); @@ -79,29 +76,33 @@ export const VideoPlayer = () => { const { wifiDefaultQuality, mobileDataDefaultQuality } = useNetworkSettingsStore(); - const player = useMemo(() => createVideoPlayer(videoSrc), [videoSrc]); + const player = useMemo(() => createVideoPlayer(videoSrc ?? null), [videoSrc]); + // const audioPlayer = useMemo( + // () => createAudioPlayer(selectedAudioTrack?.uri ?? ""), + // [selectedAudioTrack], + // ); + const audioPlayer = usePlayerStore((state) => state.audioPlayer); useEffect(() => { if (player) { + player.audioMixingMode = "mixWithOthers"; player.timeUpdateEventInterval = 1; setVideoPlayer(player); } - }, [player, setVideoPlayer]); - useEffect(() => { - const statusListener = player.addListener("statusChange", (data) => { - if (data.status === "readyToPlay") { - player.play(); - } - }); + // if (audioPlayer) { + // setAudioPlayer(audioPlayer); + // } return () => { - statusListener.remove(); + console.log("releasing players"); + // player?.release(); + // audioPlayer?.release(); }; - }, [getWatchHistoryItem, meta, player]); + }, [audioPlayer, player, setAudioPlayer, setVideoPlayer]); useEffect(() => { - if (meta && player.status === "readyToPlay" && player.currentTime < 1) { + if (meta && player?.status === "readyToPlay" && player.currentTime < 1) { const media = convertMetaToScrapeMedia(meta); const watchHistoryItem = getWatchHistoryItem(media); if (watchHistoryItem) { @@ -109,21 +110,13 @@ export const VideoPlayer = () => { } } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [player.status]); - - const updateResizeMode = (newMode: ResizeMode) => { - setResizeMode(newMode); - void Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); - }; - - const pinchGesture = Gesture.Pinch().onUpdate((e) => { - scale.value = e.scale; - if (scale.value > 1 && resizeMode !== ResizeMode.COVER) { - runOnJS(updateResizeMode)(ResizeMode.COVER); - } else if (scale.value <= 1 && resizeMode !== ResizeMode.CONTAIN) { - runOnJS(updateResizeMode)(ResizeMode.CONTAIN); + }, [player?.status]); + + const toggleAudio = useCallback(() => { + if (audioPlayer) { + audioPlayer.playing ? audioPlayer.pause() : audioPlayer.play(); } - }); + }, [audioPlayer]); const doubleTapGesture = Gesture.Tap() .enabled(gestureControls && isIdle) @@ -170,11 +163,7 @@ export const VideoPlayer = () => { } }); - const composedGesture = Gesture.Race( - panGesture, - pinchGesture, - doubleTapGesture, - ); + const composedGesture = Gesture.Race(panGesture, doubleTapGesture); StatusBar.setStatusBarHidden(true); @@ -204,6 +193,16 @@ export const VideoPlayer = () => { if (stream.type === "hls") { url = await findHLSQuality(stream.playlist, stream.headers, highest); + const tracks = await extractTracksFromHLS(stream.playlist, { + ...stream.preferredHeaders, + ...stream.headers, + }); + + if (tracks) setHlsTracks(tracks); + + if (tracks?.audio.length) { + setAudioTracks(filterAudioTracks(tracks, stream.playlist)); + } } if (stream.type === "file") { @@ -233,9 +232,8 @@ export const VideoPlayer = () => { if (meta) { const item = convertMetaToItemData(meta); const scrapeMedia = convertMetaToScrapeMedia(meta); - updateWatchHistory(item, scrapeMedia, player.currentTime); + updateWatchHistory(item, scrapeMedia, player?.currentTime ?? 0); } - void synchronizePlayback(); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, [ @@ -246,18 +244,13 @@ export const VideoPlayer = () => { selectedAudioTrack, setVideoSrc, stream, - synchronizePlayback, updateWatchHistory, wifiDefaultQuality, mobileDataDefaultQuality, ]); useEffect(() => { - const playerStatusChange = player.addListener("statusChange", (data) => { - if (data.status === "readyToPlay") { - player.play(); - } - + const playerStatusChange = player?.addListener("statusChange", (data) => { const isFinished = player.duration - player.currentTime < 1; if ( meta && @@ -286,10 +279,13 @@ export const VideoPlayer = () => { }); return () => { - playerStatusChange.remove(); + playerStatusChange?.remove(); }; }, [player, meta, removeFromWatchHistory, autoPlay, setMeta, router]); + console.log("videoPlayer", player.playing); + console.log("audioPlayer", audioPlayer?.playing); + return ( { - const theme = useTheme(); - return ( - - ); -}; + }, + }, + }, + defaultVariants: { + type: "default", + }, +}); -const MWSwitchThumb = (props: SwitchThumbProps) => { - return ; -}; - -MWSwitch.Thumb = MWSwitchThumb; +const MWSwitch = withStaticProperties(MWSwitchFrame, { + Thumb: styled(Switch.Thumb, { + animation: "bounce", + }), +}); export { MWSwitch }; diff --git a/apps/expo/src/hooks/player/useAudioTrack.ts b/apps/expo/src/hooks/player/useAudioTrack.ts deleted file mode 100644 index f782008..0000000 --- a/apps/expo/src/hooks/player/useAudioTrack.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { useCallback, useEffect } from "react"; -import { Audio } from "expo-av"; - -import type { Stream } from "@movie-web/provider-utils"; - -import type { AudioTrack } from "~/components/player/AudioTrackSelector"; -import { usePlayerStore } from "~/stores/player/store"; - -export const useAudioTrack = () => { - const player = usePlayerStore((state) => state.player); - const audioObject = usePlayerStore((state) => state.audioObject); - const currentAudioTrack = usePlayerStore((state) => state.currentAudioTrack); - const setAudioObject = usePlayerStore((state) => state.setAudioObject); - const setCurrentAudioTrack = usePlayerStore( - (state) => state.setCurrentAudioTrack, - ); - - const synchronizePlayback = useCallback( - async (selectedAudioTrack?: AudioTrack, stream?: Stream) => { - if (selectedAudioTrack && stream) { - if (audioObject) { - await audioObject.unloadAsync(); - } - - const createAudioAsyncWithTimeout = (uri: string, timeout = 5000) => { - return new Promise((resolve, reject) => { - Audio.Sound.createAsync({ - uri, - headers: { - ...stream.headers, - ...stream.preferredHeaders, - }, - }) - .then((value) => resolve(value.sound)) - .catch(reject); - - setTimeout(() => { - reject(new Error("Timeout: Audio loading took too long")); - }, timeout); - }); - }; - try { - const sound = await createAudioAsyncWithTimeout( - selectedAudioTrack.uri, - ); - if (!sound) return; - setAudioObject(sound); - setCurrentAudioTrack(selectedAudioTrack); - } catch (error) { - console.error("Error loading audio track:", error); - } - } else { - if (audioObject) { - await audioObject.unloadAsync(); - setAudioObject(null); - } - } - }, - [audioObject, setAudioObject, setCurrentAudioTrack], - ); - - const synchronizeAudioWithVideo = useCallback( - async ( - audioObject: Audio.Sound | null, - selectedAudioTrack?: AudioTrack, - ) => { - if (player && audioObject) { - if (selectedAudioTrack) { - player.volume = 0; - await audioObject.playAsync(); - await audioObject.setPositionAsync(player.currentTime * 1000); - } else { - player.volume = 1; - await audioObject.pauseAsync(); - } - } - }, - [player], - ); - - useEffect(() => { - if (audioObject && currentAudioTrack) { - void synchronizeAudioWithVideo(audioObject, currentAudioTrack); - } - }, [audioObject, currentAudioTrack, synchronizeAudioWithVideo]); - - return { synchronizePlayback }; -}; diff --git a/apps/expo/src/hooks/player/useSourceScrape.ts b/apps/expo/src/hooks/player/useSourceScrape.ts index 135d8ab..ec2e987 100644 --- a/apps/expo/src/hooks/player/useSourceScrape.ts +++ b/apps/expo/src/hooks/player/useSourceScrape.ts @@ -239,6 +239,7 @@ export const useSourceScrape = (sourceId: string | null) => { sourceId, media: scrapeMedia, }); + console.log(result); if (result?.stream) { setCurrentStream(result.stream[0]!); diff --git a/apps/expo/src/stores/player/slices/audio.ts b/apps/expo/src/stores/player/slices/audio.ts index c3d74cc..7158a54 100644 --- a/apps/expo/src/stores/player/slices/audio.ts +++ b/apps/expo/src/stores/player/slices/audio.ts @@ -1,58 +1,17 @@ -import type { Audio } from "expo-av"; +import type { AudioPlayer } from "expo-audio"; import type { MakeSlice } from "./types"; -import type { AudioTrack } from "~/components/player/AudioTrackSelector"; export interface AudioSlice { - audioObject: Audio.Sound | null; - currentAudioTrack: AudioTrack | null; + audioPlayer: AudioPlayer | null; - setAudioObject(audioObject: Audio.Sound | null): void; - setCurrentAudioTrack(track: AudioTrack | null): void; - playAudio(): Promise; - pauseAudio(): Promise; - toggleAudio(): Promise; - setAudioPositionAsync(positionMillis: number): Promise; + setAudioPlayer(audioPlayer: AudioPlayer | null): void; } -export const createAudioSlice: MakeSlice = (set, get) => ({ - audioObject: null, - currentAudioTrack: null, +export const createAudioSlice: MakeSlice = (set) => ({ + audioPlayer: null, - setAudioObject: (audioObject) => { - set({ audioObject }); - }, - setCurrentAudioTrack: (track) => { - set({ currentAudioTrack: track }); - }, - playAudio: async () => { - const { audioObject } = get(); - if (audioObject) { - await audioObject.playAsync(); - } - }, - pauseAudio: async () => { - const { audioObject } = get(); - if (audioObject) { - await audioObject.pauseAsync(); - } - }, - toggleAudio: async () => { - const { audioObject } = get(); - if (audioObject) { - const status = await audioObject.getStatusAsync(); - if (!status.isLoaded) return; - if (status.isPlaying) { - await audioObject.pauseAsync(); - } else { - await audioObject.playAsync(); - } - } - }, - setAudioPositionAsync: async (positionMillis) => { - const { audioObject } = get(); - if (audioObject) { - await audioObject.setPositionAsync(positionMillis); - } + setAudioPlayer: (audioPlayer) => { + set({ audioPlayer }); }, }); diff --git a/apps/expo/tsconfig.json b/apps/expo/tsconfig.json index 8dccf0d..05dcd39 100644 --- a/apps/expo/tsconfig.json +++ b/apps/expo/tsconfig.json @@ -1,12 +1,20 @@ { - "extends": ["@movie-web/tsconfig/base.json"], + "extends": [ + "@movie-web/tsconfig/base.json" + ], "compilerOptions": { "allowJs": true, "baseUrl": ".", "paths": { - "~/*": ["./src/*"], - "~/components/*": ["./src/components/*"], - "modules/*": ["./modules/*"] + "~/*": [ + "./src/*" + ], + "~/components/*": [ + "./src/components/*" + ], + "modules/*": [ + "./modules/*" + ] }, "jsx": "react-native", "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" @@ -20,5 +28,7 @@ "expo-env.d.ts", "src/plugins/*" ], - "exclude": ["node_modules"] -} + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 969c28e..a600b3c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -89,9 +89,9 @@ importers: expo-application: specifier: ~6.0.1 version: 6.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1)) - expo-av: - specifier: ~15.0.1 - version: 15.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-web@0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) + expo-audio: + specifier: ~0.3.0 + version: 0.3.0(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) expo-brightness: specifier: ~13.0.2 version: 13.0.2(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)) @@ -4521,16 +4521,12 @@ packages: react: '*' react-native: '*' - expo-av@15.0.1: - resolution: {integrity: sha512-2d4j7RTH9Y5nI1FoC0woRjqnj5G8sF0al2iW6kG21PPs/CgS4QARbHxMrPxKpUXrC6iu+6EMj2h5H6T0nqteFg==} + expo-audio@0.3.0: + resolution: {integrity: sha512-5YkaqunkHlNr4+KZSM3xuTnznLaaiiyLWCENmxJS5EAMgkXTWOoZBxoLLjquLU5m5clcswnYBriQBbUfbvZ+ug==} peerDependencies: expo: '*' react: '*' react-native: '*' - react-native-web: '*' - peerDependenciesMeta: - react-native-web: - optional: true expo-brightness@13.0.2: resolution: {integrity: sha512-ygsGZjd2D5BQp3QWJQEVdjqui1U7KCVMoHEtNo6h/JXoMg1GhB91y0eDCzQ2hTr4ZCxHQDJSbqZ6kxaa2Y2rMA==} @@ -13868,13 +13864,11 @@ snapshots: transitivePeerDependencies: - supports-color - expo-av@15.0.1(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native-web@0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): + expo-audio@0.3.0(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1): dependencies: expo: 52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1) react: 18.3.1 react-native: 0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1) - optionalDependencies: - react-native-web: 0.19.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1) expo-brightness@13.0.2(expo@52.0.7(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@expo/metro-runtime@4.0.0(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)))(graphql@15.8.0)(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1))(react@18.3.1))(react-native@0.76.2(@babel/core@7.25.2)(@babel/preset-env@7.25.3(@babel/core@7.25.2))(@react-native-community/cli-server-api@13.6.9)(@types/react@18.3.12)(react@18.3.1)): dependencies: