diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..66f8735 --- /dev/null +++ b/.gitignore @@ -0,0 +1,76 @@ +node_modules/ +.expo/ +dist/ +npm-debug.* +*.jks +*.p8 +*.p12 +*.key +*.mobileprovision +*.orig.* +web-build/ + +# macOS +.DS_Store + +# @generated expo-cli sync-b25d41054229aa64f1468014f243adfae8268af2 +# The following patterns were generated by expo-cli + +# OSX +# +.DS_Store + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +project.xcworkspace + +# Android/IntelliJ +# +build/ +.idea +.gradle +local.properties +*.iml +*.hprof +.cxx/ + +# node.js +# +node_modules/ +npm-debug.log +yarn-error.log + +# BUCK +buck-out/ +\.buckd/ +*.keystore +!debug.keystore + +# Bundle artifacts +*.jsbundle + +# CocoaPods +/ios/Pods/ + +# Expo +.expo/ +web-build/ +dist/ + +# @end expo-cli \ No newline at end of file diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..4de6690 --- /dev/null +++ b/.npmignore @@ -0,0 +1,27 @@ +*.jks +*.key +*.mobileprovision +*.p12 +*.p8 +.DS_Store +.expo +.npmignore +.vscode +package-lock.json +yarn.lock +yarn-error.log +npm-debug.log* +yarn-debug.log* +build/ +web-build/ +HelloWorld.xcworkspace +Podfile.lock +ios/Pods +ios/.xcode.env.local +android/.build +android/app/build +android/.gradle +ios/.xcode.env.local + +# Exclude tarballs generated by `npm pack` +/*.tgz \ No newline at end of file diff --git a/App.js b/App.js new file mode 100644 index 0000000..80fad04 --- /dev/null +++ b/App.js @@ -0,0 +1,139 @@ +import React, { + useState, + useCallback, + useEffect, + setGlobal, + useGlobal, +} from "reactn"; +import { GestureHandlerRootView } from "react-native-gesture-handler"; +import { useFonts } from "expo-font"; +import * as SplashScreen from "expo-splash-screen"; +import { StatusBar } from "expo-status-bar"; +import { NavigationContainer, DefaultTheme } from "@react-navigation/native"; +import moment from "moment"; +import "moment/locale/fr"; +import "@expo/metro-runtime"; +import { PortalProvider } from "@gorhom/portal"; + +import { MainStack, Routes } from "./src/navigation"; +import { Palette } from "./src/styles"; + +import { navigationRef, reset } from "./src/navigation/NavigationService"; + +import initialGlobalState from "./src/config/initialGlobalState"; + +import firebase from "./src/config/firebase"; +import Providers from "./src/providers"; +import AppLayout from "./src/layouts/AppLayout"; +import { + Inter_400Regular, + Inter_500Medium, + Inter_600SemiBold, + Inter_700Bold, +} from "@expo-google-fonts/inter"; + +console.disableYellowBox = true; +console.reportErrorsAsExceptions = false; + +moment.locale("fr"); + +setGlobal(initialGlobalState); + +SplashScreen.preventAutoHideAsync(); + +const App = () => { + const [currentUID, setCurrentUID] = useGlobal("currentUID"); + const [, setCurrentUserRoles] = useGlobal("currentUserRoles"); + + const [appIsReady, setAppIsReady] = useState(false); + + const [isInitializing, setInitializing] = useState(true); + + const [loaded] = useFonts({ + NewYorkSemibold: require("./src/assets/fonts/NewYork-Semibold.ttf"), + OpenSansRegular: require("./src/assets/fonts/OpenSans-Regular.ttf"), + InterRegular: Inter_400Regular, + InterMedium: Inter_500Medium, + InterSemiBold: Inter_600SemiBold, + InterBold: Inter_700Bold, + }); + + useEffect(() => { + if (loaded) { + setAppIsReady(true); + } + }, [loaded]); + + const onLayoutRootView = useCallback(async () => { + if (appIsReady) { + await SplashScreen.hideAsync(); + } + }, [appIsReady, loaded]); + + useEffect(() => { + const subscriber = firebase.auth().onAuthStateChanged(onAuthStateChanged); + return subscriber; + }, []); + + const onAuthStateChanged = async (user) => { + if (isInitializing) { + setInitializing(false); + } + + if (user?.uid) { + setCurrentUID(user.uid); + + const idTokenResult = await user.getIdTokenResult(); + setCurrentUserRoles(idTokenResult?.claims?.roles || []); + } else { + setCurrentUID(null); + setGlobal(initialGlobalState); + reset({ + index: 0, + routes: [{ name: Routes.Splash }], + }); + } + }; + + if (!loaded || isInitializing) { + return null; + } + + return ( + <> + + + + + + + + options?.title + ? `${options?.title} - minuit.starter` + : "minuit.starter", + }} + > + + + + + + + > + ); +}; + +export default App; diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..8a6be07 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,16 @@ +# OSX +# +.DS_Store + +# Android/IntelliJ +# +build/ +.idea +.gradle +local.properties +*.iml +*.hprof +.cxx/ + +# Bundle artifacts +*.jsbundle diff --git a/android/app/build.gradle b/android/app/build.gradle new file mode 100644 index 0000000..5f94565 --- /dev/null +++ b/android/app/build.gradle @@ -0,0 +1,179 @@ +apply plugin: "com.android.application" +apply plugin: "org.jetbrains.kotlin.android" +apply plugin: "com.facebook.react" + +def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath() + +/** + * This is the configuration block to customize your React Native Android app. + * By default you don't need to apply any configuration, just uncomment the lines you need. + */ +react { + entryFile = file(["node", "-e", "require('expo/scripts/resolveAppEntry')", projectRoot, "android", "absolute"].execute(null, rootDir).text.trim()) + reactNativeDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() + hermesCommand = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc" + codegenDir = new File(["node", "--print", "require.resolve('@react-native/codegen/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() + + // Use Expo CLI to bundle the app, this ensures the Metro config + // works correctly with Expo projects. + cliFile = new File(["node", "--print", "require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })"].execute(null, rootDir).text.trim()) + bundleCommand = "export:embed" + + /* Folders */ + // The root of your project, i.e. where "package.json" lives. Default is '../..' + // root = file("../../") + // The folder where the react-native NPM package is. Default is ../../node_modules/react-native + // reactNativeDir = file("../../node_modules/react-native") + // The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen + // codegenDir = file("../../node_modules/@react-native/codegen") + + /* Variants */ + // The list of variants to that are debuggable. For those we're going to + // skip the bundling of the JS bundle and the assets. By default is just 'debug'. + // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. + // debuggableVariants = ["liteDebug", "prodDebug"] + + /* Bundling */ + // A list containing the node command and its flags. Default is just 'node'. + // nodeExecutableAndArgs = ["node"] + + // + // The path to the CLI configuration file. Default is empty. + // bundleConfig = file(../rn-cli.config.js) + // + // The name of the generated asset file containing your JS bundle + // bundleAssetName = "MyApplication.android.bundle" + // + // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' + // entryFile = file("../js/MyApplication.android.js") + // + // A list of extra flags to pass to the 'bundle' commands. + // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle + // extraPackagerArgs = [] + + /* Hermes Commands */ + // The hermes compiler command to run. By default it is 'hermesc' + // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" + // + // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" + // hermesFlags = ["-O", "-output-source-map"] + + /* Autolinking */ + autolinkLibrariesWithApp() +} + +/** + * Set this to true to Run Proguard on Release builds to minify the Java bytecode. + */ +def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: false).toBoolean() + +/** + * The preferred build flavor of JavaScriptCore (JSC) + * + * For example, to use the international variant, you can use: + * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` + * + * The international variant includes ICU i18n library and necessary data + * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that + * give correct results when using with locales other than en-US. Note that + * this variant is about 6MiB larger per architecture than default. + */ +def jscFlavor = 'org.webkit:android-jsc:+' + +android { + ndkVersion rootProject.ext.ndkVersion + + buildToolsVersion rootProject.ext.buildToolsVersion + compileSdk rootProject.ext.compileSdkVersion + + namespace 'com.minuit.starter' + defaultConfig { + applicationId 'com.minuit.starter' + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode 1 + versionName "2024.04.1" + } + signingConfigs { + debug { + storeFile file('debug.keystore') + storePassword 'android' + keyAlias 'androiddebugkey' + keyPassword 'android' + } + } + buildTypes { + debug { + signingConfig signingConfigs.debug + } + release { + // Caution! In production, you need to generate your own keystore file. + // see https://reactnative.dev/docs/signed-apk-android. + signingConfig signingConfigs.debug + shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false) + minifyEnabled enableProguardInReleaseBuilds + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + crunchPngs (findProperty('android.enablePngCrunchInReleaseBuilds')?.toBoolean() ?: true) + } + } + packagingOptions { + jniLibs { + useLegacyPackaging (findProperty('expo.useLegacyPackaging')?.toBoolean() ?: false) + } + } + androidResources { + ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~' + } +} + +// Apply static values from `gradle.properties` to the `android.packagingOptions` +// Accepts values in comma delimited lists, example: +// android.packagingOptions.pickFirsts=/LICENSE,**/picasa.ini +["pickFirsts", "excludes", "merges", "doNotStrip"].each { prop -> + // Split option: 'foo,bar' -> ['foo', 'bar'] + def options = (findProperty("android.packagingOptions.$prop") ?: "").split(","); + // Trim all elements in place. + for (i in 0.. 0) { + println "android.packagingOptions.$prop += $options ($options.length)" + // Ex: android.packagingOptions.pickFirsts += '**/SCCS/**' + options.each { + android.packagingOptions[prop] += it + } + } +} + +dependencies { + // The version of react-native is set by the React Native Gradle Plugin + implementation("com.facebook.react:react-android") + + def isGifEnabled = (findProperty('expo.gif.enabled') ?: "") == "true"; + def isWebpEnabled = (findProperty('expo.webp.enabled') ?: "") == "true"; + def isWebpAnimatedEnabled = (findProperty('expo.webp.animated') ?: "") == "true"; + + if (isGifEnabled) { + // For animated gif support + implementation("com.facebook.fresco:animated-gif:${reactAndroidLibs.versions.fresco.get()}") + } + + if (isWebpEnabled) { + // For webp support + implementation("com.facebook.fresco:webpsupport:${reactAndroidLibs.versions.fresco.get()}") + if (isWebpAnimatedEnabled) { + // Animated webp support + implementation("com.facebook.fresco:animated-webp:${reactAndroidLibs.versions.fresco.get()}") + } + } + + if (hermesEnabled.toBoolean()) { + implementation("com.facebook.react:hermes-android") + } else { + implementation jscFlavor + } +} + +apply plugin: 'com.google.gms.google-services' +apply plugin: 'com.google.firebase.crashlytics' \ No newline at end of file diff --git a/android/app/debug.keystore b/android/app/debug.keystore new file mode 100644 index 0000000..364e105 Binary files /dev/null and b/android/app/debug.keystore differ diff --git a/android/app/google-services.json b/android/app/google-services.json new file mode 100644 index 0000000..4e371c8 --- /dev/null +++ b/android/app/google-services.json @@ -0,0 +1,47 @@ +{ + "project_info": { + "project_number": "943006074419", + "project_id": "minuitcloud", + "storage_bucket": "minuitcloud.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:943006074419:android:1cf962aa044ea020658546", + "android_client_info": { + "package_name": "com.minuit.starter" + } + }, + "oauth_client": [ + { + "client_id": "943006074419-bal1qb28ssgh0v2ta1fhj1vl8a9mb7tp.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyA13RHqqFcx0tu6qja0shDomazoOk7wBw0" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "943006074419-bal1qb28ssgh0v2ta1fhj1vl8a9mb7tp.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "943006074419-h43c7p48nhn5f4td4oimv4dq7b1p3s29.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "com.minuit.starter", + "app_store_id": "1661696886" + } + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro new file mode 100644 index 0000000..551eb41 --- /dev/null +++ b/android/app/proguard-rules.pro @@ -0,0 +1,14 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# react-native-reanimated +-keep class com.swmansion.reanimated.** { *; } +-keep class com.facebook.react.turbomodule.** { *; } + +# Add any project specific keep options here: diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..3ec2507 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..a0f18ba --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/java/com/minuit/starter/MainActivity.kt b/android/app/src/main/java/com/minuit/starter/MainActivity.kt new file mode 100644 index 0000000..d32cd8f --- /dev/null +++ b/android/app/src/main/java/com/minuit/starter/MainActivity.kt @@ -0,0 +1,65 @@ +package com.minuit.starter +import expo.modules.splashscreen.SplashScreenManager + +import android.os.Build +import android.os.Bundle + +import com.facebook.react.ReactActivity +import com.facebook.react.ReactActivityDelegate +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled +import com.facebook.react.defaults.DefaultReactActivityDelegate + +import expo.modules.ReactActivityDelegateWrapper + +class MainActivity : ReactActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + // Set the theme to AppTheme BEFORE onCreate to support + // coloring the background, status bar, and navigation bar. + // This is required for expo-splash-screen. + // setTheme(R.style.AppTheme); + // @generated begin expo-splashscreen - expo prebuild (DO NOT MODIFY) sync-f3ff59a738c56c9a6119210cb55f0b613eb8b6af + SplashScreenManager.registerOnActivity(this) + // @generated end expo-splashscreen + super.onCreate(null) + } + + /** + * Returns the name of the main component registered from JavaScript. This is used to schedule + * rendering of the component. + */ + override fun getMainComponentName(): String = "main" + + /** + * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] + * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] + */ + override fun createReactActivityDelegate(): ReactActivityDelegate { + return ReactActivityDelegateWrapper( + this, + BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, + object : DefaultReactActivityDelegate( + this, + mainComponentName, + fabricEnabled + ){}) + } + + /** + * Align the back button behavior with Android S + * where moving root activities to background instead of finishing activities. + * @see onBackPressed + */ + override fun invokeDefaultOnBackPressed() { + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) { + if (!moveTaskToBack(false)) { + // For non-root activities, use the default implementation to finish them. + super.invokeDefaultOnBackPressed() + } + return + } + + // Use the default back button implementation on Android S + // because it's doing more than [Activity.moveTaskToBack] in fact. + super.invokeDefaultOnBackPressed() + } +} diff --git a/android/app/src/main/java/com/minuit/starter/MainApplication.kt b/android/app/src/main/java/com/minuit/starter/MainApplication.kt new file mode 100644 index 0000000..ef50fc0 --- /dev/null +++ b/android/app/src/main/java/com/minuit/starter/MainApplication.kt @@ -0,0 +1,57 @@ +package com.minuit.starter + +import android.app.Application +import android.content.res.Configuration + +import com.facebook.react.PackageList +import com.facebook.react.ReactApplication +import com.facebook.react.ReactNativeHost +import com.facebook.react.ReactPackage +import com.facebook.react.ReactHost +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load +import com.facebook.react.defaults.DefaultReactNativeHost +import com.facebook.react.soloader.OpenSourceMergedSoMapping +import com.facebook.soloader.SoLoader + +import expo.modules.ApplicationLifecycleDispatcher +import expo.modules.ReactNativeHostWrapper + +class MainApplication : Application(), ReactApplication { + + override val reactNativeHost: ReactNativeHost = ReactNativeHostWrapper( + this, + object : DefaultReactNativeHost(this) { + override fun getPackages(): List { + val packages = PackageList(this).packages + // Packages that cannot be autolinked yet can be added manually here, for example: + // packages.add(new MyReactNativePackage()); + return packages + } + + override fun getJSMainModuleName(): String = ".expo/.virtual-metro-entry" + + override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG + + override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED + override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED + } + ) + + override val reactHost: ReactHost + get() = ReactNativeHostWrapper.createReactHost(applicationContext, reactNativeHost) + + override fun onCreate() { + super.onCreate() + SoLoader.init(this, OpenSourceMergedSoMapping) + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + // If you opted-in for the New Architecture, we load the native entry point for this app. + load() + } + ApplicationLifecycleDispatcher.onApplicationCreate(this) + } + + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig) + } +} diff --git a/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png b/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png new file mode 100644 index 0000000..4984f30 Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/splashscreen_logo.png differ diff --git a/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png b/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png new file mode 100644 index 0000000..4984f30 Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/splashscreen_logo.png differ diff --git a/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png b/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png new file mode 100644 index 0000000..4984f30 Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/splashscreen_logo.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png b/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png new file mode 100644 index 0000000..4984f30 Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/splashscreen_logo.png differ diff --git a/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png b/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png new file mode 100644 index 0000000..4984f30 Binary files /dev/null and b/android/app/src/main/res/drawable-xxxhdpi/splashscreen_logo.png differ diff --git a/android/app/src/main/res/drawable/ic_launcher_background.xml b/android/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..883b2a0 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/drawable/rn_edit_text_material.xml b/android/app/src/main/res/drawable/rn_edit_text_material.xml new file mode 100644 index 0000000..5c25e72 --- /dev/null +++ b/android/app/src/main/res/drawable/rn_edit_text_material.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..3941bea --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..3941bea --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000..7fae0cc Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..ac03dbf Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp differ diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000..afa0a4e Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000..78aaf45 Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..e1173a9 Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000..c4f6e10 Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000..7a0f085 Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..ff086fd Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..6c2d40b Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000..730e3fa Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..f7f1d06 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..3452615 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000..b11a322 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000..49a464e Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..b51fd15 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/android/app/src/main/res/values-night/colors.xml b/android/app/src/main/res/values-night/colors.xml new file mode 100644 index 0000000..3c05de5 --- /dev/null +++ b/android/app/src/main/res/values-night/colors.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..ab02d07 --- /dev/null +++ b/android/app/src/main/res/values/colors.xml @@ -0,0 +1,7 @@ + + #0F0C14 + #FFFFFF + #023c69 + #0F0C14 + #0F0C14 + \ No newline at end of file diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..f741c5e --- /dev/null +++ b/android/app/src/main/res/values/strings.xml @@ -0,0 +1,5 @@ + + minuit.starter + contain + false + \ No newline at end of file diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..3c8f0b5 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,20 @@ + + + + + \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle new file mode 100644 index 0000000..d6f01aa --- /dev/null +++ b/android/build.gradle @@ -0,0 +1,43 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + ext { + buildToolsVersion = findProperty('android.buildToolsVersion') ?: '35.0.0' + minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '24') + compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '35') + targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '34') + kotlinVersion = findProperty('android.kotlinVersion') ?: '1.9.25' + + ndkVersion = "26.1.10909125" + } + repositories { + google() + mavenCentral() + } + dependencies { + classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.2' + classpath 'com.google.gms:google-services:4.4.1' + classpath('com.android.tools.build:gradle') + classpath('com.facebook.react:react-native-gradle-plugin') + classpath('org.jetbrains.kotlin:kotlin-gradle-plugin') + } +} + +apply plugin: "com.facebook.react.rootproject" + +allprojects { + repositories { + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url(new File(['node', '--print', "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), '../android')) + } + maven { + // Android JSC is installed from npm + url(new File(['node', '--print', "require.resolve('jsc-android/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim(), '../dist')) + } + + google() + mavenCentral() + maven { url 'https://www.jitpack.io' } + } +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..9f16801 --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,61 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m +org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true + +# Enable AAPT2 PNG crunching +android.enablePngCrunchInReleaseBuilds=true + +# Use this property to specify which architecture you want to build. +# You can also override it from the CLI using +# ./gradlew -PreactNativeArchitectures=x86_64 +reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 + +# Use this property to enable support to the new architecture. +# This will allow you to use TurboModules and the Fabric render in +# your application. You should enable this flag either if you want +# to write custom TurboModules/Fabric components OR use libraries that +# are providing them. +newArchEnabled=false + +# Use this property to enable or disable the Hermes JS engine. +# If set to false, you will be using JSC instead. +hermesEnabled=true + +# Enable GIF support in React Native images (~200 B increase) +expo.gif.enabled=true +# Enable webp support in React Native images (~85 KB increase) +expo.webp.enabled=true +# Enable animated webp support (~3.4 MB increase) +# Disabled by default because iOS doesn't support animated webp +expo.webp.animated=false + +# Enable network inspector +EX_DEV_CLIENT_NETWORK_INSPECTOR=true + +# Use legacy packaging to compress native libraries in the resulting APK. +expo.useLegacyPackaging=false + +android.compileSdkVersion=35 +android.targetSdkVersion=35 +android.buildToolsVersion=35.0.0 +android.extraMavenRepos=[{"url":"../../node_modules/@notifee/react-native/android/libs"}] \ No newline at end of file diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..a4b76b9 Binary files /dev/null and b/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..79eb9d0 --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/android/gradlew b/android/gradlew new file mode 100755 index 0000000..f5feea6 --- /dev/null +++ b/android/gradlew @@ -0,0 +1,252 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/android/gradlew.bat b/android/gradlew.bat new file mode 100644 index 0000000..9b42019 --- /dev/null +++ b/android/gradlew.bat @@ -0,0 +1,94 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/android/settings.gradle b/android/settings.gradle new file mode 100644 index 0000000..0b0eb7d --- /dev/null +++ b/android/settings.gradle @@ -0,0 +1,38 @@ +pluginManagement { + includeBuild(new File(["node", "--print", "require.resolve('@react-native/gradle-plugin/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile().toString()) +} +plugins { id("com.facebook.react.settings") } + +extensions.configure(com.facebook.react.ReactSettingsExtension) { ex -> + if (System.getenv('EXPO_USE_COMMUNITY_AUTOLINKING') == '1') { + ex.autolinkLibrariesFromCommand() + } else { + def command = [ + 'node', + '--no-warnings', + '--eval', + 'require(require.resolve(\'expo-modules-autolinking\', { paths: [require.resolve(\'expo/package.json\')] }))(process.argv.slice(1))', + 'react-native-config', + '--json', + '--platform', + 'android' + ].toList() + ex.autolinkLibrariesFromCommand(command) + } +} + +rootProject.name = 'minuit.starter' + +dependencyResolutionManagement { + versionCatalogs { + reactAndroidLibs { + from(files(new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), "../gradle/libs.versions.toml"))) + } + } +} + +apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle"); +useExpoModules() + +include ':app' +includeBuild(new File(["node", "--print", "require.resolve('@react-native/gradle-plugin/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile()) diff --git a/app.json b/app.json new file mode 100644 index 0000000..50218e8 --- /dev/null +++ b/app.json @@ -0,0 +1,108 @@ +{ + "expo": { + "owner": "minuitagency", + "slug": "minuitstarter", + "name": "minuit.starter", + "version": "2024.04.1", + "scheme": "minuit", + "orientation": "portrait", + "icon": "./assets/alternateIcons/4.png", + "backgroundColor": "#0F0C14", + "jsEngine": "hermes", + "notification": { + "iosDisplayInForeground": true + }, + "updates": { + "fallbackToCacheTimeout": 0 + }, + "packagerOpts": { + "sourceExts": ["js", "json", "ts", "tsx", "jsx", "vue"] + }, + "splash": { + "image": "./assets/splash.png", + "tabletImage": "./assets/tabletSplash.png", + "resizeMode": "contain", + "backgroundColor": "#0F0C14" + }, + "ios": { + "googleServicesFile": "./config/GoogleService-Info.plist", + "supportsTablet": true, + "requireFullScreen": true, + "userInterfaceStyle": "dark", + "associatedDomains": ["applinks:minuit.starter"], + "bundleIdentifier": "com.minuit.starter", + "infoPlist": { + "UISupportedInterfaceOrientations": [ + "UIInterfaceOrientationPortrait", + "UIInterfaceOrientationPortraitUpsideDown" + ], + "UISupportedInterfaceOrientations~ipad": [ + "UIInterfaceOrientationLandscapeLeft", + "UIInterfaceOrientationLandscapeRight" + ], + "LSApplicationQueriesSchemes": ["itms-apps", "minuit"] + }, + "config": { + "usesNonExemptEncryption": false + }, + "entitlements": { + "aps-environment": "development" + }, + "appleTeamId": "W2QZ9CTMYJ" + }, + "android": { + "googleServicesFile": "./config/google-services.json", + "adaptiveIcon": { + "foregroundImage": "./assets/adaptive-icon.png", + "backgroundColor": "#FFFFFF" + }, + "package": "com.minuit.starter", + "permissions": ["android.permission.RECORD_AUDIO"] + }, + "web": { + "bundler": "metro" + }, + "plugins": [ + "react-native-compressor", + "@react-native-firebase/crashlytics", + "@react-native-firebase/app", + [ + "expo-image-picker", + { + "photosPermission": "Nous avons besoin d'accéder à votre galerie pour vous permettre d'ajouter des photos à vos tâches.", + "cameraPermission": "Nous avons besoin d'accéder à votre appareil photo pour vous permettre de prendre des photos de vos tâches.", + "microphonePermission": "Nous avons besoin d'accéder à votre microphone pour vous permettre d'enregistrer des messages vocaux pour vos tâches." + } + ], + [ + "expo-build-properties", + { + "ios": { + "deploymentTarget": "15.1", + "useFrameworks": "static" + }, + "android": { + "extraMavenRepos": [ + "../../node_modules/@notifee/react-native/android/libs" + ], + "compileSdkVersion": 35, + "targetSdkVersion": 35, + "buildToolsVersion": "35.0.0" + } + } + ], + [ + "expo-document-picker", + { + "iCloudContainerEnvironment": "Production" + } + ], + "expo-font" + ], + "extra": { + "eas": { + "projectId": "00bf388b-0a08-49fb-8d3c-85bd14e2feac" + } + } + } +} diff --git a/assets/adaptive-icon.png b/assets/adaptive-icon.png new file mode 100644 index 0000000..03d6f6b Binary files /dev/null and b/assets/adaptive-icon.png differ diff --git a/assets/alternateIcons/1.png b/assets/alternateIcons/1.png new file mode 100644 index 0000000..524ce9c Binary files /dev/null and b/assets/alternateIcons/1.png differ diff --git a/assets/alternateIcons/2.png b/assets/alternateIcons/2.png new file mode 100644 index 0000000..32cb6b2 Binary files /dev/null and b/assets/alternateIcons/2.png differ diff --git a/assets/alternateIcons/3.png b/assets/alternateIcons/3.png new file mode 100644 index 0000000..052d3e0 Binary files /dev/null and b/assets/alternateIcons/3.png differ diff --git a/assets/alternateIcons/4.png b/assets/alternateIcons/4.png new file mode 100644 index 0000000..054608c Binary files /dev/null and b/assets/alternateIcons/4.png differ diff --git a/assets/desktopIcon.icns b/assets/desktopIcon.icns new file mode 100644 index 0000000..e04d938 Binary files /dev/null and b/assets/desktopIcon.icns differ diff --git a/assets/icon.png b/assets/icon.png new file mode 100644 index 0000000..6bde0da Binary files /dev/null and b/assets/icon.png differ diff --git a/assets/splash.png b/assets/splash.png new file mode 100644 index 0000000..be746bc Binary files /dev/null and b/assets/splash.png differ diff --git a/assets/tabletSplash.png b/assets/tabletSplash.png new file mode 100644 index 0000000..8d5ec59 Binary files /dev/null and b/assets/tabletSplash.png differ diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..305e0b7 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,10 @@ +module.exports = function (api) { + api.cache(true); + return { + presets: ["babel-preset-expo"], + plugins: [ + "@babel/plugin-proposal-export-namespace-from", + "react-native-reanimated/plugin", + ], + }; +}; \ No newline at end of file diff --git a/cleanProject.js b/cleanProject.js new file mode 100644 index 0000000..ee02034 --- /dev/null +++ b/cleanProject.js @@ -0,0 +1,251 @@ +const fs = require("fs"); +const path = require("path"); +const parser = require("@babel/parser"); +const traverse = require("@babel/traverse").default; + +const entryFile = path.resolve(__dirname, "index.js"); +const srcDir = path.resolve(__dirname, "src"); + +// Extensions de fichiers à analyser +const scriptExtensions = [".js", ".jsx", ".ts", ".tsx", ".web.js"]; +const imageExtensions = [".png", ".jpg", ".jpeg", ".gif", ".svg"]; + +// Fonction pour obtenir tous les fichiers dans un dossier avec des extensions spécifiques +function getAllFiles(dir, extensions, fileList = []) { + const files = fs.readdirSync(dir); + files.forEach(function (file) { + const filePath = path.join(dir, file); + const stat = fs.statSync(filePath); + if (stat.isDirectory()) { + getAllFiles(filePath, extensions, fileList); + } else if (extensions.includes(path.extname(file))) { + fileList.push(filePath); + } + }); + return fileList; +} + +// Vérifie si un chemin est un fichier valide +function isValidFile(filePath) { + return fs.existsSync(filePath) && fs.statSync(filePath).isFile(); +} + +// Résout le chemin de l'import en un fichier valide +function resolveImport(filePath, importPath) { + let importedFile = path.resolve(path.dirname(filePath), importPath); + + // Liste des extensions à tester, y compris .web.js + const allExtensions = scriptExtensions; + + // Si le chemin n'a pas d'extension, essayer avec différentes extensions + if (!path.extname(importedFile)) { + for (const ext of allExtensions) { + if (isValidFile(importedFile + ext)) { + return importedFile + ext; + } + } + } + + // Si un fichier avec l'extension actuelle existe, le retourner + if (isValidFile(importedFile)) { + return importedFile; + } + + // Si le chemin est un répertoire, chercher un index avec les extensions + if (fs.existsSync(importedFile) && fs.statSync(importedFile).isDirectory()) { + const indexFiles = allExtensions.map((ext) => "index" + ext); + for (const indexFile of indexFiles) { + const indexFilePath = path.join(importedFile, indexFile); + if (isValidFile(indexFilePath)) { + return indexFilePath; + } + } + } + + // Aucun fichier valide trouvé + return null; +} + +// Analyse des fichiers pour trouver les imports +function getDependencies( + filePath, + visitedFiles = new Set(), + usedDependencies = new Set(), + usedFiles = new Set(), + usedAssets = new Set() +) { + if (visitedFiles.has(filePath)) + return { usedDependencies, usedFiles, usedAssets }; + visitedFiles.add(filePath); + usedFiles.add(filePath); + + const content = fs.readFileSync(filePath, "utf-8"); + let ast; + try { + ast = parser.parse(content, { + sourceType: "module", + plugins: ["jsx", "typescript", "classProperties", "dynamicImport"], + }); + } catch (error) { + console.error(`Erreur lors de l'analyse du fichier ${filePath}:`, error); + return { usedDependencies, usedFiles, usedAssets }; + } + + traverse(ast, { + ImportDeclaration({ node }) { + const importPath = node.source.value; + handleImport( + filePath, + importPath, + visitedFiles, + usedDependencies, + usedFiles, + usedAssets + ); + }, + CallExpression({ node }) { + if ( + node.callee.type === "Import" || + (node.callee.name === "require" && node.arguments.length) + ) { + const importArg = node.arguments[0]; + if (importArg && importArg.type === "StringLiteral") { + const importPath = importArg.value; + handleImport( + filePath, + importPath, + visitedFiles, + usedDependencies, + usedFiles, + usedAssets + ); + } + } + }, + }); + + // Vérifier si un fichier .web.js correspondant existe + if (filePath.endsWith(".js")) { + const webFilePath = filePath.replace(/\.js$/, ".web.js"); + if (isValidFile(webFilePath)) { + getDependencies( + webFilePath, + visitedFiles, + usedDependencies, + usedFiles, + usedAssets + ); + } + } + + return { usedDependencies, usedFiles, usedAssets }; +} + +// Fonction pour gérer les imports +function handleImport( + filePath, + importPath, + visitedFiles, + usedDependencies, + usedFiles, + usedAssets +) { + if (importPath.startsWith(".")) { + // Chemin relatif + const resolvedPath = resolveImport(filePath, importPath); + if (resolvedPath) { + const ext = path.extname(resolvedPath); + if (scriptExtensions.includes(ext)) { + getDependencies( + resolvedPath, + visitedFiles, + usedDependencies, + usedFiles, + usedAssets + ); + } else if (imageExtensions.includes(ext)) { + usedAssets.add(resolvedPath); + } + } + } else { + // Dépendance de node_modules + const dep = importPath.split("/")[0]; + usedDependencies.add(dep); + } +} + +(async () => { + // Étape 1: Obtenir tous les fichiers utilisés + const allScriptFiles = getAllFiles(srcDir, scriptExtensions); + const allAssetFiles = getAllFiles(srcDir, imageExtensions); + + const { usedDependencies, usedFiles, usedAssets } = + getDependencies(entryFile); + + // Étape 2: Supprimer les fichiers scripts inutilisés + const unusedScriptFiles = allScriptFiles.filter( + (file) => !usedFiles.has(file) + ); + + unusedScriptFiles.forEach((file) => { + fs.unlinkSync(file); + console.log(`Fichier script supprimé: ${file}`); + }); + + // Étape 3: Supprimer les images non utilisées + const unusedAssetFiles = allAssetFiles.filter( + (file) => !usedAssets.has(file) + ); + + unusedAssetFiles.forEach((file) => { + fs.unlinkSync(file); + console.log(`Fichier image supprimé: ${file}`); + }); + + // Étape 4: Optimiser les images utilisées sans perte de qualité + async function optimizeImages(usedAssets) { + // Import dynamique des modules ES + const imagemin = (await import("imagemin")).default; + const imageminOptipng = (await import("imagemin-optipng")).default; + const imageminJpegtran = (await import("imagemin-jpegtran")).default; + const imageminGifsicle = (await import("imagemin-gifsicle")).default; + const imageminSvgo = (await import("imagemin-svgo")).default; + + for (const file of usedAssets) { + const ext = path.extname(file).toLowerCase(); + const plugins = []; + + if (ext === ".png") { + plugins.push(imageminOptipng({ optimizationLevel: 3 })); + } else if (ext === ".jpg" || ext === ".jpeg") { + plugins.push(imageminJpegtran({ progressive: true })); + } else if (ext === ".gif") { + plugins.push(imageminGifsicle({ optimizationLevel: 3 })); + } else if (ext === ".svg") { + plugins.push(imageminSvgo()); + } else { + continue; + } + + try { + const optimized = await imagemin([file], { + destination: path.dirname(file), + plugins: plugins, + }); + + if (optimized && optimized.length > 0) { + console.log(`Image optimisée: ${file}`); + } else { + console.log(`Image déjà optimisée ou non optimisable: ${file}`); + } + } catch (error) { + console.error( + `Erreur lors de l'optimisation de l'image ${file}:`, + error + ); + } + } + } + + await optimizeImages(usedAssets); +})(); diff --git a/config/GoogleService-Info.plist b/config/GoogleService-Info.plist new file mode 100644 index 0000000..e3befd1 --- /dev/null +++ b/config/GoogleService-Info.plist @@ -0,0 +1,34 @@ + + + + + CLIENT_ID + 943006074419-h43c7p48nhn5f4td4oimv4dq7b1p3s29.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.943006074419-h43c7p48nhn5f4td4oimv4dq7b1p3s29 + API_KEY + AIzaSyAkl2RAzUCYTQCcYhSeij6-tXNk6z7121Y + GCM_SENDER_ID + 943006074419 + PLIST_VERSION + 1 + BUNDLE_ID + com.minuit.starter + PROJECT_ID + minuitcloud + STORAGE_BUCKET + minuitcloud.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:943006074419:ios:5deb4cce66c04c09658546 + + \ No newline at end of file diff --git a/config/google-services.json b/config/google-services.json new file mode 100644 index 0000000..4e371c8 --- /dev/null +++ b/config/google-services.json @@ -0,0 +1,47 @@ +{ + "project_info": { + "project_number": "943006074419", + "project_id": "minuitcloud", + "storage_bucket": "minuitcloud.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:943006074419:android:1cf962aa044ea020658546", + "android_client_info": { + "package_name": "com.minuit.starter" + } + }, + "oauth_client": [ + { + "client_id": "943006074419-bal1qb28ssgh0v2ta1fhj1vl8a9mb7tp.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyA13RHqqFcx0tu6qja0shDomazoOk7wBw0" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "943006074419-bal1qb28ssgh0v2ta1fhj1vl8a9mb7tp.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "943006074419-h43c7p48nhn5f4td4oimv4dq7b1p3s29.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "com.minuit.starter", + "app_store_id": "1661696886" + } + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/eas.json b/eas.json new file mode 100644 index 0000000..ff3a5ff --- /dev/null +++ b/eas.json @@ -0,0 +1,30 @@ +{ + "cli": { + "version": ">= 7.2.0", + "appVersionSource": "remote", + "promptToConfigurePushNotifications": true + }, + "build": { + "production": { + "ios": { + "buildConfiguration": "Release", + "autoIncrement": "buildNumber" + } + }, + "preview": { + "distribution": "internal", + "ios": { + "simulator": true + } + } + }, + "submit": { + "production": { + "ios": { + "appleId": "letawny@gmail.com", + "ascAppId": "1661696886", + "appleTeamId": "MW8MX2T3ZL" + } + } + } +} diff --git a/firebase.json b/firebase.json new file mode 100644 index 0000000..dab723f --- /dev/null +++ b/firebase.json @@ -0,0 +1,14 @@ +{ + "functions": { + "ignore": [ + "node_modules", + ".git", + "firebase-debug.log", + "firebase-debug.*.log" + ], + "predeploy": [] + }, + "react-native": { + "crashlytics_debug_enabled": true + } +} diff --git a/functions/.env b/functions/.env new file mode 100644 index 0000000..8352685 --- /dev/null +++ b/functions/.env @@ -0,0 +1,3 @@ +# GOOGLE GENAI +GOOGLE_GENAI_API_KEY=... + diff --git a/functions/.gitignore b/functions/.gitignore new file mode 100644 index 0000000..40b878d --- /dev/null +++ b/functions/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/functions/firebase-debug.log b/functions/firebase-debug.log new file mode 100644 index 0000000..1b27ab8 --- /dev/null +++ b/functions/firebase-debug.log @@ -0,0 +1,113 @@ +[debug] [2024-11-29T15:16:33.623Z] ---------------------------------------------------------------------- +[debug] [2024-11-29T15:16:33.625Z] Command: /Users/theo/.nvm/versions/node/v18.17.0/bin/node /Users/theo/.nvm/versions/node/v18.17.0/bin/firebase emulators:start +[debug] [2024-11-29T15:16:33.625Z] CLI Version: 13.18.0 +[debug] [2024-11-29T15:16:33.626Z] Platform: darwin +[debug] [2024-11-29T15:16:33.626Z] Node Version: v18.17.0 +[debug] [2024-11-29T15:16:33.628Z] Time: Fri Nov 29 2024 16:16:33 GMT+0100 (Central European Standard Time) +[debug] [2024-11-29T15:16:33.629Z] ---------------------------------------------------------------------- +[debug] +[debug] [2024-11-29T15:16:33.795Z] Object "" in "firebase.json" has unknown property: {"additionalProperty":"react-native"} +[debug] [2024-11-29T15:16:33.804Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"] +[debug] [2024-11-29T15:16:33.805Z] > authorizing via signed-in user (letawny@gmail.com) +[info] i emulators: Starting emulators: functions {"metadata":{"emulator":{"name":"hub"},"message":"Starting emulators: functions"}} +[debug] [2024-11-29T15:16:35.338Z] [logging] Logging Emulator only supports listening on one address (127.0.0.1). Not listening on ::1 +[debug] [2024-11-29T15:16:35.339Z] assigned listening specs for emulators {"user":{"hub":[{"address":"127.0.0.1","family":"IPv4","port":4400},{"address":"::1","family":"IPv6","port":4400}],"ui":[{"address":"127.0.0.1","family":"IPv4","port":4000},{"address":"::1","family":"IPv6","port":4000}],"logging":[{"address":"127.0.0.1","family":"IPv4","port":4500}]},"metadata":{"message":"assigned listening specs for emulators"}} +[debug] [2024-11-29T15:16:35.347Z] [hub] writing locator at /var/folders/xw/v22l0r3n74lfydgqkyv8br5c0000gp/T/hub-starsclick.json +[debug] [2024-11-29T15:16:36.711Z] [functions] Functions Emulator only supports listening on one address (127.0.0.1). Not listening on ::1 +[debug] [2024-11-29T15:16:36.712Z] [eventarc] Eventarc Emulator only supports listening on one address (127.0.0.1). Not listening on ::1 +[debug] [2024-11-29T15:16:36.712Z] [tasks] Cloud Tasks Emulator only supports listening on one address (127.0.0.1). Not listening on ::1 +[debug] [2024-11-29T15:16:36.713Z] late-assigned ports for functions and eventarc emulators {"user":{"hub":[{"address":"127.0.0.1","family":"IPv4","port":4400},{"address":"::1","family":"IPv6","port":4400}],"ui":[{"address":"127.0.0.1","family":"IPv4","port":4000},{"address":"::1","family":"IPv6","port":4000}],"logging":[{"address":"127.0.0.1","family":"IPv4","port":4500}],"functions":[{"address":"127.0.0.1","family":"IPv4","port":5001}],"eventarc":[{"address":"127.0.0.1","family":"IPv4","port":9299}],"tasks":[{"address":"127.0.0.1","family":"IPv4","port":9499}]},"metadata":{"message":"late-assigned ports for functions and eventarc emulators"}} +[warn] ⚠ functions: The following emulators are not running, calls to these services from the Functions emulator will affect production: auth, firestore, database, hosting, pubsub, storage, dataconnect {"metadata":{"emulator":{"name":"functions"},"message":"The following emulators are not running, calls to these services from the Functions emulator will affect production: \u001b[1mauth, firestore, database, hosting, pubsub, storage, dataconnect\u001b[22m"}} +[debug] [2024-11-29T15:16:36.719Z] defaultcredentials: writing to file /Users/theo/.config/firebase/letawny_gmail_com_application_default_credentials.json +[debug] [2024-11-29T15:16:36.725Z] Setting GAC to /Users/theo/.config/firebase/letawny_gmail_com_application_default_credentials.json {"metadata":{"emulator":{"name":"functions"},"message":"Setting GAC to /Users/theo/.config/firebase/letawny_gmail_com_application_default_credentials.json"}} +[debug] [2024-11-29T15:16:36.728Z] > refreshing access token with scopes: [] +[debug] [2024-11-29T15:16:36.730Z] >>> [apiv2][query] POST https://www.googleapis.com/oauth2/v3/token [none] +[debug] [2024-11-29T15:16:36.730Z] >>> [apiv2][body] POST https://www.googleapis.com/oauth2/v3/token [omitted] +[debug] [2024-11-29T15:16:36.876Z] <<< [apiv2][status] POST https://www.googleapis.com/oauth2/v3/token 200 +[debug] [2024-11-29T15:16:36.878Z] <<< [apiv2][body] POST https://www.googleapis.com/oauth2/v3/token [omitted] +[debug] [2024-11-29T15:16:36.900Z] >>> [apiv2][query] GET https://firebase.googleapis.com/v1beta1/projects/starsclick/adminSdkConfig [none] +[debug] [2024-11-29T15:16:37.423Z] <<< [apiv2][status] GET https://firebase.googleapis.com/v1beta1/projects/starsclick/adminSdkConfig 200 +[debug] [2024-11-29T15:16:37.423Z] <<< [apiv2][body] GET https://firebase.googleapis.com/v1beta1/projects/starsclick/adminSdkConfig {"projectId":"starsclick","storageBucket":"starsclick.appspot.com","locationId":"europe-west"} +[debug] [2024-11-29T15:16:37.462Z] Ignoring unsupported arg: auto_download {"metadata":{"emulator":{"name":"ui"},"message":"Ignoring unsupported arg: auto_download"}} +[debug] [2024-11-29T15:16:37.463Z] Ignoring unsupported arg: port {"metadata":{"emulator":{"name":"ui"},"message":"Ignoring unsupported arg: port"}} +[debug] [2024-11-29T15:16:37.463Z] Starting Emulator UI with command {"binary":"node","args":["/Users/theo/.cache/firebase/emulators/ui-v1.13.0/server/server.mjs"],"optionalArgs":[],"joinArgs":false,"shell":false} {"metadata":{"emulator":{"name":"ui"},"message":"Starting Emulator UI with command {\"binary\":\"node\",\"args\":[\"/Users/theo/.cache/firebase/emulators/ui-v1.13.0/server/server.mjs\"],\"optionalArgs\":[],\"joinArgs\":false,\"shell\":false}"}} +[info] i ui: Emulator UI logging to ui-debug.log {"metadata":{"emulator":{"name":"ui"},"message":"Emulator UI logging to \u001b[1mui-debug.log\u001b[22m"}} +[debug] [2024-11-29T15:16:37.616Z] Web / API server started at 127.0.0.1:4000 + {"metadata":{"emulator":{"name":"ui"},"message":"Web / API server started at 127.0.0.1:4000\n"}} +[debug] [2024-11-29T15:16:37.616Z] Web / API server started at ::1:4000 + {"metadata":{"emulator":{"name":"ui"},"message":"Web / API server started at ::1:4000\n"}} +[info] i functions: Watching "/Users/theo/starsclick/functions" for Cloud Functions... {"metadata":{"emulator":{"name":"functions"},"message":"Watching \"/Users/theo/starsclick/functions\" for Cloud Functions..."}} +[debug] [2024-11-29T15:16:37.683Z] Validating nodejs source +[warn] ⚠ functions: package.json indicates an outdated version of firebase-functions. Please upgrade using npm install --save firebase-functions@latest in your functions directory. +[warn] ⚠ functions: Please note that there will be breaking changes when you upgrade. +[debug] [2024-11-29T15:16:38.518Z] > [functions] package.json contents: { + "name": "functions", + "description": "Cloud Functions for Firebase", + "scripts": { + "serve": "firebase emulators:start --only functions", + "shell": "firebase functions:shell", + "start": "npm run shell", + "deploy": "firebase deploy --only functions", + "logs": "firebase functions:log" + }, + "engines": { + "node": "18" + }, + "main": "index.js", + "dependencies": { + "@babel/preset-env": "^7.25.8", + "@babel/preset-react": "^7.25.7", + "@babel/register": "^7.25.7", + "@genkit-ai/google-cloud": "^0.9.4", + "@genkit-ai/googleai": "^0.9.4", + "@genkit-ai/vertexai": "^0.9.4", + "@react-pdf/renderer": "^2.3.0", + "axios": "^1.6.2", + "crypto-js": "^4.2.0", + "dotenv": "^16.0.3", + "firebase-admin": "^11.8.0", + "firebase-functions": "^4.3.1", + "lodash": "^4.17.21", + "moment": "^2.30.1", + "moment-timezone": "^0.5.45", + "stripe": "^16.1.0", + "react": "^17.0.0" + }, + "devDependencies": { + "firebase-functions-test": "^3.1.0" + }, + "private": true +} +[debug] [2024-11-29T15:16:38.518Z] Building nodejs source +[debug] [2024-11-29T15:16:38.518Z] Failed to find version of module node: reached end of search path /Users/theo/starsclick/functions/node_modules +[info] ✔ functions: Using node@18 from host. +[info] i functions: Loaded environment variables from .env. +[debug] [2024-11-29T15:16:38.522Z] Could not find functions.yaml. Must use http discovery +[debug] [2024-11-29T15:16:38.537Z] Found firebase-functions binary at '/Users/theo/starsclick/functions/node_modules/.bin/firebase-functions' +[info] Serving at port 8113 + +[debug] [2024-11-29T15:16:41.014Z] Got response from /__/functions.yaml {"endpoints":{"users-userUpdateListener":{"availableMemoryMb":null,"timeoutSeconds":null,"minInstances":null,"maxInstances":null,"ingressSettings":null,"concurrency":null,"serviceAccountEmail":null,"vpc":null,"platform":"gcfv2","labels":{},"eventTrigger":{"eventType":"google.cloud.firestore.document.v1.written","eventFilters":{"database":"(default)","namespace":"(default)"},"eventFilterPathPatterns":{"document":"users/{userID}"},"retry":false},"entryPoint":"users.userUpdateListener"},"users-deleteAccount":{"availableMemoryMb":null,"timeoutSeconds":null,"minInstances":null,"maxInstances":null,"ingressSettings":null,"concurrency":null,"serviceAccountEmail":null,"vpc":null,"platform":"gcfv2","labels":{},"callableTrigger":{},"entryPoint":"users.deleteAccount"},"payments-createCheckoutSession":{"availableMemoryMb":null,"timeoutSeconds":null,"minInstances":null,"maxInstances":null,"ingressSettings":null,"concurrency":null,"serviceAccountEmail":null,"vpc":null,"platform":"gcfv2","labels":{},"callableTrigger":{},"entryPoint":"payments.createCheckoutSession"},"payments-getPremiumStatus":{"availableMemoryMb":null,"timeoutSeconds":null,"minInstances":null,"maxInstances":null,"ingressSettings":null,"concurrency":null,"serviceAccountEmail":null,"vpc":null,"platform":"gcfv2","labels":{},"callableTrigger":{},"entryPoint":"payments.getPremiumStatus"},"payments-createStripeCustomerPortalSession":{"availableMemoryMb":null,"timeoutSeconds":null,"minInstances":null,"maxInstances":null,"ingressSettings":null,"concurrency":null,"serviceAccountEmail":null,"vpc":null,"platform":"gcfv2","labels":{},"callableTrigger":{},"entryPoint":"payments.createStripeCustomerPortalSession"},"documents-generateDocumentFromTemplate":{"availableMemoryMb":null,"timeoutSeconds":null,"minInstances":null,"maxInstances":null,"ingressSettings":null,"concurrency":null,"serviceAccountEmail":null,"vpc":null,"platform":"gcfv2","labels":{},"callableTrigger":{},"entryPoint":"documents.generateDocumentFromTemplate"},"documents-testDocumentGeneration":{"platform":"gcfv1","availableMemoryMb":512,"timeoutSeconds":null,"minInstances":null,"maxInstances":null,"ingressSettings":null,"serviceAccountEmail":null,"vpc":null,"httpsTrigger":{},"entryPoint":"documents.testDocumentGeneration"}},"specVersion":"v1alpha1","requiredAPIs":[]} +[info] ✔ functions: Loaded functions definitions from source: users.userUpdateListener, users.deleteAccount, payments.createCheckoutSession, payments.getPremiumStatus, payments.createStripeCustomerPortalSession, documents.generateDocumentFromTemplate, documents.testDocumentGeneration. {"metadata":{"emulator":{"name":"functions"},"message":"Loaded functions definitions from source: users.userUpdateListener, users.deleteAccount, payments.createCheckoutSession, payments.getPremiumStatus, payments.createStripeCustomerPortalSession, documents.generateDocumentFromTemplate, documents.testDocumentGeneration."}} +[info] i functions[us-central1-users-userUpdateListener]: function ignored because the firestore emulator does not exist or is not running. {"metadata":{"emulator":{"name":"functions"},"message":"function ignored because the firestore emulator does not exist or is not running."}} +[info] ✔ functions[us-central1-users-deleteAccount]: http function initialized (http://127.0.0.1:5001/starsclick/us-central1/users-deleteAccount). {"metadata":{"emulator":{"name":"functions"},"message":"\u001b[1mhttp\u001b[22m function initialized (http://127.0.0.1:5001/starsclick/us-central1/users-deleteAccount)."}} +[info] ✔ functions[us-central1-payments-createCheckoutSession]: http function initialized (http://127.0.0.1:5001/starsclick/us-central1/payments-createCheckoutSession). {"metadata":{"emulator":{"name":"functions"},"message":"\u001b[1mhttp\u001b[22m function initialized (http://127.0.0.1:5001/starsclick/us-central1/payments-createCheckoutSession)."}} +[info] ✔ functions[us-central1-payments-getPremiumStatus]: http function initialized (http://127.0.0.1:5001/starsclick/us-central1/payments-getPremiumStatus). {"metadata":{"emulator":{"name":"functions"},"message":"\u001b[1mhttp\u001b[22m function initialized (http://127.0.0.1:5001/starsclick/us-central1/payments-getPremiumStatus)."}} +[info] ✔ functions[us-central1-payments-createStripeCustomerPortalSession]: http function initialized (http://127.0.0.1:5001/starsclick/us-central1/payments-createStripeCustomerPortalSession). {"metadata":{"emulator":{"name":"functions"},"message":"\u001b[1mhttp\u001b[22m function initialized (http://127.0.0.1:5001/starsclick/us-central1/payments-createStripeCustomerPortalSession)."}} +[info] ✔ functions[us-central1-documents-generateDocumentFromTemplate]: http function initialized (http://127.0.0.1:5001/starsclick/us-central1/documents-generateDocumentFromTemplate). {"metadata":{"emulator":{"name":"functions"},"message":"\u001b[1mhttp\u001b[22m function initialized (http://127.0.0.1:5001/starsclick/us-central1/documents-generateDocumentFromTemplate)."}} +[info] ✔ functions[us-central1-documents-testDocumentGeneration]: http function initialized (http://127.0.0.1:5001/starsclick/us-central1/documents-testDocumentGeneration). {"metadata":{"emulator":{"name":"functions"},"message":"\u001b[1mhttp\u001b[22m function initialized (http://127.0.0.1:5001/starsclick/us-central1/documents-testDocumentGeneration)."}} +[info] +┌─────────────────────────────────────────────────────────────┐ +│ ✔ All emulators ready! It is now safe to connect your app. │ +│ i View Emulator UI at http://127.0.0.1:4000/ │ +└─────────────────────────────────────────────────────────────┘ + +┌───────────┬────────────────┬─────────────────────────────────┐ +│ Emulator │ Host:Port │ View in Emulator UI │ +├───────────┼────────────────┼─────────────────────────────────┤ +│ Functions │ 127.0.0.1:5001 │ http://127.0.0.1:4000/functions │ +└───────────┴────────────────┴─────────────────────────────────┘ + Emulator Hub running at 127.0.0.1:4400 + Other reserved ports: 4500 + +Issues? Report them at https://github.com/firebase/firebase-tools/issues and attach the *-debug.log files. + diff --git a/functions/index.js b/functions/index.js new file mode 100644 index 0000000..712eca2 --- /dev/null +++ b/functions/index.js @@ -0,0 +1,39 @@ +const admin = require("firebase-admin"); + +const serviceAccount = require("./serviceAccountProd.json"); + +admin.initializeApp({ + credential: admin.credential.cert(serviceAccount), +}); + +let db = admin.firestore(); +exports.db = db; + + +const { vertexAI, gemini15Flash } = require("@genkit-ai/vertexai"); +const { genkit } = require("genkit"); + +require("dotenv").config(); + +require("@babel/register")({ + presets: ["@babel/preset-env", "@babel/preset-react"], +}); + +// configure a Genkit instance +exports.genkitInstance = genkit({ + plugins: [vertexAI({ projectId: "starsclick", location: "us-central1" })], + logLevel: "debug", + enableTracingAndMetrics: true, + model: gemini15Flash, // set default model +}); + + +exports.refsList = { + users: db.collection("users"), + documents: db.collection("documents"), + logs: db.collection("logs"), +}; + +exports.users = require("./src/users"); +exports.payments = require("./src/payments"); +exports.documents = require("./src/documents"); \ No newline at end of file diff --git a/functions/package-lock.json b/functions/package-lock.json new file mode 100644 index 0000000..f872255 --- /dev/null +++ b/functions/package-lock.json @@ -0,0 +1,23534 @@ +{ + "name": "functions", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "functions", + "dependencies": { + "@babel/preset-env": "^7.25.8", + "@babel/preset-react": "^7.25.7", + "@babel/register": "^7.25.7", + "@genkit-ai/google-cloud": "^0.9.4", + "@genkit-ai/googleai": "^0.9.4", + "@genkit-ai/vertexai": "^0.9.4", + "@react-pdf/renderer": "^2.3.0", + "axios": "^1.6.2", + "crypto-js": "^4.2.0", + "dotenv": "^16.0.3", + "firebase-admin": "^11.8.0", + "firebase-functions": "^4.3.1", + "lodash": "^4.17.21", + "moment": "^2.30.1", + "moment-timezone": "^0.5.45", + "react": "^17.0.0", + "stripe": "^16.1.0" + }, + "devDependencies": { + "firebase-functions-test": "^3.1.0" + }, + "engines": { + "node": "18" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@anthropic-ai/sdk": { + "version": "0.24.3", + "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.24.3.tgz", + "integrity": "sha512-916wJXO6T6k8R6BAAcLhLPv/pnLGy7YSEBZXZ1XTFbLcTZE8oTy3oDW9WJf9KKZwMvVcePIfoTSvzXHRcGxkQQ==", + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7", + "web-streams-polyfill": "^3.2.1" + } + }, + "node_modules/@anthropic-ai/sdk/node_modules/@types/node": { + "version": "18.19.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.43.tgz", + "integrity": "sha512-Mw/YlgXnyJdEwLoFv2dpuJaDFriX+Pc+0qOBJ57jC1H6cDxIj2xc5yUrdtArDVG0m+KV6622a4p2tenEqB3C/g==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@anthropic-ai/vertex-sdk": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@anthropic-ai/vertex-sdk/-/vertex-sdk-0.4.1.tgz", + "integrity": "sha512-RT/2CWzqyAcJDZWxnNc1mXa7XiiHDaQ9aknfW4mIDw6zE+Zj/R2vCKpTb0dIwrmHYNOyKQNaD7Z1ynDt9oXFWA==", + "dependencies": { + "@anthropic-ai/sdk": ">=0.14 <1", + "google-auth-library": "^9.4.2" + } + }, + "node_modules/@anthropic-ai/vertex-sdk/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@anthropic-ai/vertex-sdk/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@anthropic-ai/vertex-sdk/node_modules/gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@anthropic-ai/vertex-sdk/node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@anthropic-ai/vertex-sdk/node_modules/google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@anthropic-ai/vertex-sdk/node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@anthropic-ai/vertex-sdk/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@anthropic-ai/vertex-sdk/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@anthropic-ai/vertex-sdk/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", + "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", + "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "peer": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.3", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.3", + "@babel/types": "^7.23.3", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "peer": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "peer": true + }, + "node_modules/@babel/generator": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", + "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "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" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", + "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "dependencies": { + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "dependencies": { + "@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/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz", + "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", + "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "peer": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "dependencies": { + "@babel/types": "^7.26.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", + "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", + "dependencies": { + "@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/traverse": "^7.25.9", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", + "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", + "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-simple-access": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", + "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz", + "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", + "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz", + "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz", + "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", + "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", + "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "dependencies": { + "@babel/compat-data": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.38.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.25.9.tgz", + "integrity": "sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-transform-react-display-name": "^7.25.9", + "@babel/plugin-transform-react-jsx": "^7.25.9", + "@babel/plugin-transform-react-jsx-development": "^7.25.9", + "@babel/plugin-transform-react-pure-annotations": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.25.9.tgz", + "integrity": "sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==", + "dependencies": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.6", + "source-map-support": "^0.5.16" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/register/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "peer": true + }, + "node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-1.2.1.tgz", + "integrity": "sha512-7PQA7EH43S0CxcOa9OeAnaeA0oQ+e/DHNPZwSQM9CQHW76jle5+OvLdibRp/Aafs9KXbLhxyjOTkRjWUbQEd3Q==", + "dependencies": { + "text-decoding": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@firebase/app-check-interop-types": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.2.tgz", + "integrity": "sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ==", + "optional": true + }, + "node_modules/@firebase/app-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz", + "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==" + }, + "node_modules/@firebase/auth-interop-types": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz", + "integrity": "sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg==" + }, + "node_modules/@firebase/component": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.4.tgz", + "integrity": "sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA==", + "dependencies": { + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.14.4.tgz", + "integrity": "sha512-+Ea/IKGwh42jwdjCyzTmeZeLM3oy1h0mFPsTy6OqCWzcu/KFqRAr5Tt1HRCOBlNOdbh84JPZC47WLU18n2VbxQ==", + "dependencies": { + "@firebase/auth-interop-types": "0.2.1", + "@firebase/component": "0.6.4", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.3", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-compat": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.3.4.tgz", + "integrity": "sha512-kuAW+l+sLMUKBThnvxvUZ+Q1ZrF/vFJ58iUY9kAcbX48U03nVzIF6Tmkf0p3WVQwMqiXguSgtOPIB6ZCeF+5Gg==", + "dependencies": { + "@firebase/component": "0.6.4", + "@firebase/database": "0.14.4", + "@firebase/database-types": "0.10.4", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-types": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.10.4.tgz", + "integrity": "sha512-dPySn0vJ/89ZeBac70T+2tWWPiJXWbmRygYv0smT5TfE3hDrQ09eKMF3Y+vMlTdrMWq7mUdYW5REWPSGH4kAZQ==", + "dependencies": { + "@firebase/app-types": "0.9.0", + "@firebase/util": "1.9.3" + } + }, + "node_modules/@firebase/logger": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz", + "integrity": "sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/util": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.3.tgz", + "integrity": "sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@genkit-ai/ai": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@genkit-ai/ai/-/ai-0.9.6.tgz", + "integrity": "sha512-GiNK8LmCIs/sU6TgVG6GxRpYcIerJdXE649RJsjJQb5pTajOGUYTaVB14nWT4CBKsW2UseSembe0oG64gmxCDg==", + "peer": true, + "dependencies": { + "@genkit-ai/core": "0.9.6", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.11.19", + "colorette": "^2.0.20", + "json5": "^2.2.3", + "node-fetch": "^3.3.2", + "partial-json": "^0.1.7", + "uuid": "^10.0.0" + } + }, + "node_modules/@genkit-ai/ai/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "peer": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/@genkit-ai/ai/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "peer": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@genkit-ai/core": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@genkit-ai/core/-/core-0.9.6.tgz", + "integrity": "sha512-VzcNkVNFSTYNI39bQPAN11QbtZNHuCVxUPcAR0pGAcY6SpqjRSa21WxdLn3dDNjP6sv+pOZdJX3VFln2q5krvg==", + "peer": true, + "dependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^1.25.0", + "@opentelemetry/core": "^1.25.0", + "@opentelemetry/sdk-metrics": "^1.25.0", + "@opentelemetry/sdk-node": "^0.52.0", + "@opentelemetry/sdk-trace-base": "^1.25.0", + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "async-mutex": "^0.5.0", + "body-parser": "^1.20.3", + "cors": "^2.8.5", + "express": "^4.21.0", + "get-port": "^5.1.0", + "json-schema": "^0.4.0", + "zod": "^3.23.8", + "zod-to-json-schema": "^3.22.4" + } + }, + "node_modules/@genkit-ai/dotprompt": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@genkit-ai/dotprompt/-/dotprompt-0.9.6.tgz", + "integrity": "sha512-tTNL2dULDpZdNLpMA9FcviJNyZDPQrUBBEwMP9POjHo07VU5CYGZWqpvecZJnsAz65jk+3pDBWJeFro06+3NqQ==", + "peer": true, + "dependencies": { + "@genkit-ai/ai": "0.9.6", + "@genkit-ai/core": "0.9.6", + "front-matter": "^4.0.2", + "handlebars": "^4.7.8", + "node-fetch": "^3.3.2" + } + }, + "node_modules/@genkit-ai/dotprompt/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "peer": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/@genkit-ai/google-cloud": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@genkit-ai/google-cloud/-/google-cloud-0.9.6.tgz", + "integrity": "sha512-cwrHrtOBJzRkqtCUlEQZtlMQ7x09OwYCRJtYliFcGjKaLy9iRmQiabNjn38OTLNvwBtRiK0mxCMRX3/SvE49oA==", + "dependencies": { + "@google-cloud/logging-winston": "^6.0.0", + "@google-cloud/opentelemetry-cloud-monitoring-exporter": "^0.19.0", + "@google-cloud/opentelemetry-cloud-trace-exporter": "^2.4.1", + "@google-cloud/opentelemetry-resource-util": "^2.4.0", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/auto-instrumentations-node": "^0.49.1", + "@opentelemetry/core": "^1.25.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/instrumentation-pino": "^0.41.0", + "@opentelemetry/instrumentation-winston": "^0.39.0", + "@opentelemetry/resources": "^1.25.0", + "@opentelemetry/sdk-metrics": "^1.25.0", + "@opentelemetry/sdk-node": "^0.52.0", + "@opentelemetry/sdk-trace-base": "^1.25.0", + "google-auth-library": "^9.6.3", + "node-fetch": "^3.3.2", + "winston": "^3.12.0" + }, + "peerDependencies": { + "genkit": "0.9.6" + } + }, + "node_modules/@genkit-ai/google-cloud/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@genkit-ai/google-cloud/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@genkit-ai/google-cloud/node_modules/gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@genkit-ai/google-cloud/node_modules/gaxios/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@genkit-ai/google-cloud/node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@genkit-ai/google-cloud/node_modules/google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@genkit-ai/google-cloud/node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@genkit-ai/google-cloud/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@genkit-ai/google-cloud/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@genkit-ai/google-cloud/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/@genkit-ai/google-cloud/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@genkit-ai/googleai": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@genkit-ai/googleai/-/googleai-0.9.6.tgz", + "integrity": "sha512-sBEnGYM3cCf6vioa08UwpGrLdbuTI/TvFlhXDZ4spzLU12nFNfnlKIiKmnzjOwHph0XOfBTVi5/8FTq69Rh1hg==", + "dependencies": { + "@google/generative-ai": "^0.21.0", + "google-auth-library": "^9.6.3", + "node-fetch": "^3.3.2" + }, + "peerDependencies": { + "genkit": "0.9.6" + } + }, + "node_modules/@genkit-ai/googleai/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@genkit-ai/googleai/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@genkit-ai/googleai/node_modules/gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@genkit-ai/googleai/node_modules/gaxios/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@genkit-ai/googleai/node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@genkit-ai/googleai/node_modules/google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@genkit-ai/googleai/node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@genkit-ai/googleai/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@genkit-ai/googleai/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@genkit-ai/googleai/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/@genkit-ai/googleai/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@genkit-ai/vertexai": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@genkit-ai/vertexai/-/vertexai-0.9.6.tgz", + "integrity": "sha512-If2P7eMVXjJvt32N43TlgAoPIIVmYVlmrLqHgj/LvbPN6XkK3YwG74OzxnQ9AGzUt9aD/p95Ddf9M6cRqcr7pQ==", + "dependencies": { + "@anthropic-ai/sdk": "^0.24.3", + "@anthropic-ai/vertex-sdk": "^0.4.0", + "@google-cloud/aiplatform": "^3.23.0", + "@google-cloud/vertexai": "^1.9.0", + "google-auth-library": "^9.14.2", + "googleapis": "^140.0.1", + "node-fetch": "^3.3.2", + "openai": "^4.52.7" + }, + "optionalDependencies": { + "@google-cloud/bigquery": "^7.8.0", + "firebase-admin": ">=12.2" + }, + "peerDependencies": { + "genkit": "0.9.6" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/@fastify/busboy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-3.0.0.tgz", + "integrity": "sha512-83rnH2nCvclWaPQQKvkJ2pdOjG4TZyEVuFDnlOF6KP08lDaaceVyw/W63mDuafQT+MKHCvXIPpE5uYWeM0rT4w==", + "optional": true + }, + "node_modules/@genkit-ai/vertexai/node_modules/@firebase/app-types": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.2.tgz", + "integrity": "sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ==", + "optional": true + }, + "node_modules/@genkit-ai/vertexai/node_modules/@firebase/auth-interop-types": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.3.tgz", + "integrity": "sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ==", + "optional": true + }, + "node_modules/@genkit-ai/vertexai/node_modules/@firebase/component": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.8.tgz", + "integrity": "sha512-LcNvxGLLGjBwB0dJUsBGCej2fqAepWyBubs4jt1Tiuns7QLbXHuyObZ4aMeBjZjWx4m8g1LoVI9QFpSaq/k4/g==", + "optional": true, + "dependencies": { + "@firebase/util": "1.9.7", + "tslib": "^2.1.0" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/@firebase/database": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.7.tgz", + "integrity": "sha512-wjXr5AO8RPxVVg7rRCYffT7FMtBjHRfJ9KMwi19MbOf0vBf0H9YqW3WCgcnLpXI6ehiUcU3z3qgPnnU0nK6SnA==", + "optional": true, + "dependencies": { + "@firebase/app-check-interop-types": "0.3.2", + "@firebase/auth-interop-types": "0.2.3", + "@firebase/component": "0.6.8", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.7", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/@firebase/database-compat": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.7.tgz", + "integrity": "sha512-R/3B+VVzEFN5YcHmfWns3eitA8fHLTL03io+FIoMcTYkajFnrBdS3A+g/KceN9omP7FYYYGTQWF9lvbEx6eMEg==", + "optional": true, + "dependencies": { + "@firebase/component": "0.6.8", + "@firebase/database": "1.0.7", + "@firebase/database-types": "1.0.4", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.7", + "tslib": "^2.1.0" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/@firebase/database-types": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.4.tgz", + "integrity": "sha512-mz9ZzbH6euFXbcBo+enuJ36I5dR5w+enJHHjy9Y5ThCdKUseqfDjW3vCp1YxE9zygFCSjJJ/z1cQ+zodvUcwPQ==", + "optional": true, + "dependencies": { + "@firebase/app-types": "0.9.2", + "@firebase/util": "1.9.7" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/@firebase/logger": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.2.tgz", + "integrity": "sha512-Q1VuA5M1Gjqrwom6I6NUU4lQXdo9IAQieXlujeHZWvRt1b7qQ0KwBaNAjgxG27jgF9/mUwsNmO8ptBCGVYhB0A==", + "optional": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/@firebase/util": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.7.tgz", + "integrity": "sha512-fBVNH/8bRbYjqlbIhZ+lBtdAAS4WqZumx03K06/u7fJSpz1TGjEMm1ImvKD47w+xaFKIP2ori6z8BrbakRfjJA==", + "optional": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/@google-cloud/firestore": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-7.9.0.tgz", + "integrity": "sha512-c4ALHT3G08rV7Zwv8Z2KG63gZh66iKdhCBeDfCpIkLrjX6EAjTD/szMdj14M+FnQuClZLFfW5bAgoOjfNmLtJg==", + "optional": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "functional-red-black-tree": "^1.0.1", + "google-gax": "^4.3.3", + "protobufjs": "^7.2.6" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/@google-cloud/paginator": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", + "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", + "optional": true, + "dependencies": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/@google-cloud/projectify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", + "optional": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/@google-cloud/promisify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/@google-cloud/storage": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.12.1.tgz", + "integrity": "sha512-Z3ZzOnF3YKLuvpkvF+TjQ6lztxcAyTILp+FjKonmVpEwPa9vFvxpZjubLR4sB6bf19i/8HL2AXRjA0YFgHFRmQ==", + "optional": true, + "dependencies": { + "@google-cloud/paginator": "^5.0.0", + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", + "abort-controller": "^3.0.0", + "async-retry": "^1.3.3", + "duplexify": "^4.1.3", + "fast-xml-parser": "^4.4.1", + "gaxios": "^6.0.2", + "google-auth-library": "^9.6.3", + "html-entities": "^2.5.2", + "mime": "^3.0.0", + "p-limit": "^3.0.1", + "retry-request": "^7.0.0", + "teeny-request": "^9.0.0", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/@google-cloud/storage/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/@grpc/grpc-js": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.11.1.tgz", + "integrity": "sha512-gyt/WayZrVPH2w/UTLansS7F9Nwld472JxxaETamrM8HNlsa+jSLNyKAZmhxI2Me4c3mQHFiS1wWHDY1g1Kthw==", + "optional": true, + "dependencies": { + "@grpc/proto-loader": "^0.7.13", + "@js-sdsl/ordered-map": "^4.4.2" + }, + "engines": { + "node": ">=12.10.0" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/@types/node": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz", + "integrity": "sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==", + "optional": true, + "dependencies": { + "undici-types": "~6.13.0" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/firebase-admin": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-12.3.1.tgz", + "integrity": "sha512-vEr3s3esl8nPIA9r/feDT4nzIXCfov1CyyCSpMQWp6x63Q104qke0MEGZlrHUZVROtl8FLus6niP/M9I1s4VBA==", + "optional": true, + "dependencies": { + "@fastify/busboy": "^3.0.0", + "@firebase/database-compat": "^1.0.2", + "@firebase/database-types": "^1.0.0", + "@types/node": "^22.0.1", + "farmhash-modern": "^1.1.0", + "jsonwebtoken": "^9.0.0", + "jwks-rsa": "^3.1.0", + "node-forge": "^1.3.1", + "uuid": "^10.0.0" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "@google-cloud/firestore": "^7.7.0", + "@google-cloud/storage": "^7.7.0" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/gaxios/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/gaxios/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/google-auth-library": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.0.tgz", + "integrity": "sha512-7ccSEJFDFO7exFbO6NRyC+xH8/mZ1GZGG2xxx9iHxZWcjUjJpjWxIMw3cofAKcueZ6DATiukmmprD7yavQHOyQ==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/google-gax": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.3.9.tgz", + "integrity": "sha512-tcjQr7sXVGMdlvcG25wSv98ap1dtF4Z6mcV0rztGIddOcezw4YMb/uTXg72JPrLep+kXcVjaJjg6oo3KLf4itQ==", + "optional": true, + "dependencies": { + "@grpc/grpc-js": "^1.10.9", + "@grpc/proto-loader": "^0.7.13", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "google-auth-library": "^9.3.0", + "node-fetch": "^2.7.0", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^2.0.2", + "protobufjs": "^7.3.2", + "retry-request": "^7.0.0", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/google-gax/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "optional": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/google-gax/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@genkit-ai/vertexai/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/proto3-json-serializer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz", + "integrity": "sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==", + "optional": true, + "dependencies": { + "protobufjs": "^7.2.5" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/retry-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", + "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", + "optional": true, + "dependencies": { + "@types/request": "^2.48.8", + "extend": "^3.0.2", + "teeny-request": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/teeny-request": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", + "optional": true, + "dependencies": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.9", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/teeny-request/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "optional": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/teeny-request/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@genkit-ai/vertexai/node_modules/undici-types": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", + "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==", + "optional": true + }, + "node_modules/@genkit-ai/vertexai/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@google-cloud/aiplatform": { + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/@google-cloud/aiplatform/-/aiplatform-3.25.0.tgz", + "integrity": "sha512-qKnJgbyCENjed8e1G5zZGFTxxNKhhaKQN414W2KIVHrLxMFmlMuG+3QkXPOWwXBnT5zZ7aMxypt5og0jCirpHg==", + "dependencies": { + "google-gax": "^4.0.3", + "protobuf.js": "^1.1.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/aiplatform/node_modules/@grpc/grpc-js": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.11.1.tgz", + "integrity": "sha512-gyt/WayZrVPH2w/UTLansS7F9Nwld472JxxaETamrM8HNlsa+jSLNyKAZmhxI2Me4c3mQHFiS1wWHDY1g1Kthw==", + "dependencies": { + "@grpc/proto-loader": "^0.7.13", + "@js-sdsl/ordered-map": "^4.4.2" + }, + "engines": { + "node": ">=12.10.0" + } + }, + "node_modules/@google-cloud/aiplatform/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@google-cloud/aiplatform/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@google-cloud/aiplatform/node_modules/gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/aiplatform/node_modules/gaxios/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@google-cloud/aiplatform/node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/aiplatform/node_modules/google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/aiplatform/node_modules/google-gax": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.3.9.tgz", + "integrity": "sha512-tcjQr7sXVGMdlvcG25wSv98ap1dtF4Z6mcV0rztGIddOcezw4YMb/uTXg72JPrLep+kXcVjaJjg6oo3KLf4itQ==", + "dependencies": { + "@grpc/grpc-js": "^1.10.9", + "@grpc/proto-loader": "^0.7.13", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "google-auth-library": "^9.3.0", + "node-fetch": "^2.7.0", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^2.0.2", + "protobufjs": "^7.3.2", + "retry-request": "^7.0.0", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/aiplatform/node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/aiplatform/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@google-cloud/aiplatform/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@google-cloud/aiplatform/node_modules/proto3-json-serializer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz", + "integrity": "sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==", + "dependencies": { + "protobufjs": "^7.2.5" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/aiplatform/node_modules/retry-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", + "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", + "dependencies": { + "@types/request": "^2.48.8", + "extend": "^3.0.2", + "teeny-request": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/aiplatform/node_modules/teeny-request": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", + "dependencies": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.9", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/aiplatform/node_modules/teeny-request/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@google-cloud/aiplatform/node_modules/teeny-request/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@google-cloud/bigquery": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@google-cloud/bigquery/-/bigquery-7.9.0.tgz", + "integrity": "sha512-KJTimGLDlAR1IfZ4Y8xhIVfoZ+XBXd0GGuJttLSXxtR0g+4vNsUt0xS33PRVa5TXey97374yU+uWNlCb5bHwBw==", + "optional": true, + "dependencies": { + "@google-cloud/common": "^5.0.0", + "@google-cloud/paginator": "^5.0.2", + "@google-cloud/precise-date": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", + "arrify": "^2.0.1", + "big.js": "^6.0.0", + "duplexify": "^4.0.0", + "extend": "^3.0.2", + "is": "^3.3.0", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/bigquery/node_modules/@google-cloud/paginator": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", + "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", + "optional": true, + "dependencies": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/bigquery/node_modules/@google-cloud/promisify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/common": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-5.0.2.tgz", + "integrity": "sha512-V7bmBKYQyu0eVG2BFejuUjlBt+zrya6vtsKdY+JxMM/dNntPF41vZ9+LhOshEUH01zOHEqBSvI7Dad7ZS6aUeA==", + "dependencies": { + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", + "arrify": "^2.0.1", + "duplexify": "^4.1.1", + "extend": "^3.0.2", + "google-auth-library": "^9.0.0", + "html-entities": "^2.5.2", + "retry-request": "^7.0.0", + "teeny-request": "^9.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/common/node_modules/@google-cloud/projectify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/common/node_modules/@google-cloud/promisify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/common/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@google-cloud/common/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@google-cloud/common/node_modules/gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/common/node_modules/gaxios/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@google-cloud/common/node_modules/gaxios/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@google-cloud/common/node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/common/node_modules/google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/common/node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/common/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@google-cloud/common/node_modules/retry-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", + "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", + "dependencies": { + "@types/request": "^2.48.8", + "extend": "^3.0.2", + "teeny-request": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/common/node_modules/teeny-request": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", + "dependencies": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.9", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/firestore": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-6.8.0.tgz", + "integrity": "sha512-JRpk06SmZXLGz0pNx1x7yU3YhkUXheKgH5hbDZ4kMsdhtfV5qPLJLRI4wv69K0cZorIk+zTMOwptue7hizo0eA==", + "optional": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "functional-red-black-tree": "^1.0.1", + "google-gax": "^3.5.7", + "protobufjs": "^7.2.5" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@google-cloud/logging": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@google-cloud/logging/-/logging-11.2.0.tgz", + "integrity": "sha512-Ma94jvuoMpbgNniwtelOt8w82hxK62FuOXZonEv0Hyk3B+/YVuLG/SWNyY9yMso/RXnPEc1fP2qo9kDrjf/b2w==", + "dependencies": { + "@google-cloud/common": "^5.0.0", + "@google-cloud/paginator": "^5.0.0", + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", + "@opentelemetry/api": "^1.7.0", + "arrify": "^2.0.1", + "dot-prop": "^6.0.0", + "eventid": "^2.0.0", + "extend": "^3.0.2", + "gcp-metadata": "^6.0.0", + "google-auth-library": "^9.0.0", + "google-gax": "^4.0.3", + "on-finished": "^2.3.0", + "pumpify": "^2.0.1", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/logging-winston": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/logging-winston/-/logging-winston-6.0.0.tgz", + "integrity": "sha512-/lVp7CyT3nFOr+AjQlZnJhTIOf+kcNGB4JTziL0fkX6Ov/2qNKtRGS/NqE6cD+VSPiv5jLOty3LgkRsXMpYxQQ==", + "dependencies": { + "@google-cloud/logging": "^11.0.0", + "google-auth-library": "^9.0.0", + "lodash.mapvalues": "^4.6.0", + "winston-transport": "^4.3.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "winston": ">=3.2.1" + } + }, + "node_modules/@google-cloud/logging-winston/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@google-cloud/logging-winston/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@google-cloud/logging-winston/node_modules/gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/logging-winston/node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/logging-winston/node_modules/google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/logging-winston/node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/logging-winston/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@google-cloud/logging-winston/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@google-cloud/logging-winston/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@google-cloud/logging/node_modules/@google-cloud/paginator": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", + "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", + "dependencies": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/logging/node_modules/@google-cloud/projectify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/logging/node_modules/@google-cloud/promisify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/logging/node_modules/@grpc/grpc-js": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.11.1.tgz", + "integrity": "sha512-gyt/WayZrVPH2w/UTLansS7F9Nwld472JxxaETamrM8HNlsa+jSLNyKAZmhxI2Me4c3mQHFiS1wWHDY1g1Kthw==", + "dependencies": { + "@grpc/proto-loader": "^0.7.13", + "@js-sdsl/ordered-map": "^4.4.2" + }, + "engines": { + "node": ">=12.10.0" + } + }, + "node_modules/@google-cloud/logging/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@google-cloud/logging/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@google-cloud/logging/node_modules/gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/logging/node_modules/gaxios/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@google-cloud/logging/node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/logging/node_modules/google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/logging/node_modules/google-gax": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.3.9.tgz", + "integrity": "sha512-tcjQr7sXVGMdlvcG25wSv98ap1dtF4Z6mcV0rztGIddOcezw4YMb/uTXg72JPrLep+kXcVjaJjg6oo3KLf4itQ==", + "dependencies": { + "@grpc/grpc-js": "^1.10.9", + "@grpc/proto-loader": "^0.7.13", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "google-auth-library": "^9.3.0", + "node-fetch": "^2.7.0", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^2.0.2", + "protobufjs": "^7.3.2", + "retry-request": "^7.0.0", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/logging/node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/logging/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@google-cloud/logging/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@google-cloud/logging/node_modules/proto3-json-serializer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz", + "integrity": "sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==", + "dependencies": { + "protobufjs": "^7.2.5" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/logging/node_modules/retry-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", + "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", + "dependencies": { + "@types/request": "^2.48.8", + "extend": "^3.0.2", + "teeny-request": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/logging/node_modules/teeny-request": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", + "dependencies": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.9", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/logging/node_modules/teeny-request/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/@google-cloud/logging/node_modules/teeny-request/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-monitoring-exporter": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@google-cloud/opentelemetry-cloud-monitoring-exporter/-/opentelemetry-cloud-monitoring-exporter-0.19.0.tgz", + "integrity": "sha512-5SOPXwC6RET4ZvXxw5D97dp8fWpqWEunHrzrUUGXhG4UAeedQe1KvYV8CK+fnaAbN2l2ha6QDYspT6z40TVY0g==", + "dependencies": { + "@google-cloud/opentelemetry-resource-util": "^2.3.0", + "@google-cloud/precise-date": "^4.0.0", + "google-auth-library": "^9.0.0", + "googleapis": "^137.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0", + "@opentelemetry/core": "^1.0.0", + "@opentelemetry/resources": "^1.0.0", + "@opentelemetry/sdk-metrics": "^1.0.0" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-monitoring-exporter/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-monitoring-exporter/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-monitoring-exporter/node_modules/gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-monitoring-exporter/node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-monitoring-exporter/node_modules/google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-monitoring-exporter/node_modules/googleapis": { + "version": "137.1.0", + "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-137.1.0.tgz", + "integrity": "sha512-2L7SzN0FLHyQtFmyIxrcXhgust77067pkkduqkbIpDuj9JzVnByxsRrcRfUMFQam3rQkWW2B0f1i40IwKDWIVQ==", + "dependencies": { + "google-auth-library": "^9.0.0", + "googleapis-common": "^7.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-monitoring-exporter/node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-monitoring-exporter/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-monitoring-exporter/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@google-cloud/opentelemetry-cloud-monitoring-exporter/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-trace-exporter": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@google-cloud/opentelemetry-cloud-trace-exporter/-/opentelemetry-cloud-trace-exporter-2.4.1.tgz", + "integrity": "sha512-Dq2IyAyA9PCjbjLOn86i2byjkYPC59b5ic8k/L4q5bBWH0Jro8lzMs8C0G5pJfqh2druj8HF+oAIAlSdWQ+Z9Q==", + "dependencies": { + "@google-cloud/opentelemetry-resource-util": "^2.4.0", + "@grpc/grpc-js": "^1.1.8", + "@grpc/proto-loader": "^0.7.0", + "google-auth-library": "^9.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0", + "@opentelemetry/core": "^1.0.0", + "@opentelemetry/resources": "^1.0.0", + "@opentelemetry/sdk-trace-base": "^1.0.0" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-trace-exporter/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-trace-exporter/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-trace-exporter/node_modules/gaxios": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-trace-exporter/node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-trace-exporter/node_modules/google-auth-library": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.0.tgz", + "integrity": "sha512-7ccSEJFDFO7exFbO6NRyC+xH8/mZ1GZGG2xxx9iHxZWcjUjJpjWxIMw3cofAKcueZ6DATiukmmprD7yavQHOyQ==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-trace-exporter/node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-trace-exporter/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@google-cloud/opentelemetry-cloud-trace-exporter/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/@google-cloud/opentelemetry-resource-util": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@google-cloud/opentelemetry-resource-util/-/opentelemetry-resource-util-2.4.0.tgz", + "integrity": "sha512-/7ujlMoKtDtrbQlJihCjQnm31n2s2RTlvJqcSbt2jV3OkCzPAdo3u31Q13HNugqtIRUSk7bUoLx6AzhURkhW4w==", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.22.0", + "gcp-metadata": "^6.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/resources": "^1.0.0" + } + }, + "node_modules/@google-cloud/opentelemetry-resource-util/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@google-cloud/opentelemetry-resource-util/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@google-cloud/opentelemetry-resource-util/node_modules/gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/opentelemetry-resource-util/node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/opentelemetry-resource-util/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@google-cloud/opentelemetry-resource-util/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/@google-cloud/opentelemetry-resource-util/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@google-cloud/paginator": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz", + "integrity": "sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==", + "optional": true, + "dependencies": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@google-cloud/precise-date": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/precise-date/-/precise-date-4.0.0.tgz", + "integrity": "sha512-1TUx3KdaU3cN7nfCdNf+UVqA/PSX29Cjcox3fZZBtINlRrXVTmUkQnCKv2MbBUbCopbK4olAT1IHl76uZyCiVA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/projectify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-3.0.0.tgz", + "integrity": "sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA==", + "optional": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@google-cloud/promisify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-3.0.1.tgz", + "integrity": "sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==", + "optional": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@google-cloud/storage": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-6.12.0.tgz", + "integrity": "sha512-78nNAY7iiZ4O/BouWMWTD/oSF2YtYgYB3GZirn0To6eBOugjXVoK+GXgUXOl+HlqbAOyHxAVXOlsj3snfbQ1dw==", + "optional": true, + "dependencies": { + "@google-cloud/paginator": "^3.0.7", + "@google-cloud/projectify": "^3.0.0", + "@google-cloud/promisify": "^3.0.0", + "abort-controller": "^3.0.0", + "async-retry": "^1.3.3", + "compressible": "^2.0.12", + "duplexify": "^4.0.0", + "ent": "^2.2.0", + "extend": "^3.0.2", + "fast-xml-parser": "^4.2.2", + "gaxios": "^5.0.0", + "google-auth-library": "^8.0.1", + "mime": "^3.0.0", + "mime-types": "^2.0.8", + "p-limit": "^3.0.1", + "retry-request": "^5.0.0", + "teeny-request": "^8.0.0", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@google-cloud/storage/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@google-cloud/vertexai": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@google-cloud/vertexai/-/vertexai-1.9.0.tgz", + "integrity": "sha512-8brlcJwFXI4fPuBtsDNQqCdWZmz8gV9jeEKOU0vc5H2SjehCQpXK/NwuSEr916zbhlBHtg/sU37qQQdgvh5BRA==", + "dependencies": { + "google-auth-library": "^9.1.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@google-cloud/vertexai/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@google-cloud/vertexai/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@google-cloud/vertexai/node_modules/gaxios": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/vertexai/node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/vertexai/node_modules/google-auth-library": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.0.tgz", + "integrity": "sha512-7ccSEJFDFO7exFbO6NRyC+xH8/mZ1GZGG2xxx9iHxZWcjUjJpjWxIMw3cofAKcueZ6DATiukmmprD7yavQHOyQ==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@google-cloud/vertexai/node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/vertexai/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@google-cloud/vertexai/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/@google/generative-ai": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@google/generative-ai/-/generative-ai-0.21.0.tgz", + "integrity": "sha512-7XhUbtnlkSEZK15kN3t+tzIMxsbKm/dSkKBFalj+20NvPKe1kBY7mR2P7vuijEn+f06z5+A8bVGKO0v39cr6Wg==", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.8.21", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.21.tgz", + "integrity": "sha512-KeyQeZpxeEBSqFVTi3q2K7PiPXmgBfECc4updA1ejCLjYmoAlvvM3ZMp5ztTDUCUQmoY3CpDxvchjO1+rFkoHg==", + "dependencies": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", + "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "peer": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "peer": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "peer": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "peer": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "peer": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/@jsdoc/salty": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.6.tgz", + "integrity": "sha512-aA+awb5yoml8TQ3CzI5Ue7sM3VMRC4l1zJJW4fgZ8OCL1wshJZhNzaf0PL85DSnOUw6QuFgeHGD/eq/xwwAF2g==", + "optional": true, + "dependencies": { + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=v12.0.0" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz", + "integrity": "sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==", + "dependencies": { + "@opentelemetry/api": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/auto-instrumentations-node": { + "version": "0.49.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/auto-instrumentations-node/-/auto-instrumentations-node-0.49.2.tgz", + "integrity": "sha512-xtETEPmAby/3MMmedv8Z/873sdLTWg+Vq98rtm4wbwvAiXBB/ao8qRyzRlvR2MR6puEr+vIB/CXeyJnzNA3cyw==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/instrumentation-amqplib": "^0.41.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.43.0", + "@opentelemetry/instrumentation-aws-sdk": "^0.43.1", + "@opentelemetry/instrumentation-bunyan": "^0.40.0", + "@opentelemetry/instrumentation-cassandra-driver": "^0.40.0", + "@opentelemetry/instrumentation-connect": "^0.38.0", + "@opentelemetry/instrumentation-cucumber": "^0.8.0", + "@opentelemetry/instrumentation-dataloader": "^0.11.0", + "@opentelemetry/instrumentation-dns": "^0.38.0", + "@opentelemetry/instrumentation-express": "^0.41.1", + "@opentelemetry/instrumentation-fastify": "^0.38.0", + "@opentelemetry/instrumentation-fs": "^0.14.0", + "@opentelemetry/instrumentation-generic-pool": "^0.38.1", + "@opentelemetry/instrumentation-graphql": "^0.42.0", + "@opentelemetry/instrumentation-grpc": "^0.52.0", + "@opentelemetry/instrumentation-hapi": "^0.40.0", + "@opentelemetry/instrumentation-http": "^0.52.0", + "@opentelemetry/instrumentation-ioredis": "^0.42.0", + "@opentelemetry/instrumentation-kafkajs": "^0.2.0", + "@opentelemetry/instrumentation-knex": "^0.39.0", + "@opentelemetry/instrumentation-koa": "^0.42.0", + "@opentelemetry/instrumentation-lru-memoizer": "^0.39.0", + "@opentelemetry/instrumentation-memcached": "^0.38.0", + "@opentelemetry/instrumentation-mongodb": "^0.46.0", + "@opentelemetry/instrumentation-mongoose": "^0.41.0", + "@opentelemetry/instrumentation-mysql": "^0.40.0", + "@opentelemetry/instrumentation-mysql2": "^0.40.0", + "@opentelemetry/instrumentation-nestjs-core": "^0.39.0", + "@opentelemetry/instrumentation-net": "^0.38.0", + "@opentelemetry/instrumentation-pg": "^0.43.0", + "@opentelemetry/instrumentation-pino": "^0.41.0", + "@opentelemetry/instrumentation-redis": "^0.41.0", + "@opentelemetry/instrumentation-redis-4": "^0.41.1", + "@opentelemetry/instrumentation-restify": "^0.40.0", + "@opentelemetry/instrumentation-router": "^0.39.0", + "@opentelemetry/instrumentation-socket.io": "^0.41.0", + "@opentelemetry/instrumentation-tedious": "^0.13.0", + "@opentelemetry/instrumentation-undici": "^0.5.0", + "@opentelemetry/instrumentation-winston": "^0.39.0", + "@opentelemetry/resource-detector-alibaba-cloud": "^0.29.0", + "@opentelemetry/resource-detector-aws": "^1.6.0", + "@opentelemetry/resource-detector-azure": "^0.2.10", + "@opentelemetry/resource-detector-container": "^0.4.0", + "@opentelemetry/resource-detector-gcp": "^0.29.10", + "@opentelemetry/resources": "^1.24.0", + "@opentelemetry/sdk-node": "^0.52.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.4.1" + } + }, + "node_modules/@opentelemetry/context-async-hooks": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.25.1.tgz", + "integrity": "sha512-UW/ge9zjvAEmRWVapOP0qyCvPulWU6cQxGxDbWEFfGOj1VBBZAuOqTo3X6yWmDTD3Xe15ysCZChHncr2xFMIfQ==", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.1.tgz", + "integrity": "sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.25.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-grpc": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.52.1.tgz", + "integrity": "sha512-pVkSH20crBwMTqB3nIN4jpQKUEoB0Z94drIHpYyEqs7UBr+I0cpYyOR3bqjA/UasQUMROb3GX8ZX4/9cVRqGBQ==", + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.25.1", + "@opentelemetry/otlp-grpc-exporter-base": "0.52.1", + "@opentelemetry/otlp-transformer": "0.52.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/sdk-trace-base": "1.25.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.52.1.tgz", + "integrity": "sha512-05HcNizx0BxcFKKnS5rwOV+2GevLTVIRA0tRgWYyw4yCgR53Ic/xk83toYKts7kbzcI+dswInUg/4s8oyA+tqg==", + "dependencies": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/otlp-exporter-base": "0.52.1", + "@opentelemetry/otlp-transformer": "0.52.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/sdk-trace-base": "1.25.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-proto": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.52.1.tgz", + "integrity": "sha512-pt6uX0noTQReHXNeEslQv7x311/F1gJzMnp1HD2qgypLRPbXDeMzzeTngRTUaUbP6hqWNtPxuLr4DEoZG+TcEQ==", + "dependencies": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/otlp-exporter-base": "0.52.1", + "@opentelemetry/otlp-transformer": "0.52.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/sdk-trace-base": "1.25.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/exporter-zipkin": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.25.1.tgz", + "integrity": "sha512-RmOwSvkimg7ETwJbUOPTMhJm9A9bG1U8s7Zo3ajDh4zM7eYcycQ0dM7FbLD6NXWbI2yj7UY4q8BKinKYBQksyw==", + "dependencies": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/sdk-trace-base": "1.25.1", + "@opentelemetry/semantic-conventions": "1.25.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/instrumentation": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz", + "integrity": "sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==", + "dependencies": { + "@opentelemetry/api-logs": "0.52.1", + "@types/shimmer": "^1.0.2", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-amqplib": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.41.0.tgz", + "integrity": "sha512-00Oi6N20BxJVcqETjgNzCmVKN+I5bJH/61IlHiIWd00snj1FdgiIKlpE4hYVacTB2sjIBB3nTbHskttdZEE2eg==", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-aws-lambda": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-aws-lambda/-/instrumentation-aws-lambda-0.43.0.tgz", + "integrity": "sha512-pSxcWlsE/pCWQRIw92sV2C+LmKXelYkjkA7C5s39iPUi4pZ2lA1nIiw+1R/y2pDEhUHcaKkNyljQr3cx9ZpVlQ==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/propagator-aws-xray": "^1.3.1", + "@opentelemetry/resources": "^1.8.0", + "@opentelemetry/semantic-conventions": "^1.22.0", + "@types/aws-lambda": "8.10.122" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-aws-sdk": { + "version": "0.43.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-aws-sdk/-/instrumentation-aws-sdk-0.43.1.tgz", + "integrity": "sha512-qLT2cCniJ5W+6PFzKbksnoIQuq9pS83nmgaExfUwXVvlwi0ILc50dea0tWBHZMkdIDa/zZdcuFrJ7+fUcSnRow==", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/propagation-utils": "^0.30.10", + "@opentelemetry/semantic-conventions": "^1.22.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-bunyan": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-bunyan/-/instrumentation-bunyan-0.40.0.tgz", + "integrity": "sha512-aZ4cXaGWwj79ZXSYrgFVsrDlE4mmf2wfvP9bViwRc0j75A6eN6GaHYHqufFGMTCqASQn5pIjjP+Bx+PWTGiofw==", + "dependencies": { + "@opentelemetry/api-logs": "^0.52.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@types/bunyan": "1.8.9" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-cassandra-driver": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-cassandra-driver/-/instrumentation-cassandra-driver-0.40.0.tgz", + "integrity": "sha512-JxbM39JU7HxE9MTKKwi6y5Z3mokjZB2BjwfqYi4B3Y29YO3I42Z7eopG6qq06yWZc+nQli386UDQe0d9xKmw0A==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-connect": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.38.0.tgz", + "integrity": "sha512-2/nRnx3pjYEmdPIaBwtgtSviTKHWnDZN3R+TkRUnhIVrvBKVcq+I5B2rtd6mr6Fe9cHlZ9Ojcuh7pkNh/xdWWg==", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0", + "@types/connect": "3.4.36" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-connect/node_modules/@types/connect": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@opentelemetry/instrumentation-cucumber": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-cucumber/-/instrumentation-cucumber-0.8.0.tgz", + "integrity": "sha512-ieTm4RBIlZt2brPwtX5aEZYtYnkyqhAVXJI9RIohiBVMe5DxiwCwt+2Exep/nDVqGPX8zRBZUl4AEw423OxJig==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/instrumentation-dataloader": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.11.0.tgz", + "integrity": "sha512-27urJmwkH4KDaMJtEv1uy2S7Apk4XbN4AgWMdfMJbi7DnOduJmeuA+DpJCwXB72tEWXo89z5T3hUVJIDiSNmNw==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-dns": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dns/-/instrumentation-dns-0.38.0.tgz", + "integrity": "sha512-Um07I0TQXDWa+ZbEAKDFUxFH40dLtejtExDOMLNJ1CL8VmOmA71qx93Qi/QG4tGkiI1XWqr7gF/oiMCJ4m8buQ==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-dns/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@opentelemetry/instrumentation-express": { + "version": "0.41.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.41.1.tgz", + "integrity": "sha512-uRx0V3LPGzjn2bxAnV8eUsDT82vT7NTwI0ezEuPMBOTOsnPpGhWdhcdNdhH80sM4TrWrOfXm9HGEdfWE3TRIww==", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-fastify": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.38.0.tgz", + "integrity": "sha512-HBVLpTSYpkQZ87/Df3N0gAw7VzYZV3n28THIBrJWfuqw3Or7UqdhnjeuMIPQ04BKk3aZc0cWn2naSQObbh5vXw==", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-fs": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.14.0.tgz", + "integrity": "sha512-pVc8P5AgliC1DphyyBUgsxXlm2XaPH4BpYvt7rAZDMIqUpRk8gs19SioABtKqqxvFzg5jPtgJfJsdxq0Y+maLw==", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-generic-pool": { + "version": "0.38.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.38.1.tgz", + "integrity": "sha512-WvssuKCuavu/hlq661u82UWkc248cyI/sT+c2dEIj6yCk0BUkErY1D+9XOO+PmHdJNE+76i2NdcvQX5rJrOe/w==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-graphql": { + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.42.0.tgz", + "integrity": "sha512-N8SOwoKL9KQSX7z3gOaw5UaTeVQcfDO1c21csVHnmnmGUoqsXbArK2B8VuwPWcv6/BC/i3io+xTo7QGRZ/z28Q==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-grpc": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.52.1.tgz", + "integrity": "sha512-EdSDiDSAO+XRXk/ZN128qQpBo1I51+Uay/LUPcPQhSRGf7fBPIEUBeOLQiItguGsug5MGOYjql2w/1wCQF3fdQ==", + "dependencies": { + "@opentelemetry/instrumentation": "0.52.1", + "@opentelemetry/semantic-conventions": "1.25.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-hapi": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.40.0.tgz", + "integrity": "sha512-8U/w7Ifumtd2bSN1OLaSwAAFhb9FyqWUki3lMMB0ds+1+HdSxYBe9aspEJEgvxAqOkrQnVniAPTEGf1pGM7SOw==", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-http": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.52.1.tgz", + "integrity": "sha512-dG/aevWhaP+7OLv4BQQSEKMJv8GyeOp3Wxl31NHqE8xo9/fYMfEljiZphUHIfyg4gnZ9swMyWjfOQs5GUQe54Q==", + "dependencies": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/instrumentation": "0.52.1", + "@opentelemetry/semantic-conventions": "1.25.1", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-http/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@opentelemetry/instrumentation-ioredis": { + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.42.0.tgz", + "integrity": "sha512-P11H168EKvBB9TUSasNDOGJCSkpT44XgoM6d3gRIWAa9ghLpYhl0uRkS8//MqPzcJVHr3h3RmfXIpiYLjyIZTw==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/redis-common": "^0.36.2", + "@opentelemetry/semantic-conventions": "^1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-kafkajs": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.2.0.tgz", + "integrity": "sha512-uKKmhEFd0zR280tJovuiBG7cfnNZT4kvVTvqtHPxQP7nOmRbJstCYHFH13YzjVcKjkmoArmxiSulmZmF7SLIlg==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.24.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-knex": { + "version": "0.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.39.0.tgz", + "integrity": "sha512-lRwTqIKQecPWDkH1KEcAUcFhCaNssbKSpxf4sxRTAROCwrCEnYkjOuqJHV+q1/CApjMTaKu0Er4LBv/6bDpoxA==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-koa": { + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.42.0.tgz", + "integrity": "sha512-H1BEmnMhho8o8HuNRq5zEI4+SIHDIglNB7BPKohZyWG4fWNuR7yM4GTlR01Syq21vODAS7z5omblScJD/eZdKw==", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-lru-memoizer": { + "version": "0.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.39.0.tgz", + "integrity": "sha512-eU1Wx1RRTR/2wYXFzH9gcpB8EPmhYlNDIUHzUXjyUE0CAXEJhBLkYNlzdaVCoQDw2neDqS+Woshiia6+emWK9A==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-memcached": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-memcached/-/instrumentation-memcached-0.38.0.tgz", + "integrity": "sha512-tPmyqQEZNyrvg6G+iItdlguQEcGzfE+bJkpQifmBXmWBnoS5oU3UxqtyYuXGL2zI9qQM5yMBHH4nRXWALzy7WA==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.23.0", + "@types/memcached": "^2.2.6" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mongodb": { + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.46.0.tgz", + "integrity": "sha512-VF/MicZ5UOBiXrqBslzwxhN7TVqzu1/LN/QDpkskqM0Zm0aZ4CVRbUygL8d7lrjLn15x5kGIe8VsSphMfPJzlA==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/sdk-metrics": "^1.9.1", + "@opentelemetry/semantic-conventions": "^1.22.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mongoose": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.41.0.tgz", + "integrity": "sha512-ivJg4QnnabFxxoI7K8D+in7hfikjte38sYzJB9v1641xJk9Esa7jM3hmbPB7lxwcgWJLVEDvfPwobt1if0tXxA==", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mysql": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.40.0.tgz", + "integrity": "sha512-d7ja8yizsOCNMYIJt5PH/fKZXjb/mS48zLROO4BzZTtDfhNCl2UM/9VIomP2qkGIFVouSJrGr/T00EzY7bPtKA==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0", + "@types/mysql": "2.15.22" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-mysql2": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.40.0.tgz", + "integrity": "sha512-0xfS1xcqUmY7WE1uWjlmI67Xg3QsSUlNT+AcXHeA4BDUPwZtWqF4ezIwLgpVZfHOnkAEheqGfNSWd1PIu3Wnfg==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0", + "@opentelemetry/sql-common": "^0.40.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-nestjs-core": { + "version": "0.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.39.0.tgz", + "integrity": "sha512-mewVhEXdikyvIZoMIUry8eb8l3HUjuQjSjVbmLVTt4NQi35tkpnHQrG9bTRBrl3403LoWZ2njMPJyg4l6HfKvA==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-net": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-net/-/instrumentation-net-0.38.0.tgz", + "integrity": "sha512-stjow1PijcmUquSmRD/fSihm/H61DbjPlJuJhWUe7P22LFPjFhsrSeiB5vGj3vn+QGceNAs+kioUTzMGPbNxtg==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.23.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-pg": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.43.0.tgz", + "integrity": "sha512-og23KLyoxdnAeFs1UWqzSonuCkePUzCX30keSYigIzJe/6WSYA8rnEI5lobcxPEzg+GcU06J7jzokuEHbjVJNw==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0", + "@opentelemetry/sql-common": "^0.40.1", + "@types/pg": "8.6.1", + "@types/pg-pool": "2.0.4" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-pino": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pino/-/instrumentation-pino-0.41.0.tgz", + "integrity": "sha512-Kpv0fJRk/8iMzMk5Ue5BsUJfHkBJ2wQoIi/qduU1a1Wjx9GLj6J2G17PHjPK5mnZjPNzkFOXFADZMfgDioliQw==", + "dependencies": { + "@opentelemetry/api-logs": "^0.52.0", + "@opentelemetry/core": "^1.25.0", + "@opentelemetry/instrumentation": "^0.52.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-redis": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis/-/instrumentation-redis-0.41.0.tgz", + "integrity": "sha512-RJ1pwI3btykp67ts+5qZbaFSAAzacucwBet5/5EsKYtWBpHbWwV/qbGN/kIBzXg5WEZBhXLrR/RUq0EpEUpL3A==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/redis-common": "^0.36.2", + "@opentelemetry/semantic-conventions": "^1.22.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-redis-4": { + "version": "0.41.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.41.1.tgz", + "integrity": "sha512-UqJAbxraBk7s7pQTlFi5ND4sAUs4r/Ai7gsAVZTQDbHl2kSsOp7gpHcpIuN5dpcI2xnuhM2tkH4SmEhbrv2S6Q==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/redis-common": "^0.36.2", + "@opentelemetry/semantic-conventions": "^1.22.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-restify": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-restify/-/instrumentation-restify-0.40.0.tgz", + "integrity": "sha512-sm/rH/GysY/KOEvZqYBZSLYFeXlBkHCgqPDgWc07tz+bHCN6mPs9P3otGOSTe7o3KAIM8Nc6ncCO59vL+jb2cA==", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-router": { + "version": "0.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-router/-/instrumentation-router-0.39.0.tgz", + "integrity": "sha512-LaXnVmD69WPC4hNeLzKexCCS19hRLrUw3xicneAMkzJSzNJvPyk7G6I7lz7VjQh1cooObPBt9gNyd3hhTCUrag==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-socket.io": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-socket.io/-/instrumentation-socket.io-0.41.0.tgz", + "integrity": "sha512-7fzDe9/FpO6NFizC/wnzXXX7bF9oRchsD//wFqy5g5hVEgXZCQ70IhxjrKdBvgjyIejR9T9zTvfQ6PfVKfkCAw==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-tedious": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.13.0.tgz", + "integrity": "sha512-Pob0+0R62AqXH50pjazTeGBy/1+SK4CYpFUBV5t7xpbpeuQezkkgVGvLca84QqjBqQizcXedjpUJLgHQDixPQg==", + "dependencies": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0", + "@types/tedious": "^4.0.14" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation-undici": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.5.0.tgz", + "integrity": "sha512-aNTeSrFAVcM9qco5DfZ9DNXu6hpMRe8Kt8nCDHfMWDB3pwgGVUE76jTdohc+H/7eLRqh4L7jqs5NSQoHw7S6ww==", + "dependencies": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.7.0" + } + }, + "node_modules/@opentelemetry/instrumentation-winston": { + "version": "0.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-winston/-/instrumentation-winston-0.39.0.tgz", + "integrity": "sha512-v/1xziLJ9CyB3YDjBSBzbB70Qd0JwWTo36EqWK5m3AR0CzsyMQQmf3ZIZM6sgx7hXMcRQ0pnEYhg6nhrUQPm9A==", + "dependencies": { + "@opentelemetry/api-logs": "^0.52.0", + "@opentelemetry/instrumentation": "^0.52.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/instrumentation/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.52.1.tgz", + "integrity": "sha512-z175NXOtX5ihdlshtYBe5RpGeBoTXVCKPPLiQlD6FHvpM4Ch+p2B0yWKYSrBfLH24H9zjJiBdTrtD+hLlfnXEQ==", + "dependencies": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/otlp-transformer": "0.52.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/otlp-grpc-exporter-base": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.52.1.tgz", + "integrity": "sha512-zo/YrSDmKMjG+vPeA9aBBrsQM9Q/f2zo6N04WMB3yNldJRsgpRBeLLwvAt/Ba7dpehDLOEFBd1i2JCoaFtpCoQ==", + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.25.1", + "@opentelemetry/otlp-exporter-base": "0.52.1", + "@opentelemetry/otlp-transformer": "0.52.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.52.1.tgz", + "integrity": "sha512-I88uCZSZZtVa0XniRqQWKbjAUm73I8tpEy/uJYPPYw5d7BRdVk0RfTBQw8kSUl01oVWEuqxLDa802222MYyWHg==", + "dependencies": { + "@opentelemetry/api-logs": "0.52.1", + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/sdk-logs": "0.52.1", + "@opentelemetry/sdk-metrics": "1.25.1", + "@opentelemetry/sdk-trace-base": "1.25.1", + "protobufjs": "^7.3.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/propagation-utils": { + "version": "0.30.13", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagation-utils/-/propagation-utils-0.30.13.tgz", + "integrity": "sha512-gE61ANH84XLOU2HwXeWw1b83exxdEaTY98HxTecmuJ1nSrBNaoM/tWt4u4+2MoCZUhdmP088+wbT5oUq1pF79Q==", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/propagator-aws-xray": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.26.0.tgz", + "integrity": "sha512-Sex+JyEZ/xX328TArBqQjh1NZSfNyw5NdASUIi9hnPsnMBMSBaDe7B9JRnXv0swz7niNyAnXa6MY7yOCV76EvA==", + "dependencies": { + "@opentelemetry/core": "1.26.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/propagator-aws-xray/node_modules/@opentelemetry/core": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", + "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/propagator-aws-xray/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/propagator-b3": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.25.1.tgz", + "integrity": "sha512-p6HFscpjrv7//kE+7L+3Vn00VEDUJB0n6ZrjkTYHrJ58QZ8B3ajSJhRbCcY6guQ3PDjTbxWklyvIN2ojVbIb1A==", + "dependencies": { + "@opentelemetry/core": "1.25.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/propagator-jaeger": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.25.1.tgz", + "integrity": "sha512-nBprRf0+jlgxks78G/xq72PipVK+4or9Ypntw0gVZYNTCSK8rg5SeaGV19tV920CMqBD/9UIOiFr23Li/Q8tiA==", + "dependencies": { + "@opentelemetry/core": "1.25.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/redis-common": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz", + "integrity": "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/resource-detector-alibaba-cloud": { + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-alibaba-cloud/-/resource-detector-alibaba-cloud-0.29.5.tgz", + "integrity": "sha512-bCtNnKlx3vcxo/rTdpgat6RiP9hcqahdLN79IRQgSGpD/2iw7cmdaZo4bWQYQsf3jMU8p+08mQkbvDeSqt1TmA==", + "dependencies": { + "@opentelemetry/core": "^1.26.0", + "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/resource-detector-alibaba-cloud/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/resource-detector-alibaba-cloud/node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/resource-detector-alibaba-cloud/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/resource-detector-aws": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-aws/-/resource-detector-aws-1.8.0.tgz", + "integrity": "sha512-f+tiNoebEvdinXs0pN0XJCNceeXT8I6l2yyKI6C5oRAirhCEcIWcJMxwY4kJyNKmoupcGCXVz7cQaZOhB3keiw==", + "dependencies": { + "@opentelemetry/core": "^1.0.0", + "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/resource-detector-aws/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/resource-detector-azure": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-azure/-/resource-detector-azure-0.2.12.tgz", + "integrity": "sha512-iIarQu6MiCjEEp8dOzmBvCSlRITPFTinFB2oNKAjU6xhx8d7eUcjNOKhBGQTvuCriZrxrEvDaEEY9NfrPQ6uYQ==", + "dependencies": { + "@opentelemetry/core": "^1.25.1", + "@opentelemetry/resources": "^1.10.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/resource-detector-azure/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/resource-detector-container": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-container/-/resource-detector-container-0.4.4.tgz", + "integrity": "sha512-ZEN2mq7lIjQWJ8NTt1umtr6oT/Kb89856BOmESLSvgSHbIwOFYs7cSfSRH5bfiVw6dXTQAVbZA/wLgCHKrebJA==", + "dependencies": { + "@opentelemetry/core": "^1.26.0", + "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/resource-detector-container/node_modules/@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/resource-detector-container/node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/resource-detector-container/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/resource-detector-gcp": { + "version": "0.29.13", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-gcp/-/resource-detector-gcp-0.29.13.tgz", + "integrity": "sha512-vdotx+l3Q+89PeyXMgKEGnZ/CwzwMtuMi/ddgD9/5tKZ08DfDGB2Npz9m2oXPHRCjc4Ro6ifMqFlRyzIvgOjhg==", + "dependencies": { + "@opentelemetry/core": "^1.0.0", + "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "gcp-metadata": "^6.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/resource-detector-gcp/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/resource-detector-gcp/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@opentelemetry/resource-detector-gcp/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@opentelemetry/resource-detector-gcp/node_modules/gaxios": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/resource-detector-gcp/node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/resource-detector-gcp/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@opentelemetry/resource-detector-gcp/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/@opentelemetry/resources": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.1.tgz", + "integrity": "sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==", + "dependencies": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/semantic-conventions": "1.25.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.52.1.tgz", + "integrity": "sha512-MBYh+WcPPsN8YpRHRmK1Hsca9pVlyyKd4BxOC4SsgHACnl/bPp4Cri9hWhVm5+2tiQ9Zf4qSc1Jshw9tOLGWQA==", + "dependencies": { + "@opentelemetry/api-logs": "0.52.1", + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.1.tgz", + "integrity": "sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q==", + "dependencies": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1", + "lodash.merge": "^4.6.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-node": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.52.1.tgz", + "integrity": "sha512-uEG+gtEr6eKd8CVWeKMhH2olcCHM9dEK68pe0qE0be32BcCRsvYURhHaD1Srngh1SQcnQzZ4TP324euxqtBOJA==", + "dependencies": { + "@opentelemetry/api-logs": "0.52.1", + "@opentelemetry/core": "1.25.1", + "@opentelemetry/exporter-trace-otlp-grpc": "0.52.1", + "@opentelemetry/exporter-trace-otlp-http": "0.52.1", + "@opentelemetry/exporter-trace-otlp-proto": "0.52.1", + "@opentelemetry/exporter-zipkin": "1.25.1", + "@opentelemetry/instrumentation": "0.52.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/sdk-logs": "0.52.1", + "@opentelemetry/sdk-metrics": "1.25.1", + "@opentelemetry/sdk-trace-base": "1.25.1", + "@opentelemetry/sdk-trace-node": "1.25.1", + "@opentelemetry/semantic-conventions": "1.25.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.25.1.tgz", + "integrity": "sha512-C8k4hnEbc5FamuZQ92nTOp8X/diCY56XUTnMiv9UTuJitCzaNNHAVsdm5+HLCdI8SLQsLWIrG38tddMxLVoftw==", + "dependencies": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/semantic-conventions": "1.25.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-node": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.25.1.tgz", + "integrity": "sha512-nMcjFIKxnFqoez4gUmihdBrbpsEnAX/Xj16sGvZm+guceYE0NE00vLhpDVK6f3q8Q4VFI5xG8JjlXKMB/SkTTQ==", + "dependencies": { + "@opentelemetry/context-async-hooks": "1.25.1", + "@opentelemetry/core": "1.25.1", + "@opentelemetry/propagator-b3": "1.25.1", + "@opentelemetry/propagator-jaeger": "1.25.1", + "@opentelemetry/sdk-trace-base": "1.25.1", + "semver": "^7.5.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-node/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz", + "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sql-common": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz", + "integrity": "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==", + "dependencies": { + "@opentelemetry/core": "^1.1.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@react-pdf/fns": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@react-pdf/fns/-/fns-2.2.1.tgz", + "integrity": "sha512-s78aDg0vDYaijU5lLOCsUD+qinQbfOvcNeaoX9AiE7+kZzzCo6B/nX+l48cmt9OosJmvZvE9DWR9cLhrhOi2pA==", + "dependencies": { + "@babel/runtime": "^7.20.13" + } + }, + "node_modules/@react-pdf/font": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@react-pdf/font/-/font-2.5.2.tgz", + "integrity": "sha512-Ud0EfZ2FwrbvwAWx8nz+KKLmiqACCH9a/N/xNDOja0e/YgSnqTpuyHegFBgIMKjuBtO5dNvkb4dXkxAhGe/ayw==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@react-pdf/types": "^2.6.0", + "cross-fetch": "^3.1.5", + "fontkit": "^2.0.2", + "is-url": "^1.2.4" + } + }, + "node_modules/@react-pdf/fontkit": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@react-pdf/fontkit/-/fontkit-2.1.2.tgz", + "integrity": "sha512-BsFNhNoWLddj/DcznIjoz4+4KB3kmRRWP38KNXHp/DuHSI4B6Dw6A3fLps+10bOPltP350iszI0b1ljeMum/Bw==", + "dependencies": { + "@babel/runtime": "^7.16.4", + "brotli": "^1.2.0", + "clone": "^1.0.4", + "deep-equal": "^1.0.0", + "dfa": "^1.2.0", + "restructure": "^0.5.3", + "tiny-inflate": "^1.0.2", + "unicode-properties": "^1.4.1", + "unicode-trie": "^0.3.0" + } + }, + "node_modules/@react-pdf/image": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@react-pdf/image/-/image-2.3.6.tgz", + "integrity": "sha512-7iZDYZrZlJqNzS6huNl2XdMcLFUo68e6mOdzQeJ63d5eApdthhSHBnkGzHfLhH5t8DCpZNtClmklzuLL63ADfw==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@react-pdf/png-js": "^2.3.1", + "cross-fetch": "^3.1.5", + "jay-peg": "^1.0.2" + } + }, + "node_modules/@react-pdf/layout": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@react-pdf/layout/-/layout-3.13.0.tgz", + "integrity": "sha512-lpPj/EJYHFOc0ALiJwLP09H28B4ADyvTjxOf67xTF+qkWd+dq1vg7dw3wnYESPnWk5T9NN+HlUenJqdYEY9AvA==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@react-pdf/fns": "2.2.1", + "@react-pdf/image": "^2.3.6", + "@react-pdf/pdfkit": "^3.2.0", + "@react-pdf/primitives": "^3.1.1", + "@react-pdf/stylesheet": "^4.3.0", + "@react-pdf/textkit": "^4.4.1", + "@react-pdf/types": "^2.6.0", + "cross-fetch": "^3.1.5", + "emoji-regex": "^10.3.0", + "queue": "^6.0.1", + "yoga-layout": "^2.0.1" + } + }, + "node_modules/@react-pdf/layout/node_modules/@react-pdf/pdfkit": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@react-pdf/pdfkit/-/pdfkit-3.2.0.tgz", + "integrity": "sha512-OBfCcnTC6RpD9uv9L2woF60Zj1uQxhLFzTBXTdcYE9URzPE/zqXIyzpXEA4Vf3TFbvBCgFE2RzJ2ZUS0asq7yA==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@react-pdf/png-js": "^2.3.1", + "browserify-zlib": "^0.2.0", + "crypto-js": "^4.2.0", + "fontkit": "^2.0.2", + "jay-peg": "^1.0.2", + "vite-compatible-readable-stream": "^3.6.1" + } + }, + "node_modules/@react-pdf/layout/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==" + }, + "node_modules/@react-pdf/pdfkit": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@react-pdf/pdfkit/-/pdfkit-2.4.0.tgz", + "integrity": "sha512-a8ad/o1CIPpL1oppwSk2d1QCjSAJau0s4SqQNew0U7jlP5Knx4Yck5iK6zLfezvCmSCGq+U8eBTvzLN00jbffg==", + "dependencies": { + "@babel/runtime": "^7.16.4", + "@react-pdf/fontkit": "^2.1.2", + "@react-pdf/png-js": "^2.1.0", + "crypto-js": "^4.0.0" + } + }, + "node_modules/@react-pdf/png-js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@react-pdf/png-js/-/png-js-2.3.1.tgz", + "integrity": "sha512-pEZ18I4t1vAUS4lmhvXPmXYP4PHeblpWP/pAlMMRkEyP7tdAeHUN7taQl9sf9OPq7YITMY3lWpYpJU6t4CZgZg==", + "dependencies": { + "browserify-zlib": "^0.2.0" + } + }, + "node_modules/@react-pdf/primitives": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@react-pdf/primitives/-/primitives-3.1.1.tgz", + "integrity": "sha512-miwjxLwTnO3IjoqkTVeTI+9CdyDggwekmSLhVCw+a/7FoQc+gF3J2dSKwsHvAcVFM0gvU8mzCeTofgw0zPDq0w==" + }, + "node_modules/@react-pdf/render": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@react-pdf/render/-/render-3.5.0.tgz", + "integrity": "sha512-gFOpnyqCgJ6l7VzfJz6rG1i2S7iVSD8bUHDjPW9Mze8TmyksHzN2zBH3y7NbsQOw1wU6hN4NhRmslrsn+BRDPA==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@react-pdf/fns": "2.2.1", + "@react-pdf/primitives": "^3.1.1", + "@react-pdf/textkit": "^4.4.1", + "@react-pdf/types": "^2.6.0", + "abs-svg-path": "^0.1.1", + "color-string": "^1.9.1", + "normalize-svg-path": "^1.1.0", + "parse-svg-path": "^0.1.2", + "svg-arc-to-cubic-bezier": "^3.2.0" + } + }, + "node_modules/@react-pdf/renderer": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@react-pdf/renderer/-/renderer-2.3.0.tgz", + "integrity": "sha512-JrKgQL6MwANRdsqo3eH8+SD2rNwhXBSy99NBsL4FrdndnuZrDe6/KQOTstaBpxKtn6CEZVrd3hkqgCh9/Oa9mQ==", + "dependencies": { + "@babel/runtime": "^7.16.4", + "@react-pdf/font": "^2.2.1", + "@react-pdf/layout": "^3.1.2", + "@react-pdf/pdfkit": "^2.4.0", + "@react-pdf/primitives": "^3.0.0", + "@react-pdf/render": "^3.2.0", + "@react-pdf/types": "^2.1.0", + "blob-stream": "^0.1.3", + "queue": "^6.0.1", + "react-reconciler": "^0.23.0", + "scheduler": "^0.17.0" + }, + "peerDependencies": { + "react": "^16.8.6 || ^17.0.0" + } + }, + "node_modules/@react-pdf/renderer/node_modules/react-reconciler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.23.0.tgz", + "integrity": "sha512-vV0KlLimP9a/NuRcM6GRVakkmT6MKSzhfo8K72fjHMnlXMOhz9GlPe+/tCp5CWBkg+lsMUt/CR1nypJBTPfwuw==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.17.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "react": "^16.0.0" + } + }, + "node_modules/@react-pdf/stylesheet": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@react-pdf/stylesheet/-/stylesheet-4.3.0.tgz", + "integrity": "sha512-x7IVZOqRrUum9quuDeFXBveXwBht+z/6B0M+z4a4XjfSg1vZVvzoTl07Oa1yvQ/4yIC5yIkG2TSMWeKnDB+hrw==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@react-pdf/fns": "2.2.1", + "@react-pdf/types": "^2.6.0", + "color-string": "^1.9.1", + "hsl-to-hex": "^1.0.0", + "media-engine": "^1.0.3", + "postcss-value-parser": "^4.1.0" + } + }, + "node_modules/@react-pdf/textkit": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@react-pdf/textkit/-/textkit-4.4.1.tgz", + "integrity": "sha512-Jl9wdTqIvJ5pX+vAGz0EOhP7ut5Two9H6CzTKo/YYPeD79cM2yTXF3JzTERBC28y7LR0Waq9D2LHQjI+b/EYUQ==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "@react-pdf/fns": "2.2.1", + "bidi-js": "^1.0.2", + "hyphen": "^1.6.4", + "unicode-properties": "^1.4.1" + } + }, + "node_modules/@react-pdf/types": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@react-pdf/types/-/types-2.7.0.tgz", + "integrity": "sha512-7KrPPCpgRPKR+g+T127PE4bpw9Q84ZiY07EYRwXKVtTEVW9wJ5BZiF9smT9IvH19s+MQaDLmYRgjESsnqlyH0Q==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "peer": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "peer": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "peer": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/aws-lambda": { + "version": "8.10.122", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.122.tgz", + "integrity": "sha512-vBkIh9AY22kVOCEKo5CJlyCgmSWvasC+SWUxL/x/vOwRobMpI/HG1xp/Ae3AqmSiZeLUbOhW0FCD3ZjqqUxmXw==" + }, + "node_modules/@types/babel__core": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.4.tgz", + "integrity": "sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.7", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", + "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", + "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bunyan": { + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/@types/bunyan/-/bunyan-1.8.9.tgz", + "integrity": "sha512-ZqS9JGpBxVOvsawzmVt30sP++gSQMTejCkIAQ3VdadOcRE8izTyW66hufvwLeH+YEGP6Js2AW7Gz+RMyvrEbmw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/caseless": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.3.tgz", + "integrity": "sha512-I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.41", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", + "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "optional": true, + "dependencies": { + "@types/minimatch": "^5.1.2", + "@types/node": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "peer": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz", + "integrity": "sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/linkify-it": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", + "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==", + "optional": true + }, + "node_modules/@types/lodash": { + "version": "4.14.201", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.201.tgz", + "integrity": "sha512-y9euML0cim1JrykNxADLfaG0FgD1g/yTHwUs/Jg9ZIU7WKj2/4IW9Lbb1WZbvck78W/lfGXFfe+u2EGfIJXdLQ==", + "dev": true + }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "node_modules/@types/markdown-it": { + "version": "12.2.3", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", + "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", + "optional": true, + "dependencies": { + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", + "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", + "optional": true + }, + "node_modules/@types/memcached": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/@types/memcached/-/memcached-2.2.10.tgz", + "integrity": "sha512-AM9smvZN55Gzs2wRrqeMHVP7KE8KWgCJO/XL5yCly2xF6EKa4YlbpK+cLSAH4NG/Ah64HrlegmGqW8kYws7Vxg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "optional": true + }, + "node_modules/@types/mysql": { + "version": "2.15.22", + "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.22.tgz", + "integrity": "sha512-wK1pzsJVVAjYCSZWQoWHziQZbNggXFDUEIGf54g4ZM/ERuP86uGdWeKZWMYlqTPMZfHJJvLPyogXGvCOg87yLQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "20.14.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.14.tgz", + "integrity": "sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/pg": { + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", + "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", + "dependencies": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } + }, + "node_modules/@types/pg-pool": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.4.tgz", + "integrity": "sha512-qZAvkv1K3QbmHHFYSNRYPkRjOWRLBYrL4B9c+wG0GSVGBw0NtJwPcgx/DSddeDJvRGMHCEQ4VMEVfuJ/0gZ3XQ==", + "dependencies": { + "@types/pg": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.10", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", + "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + }, + "node_modules/@types/request": { + "version": "2.48.12", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", + "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", + "dependencies": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + } + }, + "node_modules/@types/request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/@types/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==", + "optional": true, + "dependencies": { + "@types/glob": "*", + "@types/node": "*" + } + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/shimmer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", + "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==" + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "peer": true + }, + "node_modules/@types/tedious": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz", + "integrity": "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" + }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" + }, + "node_modules/@types/yargs": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.31.tgz", + "integrity": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==", + "dev": true, + "peer": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "peer": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/abs-svg-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz", + "integrity": "sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "optional": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "peer": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "optional": true, + "engines": { + "node": ">=0.4.2" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "peer": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "peer": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "peer": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ast-transform": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/ast-transform/-/ast-transform-0.0.0.tgz", + "integrity": "sha512-e/JfLiSoakfmL4wmTGPjv0HpTICVmxwXgYOB8x+mzozHL8v+dSfCbrJ8J8hJ0YBP0XcYu1aLZ6b/3TnxNK3P2A==", + "dependencies": { + "escodegen": "~1.2.0", + "esprima": "~1.0.4", + "through": "~2.3.4" + } + }, + "node_modules/ast-transform/node_modules/escodegen": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.2.0.tgz", + "integrity": "sha512-yLy3Cc+zAC0WSmoT2fig3J87TpQ8UaZGx8ahCAs9FL8qNbyV7CVyPKS74DG4bsHiL5ew9sxdYx131OkBQMFnvA==", + "dependencies": { + "esprima": "~1.0.4", + "estraverse": "~1.5.0", + "esutils": "~1.0.0" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=0.4.0" + }, + "optionalDependencies": { + "source-map": "~0.1.30" + } + }, + "node_modules/ast-transform/node_modules/esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha512-rp5dMKN8zEs9dfi9g0X1ClLmV//WRyk/R15mppFNICIFRG5P92VP7Z04p8pk++gABo9W2tY+kHyu6P1mEHgmTA==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ast-transform/node_modules/estraverse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", + "integrity": "sha512-FpCjJDfmo3vsc/1zKSeqR5k42tcIhxFIlvq+h9j0fO2q/h2uLKyweq7rYJ+0CoVvrGQOxIS5wyBrW/+vF58BUQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ast-transform/node_modules/esutils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", + "integrity": "sha512-x/iYH53X3quDwfHRz4y8rn4XcEwwCJeWsul9pF1zldMbGtgOtMNBEOuYWwB1EQlK2LRa1fev3YAgym/RElp5Cg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ast-transform/node_modules/source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==", + "optional": true, + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ast-types": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.7.8.tgz", + "integrity": "sha512-RIOpVnVlltB6PcBJ5BMLx+H+6JJ/zjDGU0t7f0L6c2M1dqcK92VQopLBlPQ9R80AVXelfqYgjcPLtHtDbNFg0Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + }, + "node_modules/async-mutex": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", + "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "optional": true, + "dependencies": { + "retry": "0.13.1" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.3", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.3" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "peer": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "devOptional": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, + "node_modules/big.js": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz", + "integrity": "sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==", + "optional": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bigjs" + } + }, + "node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "engines": { + "node": "*" + } + }, + "node_modules/blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha512-YRc9zvVz4wNaxcXmiSgb9LAg7YYwqQ2xd0Sj6osfA7k/PKmIGVlnOYs3wOFdkRC9/JpQu8sGt/zHgJV7xzerfg==" + }, + "node_modules/blob-stream": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/blob-stream/-/blob-stream-0.1.3.tgz", + "integrity": "sha512-xXwyhgVmPsFVFFvtM5P0syI17/oae+MIjLn5jGhuD86mmSJ61EWMWmbPrV/0+bdcH9jQ2CzIhmTQKNUJL7IPog==", + "dependencies": { + "blob": "0.0.4" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "optional": true + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "devOptional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "peer": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dependencies": { + "resolve": "1.1.7" + } + }, + "node_modules/browser-resolve/node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==" + }, + "node_modules/browserify-optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-optional/-/browserify-optional-1.0.1.tgz", + "integrity": "sha512-VrhjbZ+Ba5mDiSYEuPelekQMfTbhcA2DhLk2VQWqdcCROWeFqlTcXZ7yfRkXCIl8E+g4gINJYJiRB7WEtfomAQ==", + "dependencies": { + "ast-transform": "0.0.0", + "ast-types": "^0.7.0", + "browser-resolve": "^1.8.1" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "peer": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001684", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz", + "integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/catharsis": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", + "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", + "optional": true, + "dependencies": { + "lodash": "^4.17.15" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "peer": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true, + "peer": true + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "peer": true + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "optional": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "devOptional": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "peer": true + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/core-js-compat": { + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz", + "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==", + "dependencies": { + "browserslist": "^4.24.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "peer": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "peer": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", + "dependencies": { + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.5.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "optional": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==" + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "peer": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/duplexify": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.67", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.67.tgz", + "integrity": "sha512-nz88NNBsD7kQSAGGJyp8hS6xSPtWwqNogA0mjtc2nUYeEf3nURK9qpV18TuBdDmEDgVWotS8Wkzf+V52dSQ/LQ==" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "optional": true + }, + "node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "optional": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "peer": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "optional": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "optional": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "optional": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "optional": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "optional": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/eventid/-/eventid-2.0.1.tgz", + "integrity": "sha512-sPNTqiMokAvV048P2c9+foqVJzk49o6d4e0D/sq5jog3pw+4kBgyR0gaM1FM7Mx6Kzd9dztesh9oYz1LWWOpzw==", + "dependencies": { + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eventid/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "peer": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/express": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.10", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/farmhash-modern": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/farmhash-modern/-/farmhash-modern-1.1.0.tgz", + "integrity": "sha512-6ypT4XfgqJk/F3Yuv4SX26I3doUjt0GTG4a+JgWxXQpxXzTBq8fPUeGHfcYMMDPHJHm3yPOSjaeBwBGAHWXCdA==", + "optional": true, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "peer": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "optional": true + }, + "node_modules/fast-text-encoding": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", + "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==", + "optional": true + }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "peer": true + }, + "node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "optional": true, + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "peer": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "peer": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "peer": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/firebase-admin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-11.11.0.tgz", + "integrity": "sha512-lp784gXFAJgUEtjSdYNZGTWZqltqjBkoaPSQhDKnmWXJP/MCbWdiDY1hsdkl/6O4O4KFovTjUDLu26sojwdQvw==", + "dependencies": { + "@fastify/busboy": "^1.2.1", + "@firebase/database-compat": "^0.3.4", + "@firebase/database-types": "^0.10.4", + "@types/node": ">=12.12.47", + "jsonwebtoken": "^9.0.0", + "jwks-rsa": "^3.0.1", + "node-forge": "^1.3.1", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "@google-cloud/firestore": "^6.6.0", + "@google-cloud/storage": "^6.9.5" + } + }, + "node_modules/firebase-functions": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-4.5.0.tgz", + "integrity": "sha512-y6HsasHtGLfXCp3Pfrz+JA19lO9hSzYiNxFDIDMffrfcsG7UbXzv0zfi2ASadMVRoDCaox5ppZBa1QJxZbctPQ==", + "dependencies": { + "@types/cors": "^2.8.5", + "@types/express": "4.17.3", + "cors": "^2.8.5", + "express": "^4.17.1", + "node-fetch": "^2.6.7", + "protobufjs": "^7.2.2" + }, + "bin": { + "firebase-functions": "lib/bin/firebase-functions.js" + }, + "engines": { + "node": ">=14.10.0" + }, + "peerDependencies": { + "firebase-admin": "^10.0.0 || ^11.0.0" + } + }, + "node_modules/firebase-functions-test": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-3.1.0.tgz", + "integrity": "sha512-yfm9ToguShxmRXb7TINN88zE2bM9gsBbs7vMWVKJAxGcl/n1f/U0sT5k2yho676QIcSqXVSjCONU8W4cUEL+Sw==", + "dev": true, + "dependencies": { + "@types/lodash": "^4.14.104", + "lodash": "^4.17.5", + "ts-deepmerge": "^2.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "firebase-admin": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", + "firebase-functions": ">=4.3.0", + "jest": ">=28.0.0" + } + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fontkit": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", + "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "dependencies": { + "@swc/helpers": "^0.5.12", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/fontkit/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/fontkit/node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==" + }, + "node_modules/fontkit/node_modules/restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==" + }, + "node_modules/fontkit/node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==" + }, + "node_modules/formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "dependencies": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "engines": { + "node": ">= 12.20" + } + }, + "node_modules/formdata-node/node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "peer": true, + "dependencies": { + "js-yaml": "^3.13.1" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "devOptional": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "optional": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gaxios": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", + "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", + "optional": true, + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/gcp-metadata": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", + "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", + "optional": true, + "dependencies": { + "gaxios": "^5.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/genkit": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/genkit/-/genkit-0.9.6.tgz", + "integrity": "sha512-1aPt0Y/cBuqSg/WwzIoRHq2kYpdp3UEcwg6rdsknoadKNdJKF4FqChWaZ6159aONLPH7CMGpmzc2evuuHDrZKQ==", + "peer": true, + "dependencies": { + "@genkit-ai/ai": "0.9.6", + "@genkit-ai/core": "0.9.6", + "@genkit-ai/dotprompt": "0.9.6", + "uuid": "^10.0.0" + } + }, + "node_modules/genkit/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "peer": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "devOptional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/google-auth-library": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.9.0.tgz", + "integrity": "sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==", + "optional": true, + "dependencies": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^5.0.0", + "gcp-metadata": "^5.3.0", + "gtoken": "^6.1.0", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/google-gax": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.6.1.tgz", + "integrity": "sha512-g/lcUjGcB6DSw2HxgEmCDOrI/CByOwqRvsuUvNalHUK2iPPPlmAIpbMbl62u0YufGMr8zgE3JL7th6dCb1Ry+w==", + "optional": true, + "dependencies": { + "@grpc/grpc-js": "~1.8.0", + "@grpc/proto-loader": "^0.7.0", + "@types/long": "^4.0.0", + "@types/rimraf": "^3.0.2", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "fast-text-encoding": "^1.0.3", + "google-auth-library": "^8.0.2", + "is-stream-ended": "^0.1.4", + "node-fetch": "^2.6.1", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^1.0.0", + "protobufjs": "7.2.4", + "protobufjs-cli": "1.1.1", + "retry-request": "^5.0.0" + }, + "bin": { + "compileProtos": "build/tools/compileProtos.js", + "minifyProtoJson": "build/tools/minify.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/google-gax/node_modules/protobufjs": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.4.tgz", + "integrity": "sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/google-p12-pem": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", + "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", + "optional": true, + "dependencies": { + "node-forge": "^1.3.1" + }, + "bin": { + "gp12-pem": "build/src/bin/gp12-pem.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/googleapis": { + "version": "140.0.1", + "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-140.0.1.tgz", + "integrity": "sha512-ZGvBX4mQcFXO9ACnVNg6Aqy3KtBPB5zTuue43YVLxwn8HSv8jB7w+uDKoIPSoWuxGROgnj2kbng6acXncOQRNA==", + "dependencies": { + "google-auth-library": "^9.0.0", + "googleapis-common": "^7.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/googleapis-common": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-7.2.0.tgz", + "integrity": "sha512-/fhDZEJZvOV3X5jmD+fKxMqma5q2Q9nZNSF3kn1F18tpxmA86BcTxAGBQdM0N89Z3bEaIs+HVznSmFJEAmMTjA==", + "dependencies": { + "extend": "^3.0.2", + "gaxios": "^6.0.3", + "google-auth-library": "^9.7.0", + "qs": "^6.7.0", + "url-template": "^2.0.8", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/googleapis-common/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/googleapis-common/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/googleapis-common/node_modules/gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/googleapis-common/node_modules/gaxios/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/googleapis-common/node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/googleapis-common/node_modules/google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/googleapis-common/node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/googleapis-common/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/googleapis-common/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/googleapis/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/googleapis/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/googleapis/node_modules/gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/googleapis/node_modules/gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "dependencies": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/googleapis/node_modules/google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/googleapis/node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/googleapis/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/googleapis/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/googleapis/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "devOptional": true + }, + "node_modules/gtoken": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", + "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==", + "optional": true, + "dependencies": { + "gaxios": "^5.0.1", + "google-p12-pem": "^4.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "peer": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hsl-to-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-to-hex/-/hsl-to-hex-1.0.0.tgz", + "integrity": "sha512-K6GVpucS5wFf44X0h2bLVRDsycgJmf9FF2elg+CrqD8GcFU8c6vYhgXn8NjUkFCwj+xDFb70qgLbTUm6sxwPmA==", + "dependencies": { + "hsl-to-rgb-for-reals": "^1.1.0" + } + }, + "node_modules/hsl-to-rgb-for-reals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hsl-to-rgb-for-reals/-/hsl-to-rgb-for-reals-1.1.1.tgz", + "integrity": "sha512-LgOWAkrN0rFaQpfdWBQlv/VhkOxb5AsBjk6NQVx4yEzWS923T07X0M1Y0VNko2H52HeSpZrZNNMJ0aFqsdVzQg==" + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "peer": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/hyphen": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/hyphen/-/hyphen-1.10.6.tgz", + "integrity": "sha512-fXHXcGFTXOvZTSkPJuGOQf5Lv5T/R2itiiCVPg9LxAje5D00O0pP83yJShFq5V89Ly//Gt6acj7z8pbBr34stw==" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/import-in-the-middle": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz", + "integrity": "sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==", + "dependencies": { + "acorn": "^8.8.2", + "acorn-import-attributes": "^1.9.5", + "cjs-module-lexer": "^1.2.2", + "module-details-from-path": "^1.0.3" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "peer": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "devOptional": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/is/-/is-3.3.0.tgz", + "integrity": "sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "peer": true + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==", + "optional": true + }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "peer": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", + "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "peer": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "peer": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "peer": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "peer": true + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "peer": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jay-peg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jay-peg/-/jay-peg-1.1.0.tgz", + "integrity": "sha512-WhyKySfx5CEFoKDnpmHyJUrpX5fUrr/X3kqVHISmiO9jrJC73RQBOAZJB8bDrWT4PHEkl0QgNZLlWJfAWAIFew==", + "dependencies": { + "restructure": "^3.0.0" + } + }, + "node_modules/jay-peg/node_modules/restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==" + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "peer": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "peer": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "peer": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "peer": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "peer": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "peer": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jose": { + "version": "4.15.4", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.4.tgz", + "integrity": "sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "peer": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/js2xmlparser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", + "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "optional": true, + "dependencies": { + "xmlcreate": "^2.0.4" + } + }, + "node_modules/jsdoc": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.2.tgz", + "integrity": "sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg==", + "optional": true, + "dependencies": { + "@babel/parser": "^7.20.15", + "@jsdoc/salty": "^0.2.1", + "@types/markdown-it": "^12.2.3", + "bluebird": "^3.7.2", + "catharsis": "^0.9.0", + "escape-string-regexp": "^2.0.0", + "js2xmlparser": "^4.0.2", + "klaw": "^3.0.0", + "markdown-it": "^12.3.2", + "markdown-it-anchor": "^8.4.1", + "marked": "^4.0.10", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", + "underscore": "~1.13.2" + }, + "bin": { + "jsdoc": "jsdoc.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "peer": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "peer": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "peer": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "peer": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jsonwebtoken/node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jsonwebtoken/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jwks-rsa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.1.0.tgz", + "integrity": "sha512-v7nqlfezb9YfHHzYII3ef2a2j1XnGeSE/bK3WfumaYCqONAIstJbrEGapz4kadScZzEt7zYCN7bucj8C0Mv/Rg==", + "dependencies": { + "@types/express": "^4.17.17", + "@types/jsonwebtoken": "^9.0.2", + "debug": "^4.3.4", + "jose": "^4.14.6", + "limiter": "^1.1.5", + "lru-memoizer": "^2.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jwks-rsa/node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/jwks-rsa/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/jwks-rsa/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "optional": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "peer": true + }, + "node_modules/linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "optional": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "peer": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/logform": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.1.tgz", + "integrity": "sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==", + "dependencies": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/logform/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lru-memoizer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.2.0.tgz", + "integrity": "sha512-QfOZ6jNkxCcM/BkIPnFsqDhtrazLRsghi9mBwFAzol5GCvj4EkFT899Za3+QwikCg5sRX8JstioBDwOxEyzaNw==", + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "lru-cache": "~4.0.0" + } + }, + "node_modules/lru-memoizer/node_modules/lru-cache": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "integrity": "sha512-uQw9OqphAGiZhkuPlpFGmdTU2tEuhxTourM/19qGJrxBPHAr/f8BT1a0i/lOclESnGatdJG/UCkP9kZB/Lh1iw==", + "dependencies": { + "pseudomap": "^1.0.1", + "yallist": "^2.0.0" + } + }, + "node_modules/lru-memoizer/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "peer": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "peer": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "optional": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it-anchor": { + "version": "8.6.7", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", + "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", + "optional": true, + "peerDependencies": { + "@types/markdown-it": "*", + "markdown-it": "*" + } + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "optional": true + }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "optional": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "optional": true + }, + "node_modules/media-engine": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/media-engine/-/media-engine-1.0.3.tgz", + "integrity": "sha512-aa5tG6sDoK+k70B9iEX1NeyfT8ObCKhNDs6lJVpwF6r8vhUfuKMslIcirq6HIUYuuUYLefcEQOn9bSBOvawtwg==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "peer": true + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "peer": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "devOptional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/module-details-from-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.45", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", + "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "peer": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "peer": true + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "peer": true + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-svg-path": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/normalize-svg-path/-/normalize-svg-path-1.1.0.tgz", + "integrity": "sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==", + "dependencies": { + "svg-arc-to-cubic-bezier": "^3.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "peer": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "peer": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/openai": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.55.3.tgz", + "integrity": "sha512-/IUDdK5w3aB1Kd88Ml7w5F+EkVM5aXlrY+lSpWXdIPL18CmGkC7lV9HFJ7beR0OUSFLFT0qmWvMynqtbMF06/Q==", + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7" + }, + "bin": { + "openai": "bin/cli" + }, + "peerDependencies": { + "zod": "^3.23.8" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/openai/node_modules/@types/node": { + "version": "18.19.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.43.tgz", + "integrity": "sha512-Mw/YlgXnyJdEwLoFv2dpuJaDFriX+Pc+0qOBJ57jC1H6cDxIj2xc5yUrdtArDVG0m+KV6622a4p2tenEqB3C/g==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "optional": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "devOptional": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "peer": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "peer": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-svg-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", + "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/partial-json": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/partial-json/-/partial-json-0.1.7.tgz", + "integrity": "sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==", + "peer": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", + "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "peer": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "optional": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "peer": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/proto3-json-serializer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.1.tgz", + "integrity": "sha512-AwAuY4g9nxx0u52DnSMkqqgyLHaW/XaPLtaAo3y/ZCfeaQB/g4YDH4kb8Wc/mWzWvu0YjOznVnfn373MVZZrgw==", + "optional": true, + "dependencies": { + "protobufjs": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/protobuf.js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/protobuf.js/-/protobuf.js-1.1.2.tgz", + "integrity": "sha512-USO7Xus/pzPw549M1TguiyoOrKEhm9VMXv+CkDufcjMC8Rd7EPbxeRQPEjCV8ua1tm0k7z9xHkogcxovZogWdA==", + "dependencies": { + "long": "~1.1.2" + } + }, + "node_modules/protobuf.js/node_modules/long": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/long/-/long-1.1.5.tgz", + "integrity": "sha512-TU6nAF5SdasnTr28c7e74P4Crbn9o3/zwo1pM22Wvg2i2vlZ4Eelxwu4QT7j21z0sDBlJDEnEZjXTZg2J8WJrg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/protobufjs": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.2.tgz", + "integrity": "sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/protobufjs-cli": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.1.tgz", + "integrity": "sha512-VPWMgIcRNyQwWUv8OLPyGQ/0lQY/QTQAVN5fh+XzfDwsVw1FZ2L3DM/bcBf8WPiRz2tNpaov9lPZfNcmNo6LXA==", + "optional": true, + "dependencies": { + "chalk": "^4.0.0", + "escodegen": "^1.13.0", + "espree": "^9.0.0", + "estraverse": "^5.1.0", + "glob": "^8.0.0", + "jsdoc": "^4.0.0", + "minimist": "^1.2.0", + "semver": "^7.1.2", + "tmp": "^0.2.1", + "uglify-js": "^3.7.7" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "protobufjs": "^7.0.0" + } + }, + "node_modules/protobufjs-cli/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/protobufjs-cli/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "optional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/protobufjs-cli/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "optional": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/protobufjs-cli/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "optional": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", + "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", + "dependencies": { + "duplexify": "^4.1.1", + "inherits": "^2.0.3", + "pump": "^3.0.0" + } + }, + "node_modules/pure-rand": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "peer": true + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true, + "peer": true + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==" + }, + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-in-the-middle": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz", + "integrity": "sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==", + "dependencies": { + "debug": "^4.3.5", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/require-in-the-middle/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/require-in-the-middle/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/requizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", + "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==", + "optional": true, + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "peer": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/restructure": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-0.5.4.tgz", + "integrity": "sha512-wgNbkrlRpj0NarhUyiCfOXlu8DybDIYRV7MOieKGOl16N7NmAkjTtPhn2F4CBOsyRL8m6RWZLSzjJVVPAkJuiw==", + "dependencies": { + "browserify-optional": "^1.0.0" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "optional": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/retry-request": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz", + "integrity": "sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==", + "optional": true, + "dependencies": { + "debug": "^4.1.1", + "extend": "^3.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/retry-request/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/retry-request/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "optional": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/scheduler": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.17.0.tgz", + "integrity": "sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "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" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "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" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "peer": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "peer": true + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "peer": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "peer": true + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "engines": { + "node": "*" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "peer": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "dependencies": { + "stubs": "^3.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "peer": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "devOptional": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stripe": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-16.7.0.tgz", + "integrity": "sha512-BJCSEtqN8LJsPuPkjQmB/LlBl00uxi9FIPa6LNcF80ofMKqfnuervDhwWSZqCs6xJk/i9vx1D9lRoDnqSmym2w==", + "dependencies": { + "@types/node": ">=8.1.0", + "qs": "^6.11.0" + }, + "engines": { + "node": ">=12.*" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "optional": true + }, + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-arc-to-cubic-bezier": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz", + "integrity": "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==" + }, + "node_modules/teeny-request": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-8.0.3.tgz", + "integrity": "sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==", + "optional": true, + "dependencies": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "peer": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-decoding": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-decoding/-/text-decoding-1.0.0.tgz", + "integrity": "sha512-/0TJD42KDnVwKmDK6jj3xP7E2MG7SHAOG4tyTgyUCRPdHwvkquYNLEQltmdMa3owq3TkddCVcTsoctJI8VQNKA==" + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "optional": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "peer": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "peer": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/ts-deepmerge": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/ts-deepmerge/-/ts-deepmerge-2.0.7.tgz", + "integrity": "sha512-3phiGcxPSSR47RBubQxPoZ+pqXsEsozLo4G4AlSrsMKTFg9TA3l+3he5BqpUi9wiuDbaHWXH/amlzQ49uEdXtg==", + "dev": true + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "optional": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "optional": true + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "optional": true + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-properties/node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==" + }, + "node_modules/unicode-properties/node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-trie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha512-WgVuO0M2jDl7hVfbPgXv2LUrD81HM0bQj/bvLGiw6fJ4Zo8nNFnDrA0/hU2Te/wz6pjxCm5cxJwtLjo2eyV51Q==", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unicode-trie/node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", + "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite-compatible-readable-stream": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/vite-compatible-readable-stream/-/vite-compatible-readable-stream-3.6.1.tgz", + "integrity": "sha512-t20zYkrSf868+j/p31cRIGN28Phrjm3nRSLR2fyc2tiWi4cZGVdv68yNlwnIINTkMTmPoMiSlc0OadaO7DXZaQ==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "peer": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/winston": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.14.1.tgz", + "integrity": "sha512-CJi4Il/msz8HkdDfXOMu+r5Au/oyEjFiOZzbX2d23hRLY0narGjqfE5lFlrT5hfYJhPtM8b85/GNFsxIML/RVA==", + "dependencies": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.6.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.7.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.1.tgz", + "integrity": "sha512-wQCXXVgfv/wUPOfb2x0ruxzwkcZfxcktz6JIMUaPLmcNhO4bZTwA/WtDWK74xV3F2dKu8YadrFv0qhwYjVEwhA==", + "dependencies": { + "logform": "^2.6.1", + "readable-stream": "^3.6.2", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "peer": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "peer": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/xmlcreate": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", + "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", + "optional": true + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoga-layout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/yoga-layout/-/yoga-layout-2.0.1.tgz", + "integrity": "sha512-tT/oChyDXelLo2A+UVnlW9GU7CsvFMaEnd9kVFsaiCQonFAXd3xrHhkLYu+suwwosrAEQ746xBU+HvYtm1Zs2Q==" + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.23.2", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.2.tgz", + "integrity": "sha512-uSt90Gzc/tUfyNqxnjlfBs8W6WSGpNBv0rVsNxP/BVSMHMKGdthPYff4xtCHYloJGM0CFxFsb3NbC0eqPhfImw==", + "peer": true, + "peerDependencies": { + "zod": "^3.23.3" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "peer": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@anthropic-ai/sdk": { + "version": "0.24.3", + "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.24.3.tgz", + "integrity": "sha512-916wJXO6T6k8R6BAAcLhLPv/pnLGy7YSEBZXZ1XTFbLcTZE8oTy3oDW9WJf9KKZwMvVcePIfoTSvzXHRcGxkQQ==", + "requires": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7", + "web-streams-polyfill": "^3.2.1" + }, + "dependencies": { + "@types/node": { + "version": "18.19.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.43.tgz", + "integrity": "sha512-Mw/YlgXnyJdEwLoFv2dpuJaDFriX+Pc+0qOBJ57jC1H6cDxIj2xc5yUrdtArDVG0m+KV6622a4p2tenEqB3C/g==", + "requires": { + "undici-types": "~5.26.4" + } + } + } + }, + "@anthropic-ai/vertex-sdk": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@anthropic-ai/vertex-sdk/-/vertex-sdk-0.4.1.tgz", + "integrity": "sha512-RT/2CWzqyAcJDZWxnNc1mXa7XiiHDaQ9aknfW4mIDw6zE+Zj/R2vCKpTb0dIwrmHYNOyKQNaD7Z1ynDt9oXFWA==", + "requires": { + "@anthropic-ai/sdk": ">=0.14 <1", + "google-auth-library": "^9.4.2" + }, + "dependencies": { + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "requires": { + "ms": "2.1.2" + } + }, + "gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + } + }, + "gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "requires": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + } + }, + "google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "requires": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + } + }, + "gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "requires": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" + } + } + }, + "@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "requires": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + } + }, + "@babel/compat-data": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", + "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==" + }, + "@babel/core": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", + "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "peer": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.3", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.3", + "@babel/types": "^7.23.3", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "peer": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "peer": true + } + } + }, + "@babel/generator": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", + "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "requires": { + "@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": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "requires": { + "@babel/types": "^7.25.9" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", + "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", + "requires": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "requires": { + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "requires": { + "@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/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "semver": "^6.3.1" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz", + "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.1.1", + "semver": "^6.3.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", + "requires": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "dependencies": { + "debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "requires": { + "ms": "^2.1.3" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "requires": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + } + }, + "@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "requires": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + } + }, + "@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "requires": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "requires": { + "@babel/types": "^7.25.9" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" + } + }, + "@babel/helper-replace-supers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" + } + }, + "@babel/helper-simple-access": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", + "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", + "requires": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "requires": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + } + }, + "@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==" + }, + "@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==" + }, + "@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==" + }, + "@babel/helper-wrap-function": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", + "requires": { + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + } + }, + "@babel/helpers": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "peer": true, + "requires": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" + } + }, + "@babel/parser": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "requires": { + "@babel/types": "^7.26.0" + } + }, + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + } + }, + "@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" + } + }, + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "requires": {} + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.25.9" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", + "requires": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", + "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", + "requires": { + "@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/traverse": "^7.25.9", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", + "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", + "requires": { + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", + "requires": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", + "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", + "requires": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-simple-access": "^7.25.9" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", + "requires": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", + "requires": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", + "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-numeric-separator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-object-rest-spread": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", + "requires": { + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" + } + }, + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-optional-chaining": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-private-methods": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz", + "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", + "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/types": "^7.25.9" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz", + "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==", + "requires": { + "@babel/plugin-transform-react-jsx": "^7.25.9" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz", + "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9", + "regenerator-transform": "^0.15.2" + } + }, + "@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", + "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + } + }, + "@babel/preset-env": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", + "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "requires": { + "@babel/compat-data": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.38.1", + "semver": "^6.3.1" + } + }, + "@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.25.9.tgz", + "integrity": "sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==", + "requires": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-transform-react-display-name": "^7.25.9", + "@babel/plugin-transform-react-jsx": "^7.25.9", + "@babel/plugin-transform-react-jsx-development": "^7.25.9", + "@babel/plugin-transform-react-pure-annotations": "^7.25.9" + } + }, + "@babel/register": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.25.9.tgz", + "integrity": "sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==", + "requires": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.6", + "source-map-support": "^0.5.16" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "requires": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + } + }, + "@babel/traverse": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "requires": { + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "requires": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "peer": true + }, + "@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==" + }, + "@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "requires": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "@fastify/busboy": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-1.2.1.tgz", + "integrity": "sha512-7PQA7EH43S0CxcOa9OeAnaeA0oQ+e/DHNPZwSQM9CQHW76jle5+OvLdibRp/Aafs9KXbLhxyjOTkRjWUbQEd3Q==", + "requires": { + "text-decoding": "^1.0.0" + } + }, + "@firebase/app-check-interop-types": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.2.tgz", + "integrity": "sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ==", + "optional": true + }, + "@firebase/app-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz", + "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==" + }, + "@firebase/auth-interop-types": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz", + "integrity": "sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg==" + }, + "@firebase/component": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.4.tgz", + "integrity": "sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA==", + "requires": { + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + } + }, + "@firebase/database": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.14.4.tgz", + "integrity": "sha512-+Ea/IKGwh42jwdjCyzTmeZeLM3oy1h0mFPsTy6OqCWzcu/KFqRAr5Tt1HRCOBlNOdbh84JPZC47WLU18n2VbxQ==", + "requires": { + "@firebase/auth-interop-types": "0.2.1", + "@firebase/component": "0.6.4", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.3", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + } + }, + "@firebase/database-compat": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.3.4.tgz", + "integrity": "sha512-kuAW+l+sLMUKBThnvxvUZ+Q1ZrF/vFJ58iUY9kAcbX48U03nVzIF6Tmkf0p3WVQwMqiXguSgtOPIB6ZCeF+5Gg==", + "requires": { + "@firebase/component": "0.6.4", + "@firebase/database": "0.14.4", + "@firebase/database-types": "0.10.4", + "@firebase/logger": "0.4.0", + "@firebase/util": "1.9.3", + "tslib": "^2.1.0" + } + }, + "@firebase/database-types": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.10.4.tgz", + "integrity": "sha512-dPySn0vJ/89ZeBac70T+2tWWPiJXWbmRygYv0smT5TfE3hDrQ09eKMF3Y+vMlTdrMWq7mUdYW5REWPSGH4kAZQ==", + "requires": { + "@firebase/app-types": "0.9.0", + "@firebase/util": "1.9.3" + } + }, + "@firebase/logger": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz", + "integrity": "sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.3.tgz", + "integrity": "sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA==", + "requires": { + "tslib": "^2.1.0" + } + }, + "@genkit-ai/ai": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@genkit-ai/ai/-/ai-0.9.6.tgz", + "integrity": "sha512-GiNK8LmCIs/sU6TgVG6GxRpYcIerJdXE649RJsjJQb5pTajOGUYTaVB14nWT4CBKsW2UseSembe0oG64gmxCDg==", + "peer": true, + "requires": { + "@genkit-ai/core": "0.9.6", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.11.19", + "colorette": "^2.0.20", + "json5": "^2.2.3", + "node-fetch": "^3.3.2", + "partial-json": "^0.1.7", + "uuid": "^10.0.0" + }, + "dependencies": { + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "peer": true, + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "peer": true + } + } + }, + "@genkit-ai/core": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@genkit-ai/core/-/core-0.9.6.tgz", + "integrity": "sha512-VzcNkVNFSTYNI39bQPAN11QbtZNHuCVxUPcAR0pGAcY6SpqjRSa21WxdLn3dDNjP6sv+pOZdJX3VFln2q5krvg==", + "peer": true, + "requires": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^1.25.0", + "@opentelemetry/core": "^1.25.0", + "@opentelemetry/sdk-metrics": "^1.25.0", + "@opentelemetry/sdk-node": "^0.52.0", + "@opentelemetry/sdk-trace-base": "^1.25.0", + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "async-mutex": "^0.5.0", + "body-parser": "^1.20.3", + "cors": "^2.8.5", + "express": "^4.21.0", + "get-port": "^5.1.0", + "json-schema": "^0.4.0", + "zod": "^3.23.8", + "zod-to-json-schema": "^3.22.4" + } + }, + "@genkit-ai/dotprompt": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@genkit-ai/dotprompt/-/dotprompt-0.9.6.tgz", + "integrity": "sha512-tTNL2dULDpZdNLpMA9FcviJNyZDPQrUBBEwMP9POjHo07VU5CYGZWqpvecZJnsAz65jk+3pDBWJeFro06+3NqQ==", + "peer": true, + "requires": { + "@genkit-ai/ai": "0.9.6", + "@genkit-ai/core": "0.9.6", + "front-matter": "^4.0.2", + "handlebars": "^4.7.8", + "node-fetch": "^3.3.2" + }, + "dependencies": { + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "peer": true, + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + } + } + }, + "@genkit-ai/google-cloud": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@genkit-ai/google-cloud/-/google-cloud-0.9.6.tgz", + "integrity": "sha512-cwrHrtOBJzRkqtCUlEQZtlMQ7x09OwYCRJtYliFcGjKaLy9iRmQiabNjn38OTLNvwBtRiK0mxCMRX3/SvE49oA==", + "requires": { + "@google-cloud/logging-winston": "^6.0.0", + "@google-cloud/opentelemetry-cloud-monitoring-exporter": "^0.19.0", + "@google-cloud/opentelemetry-cloud-trace-exporter": "^2.4.1", + "@google-cloud/opentelemetry-resource-util": "^2.4.0", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/auto-instrumentations-node": "^0.49.1", + "@opentelemetry/core": "^1.25.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/instrumentation-pino": "^0.41.0", + "@opentelemetry/instrumentation-winston": "^0.39.0", + "@opentelemetry/resources": "^1.25.0", + "@opentelemetry/sdk-metrics": "^1.25.0", + "@opentelemetry/sdk-node": "^0.52.0", + "@opentelemetry/sdk-trace-base": "^1.25.0", + "google-auth-library": "^9.6.3", + "node-fetch": "^3.3.2", + "winston": "^3.12.0" + }, + "dependencies": { + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "requires": { + "ms": "2.1.2" + } + }, + "gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "dependencies": { + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "requires": { + "whatwg-url": "^5.0.0" + } + } + } + }, + "gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "requires": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + } + }, + "google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "requires": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + } + }, + "gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "requires": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" + } + } + }, + "@genkit-ai/googleai": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@genkit-ai/googleai/-/googleai-0.9.6.tgz", + "integrity": "sha512-sBEnGYM3cCf6vioa08UwpGrLdbuTI/TvFlhXDZ4spzLU12nFNfnlKIiKmnzjOwHph0XOfBTVi5/8FTq69Rh1hg==", + "requires": { + "@google/generative-ai": "^0.21.0", + "google-auth-library": "^9.6.3", + "node-fetch": "^3.3.2" + }, + "dependencies": { + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "requires": { + "ms": "2.1.2" + } + }, + "gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "dependencies": { + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "requires": { + "whatwg-url": "^5.0.0" + } + } + } + }, + "gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "requires": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + } + }, + "google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "requires": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + } + }, + "gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "requires": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" + } + } + }, + "@genkit-ai/vertexai": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@genkit-ai/vertexai/-/vertexai-0.9.6.tgz", + "integrity": "sha512-If2P7eMVXjJvt32N43TlgAoPIIVmYVlmrLqHgj/LvbPN6XkK3YwG74OzxnQ9AGzUt9aD/p95Ddf9M6cRqcr7pQ==", + "requires": { + "@anthropic-ai/sdk": "^0.24.3", + "@anthropic-ai/vertex-sdk": "^0.4.0", + "@google-cloud/aiplatform": "^3.23.0", + "@google-cloud/bigquery": "^7.8.0", + "@google-cloud/vertexai": "^1.9.0", + "firebase-admin": ">=12.2", + "google-auth-library": "^9.14.2", + "googleapis": "^140.0.1", + "node-fetch": "^3.3.2", + "openai": "^4.52.7" + }, + "dependencies": { + "@fastify/busboy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-3.0.0.tgz", + "integrity": "sha512-83rnH2nCvclWaPQQKvkJ2pdOjG4TZyEVuFDnlOF6KP08lDaaceVyw/W63mDuafQT+MKHCvXIPpE5uYWeM0rT4w==", + "optional": true + }, + "@firebase/app-types": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.2.tgz", + "integrity": "sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ==", + "optional": true + }, + "@firebase/auth-interop-types": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.3.tgz", + "integrity": "sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ==", + "optional": true + }, + "@firebase/component": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.8.tgz", + "integrity": "sha512-LcNvxGLLGjBwB0dJUsBGCej2fqAepWyBubs4jt1Tiuns7QLbXHuyObZ4aMeBjZjWx4m8g1LoVI9QFpSaq/k4/g==", + "optional": true, + "requires": { + "@firebase/util": "1.9.7", + "tslib": "^2.1.0" + } + }, + "@firebase/database": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.7.tgz", + "integrity": "sha512-wjXr5AO8RPxVVg7rRCYffT7FMtBjHRfJ9KMwi19MbOf0vBf0H9YqW3WCgcnLpXI6ehiUcU3z3qgPnnU0nK6SnA==", + "optional": true, + "requires": { + "@firebase/app-check-interop-types": "0.3.2", + "@firebase/auth-interop-types": "0.2.3", + "@firebase/component": "0.6.8", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.7", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + } + }, + "@firebase/database-compat": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.7.tgz", + "integrity": "sha512-R/3B+VVzEFN5YcHmfWns3eitA8fHLTL03io+FIoMcTYkajFnrBdS3A+g/KceN9omP7FYYYGTQWF9lvbEx6eMEg==", + "optional": true, + "requires": { + "@firebase/component": "0.6.8", + "@firebase/database": "1.0.7", + "@firebase/database-types": "1.0.4", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.7", + "tslib": "^2.1.0" + } + }, + "@firebase/database-types": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.4.tgz", + "integrity": "sha512-mz9ZzbH6euFXbcBo+enuJ36I5dR5w+enJHHjy9Y5ThCdKUseqfDjW3vCp1YxE9zygFCSjJJ/z1cQ+zodvUcwPQ==", + "optional": true, + "requires": { + "@firebase/app-types": "0.9.2", + "@firebase/util": "1.9.7" + } + }, + "@firebase/logger": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.2.tgz", + "integrity": "sha512-Q1VuA5M1Gjqrwom6I6NUU4lQXdo9IAQieXlujeHZWvRt1b7qQ0KwBaNAjgxG27jgF9/mUwsNmO8ptBCGVYhB0A==", + "optional": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "@firebase/util": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.7.tgz", + "integrity": "sha512-fBVNH/8bRbYjqlbIhZ+lBtdAAS4WqZumx03K06/u7fJSpz1TGjEMm1ImvKD47w+xaFKIP2ori6z8BrbakRfjJA==", + "optional": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "@google-cloud/firestore": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-7.9.0.tgz", + "integrity": "sha512-c4ALHT3G08rV7Zwv8Z2KG63gZh66iKdhCBeDfCpIkLrjX6EAjTD/szMdj14M+FnQuClZLFfW5bAgoOjfNmLtJg==", + "optional": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "functional-red-black-tree": "^1.0.1", + "google-gax": "^4.3.3", + "protobufjs": "^7.2.6" + } + }, + "@google-cloud/paginator": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", + "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", + "optional": true, + "requires": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + } + }, + "@google-cloud/projectify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", + "optional": true + }, + "@google-cloud/promisify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", + "optional": true + }, + "@google-cloud/storage": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-7.12.1.tgz", + "integrity": "sha512-Z3ZzOnF3YKLuvpkvF+TjQ6lztxcAyTILp+FjKonmVpEwPa9vFvxpZjubLR4sB6bf19i/8HL2AXRjA0YFgHFRmQ==", + "optional": true, + "requires": { + "@google-cloud/paginator": "^5.0.0", + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", + "abort-controller": "^3.0.0", + "async-retry": "^1.3.3", + "duplexify": "^4.1.3", + "fast-xml-parser": "^4.4.1", + "gaxios": "^6.0.2", + "google-auth-library": "^9.6.3", + "html-entities": "^2.5.2", + "mime": "^3.0.0", + "p-limit": "^3.0.1", + "retry-request": "^7.0.0", + "teeny-request": "^9.0.0", + "uuid": "^8.0.0" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "optional": true + } + } + }, + "@grpc/grpc-js": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.11.1.tgz", + "integrity": "sha512-gyt/WayZrVPH2w/UTLansS7F9Nwld472JxxaETamrM8HNlsa+jSLNyKAZmhxI2Me4c3mQHFiS1wWHDY1g1Kthw==", + "optional": true, + "requires": { + "@grpc/proto-loader": "^0.7.13", + "@js-sdsl/ordered-map": "^4.4.2" + } + }, + "@types/node": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz", + "integrity": "sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==", + "optional": true, + "requires": { + "undici-types": "~6.13.0" + } + }, + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "requires": { + "ms": "2.1.2" + } + }, + "firebase-admin": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-12.3.1.tgz", + "integrity": "sha512-vEr3s3esl8nPIA9r/feDT4nzIXCfov1CyyCSpMQWp6x63Q104qke0MEGZlrHUZVROtl8FLus6niP/M9I1s4VBA==", + "optional": true, + "requires": { + "@fastify/busboy": "^3.0.0", + "@firebase/database-compat": "^1.0.2", + "@firebase/database-types": "^1.0.0", + "@google-cloud/firestore": "^7.7.0", + "@google-cloud/storage": "^7.7.0", + "@types/node": "^22.0.1", + "farmhash-modern": "^1.1.0", + "jsonwebtoken": "^9.0.0", + "jwks-rsa": "^3.1.0", + "node-forge": "^1.3.1", + "uuid": "^10.0.0" + } + }, + "gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "dependencies": { + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "requires": { + "whatwg-url": "^5.0.0" + } + } + } + }, + "gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "requires": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + } + }, + "google-auth-library": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.0.tgz", + "integrity": "sha512-7ccSEJFDFO7exFbO6NRyC+xH8/mZ1GZGG2xxx9iHxZWcjUjJpjWxIMw3cofAKcueZ6DATiukmmprD7yavQHOyQ==", + "requires": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + } + }, + "google-gax": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.3.9.tgz", + "integrity": "sha512-tcjQr7sXVGMdlvcG25wSv98ap1dtF4Z6mcV0rztGIddOcezw4YMb/uTXg72JPrLep+kXcVjaJjg6oo3KLf4itQ==", + "optional": true, + "requires": { + "@grpc/grpc-js": "^1.10.9", + "@grpc/proto-loader": "^0.7.13", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "google-auth-library": "^9.3.0", + "node-fetch": "^2.7.0", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^2.0.2", + "protobufjs": "^7.3.2", + "retry-request": "^7.0.0", + "uuid": "^9.0.1" + }, + "dependencies": { + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "optional": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "optional": true + } + } + }, + "gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "requires": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "proto3-json-serializer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz", + "integrity": "sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==", + "optional": true, + "requires": { + "protobufjs": "^7.2.5" + } + }, + "retry-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", + "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", + "optional": true, + "requires": { + "@types/request": "^2.48.8", + "extend": "^3.0.2", + "teeny-request": "^9.0.0" + } + }, + "teeny-request": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", + "optional": true, + "requires": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.9", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "dependencies": { + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "optional": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "optional": true + } + } + }, + "undici-types": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", + "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==", + "optional": true + }, + "uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" + } + } + }, + "@google-cloud/aiplatform": { + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/@google-cloud/aiplatform/-/aiplatform-3.25.0.tgz", + "integrity": "sha512-qKnJgbyCENjed8e1G5zZGFTxxNKhhaKQN414W2KIVHrLxMFmlMuG+3QkXPOWwXBnT5zZ7aMxypt5og0jCirpHg==", + "requires": { + "google-gax": "^4.0.3", + "protobuf.js": "^1.1.2" + }, + "dependencies": { + "@grpc/grpc-js": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.11.1.tgz", + "integrity": "sha512-gyt/WayZrVPH2w/UTLansS7F9Nwld472JxxaETamrM8HNlsa+jSLNyKAZmhxI2Me4c3mQHFiS1wWHDY1g1Kthw==", + "requires": { + "@grpc/proto-loader": "^0.7.13", + "@js-sdsl/ordered-map": "^4.4.2" + } + }, + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "requires": { + "ms": "2.1.2" + } + }, + "gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "dependencies": { + "uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" + } + } + }, + "gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "requires": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + } + }, + "google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "requires": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + } + }, + "google-gax": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.3.9.tgz", + "integrity": "sha512-tcjQr7sXVGMdlvcG25wSv98ap1dtF4Z6mcV0rztGIddOcezw4YMb/uTXg72JPrLep+kXcVjaJjg6oo3KLf4itQ==", + "requires": { + "@grpc/grpc-js": "^1.10.9", + "@grpc/proto-loader": "^0.7.13", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "google-auth-library": "^9.3.0", + "node-fetch": "^2.7.0", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^2.0.2", + "protobufjs": "^7.3.2", + "retry-request": "^7.0.0", + "uuid": "^9.0.1" + } + }, + "gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "requires": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "proto3-json-serializer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz", + "integrity": "sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==", + "requires": { + "protobufjs": "^7.2.5" + } + }, + "retry-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", + "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", + "requires": { + "@types/request": "^2.48.8", + "extend": "^3.0.2", + "teeny-request": "^9.0.0" + } + }, + "teeny-request": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", + "requires": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.9", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + } + } + } + } + }, + "@google-cloud/bigquery": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@google-cloud/bigquery/-/bigquery-7.9.0.tgz", + "integrity": "sha512-KJTimGLDlAR1IfZ4Y8xhIVfoZ+XBXd0GGuJttLSXxtR0g+4vNsUt0xS33PRVa5TXey97374yU+uWNlCb5bHwBw==", + "optional": true, + "requires": { + "@google-cloud/common": "^5.0.0", + "@google-cloud/paginator": "^5.0.2", + "@google-cloud/precise-date": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", + "arrify": "^2.0.1", + "big.js": "^6.0.0", + "duplexify": "^4.0.0", + "extend": "^3.0.2", + "is": "^3.3.0", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "dependencies": { + "@google-cloud/paginator": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", + "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", + "optional": true, + "requires": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + } + }, + "@google-cloud/promisify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==", + "optional": true + } + } + }, + "@google-cloud/common": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-5.0.2.tgz", + "integrity": "sha512-V7bmBKYQyu0eVG2BFejuUjlBt+zrya6vtsKdY+JxMM/dNntPF41vZ9+LhOshEUH01zOHEqBSvI7Dad7ZS6aUeA==", + "requires": { + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", + "arrify": "^2.0.1", + "duplexify": "^4.1.1", + "extend": "^3.0.2", + "google-auth-library": "^9.0.0", + "html-entities": "^2.5.2", + "retry-request": "^7.0.0", + "teeny-request": "^9.0.0" + }, + "dependencies": { + "@google-cloud/projectify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==" + }, + "@google-cloud/promisify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==" + }, + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "requires": { + "ms": "2.1.2" + } + }, + "gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "dependencies": { + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" + } + } + }, + "gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "requires": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + } + }, + "google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "requires": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + } + }, + "gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "requires": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "retry-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", + "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", + "requires": { + "@types/request": "^2.48.8", + "extend": "^3.0.2", + "teeny-request": "^9.0.0" + } + }, + "teeny-request": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", + "requires": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.9", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + } + } + } + }, + "@google-cloud/firestore": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-6.8.0.tgz", + "integrity": "sha512-JRpk06SmZXLGz0pNx1x7yU3YhkUXheKgH5hbDZ4kMsdhtfV5qPLJLRI4wv69K0cZorIk+zTMOwptue7hizo0eA==", + "optional": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "functional-red-black-tree": "^1.0.1", + "google-gax": "^3.5.7", + "protobufjs": "^7.2.5" + } + }, + "@google-cloud/logging": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@google-cloud/logging/-/logging-11.2.0.tgz", + "integrity": "sha512-Ma94jvuoMpbgNniwtelOt8w82hxK62FuOXZonEv0Hyk3B+/YVuLG/SWNyY9yMso/RXnPEc1fP2qo9kDrjf/b2w==", + "requires": { + "@google-cloud/common": "^5.0.0", + "@google-cloud/paginator": "^5.0.0", + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", + "@opentelemetry/api": "^1.7.0", + "arrify": "^2.0.1", + "dot-prop": "^6.0.0", + "eventid": "^2.0.0", + "extend": "^3.0.2", + "gcp-metadata": "^6.0.0", + "google-auth-library": "^9.0.0", + "google-gax": "^4.0.3", + "on-finished": "^2.3.0", + "pumpify": "^2.0.1", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "dependencies": { + "@google-cloud/paginator": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-5.0.2.tgz", + "integrity": "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==", + "requires": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + } + }, + "@google-cloud/projectify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==" + }, + "@google-cloud/promisify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz", + "integrity": "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==" + }, + "@grpc/grpc-js": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.11.1.tgz", + "integrity": "sha512-gyt/WayZrVPH2w/UTLansS7F9Nwld472JxxaETamrM8HNlsa+jSLNyKAZmhxI2Me4c3mQHFiS1wWHDY1g1Kthw==", + "requires": { + "@grpc/proto-loader": "^0.7.13", + "@js-sdsl/ordered-map": "^4.4.2" + } + }, + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "requires": { + "ms": "2.1.2" + } + }, + "gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "dependencies": { + "uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" + } + } + }, + "gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "requires": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + } + }, + "google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "requires": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + } + }, + "google-gax": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-4.3.9.tgz", + "integrity": "sha512-tcjQr7sXVGMdlvcG25wSv98ap1dtF4Z6mcV0rztGIddOcezw4YMb/uTXg72JPrLep+kXcVjaJjg6oo3KLf4itQ==", + "requires": { + "@grpc/grpc-js": "^1.10.9", + "@grpc/proto-loader": "^0.7.13", + "@types/long": "^4.0.0", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "google-auth-library": "^9.3.0", + "node-fetch": "^2.7.0", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^2.0.2", + "protobufjs": "^7.3.2", + "retry-request": "^7.0.0", + "uuid": "^9.0.1" + } + }, + "gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "requires": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "proto3-json-serializer": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz", + "integrity": "sha512-SAzp/O4Yh02jGdRc+uIrGoe87dkN/XtwxfZ4ZyafJHymd79ozp5VG5nyZ7ygqPM5+cpLDjjGnYFUkngonyDPOQ==", + "requires": { + "protobufjs": "^7.2.5" + } + }, + "retry-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz", + "integrity": "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==", + "requires": { + "@types/request": "^2.48.8", + "extend": "^3.0.2", + "teeny-request": "^9.0.0" + } + }, + "teeny-request": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz", + "integrity": "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==", + "requires": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.9", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + }, + "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + } + } + } + } + }, + "@google-cloud/logging-winston": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/logging-winston/-/logging-winston-6.0.0.tgz", + "integrity": "sha512-/lVp7CyT3nFOr+AjQlZnJhTIOf+kcNGB4JTziL0fkX6Ov/2qNKtRGS/NqE6cD+VSPiv5jLOty3LgkRsXMpYxQQ==", + "requires": { + "@google-cloud/logging": "^11.0.0", + "google-auth-library": "^9.0.0", + "lodash.mapvalues": "^4.6.0", + "winston-transport": "^4.3.0" + }, + "dependencies": { + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "requires": { + "ms": "2.1.2" + } + }, + "gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + } + }, + "gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "requires": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + } + }, + "google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "requires": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + } + }, + "gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "requires": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" + } + } + }, + "@google-cloud/opentelemetry-cloud-monitoring-exporter": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@google-cloud/opentelemetry-cloud-monitoring-exporter/-/opentelemetry-cloud-monitoring-exporter-0.19.0.tgz", + "integrity": "sha512-5SOPXwC6RET4ZvXxw5D97dp8fWpqWEunHrzrUUGXhG4UAeedQe1KvYV8CK+fnaAbN2l2ha6QDYspT6z40TVY0g==", + "requires": { + "@google-cloud/opentelemetry-resource-util": "^2.3.0", + "@google-cloud/precise-date": "^4.0.0", + "google-auth-library": "^9.0.0", + "googleapis": "^137.0.0" + }, + "dependencies": { + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "requires": { + "ms": "2.1.2" + } + }, + "gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + } + }, + "gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "requires": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + } + }, + "google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "requires": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + } + }, + "googleapis": { + "version": "137.1.0", + "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-137.1.0.tgz", + "integrity": "sha512-2L7SzN0FLHyQtFmyIxrcXhgust77067pkkduqkbIpDuj9JzVnByxsRrcRfUMFQam3rQkWW2B0f1i40IwKDWIVQ==", + "requires": { + "google-auth-library": "^9.0.0", + "googleapis-common": "^7.0.0" + } + }, + "gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "requires": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" + } + } + }, + "@google-cloud/opentelemetry-cloud-trace-exporter": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@google-cloud/opentelemetry-cloud-trace-exporter/-/opentelemetry-cloud-trace-exporter-2.4.1.tgz", + "integrity": "sha512-Dq2IyAyA9PCjbjLOn86i2byjkYPC59b5ic8k/L4q5bBWH0Jro8lzMs8C0G5pJfqh2druj8HF+oAIAlSdWQ+Z9Q==", + "requires": { + "@google-cloud/opentelemetry-resource-util": "^2.4.0", + "@grpc/grpc-js": "^1.1.8", + "@grpc/proto-loader": "^0.7.0", + "google-auth-library": "^9.0.0" + }, + "dependencies": { + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, + "debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "requires": { + "ms": "^2.1.3" + } + }, + "gaxios": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + } + }, + "gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "requires": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + } + }, + "google-auth-library": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.0.tgz", + "integrity": "sha512-7ccSEJFDFO7exFbO6NRyC+xH8/mZ1GZGG2xxx9iHxZWcjUjJpjWxIMw3cofAKcueZ6DATiukmmprD7yavQHOyQ==", + "requires": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + } + }, + "gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "requires": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "@google-cloud/opentelemetry-resource-util": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@google-cloud/opentelemetry-resource-util/-/opentelemetry-resource-util-2.4.0.tgz", + "integrity": "sha512-/7ujlMoKtDtrbQlJihCjQnm31n2s2RTlvJqcSbt2jV3OkCzPAdo3u31Q13HNugqtIRUSk7bUoLx6AzhURkhW4w==", + "requires": { + "@opentelemetry/semantic-conventions": "^1.22.0", + "gcp-metadata": "^6.0.0" + }, + "dependencies": { + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "requires": { + "ms": "2.1.2" + } + }, + "gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + } + }, + "gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "requires": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" + } + } + }, + "@google-cloud/paginator": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz", + "integrity": "sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==", + "optional": true, + "requires": { + "arrify": "^2.0.0", + "extend": "^3.0.2" + } + }, + "@google-cloud/precise-date": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/precise-date/-/precise-date-4.0.0.tgz", + "integrity": "sha512-1TUx3KdaU3cN7nfCdNf+UVqA/PSX29Cjcox3fZZBtINlRrXVTmUkQnCKv2MbBUbCopbK4olAT1IHl76uZyCiVA==" + }, + "@google-cloud/projectify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-3.0.0.tgz", + "integrity": "sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA==", + "optional": true + }, + "@google-cloud/promisify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-3.0.1.tgz", + "integrity": "sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==", + "optional": true + }, + "@google-cloud/storage": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-6.12.0.tgz", + "integrity": "sha512-78nNAY7iiZ4O/BouWMWTD/oSF2YtYgYB3GZirn0To6eBOugjXVoK+GXgUXOl+HlqbAOyHxAVXOlsj3snfbQ1dw==", + "optional": true, + "requires": { + "@google-cloud/paginator": "^3.0.7", + "@google-cloud/projectify": "^3.0.0", + "@google-cloud/promisify": "^3.0.0", + "abort-controller": "^3.0.0", + "async-retry": "^1.3.3", + "compressible": "^2.0.12", + "duplexify": "^4.0.0", + "ent": "^2.2.0", + "extend": "^3.0.2", + "fast-xml-parser": "^4.2.2", + "gaxios": "^5.0.0", + "google-auth-library": "^8.0.1", + "mime": "^3.0.0", + "mime-types": "^2.0.8", + "p-limit": "^3.0.1", + "retry-request": "^5.0.0", + "teeny-request": "^8.0.0", + "uuid": "^8.0.0" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "optional": true + } + } + }, + "@google-cloud/vertexai": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@google-cloud/vertexai/-/vertexai-1.9.0.tgz", + "integrity": "sha512-8brlcJwFXI4fPuBtsDNQqCdWZmz8gV9jeEKOU0vc5H2SjehCQpXK/NwuSEr916zbhlBHtg/sU37qQQdgvh5BRA==", + "requires": { + "google-auth-library": "^9.1.0" + }, + "dependencies": { + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, + "debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "requires": { + "ms": "^2.1.3" + } + }, + "gaxios": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + } + }, + "gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "requires": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + } + }, + "google-auth-library": { + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.0.tgz", + "integrity": "sha512-7ccSEJFDFO7exFbO6NRyC+xH8/mZ1GZGG2xxx9iHxZWcjUjJpjWxIMw3cofAKcueZ6DATiukmmprD7yavQHOyQ==", + "requires": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + } + }, + "gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "requires": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "@google/generative-ai": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@google/generative-ai/-/generative-ai-0.21.0.tgz", + "integrity": "sha512-7XhUbtnlkSEZK15kN3t+tzIMxsbKm/dSkKBFalj+20NvPKe1kBY7mR2P7vuijEn+f06z5+A8bVGKO0v39cr6Wg==" + }, + "@grpc/grpc-js": { + "version": "1.8.21", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.21.tgz", + "integrity": "sha512-KeyQeZpxeEBSqFVTi3q2K7PiPXmgBfECc4updA1ejCLjYmoAlvvM3ZMp5ztTDUCUQmoY3CpDxvchjO1+rFkoHg==", + "requires": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + } + }, + "@grpc/proto-loader": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", + "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", + "requires": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.5", + "yargs": "^17.7.2" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "peer": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "peer": true + }, + "@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "peer": true, + "requires": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "peer": true, + "requires": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + } + }, + "@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "peer": true, + "requires": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + } + }, + "@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "peer": true, + "requires": { + "jest-get-type": "^29.6.3" + } + }, + "@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + } + }, + "@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "peer": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + } + }, + "@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "peer": true, + "requires": { + "@sinclair/typebox": "^0.27.8" + } + }, + "@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + } + }, + "@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "peer": true, + "requires": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "peer": true, + "requires": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + } + }, + "@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + } + }, + "@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "peer": true, + "requires": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "requires": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" + }, + "@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==" + }, + "@jsdoc/salty": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.6.tgz", + "integrity": "sha512-aA+awb5yoml8TQ3CzI5Ue7sM3VMRC4l1zJJW4fgZ8OCL1wshJZhNzaf0PL85DSnOUw6QuFgeHGD/eq/xwwAF2g==", + "optional": true, + "requires": { + "lodash": "^4.17.21" + } + }, + "@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==" + }, + "@opentelemetry/api-logs": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz", + "integrity": "sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==", + "requires": { + "@opentelemetry/api": "^1.0.0" + } + }, + "@opentelemetry/auto-instrumentations-node": { + "version": "0.49.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/auto-instrumentations-node/-/auto-instrumentations-node-0.49.2.tgz", + "integrity": "sha512-xtETEPmAby/3MMmedv8Z/873sdLTWg+Vq98rtm4wbwvAiXBB/ao8qRyzRlvR2MR6puEr+vIB/CXeyJnzNA3cyw==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/instrumentation-amqplib": "^0.41.0", + "@opentelemetry/instrumentation-aws-lambda": "^0.43.0", + "@opentelemetry/instrumentation-aws-sdk": "^0.43.1", + "@opentelemetry/instrumentation-bunyan": "^0.40.0", + "@opentelemetry/instrumentation-cassandra-driver": "^0.40.0", + "@opentelemetry/instrumentation-connect": "^0.38.0", + "@opentelemetry/instrumentation-cucumber": "^0.8.0", + "@opentelemetry/instrumentation-dataloader": "^0.11.0", + "@opentelemetry/instrumentation-dns": "^0.38.0", + "@opentelemetry/instrumentation-express": "^0.41.1", + "@opentelemetry/instrumentation-fastify": "^0.38.0", + "@opentelemetry/instrumentation-fs": "^0.14.0", + "@opentelemetry/instrumentation-generic-pool": "^0.38.1", + "@opentelemetry/instrumentation-graphql": "^0.42.0", + "@opentelemetry/instrumentation-grpc": "^0.52.0", + "@opentelemetry/instrumentation-hapi": "^0.40.0", + "@opentelemetry/instrumentation-http": "^0.52.0", + "@opentelemetry/instrumentation-ioredis": "^0.42.0", + "@opentelemetry/instrumentation-kafkajs": "^0.2.0", + "@opentelemetry/instrumentation-knex": "^0.39.0", + "@opentelemetry/instrumentation-koa": "^0.42.0", + "@opentelemetry/instrumentation-lru-memoizer": "^0.39.0", + "@opentelemetry/instrumentation-memcached": "^0.38.0", + "@opentelemetry/instrumentation-mongodb": "^0.46.0", + "@opentelemetry/instrumentation-mongoose": "^0.41.0", + "@opentelemetry/instrumentation-mysql": "^0.40.0", + "@opentelemetry/instrumentation-mysql2": "^0.40.0", + "@opentelemetry/instrumentation-nestjs-core": "^0.39.0", + "@opentelemetry/instrumentation-net": "^0.38.0", + "@opentelemetry/instrumentation-pg": "^0.43.0", + "@opentelemetry/instrumentation-pino": "^0.41.0", + "@opentelemetry/instrumentation-redis": "^0.41.0", + "@opentelemetry/instrumentation-redis-4": "^0.41.1", + "@opentelemetry/instrumentation-restify": "^0.40.0", + "@opentelemetry/instrumentation-router": "^0.39.0", + "@opentelemetry/instrumentation-socket.io": "^0.41.0", + "@opentelemetry/instrumentation-tedious": "^0.13.0", + "@opentelemetry/instrumentation-undici": "^0.5.0", + "@opentelemetry/instrumentation-winston": "^0.39.0", + "@opentelemetry/resource-detector-alibaba-cloud": "^0.29.0", + "@opentelemetry/resource-detector-aws": "^1.6.0", + "@opentelemetry/resource-detector-azure": "^0.2.10", + "@opentelemetry/resource-detector-container": "^0.4.0", + "@opentelemetry/resource-detector-gcp": "^0.29.10", + "@opentelemetry/resources": "^1.24.0", + "@opentelemetry/sdk-node": "^0.52.0" + } + }, + "@opentelemetry/context-async-hooks": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.25.1.tgz", + "integrity": "sha512-UW/ge9zjvAEmRWVapOP0qyCvPulWU6cQxGxDbWEFfGOj1VBBZAuOqTo3X6yWmDTD3Xe15ysCZChHncr2xFMIfQ==", + "requires": {} + }, + "@opentelemetry/core": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.1.tgz", + "integrity": "sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ==", + "requires": { + "@opentelemetry/semantic-conventions": "1.25.1" + } + }, + "@opentelemetry/exporter-trace-otlp-grpc": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.52.1.tgz", + "integrity": "sha512-pVkSH20crBwMTqB3nIN4jpQKUEoB0Z94drIHpYyEqs7UBr+I0cpYyOR3bqjA/UasQUMROb3GX8ZX4/9cVRqGBQ==", + "requires": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.25.1", + "@opentelemetry/otlp-grpc-exporter-base": "0.52.1", + "@opentelemetry/otlp-transformer": "0.52.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/sdk-trace-base": "1.25.1" + } + }, + "@opentelemetry/exporter-trace-otlp-http": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.52.1.tgz", + "integrity": "sha512-05HcNizx0BxcFKKnS5rwOV+2GevLTVIRA0tRgWYyw4yCgR53Ic/xk83toYKts7kbzcI+dswInUg/4s8oyA+tqg==", + "requires": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/otlp-exporter-base": "0.52.1", + "@opentelemetry/otlp-transformer": "0.52.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/sdk-trace-base": "1.25.1" + } + }, + "@opentelemetry/exporter-trace-otlp-proto": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.52.1.tgz", + "integrity": "sha512-pt6uX0noTQReHXNeEslQv7x311/F1gJzMnp1HD2qgypLRPbXDeMzzeTngRTUaUbP6hqWNtPxuLr4DEoZG+TcEQ==", + "requires": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/otlp-exporter-base": "0.52.1", + "@opentelemetry/otlp-transformer": "0.52.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/sdk-trace-base": "1.25.1" + } + }, + "@opentelemetry/exporter-zipkin": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.25.1.tgz", + "integrity": "sha512-RmOwSvkimg7ETwJbUOPTMhJm9A9bG1U8s7Zo3ajDh4zM7eYcycQ0dM7FbLD6NXWbI2yj7UY4q8BKinKYBQksyw==", + "requires": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/sdk-trace-base": "1.25.1", + "@opentelemetry/semantic-conventions": "1.25.1" + } + }, + "@opentelemetry/instrumentation": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz", + "integrity": "sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==", + "requires": { + "@opentelemetry/api-logs": "0.52.1", + "@types/shimmer": "^1.0.2", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.2", + "shimmer": "^1.2.1" + }, + "dependencies": { + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" + } + } + }, + "@opentelemetry/instrumentation-amqplib": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-amqplib/-/instrumentation-amqplib-0.41.0.tgz", + "integrity": "sha512-00Oi6N20BxJVcqETjgNzCmVKN+I5bJH/61IlHiIWd00snj1FdgiIKlpE4hYVacTB2sjIBB3nTbHskttdZEE2eg==", + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + } + }, + "@opentelemetry/instrumentation-aws-lambda": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-aws-lambda/-/instrumentation-aws-lambda-0.43.0.tgz", + "integrity": "sha512-pSxcWlsE/pCWQRIw92sV2C+LmKXelYkjkA7C5s39iPUi4pZ2lA1nIiw+1R/y2pDEhUHcaKkNyljQr3cx9ZpVlQ==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/propagator-aws-xray": "^1.3.1", + "@opentelemetry/resources": "^1.8.0", + "@opentelemetry/semantic-conventions": "^1.22.0", + "@types/aws-lambda": "8.10.122" + } + }, + "@opentelemetry/instrumentation-aws-sdk": { + "version": "0.43.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-aws-sdk/-/instrumentation-aws-sdk-0.43.1.tgz", + "integrity": "sha512-qLT2cCniJ5W+6PFzKbksnoIQuq9pS83nmgaExfUwXVvlwi0ILc50dea0tWBHZMkdIDa/zZdcuFrJ7+fUcSnRow==", + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/propagation-utils": "^0.30.10", + "@opentelemetry/semantic-conventions": "^1.22.0" + } + }, + "@opentelemetry/instrumentation-bunyan": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-bunyan/-/instrumentation-bunyan-0.40.0.tgz", + "integrity": "sha512-aZ4cXaGWwj79ZXSYrgFVsrDlE4mmf2wfvP9bViwRc0j75A6eN6GaHYHqufFGMTCqASQn5pIjjP+Bx+PWTGiofw==", + "requires": { + "@opentelemetry/api-logs": "^0.52.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@types/bunyan": "1.8.9" + } + }, + "@opentelemetry/instrumentation-cassandra-driver": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-cassandra-driver/-/instrumentation-cassandra-driver-0.40.0.tgz", + "integrity": "sha512-JxbM39JU7HxE9MTKKwi6y5Z3mokjZB2BjwfqYi4B3Y29YO3I42Z7eopG6qq06yWZc+nQli386UDQe0d9xKmw0A==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + } + }, + "@opentelemetry/instrumentation-connect": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-connect/-/instrumentation-connect-0.38.0.tgz", + "integrity": "sha512-2/nRnx3pjYEmdPIaBwtgtSviTKHWnDZN3R+TkRUnhIVrvBKVcq+I5B2rtd6mr6Fe9cHlZ9Ojcuh7pkNh/xdWWg==", + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0", + "@types/connect": "3.4.36" + }, + "dependencies": { + "@types/connect": { + "version": "3.4.36", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz", + "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==", + "requires": { + "@types/node": "*" + } + } + } + }, + "@opentelemetry/instrumentation-cucumber": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-cucumber/-/instrumentation-cucumber-0.8.0.tgz", + "integrity": "sha512-ieTm4RBIlZt2brPwtX5aEZYtYnkyqhAVXJI9RIohiBVMe5DxiwCwt+2Exep/nDVqGPX8zRBZUl4AEw423OxJig==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + } + }, + "@opentelemetry/instrumentation-dataloader": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.11.0.tgz", + "integrity": "sha512-27urJmwkH4KDaMJtEv1uy2S7Apk4XbN4AgWMdfMJbi7DnOduJmeuA+DpJCwXB72tEWXo89z5T3hUVJIDiSNmNw==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0" + } + }, + "@opentelemetry/instrumentation-dns": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dns/-/instrumentation-dns-0.38.0.tgz", + "integrity": "sha512-Um07I0TQXDWa+ZbEAKDFUxFH40dLtejtExDOMLNJ1CL8VmOmA71qx93Qi/QG4tGkiI1XWqr7gF/oiMCJ4m8buQ==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "semver": "^7.5.4" + }, + "dependencies": { + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" + } + } + }, + "@opentelemetry/instrumentation-express": { + "version": "0.41.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-express/-/instrumentation-express-0.41.1.tgz", + "integrity": "sha512-uRx0V3LPGzjn2bxAnV8eUsDT82vT7NTwI0ezEuPMBOTOsnPpGhWdhcdNdhH80sM4TrWrOfXm9HGEdfWE3TRIww==", + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + } + }, + "@opentelemetry/instrumentation-fastify": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fastify/-/instrumentation-fastify-0.38.0.tgz", + "integrity": "sha512-HBVLpTSYpkQZ87/Df3N0gAw7VzYZV3n28THIBrJWfuqw3Or7UqdhnjeuMIPQ04BKk3aZc0cWn2naSQObbh5vXw==", + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + } + }, + "@opentelemetry/instrumentation-fs": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-fs/-/instrumentation-fs-0.14.0.tgz", + "integrity": "sha512-pVc8P5AgliC1DphyyBUgsxXlm2XaPH4BpYvt7rAZDMIqUpRk8gs19SioABtKqqxvFzg5jPtgJfJsdxq0Y+maLw==", + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0" + } + }, + "@opentelemetry/instrumentation-generic-pool": { + "version": "0.38.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-generic-pool/-/instrumentation-generic-pool-0.38.1.tgz", + "integrity": "sha512-WvssuKCuavu/hlq661u82UWkc248cyI/sT+c2dEIj6yCk0BUkErY1D+9XOO+PmHdJNE+76i2NdcvQX5rJrOe/w==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0" + } + }, + "@opentelemetry/instrumentation-graphql": { + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-graphql/-/instrumentation-graphql-0.42.0.tgz", + "integrity": "sha512-N8SOwoKL9KQSX7z3gOaw5UaTeVQcfDO1c21csVHnmnmGUoqsXbArK2B8VuwPWcv6/BC/i3io+xTo7QGRZ/z28Q==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0" + } + }, + "@opentelemetry/instrumentation-grpc": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.52.1.tgz", + "integrity": "sha512-EdSDiDSAO+XRXk/ZN128qQpBo1I51+Uay/LUPcPQhSRGf7fBPIEUBeOLQiItguGsug5MGOYjql2w/1wCQF3fdQ==", + "requires": { + "@opentelemetry/instrumentation": "0.52.1", + "@opentelemetry/semantic-conventions": "1.25.1" + } + }, + "@opentelemetry/instrumentation-hapi": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-hapi/-/instrumentation-hapi-0.40.0.tgz", + "integrity": "sha512-8U/w7Ifumtd2bSN1OLaSwAAFhb9FyqWUki3lMMB0ds+1+HdSxYBe9aspEJEgvxAqOkrQnVniAPTEGf1pGM7SOw==", + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + } + }, + "@opentelemetry/instrumentation-http": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-http/-/instrumentation-http-0.52.1.tgz", + "integrity": "sha512-dG/aevWhaP+7OLv4BQQSEKMJv8GyeOp3Wxl31NHqE8xo9/fYMfEljiZphUHIfyg4gnZ9swMyWjfOQs5GUQe54Q==", + "requires": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/instrumentation": "0.52.1", + "@opentelemetry/semantic-conventions": "1.25.1", + "semver": "^7.5.2" + }, + "dependencies": { + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" + } + } + }, + "@opentelemetry/instrumentation-ioredis": { + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-ioredis/-/instrumentation-ioredis-0.42.0.tgz", + "integrity": "sha512-P11H168EKvBB9TUSasNDOGJCSkpT44XgoM6d3gRIWAa9ghLpYhl0uRkS8//MqPzcJVHr3h3RmfXIpiYLjyIZTw==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/redis-common": "^0.36.2", + "@opentelemetry/semantic-conventions": "^1.23.0" + } + }, + "@opentelemetry/instrumentation-kafkajs": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.2.0.tgz", + "integrity": "sha512-uKKmhEFd0zR280tJovuiBG7cfnNZT4kvVTvqtHPxQP7nOmRbJstCYHFH13YzjVcKjkmoArmxiSulmZmF7SLIlg==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.24.0" + } + }, + "@opentelemetry/instrumentation-knex": { + "version": "0.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-knex/-/instrumentation-knex-0.39.0.tgz", + "integrity": "sha512-lRwTqIKQecPWDkH1KEcAUcFhCaNssbKSpxf4sxRTAROCwrCEnYkjOuqJHV+q1/CApjMTaKu0Er4LBv/6bDpoxA==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + } + }, + "@opentelemetry/instrumentation-koa": { + "version": "0.42.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-koa/-/instrumentation-koa-0.42.0.tgz", + "integrity": "sha512-H1BEmnMhho8o8HuNRq5zEI4+SIHDIglNB7BPKohZyWG4fWNuR7yM4GTlR01Syq21vODAS7z5omblScJD/eZdKw==", + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + } + }, + "@opentelemetry/instrumentation-lru-memoizer": { + "version": "0.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-lru-memoizer/-/instrumentation-lru-memoizer-0.39.0.tgz", + "integrity": "sha512-eU1Wx1RRTR/2wYXFzH9gcpB8EPmhYlNDIUHzUXjyUE0CAXEJhBLkYNlzdaVCoQDw2neDqS+Woshiia6+emWK9A==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0" + } + }, + "@opentelemetry/instrumentation-memcached": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-memcached/-/instrumentation-memcached-0.38.0.tgz", + "integrity": "sha512-tPmyqQEZNyrvg6G+iItdlguQEcGzfE+bJkpQifmBXmWBnoS5oU3UxqtyYuXGL2zI9qQM5yMBHH4nRXWALzy7WA==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.23.0", + "@types/memcached": "^2.2.6" + } + }, + "@opentelemetry/instrumentation-mongodb": { + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.46.0.tgz", + "integrity": "sha512-VF/MicZ5UOBiXrqBslzwxhN7TVqzu1/LN/QDpkskqM0Zm0aZ4CVRbUygL8d7lrjLn15x5kGIe8VsSphMfPJzlA==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/sdk-metrics": "^1.9.1", + "@opentelemetry/semantic-conventions": "^1.22.0" + } + }, + "@opentelemetry/instrumentation-mongoose": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mongoose/-/instrumentation-mongoose-0.41.0.tgz", + "integrity": "sha512-ivJg4QnnabFxxoI7K8D+in7hfikjte38sYzJB9v1641xJk9Esa7jM3hmbPB7lxwcgWJLVEDvfPwobt1if0tXxA==", + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + } + }, + "@opentelemetry/instrumentation-mysql": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql/-/instrumentation-mysql-0.40.0.tgz", + "integrity": "sha512-d7ja8yizsOCNMYIJt5PH/fKZXjb/mS48zLROO4BzZTtDfhNCl2UM/9VIomP2qkGIFVouSJrGr/T00EzY7bPtKA==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0", + "@types/mysql": "2.15.22" + } + }, + "@opentelemetry/instrumentation-mysql2": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.40.0.tgz", + "integrity": "sha512-0xfS1xcqUmY7WE1uWjlmI67Xg3QsSUlNT+AcXHeA4BDUPwZtWqF4ezIwLgpVZfHOnkAEheqGfNSWd1PIu3Wnfg==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0", + "@opentelemetry/sql-common": "^0.40.1" + } + }, + "@opentelemetry/instrumentation-nestjs-core": { + "version": "0.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-nestjs-core/-/instrumentation-nestjs-core-0.39.0.tgz", + "integrity": "sha512-mewVhEXdikyvIZoMIUry8eb8l3HUjuQjSjVbmLVTt4NQi35tkpnHQrG9bTRBrl3403LoWZ2njMPJyg4l6HfKvA==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.23.0" + } + }, + "@opentelemetry/instrumentation-net": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-net/-/instrumentation-net-0.38.0.tgz", + "integrity": "sha512-stjow1PijcmUquSmRD/fSihm/H61DbjPlJuJhWUe7P22LFPjFhsrSeiB5vGj3vn+QGceNAs+kioUTzMGPbNxtg==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.23.0" + } + }, + "@opentelemetry/instrumentation-pg": { + "version": "0.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pg/-/instrumentation-pg-0.43.0.tgz", + "integrity": "sha512-og23KLyoxdnAeFs1UWqzSonuCkePUzCX30keSYigIzJe/6WSYA8rnEI5lobcxPEzg+GcU06J7jzokuEHbjVJNw==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0", + "@opentelemetry/sql-common": "^0.40.1", + "@types/pg": "8.6.1", + "@types/pg-pool": "2.0.4" + } + }, + "@opentelemetry/instrumentation-pino": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-pino/-/instrumentation-pino-0.41.0.tgz", + "integrity": "sha512-Kpv0fJRk/8iMzMk5Ue5BsUJfHkBJ2wQoIi/qduU1a1Wjx9GLj6J2G17PHjPK5mnZjPNzkFOXFADZMfgDioliQw==", + "requires": { + "@opentelemetry/api-logs": "^0.52.0", + "@opentelemetry/core": "^1.25.0", + "@opentelemetry/instrumentation": "^0.52.0" + } + }, + "@opentelemetry/instrumentation-redis": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis/-/instrumentation-redis-0.41.0.tgz", + "integrity": "sha512-RJ1pwI3btykp67ts+5qZbaFSAAzacucwBet5/5EsKYtWBpHbWwV/qbGN/kIBzXg5WEZBhXLrR/RUq0EpEUpL3A==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/redis-common": "^0.36.2", + "@opentelemetry/semantic-conventions": "^1.22.0" + } + }, + "@opentelemetry/instrumentation-redis-4": { + "version": "0.41.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.41.1.tgz", + "integrity": "sha512-UqJAbxraBk7s7pQTlFi5ND4sAUs4r/Ai7gsAVZTQDbHl2kSsOp7gpHcpIuN5dpcI2xnuhM2tkH4SmEhbrv2S6Q==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/redis-common": "^0.36.2", + "@opentelemetry/semantic-conventions": "^1.22.0" + } + }, + "@opentelemetry/instrumentation-restify": { + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-restify/-/instrumentation-restify-0.40.0.tgz", + "integrity": "sha512-sm/rH/GysY/KOEvZqYBZSLYFeXlBkHCgqPDgWc07tz+bHCN6mPs9P3otGOSTe7o3KAIM8Nc6ncCO59vL+jb2cA==", + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + } + }, + "@opentelemetry/instrumentation-router": { + "version": "0.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-router/-/instrumentation-router-0.39.0.tgz", + "integrity": "sha512-LaXnVmD69WPC4hNeLzKexCCS19hRLrUw3xicneAMkzJSzNJvPyk7G6I7lz7VjQh1cooObPBt9gNyd3hhTCUrag==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + } + }, + "@opentelemetry/instrumentation-socket.io": { + "version": "0.41.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-socket.io/-/instrumentation-socket.io-0.41.0.tgz", + "integrity": "sha512-7fzDe9/FpO6NFizC/wnzXXX7bF9oRchsD//wFqy5g5hVEgXZCQ70IhxjrKdBvgjyIejR9T9zTvfQ6PfVKfkCAw==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0" + } + }, + "@opentelemetry/instrumentation-tedious": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-tedious/-/instrumentation-tedious-0.13.0.tgz", + "integrity": "sha512-Pob0+0R62AqXH50pjazTeGBy/1+SK4CYpFUBV5t7xpbpeuQezkkgVGvLca84QqjBqQizcXedjpUJLgHQDixPQg==", + "requires": { + "@opentelemetry/instrumentation": "^0.52.0", + "@opentelemetry/semantic-conventions": "^1.22.0", + "@types/tedious": "^4.0.14" + } + }, + "@opentelemetry/instrumentation-undici": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-undici/-/instrumentation-undici-0.5.0.tgz", + "integrity": "sha512-aNTeSrFAVcM9qco5DfZ9DNXu6hpMRe8Kt8nCDHfMWDB3pwgGVUE76jTdohc+H/7eLRqh4L7jqs5NSQoHw7S6ww==", + "requires": { + "@opentelemetry/core": "^1.8.0", + "@opentelemetry/instrumentation": "^0.52.0" + } + }, + "@opentelemetry/instrumentation-winston": { + "version": "0.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-winston/-/instrumentation-winston-0.39.0.tgz", + "integrity": "sha512-v/1xziLJ9CyB3YDjBSBzbB70Qd0JwWTo36EqWK5m3AR0CzsyMQQmf3ZIZM6sgx7hXMcRQ0pnEYhg6nhrUQPm9A==", + "requires": { + "@opentelemetry/api-logs": "^0.52.0", + "@opentelemetry/instrumentation": "^0.52.0" + } + }, + "@opentelemetry/otlp-exporter-base": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.52.1.tgz", + "integrity": "sha512-z175NXOtX5ihdlshtYBe5RpGeBoTXVCKPPLiQlD6FHvpM4Ch+p2B0yWKYSrBfLH24H9zjJiBdTrtD+hLlfnXEQ==", + "requires": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/otlp-transformer": "0.52.1" + } + }, + "@opentelemetry/otlp-grpc-exporter-base": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.52.1.tgz", + "integrity": "sha512-zo/YrSDmKMjG+vPeA9aBBrsQM9Q/f2zo6N04WMB3yNldJRsgpRBeLLwvAt/Ba7dpehDLOEFBd1i2JCoaFtpCoQ==", + "requires": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "1.25.1", + "@opentelemetry/otlp-exporter-base": "0.52.1", + "@opentelemetry/otlp-transformer": "0.52.1" + } + }, + "@opentelemetry/otlp-transformer": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.52.1.tgz", + "integrity": "sha512-I88uCZSZZtVa0XniRqQWKbjAUm73I8tpEy/uJYPPYw5d7BRdVk0RfTBQw8kSUl01oVWEuqxLDa802222MYyWHg==", + "requires": { + "@opentelemetry/api-logs": "0.52.1", + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/sdk-logs": "0.52.1", + "@opentelemetry/sdk-metrics": "1.25.1", + "@opentelemetry/sdk-trace-base": "1.25.1", + "protobufjs": "^7.3.0" + } + }, + "@opentelemetry/propagation-utils": { + "version": "0.30.13", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagation-utils/-/propagation-utils-0.30.13.tgz", + "integrity": "sha512-gE61ANH84XLOU2HwXeWw1b83exxdEaTY98HxTecmuJ1nSrBNaoM/tWt4u4+2MoCZUhdmP088+wbT5oUq1pF79Q==", + "requires": {} + }, + "@opentelemetry/propagator-aws-xray": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-aws-xray/-/propagator-aws-xray-1.26.0.tgz", + "integrity": "sha512-Sex+JyEZ/xX328TArBqQjh1NZSfNyw5NdASUIi9hnPsnMBMSBaDe7B9JRnXv0swz7niNyAnXa6MY7yOCV76EvA==", + "requires": { + "@opentelemetry/core": "1.26.0" + }, + "dependencies": { + "@opentelemetry/core": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.26.0.tgz", + "integrity": "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==", + "requires": { + "@opentelemetry/semantic-conventions": "1.27.0" + } + }, + "@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==" + } + } + }, + "@opentelemetry/propagator-b3": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-1.25.1.tgz", + "integrity": "sha512-p6HFscpjrv7//kE+7L+3Vn00VEDUJB0n6ZrjkTYHrJ58QZ8B3ajSJhRbCcY6guQ3PDjTbxWklyvIN2ojVbIb1A==", + "requires": { + "@opentelemetry/core": "1.25.1" + } + }, + "@opentelemetry/propagator-jaeger": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.25.1.tgz", + "integrity": "sha512-nBprRf0+jlgxks78G/xq72PipVK+4or9Ypntw0gVZYNTCSK8rg5SeaGV19tV920CMqBD/9UIOiFr23Li/Q8tiA==", + "requires": { + "@opentelemetry/core": "1.25.1" + } + }, + "@opentelemetry/redis-common": { + "version": "0.36.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz", + "integrity": "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==" + }, + "@opentelemetry/resource-detector-alibaba-cloud": { + "version": "0.29.5", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-alibaba-cloud/-/resource-detector-alibaba-cloud-0.29.5.tgz", + "integrity": "sha512-bCtNnKlx3vcxo/rTdpgat6RiP9hcqahdLN79IRQgSGpD/2iw7cmdaZo4bWQYQsf3jMU8p+08mQkbvDeSqt1TmA==", + "requires": { + "@opentelemetry/core": "^1.26.0", + "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "dependencies": { + "@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "requires": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "dependencies": { + "@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==" + } + } + }, + "@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" + } + } + }, + "@opentelemetry/resource-detector-aws": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-aws/-/resource-detector-aws-1.8.0.tgz", + "integrity": "sha512-f+tiNoebEvdinXs0pN0XJCNceeXT8I6l2yyKI6C5oRAirhCEcIWcJMxwY4kJyNKmoupcGCXVz7cQaZOhB3keiw==", + "requires": { + "@opentelemetry/core": "^1.0.0", + "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "dependencies": { + "@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" + } + } + }, + "@opentelemetry/resource-detector-azure": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-azure/-/resource-detector-azure-0.2.12.tgz", + "integrity": "sha512-iIarQu6MiCjEEp8dOzmBvCSlRITPFTinFB2oNKAjU6xhx8d7eUcjNOKhBGQTvuCriZrxrEvDaEEY9NfrPQ6uYQ==", + "requires": { + "@opentelemetry/core": "^1.25.1", + "@opentelemetry/resources": "^1.10.1", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "dependencies": { + "@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" + } + } + }, + "@opentelemetry/resource-detector-container": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-container/-/resource-detector-container-0.4.4.tgz", + "integrity": "sha512-ZEN2mq7lIjQWJ8NTt1umtr6oT/Kb89856BOmESLSvgSHbIwOFYs7cSfSRH5bfiVw6dXTQAVbZA/wLgCHKrebJA==", + "requires": { + "@opentelemetry/core": "^1.26.0", + "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/semantic-conventions": "^1.27.0" + }, + "dependencies": { + "@opentelemetry/core": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", + "requires": { + "@opentelemetry/semantic-conventions": "1.27.0" + }, + "dependencies": { + "@opentelemetry/semantic-conventions": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz", + "integrity": "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==" + } + } + }, + "@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" + } + } + }, + "@opentelemetry/resource-detector-gcp": { + "version": "0.29.13", + "resolved": "https://registry.npmjs.org/@opentelemetry/resource-detector-gcp/-/resource-detector-gcp-0.29.13.tgz", + "integrity": "sha512-vdotx+l3Q+89PeyXMgKEGnZ/CwzwMtuMi/ddgD9/5tKZ08DfDGB2Npz9m2oXPHRCjc4Ro6ifMqFlRyzIvgOjhg==", + "requires": { + "@opentelemetry/core": "^1.0.0", + "@opentelemetry/resources": "^1.10.0", + "@opentelemetry/semantic-conventions": "^1.27.0", + "gcp-metadata": "^6.0.0" + }, + "dependencies": { + "@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==" + }, + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, + "debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "requires": { + "ms": "^2.1.3" + } + }, + "gaxios": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + } + }, + "gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "requires": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "@opentelemetry/resources": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.25.1.tgz", + "integrity": "sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ==", + "requires": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/semantic-conventions": "1.25.1" + } + }, + "@opentelemetry/sdk-logs": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.52.1.tgz", + "integrity": "sha512-MBYh+WcPPsN8YpRHRmK1Hsca9pVlyyKd4BxOC4SsgHACnl/bPp4Cri9hWhVm5+2tiQ9Zf4qSc1Jshw9tOLGWQA==", + "requires": { + "@opentelemetry/api-logs": "0.52.1", + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1" + } + }, + "@opentelemetry/sdk-metrics": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.1.tgz", + "integrity": "sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q==", + "requires": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1", + "lodash.merge": "^4.6.2" + } + }, + "@opentelemetry/sdk-node": { + "version": "0.52.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.52.1.tgz", + "integrity": "sha512-uEG+gtEr6eKd8CVWeKMhH2olcCHM9dEK68pe0qE0be32BcCRsvYURhHaD1Srngh1SQcnQzZ4TP324euxqtBOJA==", + "requires": { + "@opentelemetry/api-logs": "0.52.1", + "@opentelemetry/core": "1.25.1", + "@opentelemetry/exporter-trace-otlp-grpc": "0.52.1", + "@opentelemetry/exporter-trace-otlp-http": "0.52.1", + "@opentelemetry/exporter-trace-otlp-proto": "0.52.1", + "@opentelemetry/exporter-zipkin": "1.25.1", + "@opentelemetry/instrumentation": "0.52.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/sdk-logs": "0.52.1", + "@opentelemetry/sdk-metrics": "1.25.1", + "@opentelemetry/sdk-trace-base": "1.25.1", + "@opentelemetry/sdk-trace-node": "1.25.1", + "@opentelemetry/semantic-conventions": "1.25.1" + } + }, + "@opentelemetry/sdk-trace-base": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.25.1.tgz", + "integrity": "sha512-C8k4hnEbc5FamuZQ92nTOp8X/diCY56XUTnMiv9UTuJitCzaNNHAVsdm5+HLCdI8SLQsLWIrG38tddMxLVoftw==", + "requires": { + "@opentelemetry/core": "1.25.1", + "@opentelemetry/resources": "1.25.1", + "@opentelemetry/semantic-conventions": "1.25.1" + } + }, + "@opentelemetry/sdk-trace-node": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.25.1.tgz", + "integrity": "sha512-nMcjFIKxnFqoez4gUmihdBrbpsEnAX/Xj16sGvZm+guceYE0NE00vLhpDVK6f3q8Q4VFI5xG8JjlXKMB/SkTTQ==", + "requires": { + "@opentelemetry/context-async-hooks": "1.25.1", + "@opentelemetry/core": "1.25.1", + "@opentelemetry/propagator-b3": "1.25.1", + "@opentelemetry/propagator-jaeger": "1.25.1", + "@opentelemetry/sdk-trace-base": "1.25.1", + "semver": "^7.5.2" + }, + "dependencies": { + "semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" + } + } + }, + "@opentelemetry/semantic-conventions": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz", + "integrity": "sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ==" + }, + "@opentelemetry/sql-common": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sql-common/-/sql-common-0.40.1.tgz", + "integrity": "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==", + "requires": { + "@opentelemetry/core": "^1.1.0" + } + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "@react-pdf/fns": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@react-pdf/fns/-/fns-2.2.1.tgz", + "integrity": "sha512-s78aDg0vDYaijU5lLOCsUD+qinQbfOvcNeaoX9AiE7+kZzzCo6B/nX+l48cmt9OosJmvZvE9DWR9cLhrhOi2pA==", + "requires": { + "@babel/runtime": "^7.20.13" + } + }, + "@react-pdf/font": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@react-pdf/font/-/font-2.5.2.tgz", + "integrity": "sha512-Ud0EfZ2FwrbvwAWx8nz+KKLmiqACCH9a/N/xNDOja0e/YgSnqTpuyHegFBgIMKjuBtO5dNvkb4dXkxAhGe/ayw==", + "requires": { + "@babel/runtime": "^7.20.13", + "@react-pdf/types": "^2.6.0", + "cross-fetch": "^3.1.5", + "fontkit": "^2.0.2", + "is-url": "^1.2.4" + } + }, + "@react-pdf/fontkit": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@react-pdf/fontkit/-/fontkit-2.1.2.tgz", + "integrity": "sha512-BsFNhNoWLddj/DcznIjoz4+4KB3kmRRWP38KNXHp/DuHSI4B6Dw6A3fLps+10bOPltP350iszI0b1ljeMum/Bw==", + "requires": { + "@babel/runtime": "^7.16.4", + "brotli": "^1.2.0", + "clone": "^1.0.4", + "deep-equal": "^1.0.0", + "dfa": "^1.2.0", + "restructure": "^0.5.3", + "tiny-inflate": "^1.0.2", + "unicode-properties": "^1.4.1", + "unicode-trie": "^0.3.0" + } + }, + "@react-pdf/image": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@react-pdf/image/-/image-2.3.6.tgz", + "integrity": "sha512-7iZDYZrZlJqNzS6huNl2XdMcLFUo68e6mOdzQeJ63d5eApdthhSHBnkGzHfLhH5t8DCpZNtClmklzuLL63ADfw==", + "requires": { + "@babel/runtime": "^7.20.13", + "@react-pdf/png-js": "^2.3.1", + "cross-fetch": "^3.1.5", + "jay-peg": "^1.0.2" + } + }, + "@react-pdf/layout": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@react-pdf/layout/-/layout-3.13.0.tgz", + "integrity": "sha512-lpPj/EJYHFOc0ALiJwLP09H28B4ADyvTjxOf67xTF+qkWd+dq1vg7dw3wnYESPnWk5T9NN+HlUenJqdYEY9AvA==", + "requires": { + "@babel/runtime": "^7.20.13", + "@react-pdf/fns": "2.2.1", + "@react-pdf/image": "^2.3.6", + "@react-pdf/pdfkit": "^3.2.0", + "@react-pdf/primitives": "^3.1.1", + "@react-pdf/stylesheet": "^4.3.0", + "@react-pdf/textkit": "^4.4.1", + "@react-pdf/types": "^2.6.0", + "cross-fetch": "^3.1.5", + "emoji-regex": "^10.3.0", + "queue": "^6.0.1", + "yoga-layout": "^2.0.1" + }, + "dependencies": { + "@react-pdf/pdfkit": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@react-pdf/pdfkit/-/pdfkit-3.2.0.tgz", + "integrity": "sha512-OBfCcnTC6RpD9uv9L2woF60Zj1uQxhLFzTBXTdcYE9URzPE/zqXIyzpXEA4Vf3TFbvBCgFE2RzJ2ZUS0asq7yA==", + "requires": { + "@babel/runtime": "^7.20.13", + "@react-pdf/png-js": "^2.3.1", + "browserify-zlib": "^0.2.0", + "crypto-js": "^4.2.0", + "fontkit": "^2.0.2", + "jay-peg": "^1.0.2", + "vite-compatible-readable-stream": "^3.6.1" + } + }, + "emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==" + } + } + }, + "@react-pdf/pdfkit": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@react-pdf/pdfkit/-/pdfkit-2.4.0.tgz", + "integrity": "sha512-a8ad/o1CIPpL1oppwSk2d1QCjSAJau0s4SqQNew0U7jlP5Knx4Yck5iK6zLfezvCmSCGq+U8eBTvzLN00jbffg==", + "requires": { + "@babel/runtime": "^7.16.4", + "@react-pdf/fontkit": "^2.1.2", + "@react-pdf/png-js": "^2.1.0", + "crypto-js": "^4.0.0" + } + }, + "@react-pdf/png-js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@react-pdf/png-js/-/png-js-2.3.1.tgz", + "integrity": "sha512-pEZ18I4t1vAUS4lmhvXPmXYP4PHeblpWP/pAlMMRkEyP7tdAeHUN7taQl9sf9OPq7YITMY3lWpYpJU6t4CZgZg==", + "requires": { + "browserify-zlib": "^0.2.0" + } + }, + "@react-pdf/primitives": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@react-pdf/primitives/-/primitives-3.1.1.tgz", + "integrity": "sha512-miwjxLwTnO3IjoqkTVeTI+9CdyDggwekmSLhVCw+a/7FoQc+gF3J2dSKwsHvAcVFM0gvU8mzCeTofgw0zPDq0w==" + }, + "@react-pdf/render": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@react-pdf/render/-/render-3.5.0.tgz", + "integrity": "sha512-gFOpnyqCgJ6l7VzfJz6rG1i2S7iVSD8bUHDjPW9Mze8TmyksHzN2zBH3y7NbsQOw1wU6hN4NhRmslrsn+BRDPA==", + "requires": { + "@babel/runtime": "^7.20.13", + "@react-pdf/fns": "2.2.1", + "@react-pdf/primitives": "^3.1.1", + "@react-pdf/textkit": "^4.4.1", + "@react-pdf/types": "^2.6.0", + "abs-svg-path": "^0.1.1", + "color-string": "^1.9.1", + "normalize-svg-path": "^1.1.0", + "parse-svg-path": "^0.1.2", + "svg-arc-to-cubic-bezier": "^3.2.0" + } + }, + "@react-pdf/renderer": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@react-pdf/renderer/-/renderer-2.3.0.tgz", + "integrity": "sha512-JrKgQL6MwANRdsqo3eH8+SD2rNwhXBSy99NBsL4FrdndnuZrDe6/KQOTstaBpxKtn6CEZVrd3hkqgCh9/Oa9mQ==", + "requires": { + "@babel/runtime": "^7.16.4", + "@react-pdf/font": "^2.2.1", + "@react-pdf/layout": "^3.1.2", + "@react-pdf/pdfkit": "^2.4.0", + "@react-pdf/primitives": "^3.0.0", + "@react-pdf/render": "^3.2.0", + "@react-pdf/types": "^2.1.0", + "blob-stream": "^0.1.3", + "queue": "^6.0.1", + "react-reconciler": "^0.23.0", + "scheduler": "^0.17.0" + }, + "dependencies": { + "react-reconciler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.23.0.tgz", + "integrity": "sha512-vV0KlLimP9a/NuRcM6GRVakkmT6MKSzhfo8K72fjHMnlXMOhz9GlPe+/tCp5CWBkg+lsMUt/CR1nypJBTPfwuw==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.17.0" + } + } + } + }, + "@react-pdf/stylesheet": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@react-pdf/stylesheet/-/stylesheet-4.3.0.tgz", + "integrity": "sha512-x7IVZOqRrUum9quuDeFXBveXwBht+z/6B0M+z4a4XjfSg1vZVvzoTl07Oa1yvQ/4yIC5yIkG2TSMWeKnDB+hrw==", + "requires": { + "@babel/runtime": "^7.20.13", + "@react-pdf/fns": "2.2.1", + "@react-pdf/types": "^2.6.0", + "color-string": "^1.9.1", + "hsl-to-hex": "^1.0.0", + "media-engine": "^1.0.3", + "postcss-value-parser": "^4.1.0" + } + }, + "@react-pdf/textkit": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@react-pdf/textkit/-/textkit-4.4.1.tgz", + "integrity": "sha512-Jl9wdTqIvJ5pX+vAGz0EOhP7ut5Two9H6CzTKo/YYPeD79cM2yTXF3JzTERBC28y7LR0Waq9D2LHQjI+b/EYUQ==", + "requires": { + "@babel/runtime": "^7.20.13", + "@react-pdf/fns": "2.2.1", + "bidi-js": "^1.0.2", + "hyphen": "^1.6.4", + "unicode-properties": "^1.4.1" + } + }, + "@react-pdf/types": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@react-pdf/types/-/types-2.7.0.tgz", + "integrity": "sha512-7KrPPCpgRPKR+g+T127PE4bpw9Q84ZiY07EYRwXKVtTEVW9wJ5BZiF9smT9IvH19s+MQaDLmYRgjESsnqlyH0Q==" + }, + "@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "peer": true + }, + "@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "peer": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "peer": true, + "requires": { + "@sinonjs/commons": "^3.0.0" + } + }, + "@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "requires": { + "tslib": "^2.8.0" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" + }, + "@types/aws-lambda": { + "version": "8.10.122", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.122.tgz", + "integrity": "sha512-vBkIh9AY22kVOCEKo5CJlyCgmSWvasC+SWUxL/x/vOwRobMpI/HG1xp/Ae3AqmSiZeLUbOhW0FCD3ZjqqUxmXw==" + }, + "@types/babel__core": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.4.tgz", + "integrity": "sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg==", + "dev": true, + "peer": true, + "requires": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.7", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", + "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "peer": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", + "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "dev": true, + "peer": true, + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bunyan": { + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/@types/bunyan/-/bunyan-1.8.9.tgz", + "integrity": "sha512-ZqS9JGpBxVOvsawzmVt30sP++gSQMTejCkIAQ3VdadOcRE8izTyW66hufvwLeH+YEGP6Js2AW7Gz+RMyvrEbmw==", + "requires": { + "@types/node": "*" + } + }, + "@types/caseless": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" + }, + "@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "requires": { + "@types/node": "*" + } + }, + "@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "requires": { + "@types/node": "*" + } + }, + "@types/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.3.tgz", + "integrity": "sha512-I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.41", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", + "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "@types/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "optional": true, + "requires": { + "@types/minimatch": "^5.1.2", + "@types/node": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*" + } + }, + "@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "peer": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "peer": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jsonwebtoken": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz", + "integrity": "sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==", + "requires": { + "@types/node": "*" + } + }, + "@types/linkify-it": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", + "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==", + "optional": true + }, + "@types/lodash": { + "version": "4.14.201", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.201.tgz", + "integrity": "sha512-y9euML0cim1JrykNxADLfaG0FgD1g/yTHwUs/Jg9ZIU7WKj2/4IW9Lbb1WZbvck78W/lfGXFfe+u2EGfIJXdLQ==", + "dev": true + }, + "@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "@types/markdown-it": { + "version": "12.2.3", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", + "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", + "optional": true, + "requires": { + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "@types/mdurl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", + "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", + "optional": true + }, + "@types/memcached": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/@types/memcached/-/memcached-2.2.10.tgz", + "integrity": "sha512-AM9smvZN55Gzs2wRrqeMHVP7KE8KWgCJO/XL5yCly2xF6EKa4YlbpK+cLSAH4NG/Ah64HrlegmGqW8kYws7Vxg==", + "requires": { + "@types/node": "*" + } + }, + "@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + }, + "@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "optional": true + }, + "@types/mysql": { + "version": "2.15.22", + "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.22.tgz", + "integrity": "sha512-wK1pzsJVVAjYCSZWQoWHziQZbNggXFDUEIGf54g4ZM/ERuP86uGdWeKZWMYlqTPMZfHJJvLPyogXGvCOg87yLQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "20.14.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.14.tgz", + "integrity": "sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ==", + "requires": { + "undici-types": "~5.26.4" + } + }, + "@types/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "requires": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "@types/pg": { + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", + "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", + "requires": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^2.2.0" + } + }, + "@types/pg-pool": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/pg-pool/-/pg-pool-2.0.4.tgz", + "integrity": "sha512-qZAvkv1K3QbmHHFYSNRYPkRjOWRLBYrL4B9c+wG0GSVGBw0NtJwPcgx/DSddeDJvRGMHCEQ4VMEVfuJ/0gZ3XQ==", + "requires": { + "@types/pg": "*" + } + }, + "@types/qs": { + "version": "6.9.10", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", + "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==" + }, + "@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + }, + "@types/request": { + "version": "2.48.12", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", + "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", + "requires": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + }, + "dependencies": { + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } + } + }, + "@types/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==", + "optional": true, + "requires": { + "@types/glob": "*", + "@types/node": "*" + } + }, + "@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/serve-static": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "requires": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "@types/shimmer": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz", + "integrity": "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==" + }, + "@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "peer": true + }, + "@types/tedious": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/@types/tedious/-/tedious-4.0.14.tgz", + "integrity": "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==", + "requires": { + "@types/node": "*" + } + }, + "@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" + }, + "@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" + }, + "@types/yargs": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.31.tgz", + "integrity": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==", + "dev": true, + "peer": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "peer": true + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "abs-svg-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz", + "integrity": "sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==" + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==" + }, + "acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "requires": {} + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "optional": true, + "requires": {} + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + } + }, + "ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "peer": true, + "requires": { + "ajv": "^8.0.0" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "optional": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "peer": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "peer": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "peer": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==" + }, + "ast-transform": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/ast-transform/-/ast-transform-0.0.0.tgz", + "integrity": "sha512-e/JfLiSoakfmL4wmTGPjv0HpTICVmxwXgYOB8x+mzozHL8v+dSfCbrJ8J8hJ0YBP0XcYu1aLZ6b/3TnxNK3P2A==", + "requires": { + "escodegen": "~1.2.0", + "esprima": "~1.0.4", + "through": "~2.3.4" + }, + "dependencies": { + "escodegen": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.2.0.tgz", + "integrity": "sha512-yLy3Cc+zAC0WSmoT2fig3J87TpQ8UaZGx8ahCAs9FL8qNbyV7CVyPKS74DG4bsHiL5ew9sxdYx131OkBQMFnvA==", + "requires": { + "esprima": "~1.0.4", + "estraverse": "~1.5.0", + "esutils": "~1.0.0", + "source-map": "~0.1.30" + } + }, + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha512-rp5dMKN8zEs9dfi9g0X1ClLmV//WRyk/R15mppFNICIFRG5P92VP7Z04p8pk++gABo9W2tY+kHyu6P1mEHgmTA==" + }, + "estraverse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", + "integrity": "sha512-FpCjJDfmo3vsc/1zKSeqR5k42tcIhxFIlvq+h9j0fO2q/h2uLKyweq7rYJ+0CoVvrGQOxIS5wyBrW/+vF58BUQ==" + }, + "esutils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", + "integrity": "sha512-x/iYH53X3quDwfHRz4y8rn4XcEwwCJeWsul9pF1zldMbGtgOtMNBEOuYWwB1EQlK2LRa1fev3YAgym/RElp5Cg==" + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==", + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "ast-types": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.7.8.tgz", + "integrity": "sha512-RIOpVnVlltB6PcBJ5BMLx+H+6JJ/zjDGU0t7f0L6c2M1dqcK92VQopLBlPQ9R80AVXelfqYgjcPLtHtDbNFg0Q==" + }, + "async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + }, + "async-mutex": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", + "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", + "peer": true, + "requires": { + "tslib": "^2.4.0" + } + }, + "async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "optional": true, + "requires": { + "retry": "0.13.1" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "axios": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "peer": true, + "requires": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "peer": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "dependencies": { + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + } + } + }, + "babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "peer": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", + "requires": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.3", + "semver": "^6.3.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.6.3" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "peer": true, + "requires": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "devOptional": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "requires": { + "require-from-string": "^2.0.2" + } + }, + "big.js": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz", + "integrity": "sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==", + "optional": true + }, + "bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==" + }, + "blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha512-YRc9zvVz4wNaxcXmiSgb9LAg7YYwqQ2xd0Sj6osfA7k/PKmIGVlnOYs3wOFdkRC9/JpQu8sGt/zHgJV7xzerfg==" + }, + "blob-stream": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/blob-stream/-/blob-stream-0.1.3.tgz", + "integrity": "sha512-xXwyhgVmPsFVFFvtM5P0syI17/oae+MIjLn5jGhuD86mmSJ61EWMWmbPrV/0+bdcH9jQ2CzIhmTQKNUJL7IPog==", + "requires": { + "blob": "0.0.4" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "optional": true + }, + "body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "devOptional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "peer": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "requires": { + "base64-js": "^1.1.2" + } + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==" + } + } + }, + "browserify-optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-optional/-/browserify-optional-1.0.1.tgz", + "integrity": "sha512-VrhjbZ+Ba5mDiSYEuPelekQMfTbhcA2DhLk2VQWqdcCROWeFqlTcXZ7yfRkXCIl8E+g4gINJYJiRB7WEtfomAQ==", + "requires": { + "ast-transform": "0.0.0", + "ast-types": "^0.7.0", + "browser-resolve": "^1.8.1" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "requires": { + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "peer": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "peer": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "peer": true + }, + "caniuse-lite": { + "version": "1.0.30001684", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz", + "integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==" + }, + "catharsis": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", + "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", + "optional": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "devOptional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "peer": true + }, + "ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "peer": true + }, + "cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "peer": true + }, + "collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true, + "peer": true + }, + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + }, + "dependencies": { + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "peer": true + }, + "colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "requires": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "optional": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "devOptional": true + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "peer": true + }, + "cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "core-js-compat": { + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.39.0.tgz", + "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==", + "requires": { + "browserslist": "^4.24.2" + } + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + } + }, + "cross-fetch": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "requires": { + "node-fetch": "^2.6.12" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "peer": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "peer": true, + "requires": {} + }, + "deep-equal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", + "requires": { + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.5.1" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "optional": true + }, + "deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "peer": true + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "peer": true + }, + "dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==" + }, + "diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "peer": true + }, + "dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==" + }, + "duplexify": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "requires": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "electron-to-chromium": { + "version": "1.5.67", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.67.tgz", + "integrity": "sha512-nz88NNBsD7kQSAGGJyp8hS6xSPtWwqNogA0mjtc2nUYeEf3nURK9qpV18TuBdDmEDgVWotS8Wkzf+V52dSQ/LQ==" + }, + "emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "peer": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, + "encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "optional": true + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "optional": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "peer": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "devOptional": true + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "optional": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "optional": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "optional": true + }, + "espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "optional": true, + "requires": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "optional": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, + "eventid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/eventid/-/eventid-2.0.1.tgz", + "integrity": "sha512-sPNTqiMokAvV048P2c9+foqVJzk49o6d4e0D/sq5jog3pw+4kBgyR0gaM1FM7Mx6Kzd9dztesh9oYz1LWWOpzw==", + "requires": { + "uuid": "^8.0.0" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "peer": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "peer": true + }, + "expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "peer": true, + "requires": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "express": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.10", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "farmhash-modern": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/farmhash-modern/-/farmhash-modern-1.1.0.tgz", + "integrity": "sha512-6ypT4XfgqJk/F3Yuv4SX26I3doUjt0GTG4a+JgWxXQpxXzTBq8fPUeGHfcYMMDPHJHm3yPOSjaeBwBGAHWXCdA==", + "optional": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "peer": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "optional": true + }, + "fast-text-encoding": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", + "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==", + "optional": true + }, + "fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "peer": true + }, + "fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "optional": true, + "requires": { + "strnum": "^1.0.5" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "peer": true, + "requires": { + "bser": "2.1.1" + } + }, + "fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, + "fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "peer": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + } + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "peer": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "firebase-admin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-11.11.0.tgz", + "integrity": "sha512-lp784gXFAJgUEtjSdYNZGTWZqltqjBkoaPSQhDKnmWXJP/MCbWdiDY1hsdkl/6O4O4KFovTjUDLu26sojwdQvw==", + "requires": { + "@fastify/busboy": "^1.2.1", + "@firebase/database-compat": "^0.3.4", + "@firebase/database-types": "^0.10.4", + "@google-cloud/firestore": "^6.6.0", + "@google-cloud/storage": "^6.9.5", + "@types/node": ">=12.12.47", + "jsonwebtoken": "^9.0.0", + "jwks-rsa": "^3.0.1", + "node-forge": "^1.3.1", + "uuid": "^9.0.0" + } + }, + "firebase-functions": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-4.5.0.tgz", + "integrity": "sha512-y6HsasHtGLfXCp3Pfrz+JA19lO9hSzYiNxFDIDMffrfcsG7UbXzv0zfi2ASadMVRoDCaox5ppZBa1QJxZbctPQ==", + "requires": { + "@types/cors": "^2.8.5", + "@types/express": "4.17.3", + "cors": "^2.8.5", + "express": "^4.17.1", + "node-fetch": "^2.6.7", + "protobufjs": "^7.2.2" + } + }, + "firebase-functions-test": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-3.1.0.tgz", + "integrity": "sha512-yfm9ToguShxmRXb7TINN88zE2bM9gsBbs7vMWVKJAxGcl/n1f/U0sT5k2yho676QIcSqXVSjCONU8W4cUEL+Sw==", + "dev": true, + "requires": { + "@types/lodash": "^4.14.104", + "lodash": "^4.17.5", + "ts-deepmerge": "^2.0.1" + } + }, + "fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, + "follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" + }, + "fontkit": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", + "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "requires": { + "@swc/helpers": "^0.5.12", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==" + }, + "restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==" + }, + "unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "requires": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + } + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==" + }, + "formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "requires": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "dependencies": { + "web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==" + } + } + }, + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "requires": { + "fetch-blob": "^3.1.2" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "peer": true, + "requires": { + "js-yaml": "^3.13.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "devOptional": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true, + "peer": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "optional": true + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, + "gaxios": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", + "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", + "optional": true, + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9" + } + }, + "gcp-metadata": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", + "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", + "optional": true, + "requires": { + "gaxios": "^5.0.0", + "json-bigint": "^1.0.0" + } + }, + "genkit": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/genkit/-/genkit-0.9.6.tgz", + "integrity": "sha512-1aPt0Y/cBuqSg/WwzIoRHq2kYpdp3UEcwg6rdsknoadKNdJKF4FqChWaZ6159aONLPH7CMGpmzc2evuuHDrZKQ==", + "peer": true, + "requires": { + "@genkit-ai/ai": "0.9.6", + "@genkit-ai/core": "0.9.6", + "@genkit-ai/dotprompt": "0.9.6", + "uuid": "^10.0.0" + }, + "dependencies": { + "uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "peer": true + } + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "peer": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "peer": true + }, + "get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "peer": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "peer": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "devOptional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "google-auth-library": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.9.0.tgz", + "integrity": "sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==", + "optional": true, + "requires": { + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^5.0.0", + "gcp-metadata": "^5.3.0", + "gtoken": "^6.1.0", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" + } + }, + "google-gax": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.6.1.tgz", + "integrity": "sha512-g/lcUjGcB6DSw2HxgEmCDOrI/CByOwqRvsuUvNalHUK2iPPPlmAIpbMbl62u0YufGMr8zgE3JL7th6dCb1Ry+w==", + "optional": true, + "requires": { + "@grpc/grpc-js": "~1.8.0", + "@grpc/proto-loader": "^0.7.0", + "@types/long": "^4.0.0", + "@types/rimraf": "^3.0.2", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "fast-text-encoding": "^1.0.3", + "google-auth-library": "^8.0.2", + "is-stream-ended": "^0.1.4", + "node-fetch": "^2.6.1", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^1.0.0", + "protobufjs": "7.2.4", + "protobufjs-cli": "1.1.1", + "retry-request": "^5.0.0" + }, + "dependencies": { + "protobufjs": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.4.tgz", + "integrity": "sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==", + "optional": true, + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + } + } + } + }, + "google-p12-pem": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", + "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", + "optional": true, + "requires": { + "node-forge": "^1.3.1" + } + }, + "googleapis": { + "version": "140.0.1", + "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-140.0.1.tgz", + "integrity": "sha512-ZGvBX4mQcFXO9ACnVNg6Aqy3KtBPB5zTuue43YVLxwn8HSv8jB7w+uDKoIPSoWuxGROgnj2kbng6acXncOQRNA==", + "requires": { + "google-auth-library": "^9.0.0", + "googleapis-common": "^7.0.0" + }, + "dependencies": { + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "requires": { + "ms": "2.1.2" + } + }, + "gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + } + }, + "gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "requires": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + } + }, + "google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "requires": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + } + }, + "gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "requires": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" + } + } + }, + "googleapis-common": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-7.2.0.tgz", + "integrity": "sha512-/fhDZEJZvOV3X5jmD+fKxMqma5q2Q9nZNSF3kn1F18tpxmA86BcTxAGBQdM0N89Z3bEaIs+HVznSmFJEAmMTjA==", + "requires": { + "extend": "^3.0.2", + "gaxios": "^6.0.3", + "google-auth-library": "^9.7.0", + "qs": "^6.7.0", + "url-template": "^2.0.8", + "uuid": "^9.0.0" + }, + "dependencies": { + "agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "requires": { + "debug": "^4.3.4" + } + }, + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "requires": { + "ms": "2.1.2" + } + }, + "gaxios": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.0.tgz", + "integrity": "sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg==", + "requires": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^10.0.0" + }, + "dependencies": { + "uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==" + } + } + }, + "gcp-metadata": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.0.tgz", + "integrity": "sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==", + "requires": { + "gaxios": "^6.0.0", + "json-bigint": "^1.0.0" + } + }, + "google-auth-library": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.13.0.tgz", + "integrity": "sha512-p9Y03Uzp/Igcs36zAaB0XTSwZ8Y0/tpYiz5KIde5By+H9DCVUSYtDWZu6aFXsWTqENMb8BD/pDT3hR8NVrPkfA==", + "requires": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + } + }, + "gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "requires": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + } + }, + "https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "devOptional": true + }, + "gtoken": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", + "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==", + "optional": true, + "requires": { + "gaxios": "^5.0.1", + "google-p12-pem": "^4.0.0", + "jws": "^4.0.0" + } + }, + "handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "peer": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true + }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "requires": { + "has-symbols": "^1.0.3" + } + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "hsl-to-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-to-hex/-/hsl-to-hex-1.0.0.tgz", + "integrity": "sha512-K6GVpucS5wFf44X0h2bLVRDsycgJmf9FF2elg+CrqD8GcFU8c6vYhgXn8NjUkFCwj+xDFb70qgLbTUm6sxwPmA==", + "requires": { + "hsl-to-rgb-for-reals": "^1.1.0" + } + }, + "hsl-to-rgb-for-reals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/hsl-to-rgb-for-reals/-/hsl-to-rgb-for-reals-1.1.1.tgz", + "integrity": "sha512-LgOWAkrN0rFaQpfdWBQlv/VhkOxb5AsBjk6NQVx4yEzWS923T07X0M1Y0VNko2H52HeSpZrZNNMJ0aFqsdVzQg==" + }, + "html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==" + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "peer": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "peer": true + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "requires": { + "ms": "^2.0.0" + } + }, + "hyphen": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/hyphen/-/hyphen-1.10.6.tgz", + "integrity": "sha512-fXHXcGFTXOvZTSkPJuGOQf5Lv5T/R2itiiCVPg9LxAje5D00O0pP83yJShFq5V89Ly//Gt6acj7z8pbBr34stw==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "import-in-the-middle": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz", + "integrity": "sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==", + "requires": { + "acorn": "^8.8.2", + "acorn-import-attributes": "^1.9.5", + "cjs-module-lexer": "^1.2.2", + "module-details-from-path": "^1.0.3" + } + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "peer": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "peer": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "devOptional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/is/-/is-3.3.0.tgz", + "integrity": "sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==", + "optional": true + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "peer": true + }, + "is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "requires": { + "hasown": "^2.0.0" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "peer": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "peer": true + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-stream-ended": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", + "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==", + "optional": true + }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "peer": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, + "istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "peer": true + }, + "istanbul-lib-instrument": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", + "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "peer": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "peer": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "peer": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "peer": true + } + } + }, + "istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "peer": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jay-peg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jay-peg/-/jay-peg-1.1.0.tgz", + "integrity": "sha512-WhyKySfx5CEFoKDnpmHyJUrpX5fUrr/X3kqVHISmiO9jrJC73RQBOAZJB8bDrWT4PHEkl0QgNZLlWJfAWAIFew==", + "requires": { + "restructure": "^3.0.0" + }, + "dependencies": { + "restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==" + } + } + }, + "jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "peer": true, + "requires": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + } + }, + "jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "peer": true, + "requires": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + } + }, + "jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "peer": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "peer": true, + "requires": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + } + }, + "jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + } + }, + "jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + } + }, + "jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "peer": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + } + }, + "jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "peer": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "peer": true + }, + "jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "peer": true, + "requires": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + } + }, + "jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + } + }, + "jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "peer": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "peer": true, + "requires": {} + }, + "jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "peer": true + }, + "jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "peer": true, + "requires": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + } + }, + "jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + } + }, + "jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + } + }, + "jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "peer": true, + "requires": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "peer": true + } + } + }, + "jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "peer": true, + "requires": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + } + }, + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jose": { + "version": "4.15.4", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.4.tgz", + "integrity": "sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "peer": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "js2xmlparser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", + "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "optional": true, + "requires": { + "xmlcreate": "^2.0.4" + } + }, + "jsdoc": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.2.tgz", + "integrity": "sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg==", + "optional": true, + "requires": { + "@babel/parser": "^7.20.15", + "@jsdoc/salty": "^0.2.1", + "@types/markdown-it": "^12.2.3", + "bluebird": "^3.7.2", + "catharsis": "^0.9.0", + "escape-string-regexp": "^2.0.0", + "js2xmlparser": "^4.0.2", + "klaw": "^3.0.0", + "markdown-it": "^12.3.2", + "markdown-it-anchor": "^8.4.1", + "marked": "^4.0.10", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", + "underscore": "~1.13.2" + } + }, + "jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==" + }, + "json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "requires": { + "bignumber.js": "^9.0.0" + } + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "peer": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "peer": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "peer": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "peer": true + }, + "jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "dependencies": { + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jwks-rsa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.1.0.tgz", + "integrity": "sha512-v7nqlfezb9YfHHzYII3ef2a2j1XnGeSE/bK3WfumaYCqONAIstJbrEGapz4kadScZzEt7zYCN7bucj8C0Mv/Rg==", + "requires": { + "@types/express": "^4.17.17", + "@types/jsonwebtoken": "^9.0.2", + "debug": "^4.3.4", + "jose": "^4.14.6", + "limiter": "^1.1.5", + "lru-memoizer": "^2.2.0" + }, + "dependencies": { + "@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "requires": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "optional": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "peer": true + }, + "kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "peer": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "optional": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "peer": true + }, + "linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "optional": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "peer": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "logform": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.1.tgz", + "integrity": "sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==", + "requires": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "lru-memoizer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.2.0.tgz", + "integrity": "sha512-QfOZ6jNkxCcM/BkIPnFsqDhtrazLRsghi9mBwFAzol5GCvj4EkFT899Za3+QwikCg5sRX8JstioBDwOxEyzaNw==", + "requires": { + "lodash.clonedeep": "^4.5.0", + "lru-cache": "~4.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "integrity": "sha512-uQw9OqphAGiZhkuPlpFGmdTU2tEuhxTourM/19qGJrxBPHAr/f8BT1a0i/lOclESnGatdJG/UCkP9kZB/Lh1iw==", + "requires": { + "pseudomap": "^1.0.1", + "yallist": "^2.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + } + } + }, + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "peer": true, + "requires": { + "semver": "^7.5.3" + }, + "dependencies": { + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "peer": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "optional": true, + "requires": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "optional": true + } + } + }, + "markdown-it-anchor": { + "version": "8.6.7", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", + "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", + "optional": true, + "requires": {} + }, + "marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "optional": true + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "optional": true + }, + "media-engine": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/media-engine/-/media-engine-1.0.3.tgz", + "integrity": "sha512-aa5tG6sDoK+k70B9iEX1NeyfT8ObCKhNDs6lJVpwF6r8vhUfuKMslIcirq6HIUYuuUYLefcEQOn9bSBOvawtwg==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "peer": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "peer": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "optional": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "peer": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "devOptional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "optional": true + }, + "module-details-from-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" + }, + "moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" + }, + "moment-timezone": { + "version": "0.5.45", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.45.tgz", + "integrity": "sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ==", + "requires": { + "moment": "^2.29.4" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "peer": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "peer": true + }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" + }, + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "peer": true + }, + "node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "peer": true + }, + "normalize-svg-path": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/normalize-svg-path/-/normalize-svg-path-1.1.0.tgz", + "integrity": "sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==", + "requires": { + "svg-arc-to-cubic-bezier": "^3.0.0" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "peer": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" + }, + "object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==" + }, + "object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "requires": { + "fn.name": "1.x.x" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "peer": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "openai": { + "version": "4.55.3", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.55.3.tgz", + "integrity": "sha512-/IUDdK5w3aB1Kd88Ml7w5F+EkVM5aXlrY+lSpWXdIPL18CmGkC7lV9HFJ7beR0OUSFLFT0qmWvMynqtbMF06/Q==", + "requires": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7" + }, + "dependencies": { + "@types/node": { + "version": "18.19.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.43.tgz", + "integrity": "sha512-Mw/YlgXnyJdEwLoFv2dpuJaDFriX+Pc+0qOBJ57jC1H6cDxIj2xc5yUrdtArDVG0m+KV6622a4p2tenEqB3C/g==", + "requires": { + "undici-types": "~5.26.4" + } + } + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "optional": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "devOptional": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "peer": true, + "requires": { + "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "peer": true, + "requires": { + "p-try": "^2.0.0" + } + } + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "peer": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse-svg-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", + "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "partial-json": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/partial-json/-/partial-json-0.1.7.tgz", + "integrity": "sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==", + "peer": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "peer": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "devOptional": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "peer": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-to-regexp": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" + }, + "pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" + }, + "pg-protocol": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", + "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==" + }, + "pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "requires": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + } + }, + "picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "peer": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "peer": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" + }, + "postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==" + }, + "postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" + }, + "postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "requires": { + "xtend": "^4.0.0" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "optional": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "peer": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "peer": true + } + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "peer": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } + } + }, + "proto3-json-serializer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.1.tgz", + "integrity": "sha512-AwAuY4g9nxx0u52DnSMkqqgyLHaW/XaPLtaAo3y/ZCfeaQB/g4YDH4kb8Wc/mWzWvu0YjOznVnfn373MVZZrgw==", + "optional": true, + "requires": { + "protobufjs": "^7.0.0" + } + }, + "protobuf.js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/protobuf.js/-/protobuf.js-1.1.2.tgz", + "integrity": "sha512-USO7Xus/pzPw549M1TguiyoOrKEhm9VMXv+CkDufcjMC8Rd7EPbxeRQPEjCV8ua1tm0k7z9xHkogcxovZogWdA==", + "requires": { + "long": "~1.1.2" + }, + "dependencies": { + "long": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/long/-/long-1.1.5.tgz", + "integrity": "sha512-TU6nAF5SdasnTr28c7e74P4Crbn9o3/zwo1pM22Wvg2i2vlZ4Eelxwu4QT7j21z0sDBlJDEnEZjXTZg2J8WJrg==" + } + } + }, + "protobufjs": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.2.tgz", + "integrity": "sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + } + }, + "protobufjs-cli": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.1.tgz", + "integrity": "sha512-VPWMgIcRNyQwWUv8OLPyGQ/0lQY/QTQAVN5fh+XzfDwsVw1FZ2L3DM/bcBf8WPiRz2tNpaov9lPZfNcmNo6LXA==", + "optional": true, + "requires": { + "chalk": "^4.0.0", + "escodegen": "^1.13.0", + "espree": "^9.0.0", + "estraverse": "^5.1.0", + "glob": "^8.0.0", + "jsdoc": "^4.0.0", + "minimist": "^1.2.0", + "semver": "^7.1.2", + "tmp": "^0.2.1", + "uglify-js": "^3.7.7" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "optional": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "optional": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "optional": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", + "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", + "requires": { + "duplexify": "^4.1.1", + "inherits": "^2.0.3", + "pump": "^3.0.0" + } + }, + "pure-rand": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "dev": true, + "peer": true + }, + "qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "requires": { + "side-channel": "^1.0.6" + } + }, + "queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "requires": { + "inherits": "~2.0.3" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true, + "peer": true + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + } + }, + "regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==" + }, + "regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "requires": { + "jsesc": "~3.0.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "require-in-the-middle": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz", + "integrity": "sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==", + "requires": { + "debug": "^4.3.5", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.8" + }, + "dependencies": { + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "requizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", + "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==", + "optional": true, + "requires": { + "lodash": "^4.17.21" + } + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "peer": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "peer": true + }, + "resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "peer": true + }, + "restructure": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-0.5.4.tgz", + "integrity": "sha512-wgNbkrlRpj0NarhUyiCfOXlu8DybDIYRV7MOieKGOl16N7NmAkjTtPhn2F4CBOsyRL8m6RWZLSzjJVVPAkJuiw==", + "requires": { + "browserify-optional": "^1.0.0" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "optional": true + }, + "retry-request": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz", + "integrity": "sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==", + "optional": true, + "requires": { + "debug": "^4.1.1", + "extend": "^3.0.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "optional": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "optional": true + } + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "scheduler": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.17.0.tgz", + "integrity": "sha512-7rro8Io3tnCPuY4la/NuI5F2yfESpnfZyT6TtkXnSWVkcu0BCDJ+8gk5ozUaFaxpIyNuWAPXrH0yFcSi28fnDA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + }, + "send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "requires": { + "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" + }, + "dependencies": { + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "requires": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + } + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "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": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "peer": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "peer": true + }, + "shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + }, + "side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "peer": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + } + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "peer": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "peer": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "peer": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "peer": true + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==" + }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "peer": true, + "requires": { + "escape-string-regexp": "^2.0.0" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "requires": { + "stubs": "^3.0.0" + } + }, + "stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "peer": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "peer": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "peer": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "devOptional": true + }, + "stripe": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-16.7.0.tgz", + "integrity": "sha512-BJCSEtqN8LJsPuPkjQmB/LlBl00uxi9FIPa6LNcF80ofMKqfnuervDhwWSZqCs6xJk/i9vx1D9lRoDnqSmym2w==", + "requires": { + "@types/node": ">=8.1.0", + "qs": "^6.11.0" + } + }, + "strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "optional": true + }, + "stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "devOptional": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "svg-arc-to-cubic-bezier": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz", + "integrity": "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==" + }, + "teeny-request": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-8.0.3.tgz", + "integrity": "sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==", + "optional": true, + "requires": { + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^9.0.0" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "peer": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-decoding": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-decoding/-/text-decoding-1.0.0.tgz", + "integrity": "sha512-/0TJD42KDnVwKmDK6jj3xP7E2MG7SHAOG4tyTgyUCRPdHwvkquYNLEQltmdMa3owq3TkddCVcTsoctJI8VQNKA==" + }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "optional": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "peer": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "peer": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==" + }, + "ts-deepmerge": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/ts-deepmerge/-/ts-deepmerge-2.0.7.tgz", + "integrity": "sha512-3phiGcxPSSR47RBubQxPoZ+pqXsEsozLo4G4AlSrsMKTFg9TA3l+3he5BqpUi9wiuDbaHWXH/amlzQ49uEdXtg==", + "dev": true + }, + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "optional": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "peer": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "peer": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "optional": true + }, + "uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "optional": true + }, + "underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "optional": true + }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==" + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==" + }, + "unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "requires": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + }, + "dependencies": { + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==" + }, + "unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "requires": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + } + } + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" + }, + "unicode-trie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha512-WgVuO0M2jDl7hVfbPgXv2LUrD81HM0bQj/bvLGiw6fJ4Zo8nNFnDrA0/hU2Te/wz6pjxCm5cxJwtLjo2eyV51Q==", + "requires": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + }, + "dependencies": { + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==" + } + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "requires": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + } + }, + "url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" + }, + "v8-to-istanbul": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", + "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "vite-compatible-readable-stream": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/vite-compatible-readable-stream/-/vite-compatible-readable-stream-3.6.1.tgz", + "integrity": "sha512-t20zYkrSf868+j/p31cRIGN28Phrjm3nRSLR2fyc2tiWi4cZGVdv68yNlwnIINTkMTmPoMiSlc0OadaO7DXZaQ==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "peer": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "peer": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "winston": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.14.1.tgz", + "integrity": "sha512-CJi4Il/msz8HkdDfXOMu+r5Au/oyEjFiOZzbX2d23hRLY0narGjqfE5lFlrT5hfYJhPtM8b85/GNFsxIML/RVA==", + "requires": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.6.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.7.0" + } + }, + "winston-transport": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.1.tgz", + "integrity": "sha512-wQCXXVgfv/wUPOfb2x0ruxzwkcZfxcktz6JIMUaPLmcNhO4bZTwA/WtDWK74xV3F2dKu8YadrFv0qhwYjVEwhA==", + "requires": { + "logform": "^2.6.1", + "readable-stream": "^3.6.2", + "triple-beam": "^1.3.0" + } + }, + "word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "optional": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "peer": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "peer": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + }, + "xmlcreate": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", + "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", + "optional": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "devOptional": true + }, + "yoga-layout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/yoga-layout/-/yoga-layout-2.0.1.tgz", + "integrity": "sha512-tT/oChyDXelLo2A+UVnlW9GU7CsvFMaEnd9kVFsaiCQonFAXd3xrHhkLYu+suwwosrAEQ746xBU+HvYtm1Zs2Q==" + }, + "zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "peer": true + }, + "zod-to-json-schema": { + "version": "3.23.2", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.2.tgz", + "integrity": "sha512-uSt90Gzc/tUfyNqxnjlfBs8W6WSGpNBv0rVsNxP/BVSMHMKGdthPYff4xtCHYloJGM0CFxFsb3NbC0eqPhfImw==", + "peer": true, + "requires": {} + } + } +} diff --git a/functions/package.json b/functions/package.json new file mode 100644 index 0000000..d3ec162 --- /dev/null +++ b/functions/package.json @@ -0,0 +1,38 @@ +{ + "name": "functions", + "description": "Cloud Functions for Firebase", + "scripts": { + "serve": "firebase emulators:start --only functions", + "shell": "firebase functions:shell", + "start": "npm run shell", + "deploy": "firebase deploy --only functions", + "logs": "firebase functions:log" + }, + "engines": { + "node": "18" + }, + "main": "index.js", + "dependencies": { + "@babel/preset-env": "^7.25.8", + "@babel/preset-react": "^7.25.7", + "@babel/register": "^7.25.7", + "@genkit-ai/google-cloud": "^0.9.4", + "@genkit-ai/googleai": "^0.9.4", + "@genkit-ai/vertexai": "^0.9.4", + "@react-pdf/renderer": "^2.3.0", + "axios": "^1.6.2", + "crypto-js": "^4.2.0", + "dotenv": "^16.0.3", + "firebase-admin": "^11.8.0", + "firebase-functions": "^4.3.1", + "lodash": "^4.17.21", + "moment": "^2.30.1", + "moment-timezone": "^0.5.45", + "stripe": "^16.1.0", + "react": "^17.0.0" + }, + "devDependencies": { + "firebase-functions-test": "^3.1.0" + }, + "private": true +} \ No newline at end of file diff --git a/functions/src/components/Contract.js b/functions/src/components/Contract.js new file mode 100644 index 0000000..3c3747c --- /dev/null +++ b/functions/src/components/Contract.js @@ -0,0 +1,185 @@ +import React from "react"; +import { Document, Page, Text, View, Font, Image } from "@react-pdf/renderer"; +import { presidentSignatureBase64 } from "../data/presidentSignatureBase64"; +import { RenderCompanyLogo, SignatureForm, Styles } from "./SharedElements"; + +Font.register({ + family: "Helvetica", + fonts: [ + { src: "https://fonts.gstatic.com/s/helvetica/v15/Helvetica-Regular.ttf" }, + { + src: "https://fonts.gstatic.com/s/helvetica/v15/Helvetica-Bold.ttf", + fontWeight: "bold", + }, + ], +}); + +const Contract = ({ + domiciliationData = {}, + appConfig = {}, + contractFields = {}, +} = {}) => { + const { company } = appConfig; + + const { + intro_contrat, + raison_sociale, + forme_juridique, + qualite, + civilite, + prenoms, + nom_de_jeune_fille_si_madame, + nom, + adresse, + code_postal, + ville, + adresse_de_domiciliation, + date_souhaitee_du_debut_de_la_domiciliation, + } = contractFields; + + const sections = [ + { + title: "Contrat de domiciliation", + content: , + }, + { + title: null, + content: ( + {` +Entre les soussignés : +${intro_contrat} +Ci-après désignée « le domiciliataire » +D’une part et, +La société ${raison_sociale} ${forme_juridique} représentée par son ${qualite} , ${civilite} ${prenoms} ${nom_de_jeune_fille_si_madame} ${nom} demeurant ${adresse} ${code_postal} ${ville}. +Ci-après désignée « Le domicilié » +Il a été arrêté et convenu ce qui suit : +Article préliminaire : consentement des parties +Le Domicilié déclare avoir pris connaissance de tous les documents afférents à la présente (annexes, autorisation du pli du courrier et attestation comptable) et déclare donner acceptation expresse pour la totalité des clauses figurants dans les documents. + +Article 1 : OBJET DU CONTRAT +Le présent contrat a pour objet la domiciliation du siège social du Domicilié conformément aux dispositions des articles R123-167 à R 123-171 du Code de Commerce. + +Article 2 : OBLIGATION DES PARTIES +2.1 Obligations du domiciliataire +2.1.1 Obligations légales. +Conformément aux dispositions législatives des articles R 123-167 à R 123-171 du code de Commerce, le Domiciliataire s’engage, pendant toute la durée du présent contrat, à : + • Etre immatriculé au Registre du Commerce et des Sociétés ou au Répertoire des Métiers, durant l’occupation des locaux. + • Mettre à la disposition du Domicilié des locaux dotés d’une pièce destinée à assurer la confidentialité nécessaire et à permettre une réunion régulière des organes de direction, d’administration ou de surveillance de l’entreprise ainsi que la tenue, la conservation et consultation des livres, registres et documents prescrits par la loi (Décret N°85.1280 du 5 décembre 1985, Article 2.6.1 modifié par Décret 2007-750 du 9 mai 2007). + • Détenir, pour le Domicilié, un dossier contenant les pièces justificatives relatives au domicile de son représentant légal, ses coordonnées téléphoniques ainsi que les lieux d’activité et de détention des documents comptables lorsqu’ils ne sont pas conservés chez elle. + • Informer le greffier du tribunal, à l’expiration du contrat ou en cas de résiliation anticipée de celui-ci, de la cessation de la domiciliation de l’entreprise dans ses locaux. + • Communiquer aux huissiers de justice, munis d’un titre exécutoire, les renseignements propres à joindre le domicilié. + • Fournir, chaque trimestre, au centre des impôts et aux organismes de recouvrement des cotisations et contributions de sécurité sociale compétents, une liste des personnes qui se sont domiciliées dans ses locaux au cours de cette période ou qui ont mis fin à leur domiciliation ainsi que chaque année, une liste des personnes domiciliées au 1er + + 2.1.2 Prestations +Le domiciliataire s’engage à fournir au Domicilié les prestations de services suivantes : +Domiciliation commerciale. +Cette prestation permet au domicilié de fixer son siège social dans les locaux du Domiciliataire situés au ${adresse_de_domiciliation}. +Domiciliation postale. +La prestation sus évoquée permet uniquement au Domicilié de recevoir son courrier (recommandé et pli spécial avec autorisation) , sans pour autant en faire une utilisation dans sa communication commerciale qui serait susceptible de publicité mensongère ou trompeuse, le tout conformément aux dispositions législatives en vigueur et notamment l’article L-121-1 du Code de la consommation. +La mise à disposition des locaux. +Cette prestation permet au domicilié de bénéficier de locaux dotés d’une pièce destinée à assurer la confidentialité nécessaire et y permettre une réunion régulière des organes chargés de la direction, de l’administration ou de la surveillance de l’entreprise ainsi que la tenue, la conservation et la consultation des livres, registres et documents prescrits par les lois et règlements. Cette prestation est soumise à une rémunération supplémentaire proposée sur devis. + +2.2 Obligations du Domicilié +2.2.1. Obligations générales +Dès la signature du présent contrat et durant toute la durée de celui-ci, le domicilié s’engage à : + • Justifier de son inscription au Registre du Commerce ou des Métiers ou toutes autres administrations compétentes dans les trois mois qui suivent la date d’engagement de la domiciliation, faute de quoi le Domiciliataire se réserve le droit de commander les documents justificatifs au frais du domicilié, au coût de 20 € HT (Vingt euros hors-taxes) pour le K-bis et de 40 € HT (quarante euros hors-taxes) pour les statuts. + • certifier l’exactitude des renseignements fournis à l’appui de la signature du contrat avec le Domiciliataire, certifier ne pas être en situation de liquidation de biens, redressement judiciaire en ce qui concerne l’entreprise ou les entreprises qu’il dirige, que ces établissements soient l’objet ou non dudit contrat, certifier ne pas être à titre personnel frappé de faillite personnelle ou d’interdiction de gérer, attester l’exactitude de tous les renseignements fournis au Domiciliataire tant en ce qui concerne son état civil que l’entreprise représentée. +Dans tous les cas, le Domicilié sera responsable de ses dettes après son départ du ${adresse_de_domiciliation}. +Tout renseignement fourni par le Domicilié pourra être communiqué sur demande aux représentants des organismes officiels et le domicilié en donne dès à présent son accord. + • Utiliser effectivement et exclusivement les locaux, soit comme siège de l’entreprise, soit si le siège est situé à l’étranger comme agence, succursale ou représentation ; + • Tenir informé le Domiciliataire de toute modification concernant son activité ; +En cas de changement, soit d’adresse, soit d’état civil personnel, soit de dénomination sociale, soit de nom commercial, soit de sigle (afin d’éviter les homonymes), soit de forme juridique ou d’objet, soit de dirigeant, soit de l’utilisateur des prestations fournies au titre du présent contrat, le Domicilié devra fournir tous les documents afférents à ces modifications au Domiciliataire et présenter son successeur ou le nouvel utilisateur, avant de déclarer tout changement auprès du Greffe du Tribunal de Commerce ou de la Chambre des Métiers ou de toute autre administration compétente. + • Déclarer tout changement statutaire et/ou relatif à sa forme juridique et son objet, ainsi qu’au nom et au domicile personnel des personnes ayant le pouvoir de l’engager à titre habituel ; donner mandat au Domiciliataire, qui l’accepte, de recevoir en son nom toute notification. Faute d’exécution d’une telle obligation, le domicilié s’acquittera dun règlement de 30 € HT (trente euros hors-taxes) correspondant aux frais de recherches des informations à fournir. +Les colis et plis spéciaux (DHL, CHRONOPOST, UPS, ...) ne seront acceptés qu’après signature d’un pouvoir de réception, aux conditions indiquées sur ledit document. +Le Domicilié s’engage à signer la procuration postale fournie avec le contrat au bénéfice du Domiciliataire afin de pouvoir réceptionner en son nom ou au nom de son entreprise les envois recommandés. +2.2.2. Obligations particulières relatives à la formule choisie par le domicilié +- Le domicilié s’engage à respecter les modalités d’exécution et obligations contractuelles qui figurent en annexe du présent contrat. +- Lesdites annexes reflètent l’offre à laquelle le domicilié a souscrit et doivent être considérées comme partie intégrante du présent contrat et doivent être à cet égard signées par les parties. +2.2.3. Redevance +En contrepartie des obligations auxquelles le Domiciliataire sest engagé à l’article 2.1, le domicilié s’engage à régler une redevance mensuelle dont le montant figure en annexe conformément à l’offre choisie. Ladite redevance est payable par prélèvement bancaire automatique, dit “ mandat SEPA “ le dix du mois en cours. Elle couvre les différentes prestations décrites dans chacune des offres à l’exception de la mise à disposition des locaux qui fait l’objet d’une tarification supplémentaire et des éventuels frais de réexpédition. +Lesdits frais de réexpédition du courrier prévus dans certaines offres seront facturés en sus au Domicilié et payables par prélèvement bancaire automatique, dit “ Mandat SEPA “ le dix du mois en cours. Une facture dématérialisée sera adressée mensuellement au gérant du Domicilié. +En cas d’anomalie ou erreur de prélèvement, ou en cas de règlement autre que le prélèvement mensuel ou le règlement de l’offre à l’année, la somme forfaitaire mensuelle sera majorée au tarif bancaire en vigueur par incident ou erreur commise, au titre des frais administratifs. +Pour les règlements par chèque, prélèvement ou carte bancaire remis à l’encaissement et impayés, des frais au tarif bancaire en vigueur seront imputés automatiquement sur la prochaine facture de domiciliation. +Le Domicilié donne dès à présent son accord pour une révision chaque année du tarif mensuel des prestations de services définies à l’Article 2.1.2. en fonction du taux d’inflation (indice IPC) ou de l’évolution des services auxquels il souscrit, ainsi que pour le mode de règlement proposé par le Domiciliataire. +Le domicilié sera tenu informé de la révision du tarif mensuel des prestations de services, un mois avant ladite révision. +Ce contrat est ferme et définitif à la signature et aucun remboursement même partiel ne saurait être revendiqué par le domicilié. + +Article 3 : Accès à l’espace et utilisation des locaux +Sauf autorisation exceptionnelle mentionnée dans les conditions particulières ou par avenant à ce présent contrat, le Domicilié n’aura en aucun cas le droit de sous louer ou donner accès à l’espace à un tiers, hors prestations permises par le présent contrat. + +Article 4 : Durée du contrat +Le présent contratest consenti pour une durée minimale de 3 mois à compter du ${date_souhaitee_du_debut_de_la_domiciliation}. +4.1. Renouvellement +Le présent contrat peut être renouvelé, par tacite reconduction, sauf résiliation notifiée par l’une ou l’autre des parties par lettre recommandée avec accusé de réception et expédiée au moins 30 (trente) jours avant le terme annuel. +4.2. Résiliation +Avant le terme de ce préavis, le Domicilié devra impérativement, pour valider sa résiliation définitive de contrat, adresser par courrier, une photocopie de son nouveau Kbis ou tout document remis par l’administration compétente, justifiant le transfert de siège social ou de sa radiation. +En l’absence de ce justificatif, le Domiciliataire se réserve le droit de poursuivre le contrat de domiciliation dans les termes initiaux. +L’adresse de correspondance est : +I DOM YOU ${adresse_de_domiciliation} +À l’expiration du présent contrat ou en cas de résiliation de celui-ci, le Domiciliataire s’engage à informer le greffe du Tribunal de Commerce de Paris de la cessation de la domiciliation. +Au terme de ce contrat, le courrier sera refusé par le Domiciliataire avec l’annotation « N’habite Pas à l’Adresse Indiquée ». + +Article 5 : Dépôt de garantie +Le Domicilié verse, à la date de signature du présent contrat, à titre de dépôt de garantie, un montant correspondant à 3mois de redevance, en sus du mois correspondant à l’offre souscrite. +Le dépôt de garantie sera encaissé par le Domiciliataire dès sa remise par le Domicilié. +À chaque réajustement de la redevance, le dépôt de garantie sera diminué ou majoré de manière à toujours correspondre à 3 mois de redevance, hors taxes. +Ce dépôt de garantie est destiné, en cas de résiliation du contrat, au paiement des sommes dues pour la fourniture des services, l’exécution parfaite des clauses du présent contrat et des sommes dues par le Domicilié dont le Domiciliataire pourrait être rendu responsable. +En effet, ce dépôt de garantie pourra être utilisé soit pour défaut de règlement, soit pour la conséquence de dommages occasionnés par le Domicilié ou ses commettants. +Ledit dépôt de garantie ne saurait en aucun cas dispenser le Domicilié de payer toutes les redevances jusqu’au terme prévu. +Dans l’hypothèse où le dépôt de garantie versé par le Domicilié est inférieur au montant des remises en état opérées par le Domiciliataire au terme du contrat, le Domicilié s’engage à rembourser au Domiciliataire la différence entre la valeur des remises en état justifiée sur facture et le dépôt de garantie. +À la fin du contrat, ce dépôt de garantie sera remboursé déduction faite des sommes qui pourraient être dues au Domiciliataire. +Les sommes versées à titre de dépôt de garantie ne sauraient produire d’intérêt au profit du Domicilié. + +Article 6 : Responsabilité des Parties +Dans la limite maximale admise par le droit français, le Domiciliataire décline toute responsabilité à l’égard du Domicilié en raison de la perte ou d’un dommage subi par le client en relation avec le présent contrat, avec les prestations, le ou les espaces, à moins que la perte ou le dommage ne résulte d’un acte intentionnel ou d’une négligence du Domiciliataire. +Le Domiciliataire décline toute responsabilité en raison de la perte résultant d’un manquement relatif à la fourniture d’une prestation par suite d’une panne mécanique, d’une grève, de la déchéance des droits du Domiciliataire sur les espaces ou pour toute autre raison à moins que le Domiciliataire n’ait agi intentionnellement ou par négligence. +En tout état de cause, le Domiciliataire ne sera responsable d’une perte ou dun dommage que si le Domicilié len avise par écrit et lui octroie un délai qui ne peut être inférieur à 20 (vingt) jours pour y remédier. +Si le Domicilié considère que le Domiciliataire a failli dans la fourniture des prestations prévues à l’article 2.1.2 des conditions particulières du contrat, le Domicilié devra en aviser le Domiciliataire par écrit et lui octroyer un délai qui ne peut être inférieur à 20 (vingt) jours afin que le Domiciliataire puisse y remédier. +En tout état de cause, seuls les préjudices directs pourront permettre l’engagement de la responsabilité des parties, étant précisé que pour ce qui est de la responsabilité du Domiciliataire, cette dernière ne pourra être supérieure au total du montant des sommes encaissées par ce dernier et payées par le Domicilié dans le cadre de l’exécution du contrat. + +Article 7 : Assurance +Le Domicilié est responsable du matériel qu’il entrepose ${adresse_de_domiciliation} +Le Domiciliataire ne pourra être tenu responsable d’un vol dans les locaux. +Il est donc vivement conseillé au Domicilié de s’assurer pour son activité professionnelle (assurance civile professionnelle) et pour les espaces qu’il occupe (assurance multirisques bureaux). + +Article 8 : Élection de domicile +Les parties font élection de domicile au ${adresse_de_domiciliation}. + +Article 9 : Différend - Attribution de juridiction +Tout litige pouvant survenir entre les parties à l’occasion de l’exécution du présent contrat devra être porté devant le Tribunal de Commerce de Paris. + +Article 10 : Confidentialité +Les parties s’engagent à traiter comme confidentielles toutes informations qu’elles seraient amenées à obtenir dans le cadre de ce contrat.`} + ), + }, + SignatureForm(), + { + title: "Pour le responsable", + content: ( + <> + + > + ), + }, + ].filter(({ condition = true }) => condition); + + return ( + + + {sections.map((section, index) => ( + + {section.title && ( + {section.title} + )} + {section.content} + + ))} + + + ); +}; + +export default Contract; diff --git a/functions/src/components/Invoice.js b/functions/src/components/Invoice.js new file mode 100644 index 0000000..179ce5a --- /dev/null +++ b/functions/src/components/Invoice.js @@ -0,0 +1,206 @@ +import React from "react"; +import { Document, Page, Text, View, Font, Image } from "@react-pdf/renderer"; +import moment from "moment-timezone"; +import { + DisplayCustomerInformation, + formatPrice, + RenderCompanyLogo, + RenderTermsOfSale, + Styles, +} from "./SharedElements"; + +Font.register({ + family: "Helvetica", + fonts: [ + { src: "https://fonts.gstatic.com/s/helvetica/v15/Helvetica-Regular.ttf" }, + { + src: "https://fonts.gstatic.com/s/helvetica/v15/Helvetica-Bold.ttf", + fontWeight: "bold", + }, + ], +}); + +const Invoice = ({ + itemList = [], + billingDetails = {}, + + number = "-", + + paymentTimestamp = null, + creationTimestamp = new Date().toLocaleDateString("fr-FR"), + + appConfig = {}, +}) => { + const { company } = appConfig; + + const subTotalNoTax = itemList.reduce( + (sum, item) => sum + (item?.unitPrice || 0) * (item?.quantity || 0), + 0 + ); + + let taxList = {}; + + itemList.forEach((item) => { + const { taxBreakdown = [] } = item; + taxBreakdown.forEach((tax) => { + const { type, amount, displayName, percentageDecimal = null } = tax; + if (type) { + taxList[type] = { + displayName, + percentageDecimal, + amount: (taxList?.[type]?.amount || 0) + amount, + }; + } + }); + }); + + const montantTotalTTC = + subTotalNoTax + + Object.values(taxList).reduce((sum, tax) => sum + tax.amount, 0); + + const taxExemptionLegalString = ""; + + const sections = [ + { + title: `Facture n°${number}`, + content: , + }, + { + title: null, + content: ( + + + {[ + `Date d'émission: ${moment(creationTimestamp) + .tz("Europe/Paris") + .format("DD/MM/YYYY à HH:mm")}`, + paymentTimestamp + ? `Date de paiement: ${moment(paymentTimestamp) + .tz("Europe/Paris") + .format("DD/MM/YYYY à HH:mm")}` + : null, + "Statut: payée", + ] + .filter(Boolean) + .map((line, index) => ( + + {line} + + ))} + + + + + ), + }, + { + title: "Détails des prestations", + content: ( + + + Description + Prix HT + + {itemList.map((item, index) => ( + + + {item.description} + + + {formatPrice({ amount: item.unitPrice * item.quantity })} + + + ))} + + Sous-total HT : + + {formatPrice({ amount: subTotalNoTax })} + + + {Object.values(taxList)?.map((itemTax, index) => ( + + + {itemTax?.displayName}{" "} + {itemTax?.percentageDecimal + ? `(${itemTax?.percentageDecimal}%)` + : ""}{" "} + : + + + {formatPrice({ amount: itemTax.amount })} + + + ))} + + Total TTC : + + {formatPrice({ amount: montantTotalTTC })} + + + + ), + }, + { + title: "Mentions légales", + content: ( + + {`En cas de retard de paiement, une pénalité de 3 fois le taux d'intérêt légal sera appliquée, à laquelle s'ajoutera une indemnité forfaitaire pour frais de recouvrement de 40€. ${taxExemptionLegalString}`} + + ), + }, + RenderTermsOfSale(), + ].filter(({ content }) => content); + + return ( + + + {sections.map((section, index) => ( + + {section.title && ( + {section.title} + )} + {section.content} + + ))} + + + ); +}; + +// Liste des taux de TVA standard pour les pays de l'UE +const euVatRates = { + AT: 0.2, // Autriche + BE: 0.21, // Belgique + BG: 0.2, // Bulgarie + HR: 0.25, // Croatie + CY: 0.19, // Chypre + CZ: 0.21, // République tchèque + DK: 0.25, // Danemark + EE: 0.2, // Estonie + FI: 0.24, // Finlande + FR: 0.2, // France + DE: 0.19, // Allemagne + GR: 0.24, // Grèce + HU: 0.27, // Hongrie + IE: 0.23, // Irlande + IT: 0.22, // Italie + LV: 0.21, // Lettonie + LT: 0.21, // Lituanie + LU: 0.17, // Luxembourg + MT: 0.18, // Malte + NL: 0.21, // Pays-Bas + PL: 0.23, // Pologne + PT: 0.23, // Portugal + RO: 0.19, // Roumanie + SK: 0.2, // Slovaquie + SI: 0.22, // Slovénie + ES: 0.21, // Espagne + SE: 0.25, // Suède +}; + +// Fonction pour vérifier si le pays fait partie de l'UE +function isCustomerFromEurope({ countryCode }) { + return euVatRates.hasOwnProperty(countryCode); +} + +export default Invoice; diff --git a/functions/src/components/Quote.js b/functions/src/components/Quote.js new file mode 100644 index 0000000..2f38442 --- /dev/null +++ b/functions/src/components/Quote.js @@ -0,0 +1,199 @@ +import React from "react"; +import { Document, Page, Text, View, Font, Image } from "@react-pdf/renderer"; +import { + DisplayCustomerInformation, + formatPrice, + RenderCompanyInformation, + RenderCompanyLogo, + RenderTermsOfSale, + SignatureForm, + Styles, +} from "./SharedElements"; +import moment from "moment-timezone"; + +Font.register({ + family: "Helvetica", + fonts: [ + { src: "https://fonts.gstatic.com/s/helvetica/v15/Helvetica-Regular.ttf" }, + { + src: "https://fonts.gstatic.com/s/helvetica/v15/Helvetica-Bold.ttf", + fontWeight: "bold", + }, + ], +}); + +const Quote = ({ + itemList = [], + project = {}, + billingDetails = {}, + + quoteNumber = "-", + creationTimestamp = new Date(), + + appConfig = {}, + + frequentlyAskedQuestion = [], + planning = [], + + paymentTerms = "", +}) => { + const { summary = "" } = project; + const { dailyRate = {}, company } = appConfig; + + const dailyRateEuro = dailyRate?.amount || 500; + + const TVA_RATE = 0.2; + const sousTotalHT = itemList.reduce( + (sum, phase) => sum + phase.totalNumberOfDay * dailyRateEuro, + 0 + ); + const tva = sousTotalHT * TVA_RATE; + const montantTotalTTC = sousTotalHT + tva; + + const sections = [ + { + title: `Devis n°${quoteNumber}`, + content: , + }, + { + title: null, + content: ( + + + + Date d'émission:{" "} + {moment(creationTimestamp) + .tz("Europe/Paris") + .format("DD/MM/YYYY à HH:mm")} + {"\n"} + Période de validité: 60 jours + + + + {Object.keys(billingDetails).length > 0 && ( + + )} + + ), + }, + { + title: "Résumé du Projet", + content: {summary}, + condition: summary.length > 0, + }, + { + title: "Détails des Prestations", + content: ( + + + Description + Prix HT + + {itemList.map((phase, index) => ( + + + {phase.title} + {phase.description} + + Nombre de jours: {phase?.totalNumberOfDay || 0} + + + + {formatPrice({ + amount: phase.totalNumberOfDay * dailyRateEuro, + })} + + + ))} + + Sous-total HT : + + {formatPrice({ amount: sousTotalHT })} + + + + TVA (20%) : + + {formatPrice({ amount: tva })} + + + + Total TTC : + + {formatPrice({ amount: montantTotalTTC })} + + + + ), + condition: itemList.length > 0, + }, + RenderCompanyInformation({ company }), + { + title: "Modalités de paiement", + content: ( + + {paymentTerms || + "Acompte de 40% à la signature du devis, 30% après livraison du design et solde à la livraison."} + + ), + }, + { + title: "Questions fréquentes", + content: ( + + {frequentlyAskedQuestion.map((faq, index) => ( + + {faq.question} + + {faq.answer} + + + ))} + + ), + condition: frequentlyAskedQuestion.length > 0, + }, + { + title: "Planning prévisionnel", + content: ( + + + Planning estimatif des semaines de travail, sujet à modification et + ajustement périodique. + + + {planning.map((event, index) => ( + + + {`${event?.weekNumberStart} - ${event?.weekNumberEnd}: ${event.title}`} + + + {event.description} + + + ))} + + ), + condition: planning.length > 0, + }, + RenderTermsOfSale(), + SignatureForm(), + ].filter(({ condition = true }) => condition); + + return ( + + + {sections.map((section, index) => ( + + {section.title && ( + {section.title} + )} + {section.content} + + ))} + + + ); +}; + +export default Quote; diff --git a/functions/src/components/SharedElements.js b/functions/src/components/SharedElements.js new file mode 100644 index 0000000..0a82d85 --- /dev/null +++ b/functions/src/components/SharedElements.js @@ -0,0 +1,147 @@ +import React from "react"; +import { Text, View, Image, StyleSheet } from "@react-pdf/renderer"; +import numbro from "numbro"; + +const DisplayCustomerInformation = ({ billingDetails } = {}) => { + return ( + + {[ + `Client: ${billingDetails.legalName || "NC"}`, + billingDetails.billingAddress, + // `${billingDetails.zipCode}, ${billingDetails.city}, ${billingDetails.countryCode}`, + `TVA: ${billingDetails.taxIdentificationNumber || "NC"}`, + `SIREN: ${billingDetails.SIREN || "NC"}`, + ] + .filter(Boolean) + .map((line, index) => ( + + {line} + + ))} + + ); +}; + +const RenderCompanyLogo = ({ logoBase64 } = {}) => { + return ( + + ); +}; + +const RenderTermsOfSale = () => { + return { + title: "Conditions générales de vente", + content: {"ICI TES CGV"}, + }; +}; + +const RenderCompanyInformation = ({ company }) => { + return { + title: "Informations du prestataire", + content: ( + + {`${company?.name}, ${company?.address}, ${company?.postalCode || "-"}, ${company?.city || "-"},\nSIRET: ${company?.identifier}, RCS: ${company?.city} ${company?.RCS}, TVA: ${company?.taxIdentifier || "-"}.\nPour toute question, vous pourrez nous contacter au ${company?.phoneNumber} ou à l'adresse ${company?.supportEmail}.`} + + ), + }; +}; + +const SignatureForm = () => { + return { + title: "Signature du client", + content: ( + <> + + Fait à {"{{Ville de signature;font_size=12}}"}, le + {" {{Date;type=datenow;font_size=12}}"} + + + + Nom et prénom du signataire:{" "} + {"{{Nom et Prénom du signataire;font_size=12}}"} + + + + Fonction du signataire: {"{{Fonction du signataire;font_size=12}}"} + + + + Téléphone: {"{{type=phone;required=true;font_size=12}}"} + + + Signature: + + + {"{{Sign;type=signature;width=200;height=50}}"} + + > + ), + }; +}; + +const formatPrice = ({ amount = 0, average = false }) => + `${numbro(amount || 0).format({ + spaceSeparated: true, + thousandSeparated: true, + average, + mantissa: average ? 1 : 2, + })} €`; + +const Styles = StyleSheet.create({ + body: { + padding: 40, + fontFamily: "Helvetica", + fontSize: 12, + lineHeight: 1.5, + color: "#000", + }, + section: { marginBottom: 30 }, + sectionTitle: { fontSize: 14, opacity: 0.5, marginBottom: 5 }, + textParagraph: { marginBottom: 5 }, + headerRow: { + flexDirection: "row", + justifyContent: "space-between", + }, + leftColumn: { width: "50%", textAlign: "left" }, + rightColumn: { width: "50%", textAlign: "right" }, + table: { marginBottom: 20 }, + tableRow: { + flexDirection: "row", + justifyContent: "space-between", + paddingVertical: 10, + borderBottomWidth: 1, + borderBottomColor: "#ccc", + }, + tableColHeaderLeft: { width: "70%", fontWeight: "bold", textAlign: "left" }, + tableColHeaderRight: { width: "30%", fontWeight: "bold", textAlign: "right" }, + tableColLeft: { width: "70%", textAlign: "left" }, + tableColRight: { width: "30%", textAlign: "right" }, + summaryRow: { + flexDirection: "row", + justifyContent: "flex-end", + marginTop: 10, + }, + summaryLabel: { + width: "70%", + textAlign: "right", + paddingRight: 10, + fontWeight: "bold", + }, + summaryValue: { width: "30%", textAlign: "right" }, + signatureBox: { + width: 200, + height: 50, + borderWidth: 1, + borderStyle: "solid", + }, +}); + +export { + Styles, + formatPrice, + DisplayCustomerInformation, + RenderTermsOfSale, + RenderCompanyLogo, + RenderCompanyInformation, + SignatureForm, +}; diff --git a/functions/src/data/logoBase64.js b/functions/src/data/logoBase64.js new file mode 100644 index 0000000..2bdae95 --- /dev/null +++ b/functions/src/data/logoBase64.js @@ -0,0 +1,2 @@ +exports.logoBase64 = + "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"; diff --git a/functions/src/documents.js b/functions/src/documents.js new file mode 100644 index 0000000..5706440 --- /dev/null +++ b/functions/src/documents.js @@ -0,0 +1,95 @@ +const admin = require("firebase-admin"); +const moment = require("moment"); +const { onCall, HttpsError } = require("firebase-functions/v2/https"); +const functions = require("firebase-functions/v1"); + +const { generateDocument } = require("./utils/helpers.js"); +const { logoBase64 } = require("./data/logoBase64.js"); + +const documentTemplateList = { + QUOTE: { + path: "./components/Quote.js", + }, + INVOICE: { + path: "./components/Invoice.js", + }, + CONTRACT: { + path: "./components/Contract.js", + }, +}; + +const appConfig = { + company: { + logoBase64, + name: "SAS StarsClick", + address: "8 rue de la Paix", + postalCode: "75002", + city: "Paris", + identifier: "123456789", + RCS: "123 456 789", + taxIdentifier: "FR 12 345 678 912", + phoneNumber: "01 23 45 67 89", + supportEmail: "contact@starsclick.fr", + }, +}; + +exports.generateDocumentFromTemplate = onCall( + async ({ auth = {}, data = {} }) => { + try { + const { type, documentData = {} } = data; + + const { path } = documentTemplateList[type] || {}; + + if (!path) { + throw new Error("Invalid document type"); + } + + const { default: DocumentImport } = await import(path); + + const { downloadURL } = await generateDocument({ + template: DocumentImport, + data: { + ...documentData, + creationTimestamp: moment().format("DD/MM/YYYY"), + }, + filePath: `documents/${moment().format("DD-MM-YYYY-HH-mm-ss")}.pdf`, + }); + + console.log(`PDF URL: ${downloadURL}`); + + return { documentUrl: downloadURL }; + } catch (error) { + console.log(error); + } + } +); + +exports.testDocumentGeneration = functions + .runWith({ memory: "512MB" }) + .https.onRequest(async (req, res) => { + try { + // const { type } = req.query; + + const type = "INVOICE"; + + const { path } = documentTemplateList[type] || {}; + + if (!path) { + throw new Error("Invalid document type"); + } + + const { default: DocumentTemplate } = await import(path); + + const { downloadURL } = await generateDocument({ + template: DocumentTemplate, + data: { + appConfig, + }, + filePath: `documents/${moment().format("DD-MM-YYYY-HH-mm-ss")}.pdf`, + }); + + console.log(`PDF URL: ${downloadURL}`); + } catch (error) { + console.log(error); + } + }); diff --git a/functions/src/payments.js b/functions/src/payments.js new file mode 100644 index 0000000..d55ab24 --- /dev/null +++ b/functions/src/payments.js @@ -0,0 +1,163 @@ +const functions = require("firebase-functions"); + +const { refsList } = require(".."); +const { onCall } = require("firebase-functions/v2/https"); + +const isStripeProd = false; + +const stripe = require("stripe")(isStripeProd ? "sk_live_..." : "sk_test_..."); + +const baseURL = isStripeProd ? "https://.../" : "https://.../"; + +exports.createCheckoutSession = onCall(async ({ auth = {}, data = {} }) => { + try { + const { userID, productList = [] } = data || {}; + + console.log("productList", productList); + + if (!userID) { + throw new Error("userID is required"); + } + + const currentUserRef = refsList.users.doc(userID); + const userData = (await currentUserRef.get())?.data() || null; + + let stripeCustomerID; + const { firstName } = userData || {}; + + let updatedCustomerData = { + name: firstName, + email: auth.token.email, + }; + + if (userData?.stripeCustomerID) { + stripeCustomerID = userData.stripeCustomerID; + } else { + const customer = await stripe.customers.create({ + ...updatedCustomerData, + }); + stripeCustomerID = customer.id; + await currentUserRef.update({ stripeCustomerID }); + } + + await stripe.customers.update(stripeCustomerID, updatedCustomerData); + + let line_items = productList.map((product) => ({ + price: product.priceID, + quantity: product.quantity, + })); + + const hasSubscription = productList.some((product) => product.isRenewable); + + let checkoutObject = { + line_items: line_items, + mode: hasSubscription ? "subscription" : "payment", // Use "subscription" to support both one-time and subscription items + ui_mode: "embedded", + return_url: `${baseURL}explore`, + customer: stripeCustomerID, + invoice_creation: { + enabled: true, + }, + }; + + const session = await stripe.checkout.sessions.create(checkoutObject); + + return session; + } catch (e) { + console.log(e); + throw new functions.https.HttpsError("permission-denied", e.message); + } +}); + +exports.getPremiumStatus = onCall(async ({ auth = {}, data = {} }) => { + // Vérifiez l'authentification de l'utilisateur + if (!auth) { + throw new functions.https.HttpsError( + "unauthenticated", + "The function must be called while authenticated." + ); + } + + const uid = auth.uid; + + try { + // Récupérer l'ID client Stripe depuis Firestore (supposons que vous l'avez stocké précédemment) + const userDoc = await refsList.users.doc(uid).get(); + const stripeCustomerID = userDoc.data()?.stripeCustomerID || null; + + if (!stripeCustomerID) { + throw new functions.https.HttpsError( + "not-found", + "Stripe customer ID not found." + ); + } + + // Récupérer les abonnements de l'utilisateur + const subscriptions = await stripe.subscriptions.list({ + customer: stripeCustomerID, + status: "all", + }); + + // Récupérer les achats de produits (Invoices) + const invoices = await stripe.invoices.list({ + customer: stripeCustomerID, + }); + + console.log("subscriptions", subscriptions); + console.log("invoices", invoices); + + return { + subscriptions: subscriptions.data, + invoices: invoices.data, + }; + } catch (error) { + console.error("Error fetching Stripe details:", error); + return { + subscriptions: [], + invoices: [], + }; + } +}); + +exports.createStripeCustomerPortalSession = onCall( + async ({ auth = {}, data = {} }) => { + // Vérifiez l'authentification de l'utilisateur + if (!auth) { + throw new functions.https.HttpsError( + "unauthenticated", + "The function must be called while authenticated." + ); + } + + const uid = auth.uid; + + try { + // Récupérer l'ID client Stripe depuis Firestore (supposons que vous l'avez stocké précédemment) + const userDoc = await refsList.users.doc(uid).get(); + const stripeCustomerID = userDoc.data().stripeCustomerID; + + if (!stripeCustomerID) { + throw new functions.https.HttpsError( + "not-found", + "Stripe customer ID not found." + ); + } + + // Créer une session de portail client + const session = await stripe.billingPortal.sessions.create({ + customer: stripeCustomerID, + return_url: baseURL, // Remplacez par l'URL de retour de votre application + }); + + return { + url: session.url, + }; + } catch (error) { + console.error("Error creating Stripe customer portal session:", error); + throw new functions.https.HttpsError( + "internal", + "Unable to create Stripe customer portal session." + ); + } + } +); diff --git a/functions/src/users.js b/functions/src/users.js new file mode 100644 index 0000000..9c25e07 --- /dev/null +++ b/functions/src/users.js @@ -0,0 +1,66 @@ +const admin = require("firebase-admin"); +const { onCall, HttpsError } = require("firebase-functions/v2/https"); +const { onDocumentWritten } = require("firebase-functions/v2/firestore"); + +const { refsList } = require(".."); + +exports.userUpdateListener = onDocumentWritten( + "users/{userID}", + async (userSnap) => { + try { + const { userID } = userSnap.params; + + const currentData = userSnap?.data?.after?.data() || null; + const previousData = userSnap?.data?.before?.data() || null; + + if (!currentData) { + await admin.auth().deleteUser(userID); + } + + if (!previousData) { + } else if (!!previousData && !!currentData) { + const { email = null } = currentData; + + try { + if (previousData?.email && previousData?.email !== email && email) { + await admin.auth().updateUser(userID, { + email, + }); + } + } catch (e) { + console.log(e); + } + } + } catch (e) { + console.log(e); + } + } +); + +exports.deleteAccount = onCall(async ({ auth = {}, data = {} }) => { + try { + if (!auth.uid) { + throw new HttpsError( + "unauthenticated", + "Vous devez être connecté pour effectuer cette action." + ); + } + + const userDoc = await refsList.users.doc(auth.uid).get(); + + if (!userDoc.exists) { + throw new HttpsError("not-found", "L'utilisateur n'existe pas."); + } + + await admin.auth().deleteUser(auth.uid); + await userDoc.ref.delete(); + + return { success: true }; + } catch (error) { + console.error(error); + throw new HttpsError( + "internal", + "Une erreur s'est produite lors de la suppression de votre compte." + ); + } +}); diff --git a/functions/src/utils/helpers.js b/functions/src/utils/helpers.js new file mode 100644 index 0000000..6cf2ec8 --- /dev/null +++ b/functions/src/utils/helpers.js @@ -0,0 +1,154 @@ +const { Timestamp } = require("firebase-admin/firestore"); +const admin = require("firebase-admin"); +const React = require("react"); + +const { refsList, genkitInstance } = require("../.."); + +exports.getCompanyDataFromUserID = async ({ userID = null }) => { + try { + if (!userID) { + throw new Error("No userID provided"); + } + + const companySnapshot = + (await refsList.companies.where("mainOwnerID", "==", userID).get()) + .docs?.[0] || null; + + if (!companySnapshot) { + throw new Error("Company not found"); + } + + const companyData = + { ...companySnapshot.data(), companyID: companySnapshot.id } || null; + + return companyData; + } catch (error) { + console.log(error); + throw error; + } +}; + +const logNewAction = async ({ + description = "", + userID = null, + isSuccess = true, +}) => { + try { + if (!description?.length) { + throw new Error("Missing required fields"); + } + + await refsList.logs.add({ + isSuccess, + description, + userID, + timestamp: Timestamp.now(), + }); + } catch (error) { + console.log(error); + throw error; + } +}; + +exports.logNewAction = logNewAction; + +// Fonction pour générer et uploader le PDF +exports.generateDocument = async ({ template, data, filePath }) => { + try { + // Générer le PDF en buffer + // Import dynamique de Quote en ESM + const { pdf } = await import("@react-pdf/renderer"); + + // Générer le PDF en buffer + const buffer = await pdf( + React.createElement(template, { + ...data, + }) + ).toBuffer(); + + // Uploader le PDF dans Firebase Storage + const bucket = admin.storage().bucket("gs://starsclick.appspot.com/"); + const file = bucket.file(filePath); + + console.log(`Uploading PDF to Firebase Storage as ${filePath}...`); + + const chunks = []; + buffer.on("data", (chunk) => chunks.push(chunk)); + buffer.on("end", async () => { + const pdfBuffer = Buffer.concat(chunks); + + await file.save(pdfBuffer, { + metadata: { + contentType: "application/pdf", + }, + }); + }); + + // Générer une URL signée + const expiresAt = Date.now() + 1000 * 60 * 60 * 24 * 7; // Expire dans 7 jours + const [url] = await file.getSignedUrl({ + action: "read", + expires: expiresAt, + }); + + console.log(`PDF uploaded to Firebase Storage as ${filePath}.`); + console.log(`PDF URL: ${url}`); + + return { downloadURL: url }; + } catch (error) { + console.error("Error generating or uploading PDF:", error); + throw error; + } +}; + +exports.generateAI = async ({ prompt = "", schema, config = {} }) => { + if (prompt?.length < 1) { + throw new Error( + "Vous devez spécifier un prompt pour effectuer cette action." + ); + } + + let attempts = 0; + let result; + + while (attempts < 3) { + try { + const { output } = await genkitInstance.generate({ + system: + "Voici un prompt, le contenu généré doit toujours être en français: ", + prompt, + config: { + ...config, + }, + output: { schema }, + }); + + console.log("Résultat de la génération par IA:", output); + + result = output; + + await logNewAction({ + description: `Génération par IA réussie`, + isSuccess: true, + }); + + return result; + } catch (error) { + attempts += 1; + console.log(`Tentative ${attempts} échouée:`, error); + + if (attempts >= 3) { + await logNewAction({ + description: `Génération par IA échouée après plusieurs tentatives`, + isSuccess: false, + error, + }); + + throw new Error( + "Erreur lors de la génération par IA après plusieurs tentatives, veuillez réessayer." + ); + } + } + } +}; + diff --git a/functions/ui-debug.log b/functions/ui-debug.log new file mode 100644 index 0000000..edaaf3e --- /dev/null +++ b/functions/ui-debug.log @@ -0,0 +1,2 @@ +Web / API server started at 127.0.0.1:4000 +Web / API server started at ::1:4000 diff --git a/index.js b/index.js new file mode 100644 index 0000000..6ecf8ee --- /dev/null +++ b/index.js @@ -0,0 +1,32 @@ +import { registerRootComponent } from "expo"; +import messaging from "@react-native-firebase/messaging"; +import notifee from "@notifee/react-native"; + +import App from "./App"; + +import { + displayNotification, + triggerEvent, +} from "./src/providers/NotificationProvider"; + +// registerRootComponent calls AppRegistry.registerComponent('main', () => App); +// It also ensures that whether you load the app in Expo Go or in a native build, +// the environment is set up appropriately + +messaging().setBackgroundMessageHandler(async (remoteMessage) => { + console.log("Message handled in the background!", remoteMessage); + await displayNotification(remoteMessage.data); +}); + +notifee.onBackgroundEvent(triggerEvent); + +function HeadlessCheck({ isHeadless }) { + if (isHeadless) { + // App has been launched in the background by iOS, ignore + return null; + } + + return ; +} + +registerRootComponent(App, () => HeadlessCheck); diff --git a/index.web.js b/index.web.js new file mode 100644 index 0000000..a3edc4d --- /dev/null +++ b/index.web.js @@ -0,0 +1,6 @@ +import { registerRootComponent } from "expo"; +import "./src/styles/css/global.css"; + +import App from "./App"; + +registerRootComponent(App); diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..8beb344 --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,30 @@ +# OSX +# +.DS_Store + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +project.xcworkspace +.xcode.env.local + +# Bundle artifacts +*.jsbundle + +# CocoaPods +/Pods/ diff --git a/ios/.xcode.env b/ios/.xcode.env new file mode 100644 index 0000000..3d5782c --- /dev/null +++ b/ios/.xcode.env @@ -0,0 +1,11 @@ +# This `.xcode.env` file is versioned and is used to source the environment +# used when running script phases inside Xcode. +# To customize your local environment, you can create an `.xcode.env.local` +# file that is not versioned. + +# NODE_BINARY variable contains the PATH to the node executable. +# +# Customize the NODE_BINARY variable here. +# For example, to use nvm with brew, add the following line +# . "$(brew --prefix nvm)/nvm.sh" --no-use +export NODE_BINARY=$(command -v node) diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 0000000..ea0500e --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,66 @@ +require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking") +require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods") + +require 'json' +podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {} + +ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0' +ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR'] + +platform :ios, podfile_properties['ios.deploymentTarget'] || '15.1' +install! 'cocoapods', + :deterministic_uuids => false + +prepare_react_native_project! + +target 'minuitstarter' do + use_expo_modules! + + if ENV['EXPO_USE_COMMUNITY_AUTOLINKING'] == '1' + config_command = ['node', '-e', "process.argv=['', '', 'config'];require('@react-native-community/cli').run()"]; + else + config_command = [ + 'node', + '--no-warnings', + '--eval', + 'require(require.resolve(\'expo-modules-autolinking\', { paths: [require.resolve(\'expo/package.json\')] }))(process.argv.slice(1))', + 'react-native-config', + '--json', + '--platform', + 'ios' + ] + end + + config = use_native_modules!(config_command) + + use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks'] + use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS'] + + use_react_native!( + :path => config[:reactNativePath], + :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes', + # An absolute path to your application root. + :app_path => "#{Pod::Config.instance.installation_root}/..", + :privacy_file_aggregation_enabled => podfile_properties['apple.privacyManifestAggregationEnabled'] != 'false', + ) + + post_install do |installer| + react_native_post_install( + installer, + config[:reactNativePath], + :mac_catalyst_enabled => false, + :ccache_enabled => podfile_properties['apple.ccacheEnabled'] == 'true', + ) + + # This is necessary for Xcode 14, because it signs resource bundles by default + # when building for devices. + installer.target_installation_results.pod_target_installation_results + .each do |pod_name, target_installation_result| + target_installation_result.resource_bundle_targets.each do |resource_bundle_target| + resource_bundle_target.build_configurations.each do |config| + config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' + end + end + end + end +end diff --git a/ios/Podfile.properties.json b/ios/Podfile.properties.json new file mode 100644 index 0000000..a1fb3c2 --- /dev/null +++ b/ios/Podfile.properties.json @@ -0,0 +1,10 @@ +{ + "expo.jsEngine": "hermes", + "EX_DEV_CLIENT_NETWORK_INSPECTOR": "true", + "newArchEnabled": "false", + "ios.deploymentTarget": "15.1", + "ios.useFrameworks": "static", + "apple.extraPods": "[]", + "apple.ccacheEnabled": "false", + "apple.privacyManifestAggregationEnabled": "true" +} diff --git a/ios/minuitstarter.xcodeproj/project.pbxproj b/ios/minuitstarter.xcodeproj/project.pbxproj new file mode 100644 index 0000000..67eacf3 --- /dev/null +++ b/ios/minuitstarter.xcodeproj/project.pbxproj @@ -0,0 +1,477 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; + 96905EF65AED1B983A6B3ABC /* libPods-minuitstarter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-minuitstarter.a */; }; + B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; }; + BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; }; + 86E87E7EF63547E884C7EE41 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 233FD88934724953B0CAFD13 /* GoogleService-Info.plist */; }; + 724C02E629504D58B1E3E1C4 /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB4CCD694E13411AA978E1F4 /* noop-file.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 13B07F961A680F5B00A75B9A /* minuitstarter.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = minuitstarter.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = minuitstarter/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = minuitstarter/AppDelegate.mm; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = minuitstarter/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = minuitstarter/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = minuitstarter/main.m; sourceTree = ""; }; + 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-minuitstarter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-minuitstarter.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6C2E3173556A471DD304B334 /* Pods-minuitstarter.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-minuitstarter.debug.xcconfig"; path = "Target Support Files/Pods-minuitstarter/Pods-minuitstarter.debug.xcconfig"; sourceTree = ""; }; + 7A4D352CD337FB3A3BF06240 /* Pods-minuitstarter.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-minuitstarter.release.xcconfig"; path = "Target Support Files/Pods-minuitstarter/Pods-minuitstarter.release.xcconfig"; sourceTree = ""; }; + AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = minuitstarter/SplashScreen.storyboard; sourceTree = ""; }; + BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; }; + ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; + FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-minuitstarter/ExpoModulesProvider.swift"; sourceTree = ""; }; + 233FD88934724953B0CAFD13 /* GoogleService-Info.plist */ = {isa = PBXFileReference; name = "GoogleService-Info.plist"; path = "minuitstarter/GoogleService-Info.plist"; sourceTree = ""; fileEncoding = 4; lastKnownFileType = text.plist.xml; explicitFileType = undefined; includeInIndex = 0; }; + EB4CCD694E13411AA978E1F4 /* noop-file.swift */ = {isa = PBXFileReference; name = "noop-file.swift"; path = "minuitstarter/noop-file.swift"; sourceTree = ""; fileEncoding = 4; lastKnownFileType = sourcecode.swift; explicitFileType = undefined; includeInIndex = 0; }; + 900CF7F80C634C0FB32C45F6 /* minuitstarter-Bridging-Header.h */ = {isa = PBXFileReference; name = "minuitstarter-Bridging-Header.h"; path = "minuitstarter/minuitstarter-Bridging-Header.h"; sourceTree = ""; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; explicitFileType = undefined; includeInIndex = 0; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 96905EF65AED1B983A6B3ABC /* libPods-minuitstarter.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 13B07FAE1A68108700A75B9A /* minuitstarter */ = { + isa = PBXGroup; + children = ( + BB2F792B24A3F905000567C9 /* Supporting */, + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, + 13B07FB01A68108700A75B9A /* AppDelegate.mm */, + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 13B07FB71A68108700A75B9A /* main.m */, + AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */, + 233FD88934724953B0CAFD13 /* GoogleService-Info.plist */, + EB4CCD694E13411AA978E1F4 /* noop-file.swift */, + 900CF7F80C634C0FB32C45F6 /* minuitstarter-Bridging-Header.h */, + ); + name = minuitstarter; + sourceTree = ""; + }; + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, + 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-minuitstarter.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + ); + name = Libraries; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 13B07FAE1A68108700A75B9A /* minuitstarter */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, + D65327D7A22EEC0BE12398D9 /* Pods */, + D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* minuitstarter.app */, + ); + name = Products; + sourceTree = ""; + }; + 92DBD88DE9BF7D494EA9DA96 /* minuitstarter */ = { + isa = PBXGroup; + children = ( + FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */, + ); + name = minuitstarter; + sourceTree = ""; + }; + BB2F792B24A3F905000567C9 /* Supporting */ = { + isa = PBXGroup; + children = ( + BB2F792C24A3F905000567C9 /* Expo.plist */, + ); + name = Supporting; + path = minuitstarter/Supporting; + sourceTree = ""; + }; + D65327D7A22EEC0BE12398D9 /* Pods */ = { + isa = PBXGroup; + children = ( + 6C2E3173556A471DD304B334 /* Pods-minuitstarter.debug.xcconfig */, + 7A4D352CD337FB3A3BF06240 /* Pods-minuitstarter.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */ = { + isa = PBXGroup; + children = ( + 92DBD88DE9BF7D494EA9DA96 /* minuitstarter */, + ); + name = ExpoModulesProviders; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 13B07F861A680F5B00A75B9A /* minuitstarter */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "minuitstarter" */; + buildPhases = ( + 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */, + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = minuitstarter; + productName = minuitstarter; + productReference = 13B07F961A680F5B00A75B9A /* minuitstarter.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1130; + TargetAttributes = { + 13B07F861A680F5B00A75B9A = { + LastSwiftMigration = 1250; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "minuitstarter" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* minuitstarter */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BB2F792D24A3F905000567C9 /* Expo.plist in Resources */, + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */, + 86E87E7EF63547E884C7EE41 /* GoogleService-Info.plist in Resources */, + 5B79BC161B624D5A9880D7AA /* minuitstarter-Bridging-Header.h in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\nif [[ \"$CONFIGURATION\" = *Debug* ]]; then\n export SKIP_BUNDLING=1\nfi\nif [[ -z \"$ENTRY_FILE\" ]]; then\n # Set the entry JS file using the bundler's entry resolution.\n export ENTRY_FILE=\"$(\"$NODE_BINARY\" -e \"require('expo/scripts/resolveAppEntry')\" \"$PROJECT_ROOT\" ios absolute | tail -n 1)\"\nfi\n\nif [[ -z \"$CLI_PATH\" ]]; then\n # Use Expo CLI\n export CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require.resolve('@expo/cli', { paths: [require.resolve('expo/package.json')] })\")\"\nfi\nif [[ -z \"$BUNDLE_COMMAND\" ]]; then\n # Default Expo CLI command for bundling\n export BUNDLE_COMMAND=\"export:embed\"\nfi\n\n# Source .xcode.env.updates if it exists to allow\n# SKIP_BUNDLING to be unset if needed\nif [[ -f \"$PODS_ROOT/../.xcode.env.updates\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.updates\"\nfi\n# Source local changes to allow overrides\n# if needed\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n\n"; + }; + 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-minuitstarter-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-minuitstarter/Pods-minuitstarter-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/EXUpdates/EXUpdates.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXUpdates.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-minuitstarter/Pods-minuitstarter-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, + 13B07FC11A68108700A75B9A /* main.m in Sources */, + B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */, + 724C02E629504D58B1E3E1C4 /* noop-file.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6C2E3173556A471DD304B334 /* Pods-minuitstarter.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + ENABLE_BITCODE = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "FB_SONARKIT_ENABLED=1", + ); + INFOPLIST_FILE = minuitstarter/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.minuit.starter"; + PRODUCT_NAME = "minuitstarter"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + DEVELOPMENT_TEAM = W2QZ9CTMYJ; + TARGETED_DEVICE_FAMILY = "1,2"; + SWIFT_OBJC_BRIDGING_HEADER = minuitstarter/minuitstarter-Bridging-Header.h; + CODE_SIGN_ENTITLEMENTS = minuitstarter/minuitstarter.entitlements; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7A4D352CD337FB3A3BF06240 /* Pods-minuitstarter.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + INFOPLIST_FILE = minuitstarter/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MARKETING_VERSION = 1.0; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.minuit.starter"; + PRODUCT_NAME = "minuitstarter"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + DEVELOPMENT_TEAM = W2QZ9CTMYJ; + TARGETED_DEVICE_FAMILY = "1,2"; + SWIFT_OBJC_BRIDGING_HEADER = minuitstarter/minuitstarter-Bridging-Header.h; + CODE_SIGN_ENTITLEMENTS = minuitstarter/minuitstarter.entitlements; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LIBRARY_SEARCH_PATHS = "\"$(inherited)\""; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++20"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LIBRARY_SEARCH_PATHS = "\"$(inherited)\""; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "minuitstarter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "minuitstarter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/ios/minuitstarter.xcodeproj/xcshareddata/xcschemes/minuitstarter.xcscheme b/ios/minuitstarter.xcodeproj/xcshareddata/xcschemes/minuitstarter.xcscheme new file mode 100644 index 0000000..8480271 --- /dev/null +++ b/ios/minuitstarter.xcodeproj/xcshareddata/xcschemes/minuitstarter.xcscheme @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/minuitstarter/AppDelegate.h b/ios/minuitstarter/AppDelegate.h new file mode 100644 index 0000000..1658a43 --- /dev/null +++ b/ios/minuitstarter/AppDelegate.h @@ -0,0 +1,7 @@ +#import +#import +#import + +@interface AppDelegate : EXAppDelegateWrapper + +@end diff --git a/ios/minuitstarter/AppDelegate.mm b/ios/minuitstarter/AppDelegate.mm new file mode 100644 index 0000000..67adadf --- /dev/null +++ b/ios/minuitstarter/AppDelegate.mm @@ -0,0 +1,66 @@ +#import "AppDelegate.h" +#import + +#import +#import + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ +// @generated begin @react-native-firebase/app-didFinishLaunchingWithOptions - expo prebuild (DO NOT MODIFY) sync-ecd111c37e49fdd1ed6354203cd6b1e2a38cccda +[FIRApp configure]; +// @generated end @react-native-firebase/app-didFinishLaunchingWithOptions + self.moduleName = @"main"; + + // You can add your custom initial props in the dictionary below. + // They will be passed down to the ViewController used by React Native. + self.initialProps = @{}; + + return [super application:application didFinishLaunchingWithOptions:launchOptions]; +} + +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge +{ + return [self bundleURL]; +} + +- (NSURL *)bundleURL +{ +#if DEBUG + return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@".expo/.virtual-metro-entry"]; +#else + return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; +#endif +} + +// Linking API +- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options { + return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options]; +} + +// Universal Links +- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> * _Nullable))restorationHandler { + BOOL result = [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler]; + return [super application:application continueUserActivity:userActivity restorationHandler:restorationHandler] || result; +} + +// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries +- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken +{ + return [super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; +} + +// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries +- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error +{ + return [super application:application didFailToRegisterForRemoteNotificationsWithError:error]; +} + +// Explicitly define remote notification delegates to ensure compatibility with some third-party libraries +- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler +{ + return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; +} + +@end diff --git a/ios/minuitstarter/GoogleService-Info.plist b/ios/minuitstarter/GoogleService-Info.plist new file mode 100644 index 0000000..e3befd1 --- /dev/null +++ b/ios/minuitstarter/GoogleService-Info.plist @@ -0,0 +1,34 @@ + + + + + CLIENT_ID + 943006074419-h43c7p48nhn5f4td4oimv4dq7b1p3s29.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.943006074419-h43c7p48nhn5f4td4oimv4dq7b1p3s29 + API_KEY + AIzaSyAkl2RAzUCYTQCcYhSeij6-tXNk6z7121Y + GCM_SENDER_ID + 943006074419 + PLIST_VERSION + 1 + BUNDLE_ID + com.minuit.starter + PROJECT_ID + minuitcloud + STORAGE_BUCKET + minuitcloud.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:943006074419:ios:5deb4cce66c04c09658546 + + \ No newline at end of file diff --git a/ios/minuitstarter/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png b/ios/minuitstarter/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png new file mode 100644 index 0000000..1bc6f0d Binary files /dev/null and b/ios/minuitstarter/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png differ diff --git a/ios/minuitstarter/Images.xcassets/AppIcon.appiconset/Contents.json b/ios/minuitstarter/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..90d8d4c --- /dev/null +++ b/ios/minuitstarter/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,14 @@ +{ + "images": [ + { + "filename": "App-Icon-1024x1024@1x.png", + "idiom": "universal", + "platform": "ios", + "size": "1024x1024" + } + ], + "info": { + "version": 1, + "author": "expo" + } +} \ No newline at end of file diff --git a/ios/minuitstarter/Images.xcassets/Contents.json b/ios/minuitstarter/Images.xcassets/Contents.json new file mode 100644 index 0000000..ed285c2 --- /dev/null +++ b/ios/minuitstarter/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "expo" + } +} diff --git a/ios/minuitstarter/Images.xcassets/SplashScreenBackground.colorset/Contents.json b/ios/minuitstarter/Images.xcassets/SplashScreenBackground.colorset/Contents.json new file mode 100644 index 0000000..0f874bb --- /dev/null +++ b/ios/minuitstarter/Images.xcassets/SplashScreenBackground.colorset/Contents.json @@ -0,0 +1,26 @@ +{ + "colors": [ + { + "color": { + "components": { + "alpha": "1.000", + "blue": "0.0784313725490196", + "green": "0.0470588235294118", + "red": "0.0588235294117647" + }, + "color-space": "srgb" + }, + "idiom": "universal", + "appearances": [ + { + "appearance": "luminosity", + "value": "light" + } + ] + } + ], + "info": { + "version": 1, + "author": "expo" + } +} \ No newline at end of file diff --git a/ios/minuitstarter/Images.xcassets/SplashScreenLogo.imageset/Contents.json b/ios/minuitstarter/Images.xcassets/SplashScreenLogo.imageset/Contents.json new file mode 100644 index 0000000..94164eb --- /dev/null +++ b/ios/minuitstarter/Images.xcassets/SplashScreenLogo.imageset/Contents.json @@ -0,0 +1,41 @@ +{ + "images": [ + { + "idiom": "universal", + "appearances": [ + { + "appearance": "luminosity", + "value": "light" + } + ], + "filename": "image.png", + "scale": "1x" + }, + { + "idiom": "universal", + "appearances": [ + { + "appearance": "luminosity", + "value": "light" + } + ], + "filename": "image@2x.png", + "scale": "2x" + }, + { + "idiom": "universal", + "appearances": [ + { + "appearance": "luminosity", + "value": "light" + } + ], + "filename": "image@3x.png", + "scale": "3x" + } + ], + "info": { + "version": 1, + "author": "expo" + } +} \ No newline at end of file diff --git a/ios/minuitstarter/Images.xcassets/SplashScreenLogo.imageset/image.png b/ios/minuitstarter/Images.xcassets/SplashScreenLogo.imageset/image.png new file mode 100644 index 0000000..4984f30 Binary files /dev/null and b/ios/minuitstarter/Images.xcassets/SplashScreenLogo.imageset/image.png differ diff --git a/ios/minuitstarter/Images.xcassets/SplashScreenLogo.imageset/image@2x.png b/ios/minuitstarter/Images.xcassets/SplashScreenLogo.imageset/image@2x.png new file mode 100644 index 0000000..4984f30 Binary files /dev/null and b/ios/minuitstarter/Images.xcassets/SplashScreenLogo.imageset/image@2x.png differ diff --git a/ios/minuitstarter/Images.xcassets/SplashScreenLogo.imageset/image@3x.png b/ios/minuitstarter/Images.xcassets/SplashScreenLogo.imageset/image@3x.png new file mode 100644 index 0000000..4984f30 Binary files /dev/null and b/ios/minuitstarter/Images.xcassets/SplashScreenLogo.imageset/image@3x.png differ diff --git a/ios/minuitstarter/Info.plist b/ios/minuitstarter/Info.plist new file mode 100644 index 0000000..17560b3 --- /dev/null +++ b/ios/minuitstarter/Info.plist @@ -0,0 +1,106 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + minuit.starter + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 2024.04.1 + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleURLSchemes + + minuit + com.minuit.starter + + + + CFBundleURLSchemes + + com.googleusercontent.apps.943006074419-h43c7p48nhn5f4td4oimv4dq7b1p3s29 + + + + CFBundleURLSchemes + + exp+minuitstarter + + + + CFBundleVersion + 1 + ITSAppUsesNonExemptEncryption + + LSApplicationQueriesSchemes + + itms-apps + minuit + + LSMinimumSystemVersion + 12.0 + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + NSAllowsLocalNetworking + + + NSCameraUsageDescription + Nous avons besoin d'accéder à votre appareil photo pour vous permettre de prendre des photos de vos tâches. + NSLocationAlwaysAndWhenInUseUsageDescription + Allow $(PRODUCT_NAME) to access your location + NSLocationAlwaysUsageDescription + Allow $(PRODUCT_NAME) to access your location + NSLocationWhenInUseUsageDescription + Allow $(PRODUCT_NAME) to access your location + NSMicrophoneUsageDescription + Nous avons besoin d'accéder à votre microphone pour vous permettre d'enregistrer des messages vocaux pour vos tâches. + NSPhotoLibraryUsageDescription + Nous avons besoin d'accéder à votre galerie pour vous permettre d'ajouter des photos à vos tâches. + RCTRootViewBackgroundColor + 4279176212 + UILaunchStoryboardName + SplashScreen + UIRequiredDeviceCapabilities + + arm64 + + UIRequiresFullScreen + + UIStatusBarStyle + UIStatusBarStyleDefault + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIUserInterfaceStyle + Dark + UIViewControllerBasedStatusBarAppearance + + + \ No newline at end of file diff --git a/ios/minuitstarter/SplashScreen.storyboard b/ios/minuitstarter/SplashScreen.storyboard new file mode 100644 index 0000000..2e79a66 --- /dev/null +++ b/ios/minuitstarter/SplashScreen.storyboard @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ios/minuitstarter/Supporting/Expo.plist b/ios/minuitstarter/Supporting/Expo.plist new file mode 100644 index 0000000..750be02 --- /dev/null +++ b/ios/minuitstarter/Supporting/Expo.plist @@ -0,0 +1,12 @@ + + + + + EXUpdatesCheckOnLaunch + ALWAYS + EXUpdatesEnabled + + EXUpdatesLaunchWaitMs + 0 + + \ No newline at end of file diff --git a/ios/minuitstarter/main.m b/ios/minuitstarter/main.m new file mode 100644 index 0000000..25181b6 --- /dev/null +++ b/ios/minuitstarter/main.m @@ -0,0 +1,10 @@ +#import + +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} + diff --git a/ios/minuitstarter/minuitstarter-Bridging-Header.h b/ios/minuitstarter/minuitstarter-Bridging-Header.h new file mode 100644 index 0000000..e11d920 --- /dev/null +++ b/ios/minuitstarter/minuitstarter-Bridging-Header.h @@ -0,0 +1,3 @@ +// +// Use this file to import your target's public headers that you would like to expose to Swift. +// diff --git a/ios/minuitstarter/minuitstarter.entitlements b/ios/minuitstarter/minuitstarter.entitlements new file mode 100644 index 0000000..78fdbd8 --- /dev/null +++ b/ios/minuitstarter/minuitstarter.entitlements @@ -0,0 +1,12 @@ + + + + + aps-environment + development + com.apple.developer.associated-domains + + applinks:minuit.starter + + + \ No newline at end of file diff --git a/ios/minuitstarter/noop-file.swift b/ios/minuitstarter/noop-file.swift new file mode 100644 index 0000000..b2ffafb --- /dev/null +++ b/ios/minuitstarter/noop-file.swift @@ -0,0 +1,4 @@ +// +// @generated +// A blank Swift file must be created for native modules with Swift files to work correctly. +// diff --git a/metro.config.js b/metro.config.js new file mode 100644 index 0000000..10e63de --- /dev/null +++ b/metro.config.js @@ -0,0 +1,6 @@ +const { getDefaultConfig } = require("@expo/metro-config"); + +const config = getDefaultConfig(__dirname); +config.resolver.sourceExts.push("cjs", "mjs"); + +module.exports = config; diff --git a/package.json b/package.json new file mode 100644 index 0000000..4a5eb0e --- /dev/null +++ b/package.json @@ -0,0 +1,107 @@ +{ + "name": "minuit.starter", + "version": "1.0.0", + "scripts": { + "start": "expo start --dev-client", + "android": "expo run:android", + "ios": "expo run:ios", + "web": "expo start --web", + "postinstall": "patch-package", + "clean": "node cleanProject.js", + "build:web": "expo export -p web", + "build:desktop:dev": "npx pake-cli http://localhost:8081 --name minuitdev --iter-copy-file --icon ./assets/desktopIcon.icns", + "build:desktop:prod": "yarn build:web && npx pake-cli ./dist/index.html --name minuit --iter-copy-file --icon ./assets/desktopIcon.icns" + }, + "dependencies": { + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@expo-google-fonts/inter": "^0.4.1", + "@expo/config-plugins": "~9.0.0", + "@expo/metro-runtime": "~4.0.0", + "@expo/react-native-action-sheet": "^4.0.1", + "@gorhom/bottom-sheet": "^4", + "@gorhom/portal": "^1.0.14", + "@legendapp/motion": "^2.2.1", + "@notifee/react-native": "^7.7.1", + "@react-native-async-storage/async-storage": "1.23.1", + "@react-native-community/datetimepicker": "8.2.0", + "@react-native-community/hooks": "^3.0.0", + "@react-native-community/slider": "4.5.5", + "@react-native-firebase/app": "^21.6.1", + "@react-native-firebase/crashlytics": "^21.6.1", + "@react-native-firebase/firestore": "^21.6.1", + "@react-native-firebase/messaging": "^21.6.1", + "@react-native-masked-view/masked-view": "^0.3.2", + "@react-navigation/bottom-tabs": "^6.0.9", + "@react-navigation/core": "^6.1.0", + "@react-navigation/native": "^6.0.6", + "@react-navigation/stack": "^6.0.11", + "@stripe/react-stripe-js": "^2.5.0", + "@stripe/stripe-js": "^3.0.0", + "deprecated-react-native-prop-types": "^3.0.1", + "expo": "~52.0.17", + "expo-av": "~15.0.1", + "expo-blur": "~14.0.1", + "expo-build-properties": "~0.13.1", + "expo-constants": "~17.0.3", + "expo-dev-client": "~5.0.5", + "expo-document-picker": "~13.0.1", + "expo-font": "~13.0.1", + "expo-haptics": "~14.0.0", + "expo-image": "~2.0.3", + "expo-image-picker": "~16.0.3", + "expo-insights": "~0.8.1", + "expo-linear-gradient": "~14.0.1", + "expo-linking": "~7.0.3", + "expo-location": "~18.0.3", + "expo-speech": "~13.0.0", + "expo-splash-screen": "~0.29.16", + "expo-status-bar": "~2.0.0", + "expo-system-ui": "~4.0.5", + "firebase": "^9.20.0", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "numbro": "^2.3.6", + "patch-package": "^6.5.0", + "react": "18.3.1", + "react-dom": "18.3.1", + "react-native": "0.76.5", + "react-native-compressor": "^1.8.24", + "react-native-country-picker-modal": "^2.0.0", + "react-native-dialog": "^9.3.0", + "react-native-figma-squircle": "^0.3.4", + "react-native-gesture-handler": "~2.20.2", + "react-native-hyperlink": "^0.0.22", + "react-native-keyboard-aware-scroll-view": "^0.9.5", + "react-native-linear-gradient": "^2.8.3", + "react-native-minuit": "^1.3.52", + "react-native-reanimated": "~3.16.1", + "react-native-reanimated-carousel": "^4.0.0-alpha.8", + "react-native-responsive-dimensions": "^3.1.1", + "react-native-safe-area-context": "4.12.0", + "react-native-store-review": "^0.3.0", + "react-native-super-grid": "^5.0.0", + "react-native-svg": "15.8.0", + "react-native-web": "~0.19.6", + "react-native-web-linear-gradient": "^1.1.2", + "react-native-webview": "13.12.5", + "reactn": "^2.2.7", + "rxjs": "^7.6.0" + }, + "devDependencies": { + "@babel/core": "^7.20.5", + "@babel/parser": "^7.25.6", + "@babel/traverse": "^7.25.6", + "imagemin": "^9.0.0", + "imagemin-gifsicle": "^7.0.0", + "imagemin-jpegtran": "^7.0.0", + "imagemin-optipng": "^8.0.0", + "imagemin-svgo": "^11.0.1", + "typescript": "^5.3.3" + }, + "resolutions": { + "firebase": "^9.20.0", + "react-error-overlay": "6.0.9", + "use-force-update": "1.0.8" + }, + "private": true +} diff --git a/patches/@react-native-community+datetimepicker+7.6.1.patch b/patches/@react-native-community+datetimepicker+7.6.1.patch new file mode 100644 index 0000000..1fd74e3 --- /dev/null +++ b/patches/@react-native-community+datetimepicker+7.6.1.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/@react-native-community/datetimepicker/ios/RNDateTimePickerShadowView.m b/node_modules/@react-native-community/datetimepicker/ios/RNDateTimePickerShadowView.m +index c139440..45a97dd 100644 +--- a/node_modules/@react-native-community/datetimepicker/ios/RNDateTimePickerShadowView.m ++++ b/node_modules/@react-native-community/datetimepicker/ios/RNDateTimePickerShadowView.m +@@ -41,7 +40,7 @@ - (void)setTimeZoneName:(NSString *)timeZoneName { + YGNodeMarkDirty(self.yogaNode); + } + +-static YGSize RNDateTimePickerShadowViewMeasure(YGNodeRef node, float width, YGMeasureMode widthMode, float height, YGMeasureMode heightMode) ++static YGSize RNDateTimePickerShadowViewMeasure(YGNodeConstRef node, float width, YGMeasureMode widthMode, float height, YGMeasureMode heightMode) + { + RNDateTimePickerShadowView *shadowPickerView = (__bridge RNDateTimePickerShadowView *)YGNodeGetContext(node); + diff --git a/patches/react-async-hook+3.6.1.patch b/patches/react-async-hook+3.6.1.patch new file mode 100644 index 0000000..33f4de4 --- /dev/null +++ b/patches/react-async-hook+3.6.1.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/react-async-hook/package.json b/node_modules/react-async-hook/package.json +index d881745..3ba7d1d 100644 +--- a/node_modules/react-async-hook/package.json ++++ b/node_modules/react-async-hook/package.json +@@ -31,7 +31,7 @@ + "npm": ">=5" + }, + "main": "dist/index.js", +- "module": "react-async-hook.esm.js", ++ "module": "dist/react-async-hook.esm.js", + "typings": "dist/index.d.ts", + "files": [ + "dist" diff --git a/src/actions/dateActions.js b/src/actions/dateActions.js new file mode 100644 index 0000000..8e2b92b --- /dev/null +++ b/src/actions/dateActions.js @@ -0,0 +1,18 @@ +import moment from 'moment'; + +export const validateDate = (date = null) => { + if (!date) { + return null; + } + if (moment(date).isValid()) { + return date; + } + if (typeof date?.toDate === 'function') { + return date?.toDate(); + } + return null; +}; + +export function getAge(birthDate) { + return moment().diff(birthDate.toDate(), 'years', false); +} diff --git a/src/actions/responsiveSizes.js b/src/actions/responsiveSizes.js new file mode 100644 index 0000000..b31bdd8 --- /dev/null +++ b/src/actions/responsiveSizes.js @@ -0,0 +1,40 @@ +import { + responsiveHeight as _responsiveHeight, + responsiveWidth as _responsiveWidth, + responsiveFontSize as _responsiveFontSize, +} from "react-native-responsive-dimensions"; + +import { + isWeb, + isDesktop, + isLargeDesktop, + isSmallDesktop, + isSuperSmallDesktop, +} from "../hooks/useLayoutType"; + +export const reductionCoeff = (bypass) => + bypass ? 1 : isLargeDesktop ? 3 : isSmallDesktop ? 2.2 : isDesktop ? 2.8 : 1; + +export const responsiveHeight = (height, bypass = false) => { + return _responsiveHeight(height) / reductionCoeff(bypass); +}; + +export const responsiveWidth = (width, bypass = false) => { + return _responsiveWidth(width) / reductionCoeff(bypass); +}; + +export const responsiveFontSize = (fontSize, bypass = false) => { + if (isWeb) { + if (isSuperSmallDesktop) { + return fontSize * 6; + } else if (isSmallDesktop) { + return fontSize * 7; + } else { + return fontSize * 7.5; + } + } else { + return _responsiveFontSize(fontSize) / reductionCoeff(bypass); + } +}; + +// test diff --git a/src/actions/signupActions.js b/src/actions/signupActions.js new file mode 100644 index 0000000..ce062bd --- /dev/null +++ b/src/actions/signupActions.js @@ -0,0 +1,74 @@ +export function checkIfEmailIsValid({ email }) { + let regex = new RegExp( + "([!#-'*+/-9=?A-Z^-~-]+(.[!#-'*+/-9=?A-Z^-~-]+)*|\"([]!#-[^-~ \t]|(\\[\t -~]))+\")@([!#-'*+/-9=?A-Z^-~-]+(.[!#-'*+/-9=?A-Z^-~-]+)*|[[\t -Z^-~]*])" + ); + return regex.test(email); +} + +export function checkIfPasswordIsStrongEnough({ password }) { + const reg = + /^(((?=.*[a-z])(?=.*[A-Z]))|((?=.*[a-z])(?=.*[0-9]))|((?=.*[A-Z])(?=.*[0-9])))(?=.{6,})/; + return reg.test(password); +} + +export const formatPhoneNumber = ({ phoneNumber = null }) => { + if (!phoneNumber) { + return null; + } + let newPhoneNumber = phoneNumber; + + newPhoneNumber = newPhoneNumber + .trim() + .replace(/\s+/g, "") // remove spaces + .replace(/\D/g, ""); // remove non digits + + if (newPhoneNumber.startsWith("330")) { + newPhoneNumber = newPhoneNumber.substring(2); + } + if (newPhoneNumber.startsWith("06") || newPhoneNumber.startsWith("07")) { + newPhoneNumber = `+33${newPhoneNumber.slice(1)}`; + } else if ( + newPhoneNumber.startsWith("336") || + newPhoneNumber.startsWith("337") + ) { + newPhoneNumber = `+${newPhoneNumber}`; + } else { + newPhoneNumber = null; + } + return newPhoneNumber; +}; + +export function handleFirebaseError(code) { + switch (code) { + case "auth/user-not-found": + return "Ce compte n'existe pas."; + case "auth/invalid-verification-code": + return "Votre code de validation est incorrect."; + case "auth/provider-already-linked": + return "Ce compte est déjà lié à un utilisateur."; + case "auth/invalid-credential": + return "Identifiants incorrects."; + case "auth/invalid-login-credentials": + return "Identifiants incorrects."; + case "auth/credential-already-in-use": + return "Ce compte existe déjà ou est déjà lié."; + case "auth/operation-not-allowed": + return "Le provider n'est pas activé."; + case "auth/invalid-email": + return "Email invalide."; + case "auth/wrong-password": + return "Mot de passe incorrect."; + case "auth/invalid-verification-id": + return "Impossible de vous authentifié, réessayez dans quelques secondes."; + case "auth/invalid-phone-number": + return "Numéro de téléphone incorrect."; + case "auth/too-many-requests": + return "Nous avons détecté une activité inhabituelle et avons bloqué momentanément votre requête, réessayez dans quelques minutes."; + case "auth/email-already-in-use": + return "Il y a déjà un compte avec cette adresse mail."; + case "auth/missing-password": + return "Veuillez entrer un mot de passe."; + default: + return code; + } +} diff --git a/src/assets/UI/add.png b/src/assets/UI/add.png new file mode 100644 index 0000000..491f2a5 Binary files /dev/null and b/src/assets/UI/add.png differ diff --git a/src/assets/UI/addFile.png b/src/assets/UI/addFile.png new file mode 100644 index 0000000..60a8761 Binary files /dev/null and b/src/assets/UI/addFile.png differ diff --git a/src/assets/UI/android.png b/src/assets/UI/android.png new file mode 100644 index 0000000..ef7ce85 Binary files /dev/null and b/src/assets/UI/android.png differ diff --git a/src/assets/UI/arrowRight.png b/src/assets/UI/arrowRight.png new file mode 100644 index 0000000..c4e1a8b Binary files /dev/null and b/src/assets/UI/arrowRight.png differ diff --git a/src/assets/UI/attachment.png b/src/assets/UI/attachment.png new file mode 100644 index 0000000..3c59a1f Binary files /dev/null and b/src/assets/UI/attachment.png differ diff --git a/src/assets/UI/bell.png b/src/assets/UI/bell.png new file mode 100644 index 0000000..415d01f Binary files /dev/null and b/src/assets/UI/bell.png differ diff --git a/src/assets/UI/check.png b/src/assets/UI/check.png new file mode 100644 index 0000000..457ef91 Binary files /dev/null and b/src/assets/UI/check.png differ diff --git a/src/assets/UI/checkCircle.png b/src/assets/UI/checkCircle.png new file mode 100644 index 0000000..ffc771b Binary files /dev/null and b/src/assets/UI/checkCircle.png differ diff --git a/src/assets/UI/chevronDown.png b/src/assets/UI/chevronDown.png new file mode 100644 index 0000000..ce1df29 Binary files /dev/null and b/src/assets/UI/chevronDown.png differ diff --git a/src/assets/UI/deliveryTime.png b/src/assets/UI/deliveryTime.png new file mode 100644 index 0000000..f23ca06 Binary files /dev/null and b/src/assets/UI/deliveryTime.png differ diff --git a/src/assets/UI/edit.png b/src/assets/UI/edit.png new file mode 100644 index 0000000..4cbb968 Binary files /dev/null and b/src/assets/UI/edit.png differ diff --git a/src/assets/UI/eye.png b/src/assets/UI/eye.png new file mode 100644 index 0000000..2bb4b3e Binary files /dev/null and b/src/assets/UI/eye.png differ diff --git a/src/assets/UI/focus.png b/src/assets/UI/focus.png new file mode 100644 index 0000000..4d92949 Binary files /dev/null and b/src/assets/UI/focus.png differ diff --git a/src/assets/UI/instagram.png b/src/assets/UI/instagram.png new file mode 100644 index 0000000..e782b86 Binary files /dev/null and b/src/assets/UI/instagram.png differ diff --git a/src/assets/UI/ios.png b/src/assets/UI/ios.png new file mode 100644 index 0000000..658f224 Binary files /dev/null and b/src/assets/UI/ios.png differ diff --git a/src/assets/UI/law.png b/src/assets/UI/law.png new file mode 100644 index 0000000..ae5ab25 Binary files /dev/null and b/src/assets/UI/law.png differ diff --git a/src/assets/UI/lock.png b/src/assets/UI/lock.png new file mode 100644 index 0000000..226e0ac Binary files /dev/null and b/src/assets/UI/lock.png differ diff --git a/src/assets/UI/message.png b/src/assets/UI/message.png new file mode 100644 index 0000000..e365285 Binary files /dev/null and b/src/assets/UI/message.png differ diff --git a/src/assets/UI/nathalie.png b/src/assets/UI/nathalie.png new file mode 100644 index 0000000..10a2a56 Binary files /dev/null and b/src/assets/UI/nathalie.png differ diff --git a/src/assets/UI/picture.png b/src/assets/UI/picture.png new file mode 100644 index 0000000..2b17e75 Binary files /dev/null and b/src/assets/UI/picture.png differ diff --git a/src/assets/UI/placeholder.jpg b/src/assets/UI/placeholder.jpg new file mode 100644 index 0000000..3b98f23 Binary files /dev/null and b/src/assets/UI/placeholder.jpg differ diff --git a/src/assets/UI/screenshot.png b/src/assets/UI/screenshot.png new file mode 100644 index 0000000..c41ec45 Binary files /dev/null and b/src/assets/UI/screenshot.png differ diff --git a/src/assets/UI/search.png b/src/assets/UI/search.png new file mode 100644 index 0000000..0489733 Binary files /dev/null and b/src/assets/UI/search.png differ diff --git a/src/assets/UI/send.png b/src/assets/UI/send.png new file mode 100644 index 0000000..03c5b15 Binary files /dev/null and b/src/assets/UI/send.png differ diff --git a/src/assets/UI/shoppingBag.png b/src/assets/UI/shoppingBag.png new file mode 100644 index 0000000..dff1a7d Binary files /dev/null and b/src/assets/UI/shoppingBag.png differ diff --git a/src/assets/UI/sort.png b/src/assets/UI/sort.png new file mode 100644 index 0000000..9d9cb09 Binary files /dev/null and b/src/assets/UI/sort.png differ diff --git a/src/assets/UI/studioBG.png b/src/assets/UI/studioBG.png new file mode 100644 index 0000000..be7179f Binary files /dev/null and b/src/assets/UI/studioBG.png differ diff --git a/src/assets/UI/studioBG2.png b/src/assets/UI/studioBG2.png new file mode 100644 index 0000000..01674c7 Binary files /dev/null and b/src/assets/UI/studioBG2.png differ diff --git a/src/assets/UI/support.png b/src/assets/UI/support.png new file mode 100644 index 0000000..f0ecb52 Binary files /dev/null and b/src/assets/UI/support.png differ diff --git a/src/assets/UI/tabs/chat.png b/src/assets/UI/tabs/chat.png new file mode 100644 index 0000000..6b56096 Binary files /dev/null and b/src/assets/UI/tabs/chat.png differ diff --git a/src/assets/UI/tabs/design.png b/src/assets/UI/tabs/design.png new file mode 100644 index 0000000..e929034 Binary files /dev/null and b/src/assets/UI/tabs/design.png differ diff --git a/src/assets/UI/tabs/home.png b/src/assets/UI/tabs/home.png new file mode 100644 index 0000000..e5558a3 Binary files /dev/null and b/src/assets/UI/tabs/home.png differ diff --git a/src/assets/UI/tabs/quotes.png b/src/assets/UI/tabs/quotes.png new file mode 100644 index 0000000..2b487e9 Binary files /dev/null and b/src/assets/UI/tabs/quotes.png differ diff --git a/src/assets/UI/tabs/settings.png b/src/assets/UI/tabs/settings.png new file mode 100644 index 0000000..03ba53e Binary files /dev/null and b/src/assets/UI/tabs/settings.png differ diff --git a/src/assets/UI/tabs/tasks.png b/src/assets/UI/tabs/tasks.png new file mode 100644 index 0000000..3446e96 Binary files /dev/null and b/src/assets/UI/tabs/tasks.png differ diff --git a/src/assets/UI/theo.png b/src/assets/UI/theo.png new file mode 100644 index 0000000..6e6216f Binary files /dev/null and b/src/assets/UI/theo.png differ diff --git a/src/assets/UI/threeDots.png b/src/assets/UI/threeDots.png new file mode 100644 index 0000000..7910ea5 Binary files /dev/null and b/src/assets/UI/threeDots.png differ diff --git a/src/assets/UI/thumbDown.png b/src/assets/UI/thumbDown.png new file mode 100644 index 0000000..35b39ff Binary files /dev/null and b/src/assets/UI/thumbDown.png differ diff --git a/src/assets/UI/thumbUp.png b/src/assets/UI/thumbUp.png new file mode 100644 index 0000000..ca46dc1 Binary files /dev/null and b/src/assets/UI/thumbUp.png differ diff --git a/src/assets/UI/tools.png b/src/assets/UI/tools.png new file mode 100644 index 0000000..3cf0db2 Binary files /dev/null and b/src/assets/UI/tools.png differ diff --git a/src/assets/UI/trash.png b/src/assets/UI/trash.png new file mode 100644 index 0000000..d36aa1e Binary files /dev/null and b/src/assets/UI/trash.png differ diff --git a/src/assets/UI/undo.png b/src/assets/UI/undo.png new file mode 100644 index 0000000..40d77bf Binary files /dev/null and b/src/assets/UI/undo.png differ diff --git a/src/assets/UI/user.png b/src/assets/UI/user.png new file mode 100644 index 0000000..0a4a3b3 Binary files /dev/null and b/src/assets/UI/user.png differ diff --git a/src/assets/UI/web.png b/src/assets/UI/web.png new file mode 100644 index 0000000..055a458 Binary files /dev/null and b/src/assets/UI/web.png differ diff --git a/src/assets/UI/writingBG.png b/src/assets/UI/writingBG.png new file mode 100644 index 0000000..62b5cea Binary files /dev/null and b/src/assets/UI/writingBG.png differ diff --git a/src/assets/art/boost.png b/src/assets/art/boost.png new file mode 100644 index 0000000..c2f96e4 Binary files /dev/null and b/src/assets/art/boost.png differ diff --git a/src/assets/art/boostBig.png b/src/assets/art/boostBig.png new file mode 100644 index 0000000..aee33e3 Binary files /dev/null and b/src/assets/art/boostBig.png differ diff --git a/src/assets/art/circle.png b/src/assets/art/circle.png new file mode 100644 index 0000000..463ee25 Binary files /dev/null and b/src/assets/art/circle.png differ diff --git a/src/assets/art/coin.png b/src/assets/art/coin.png new file mode 100644 index 0000000..564841e Binary files /dev/null and b/src/assets/art/coin.png differ diff --git a/src/assets/art/gradientTriangle.png b/src/assets/art/gradientTriangle.png new file mode 100644 index 0000000..cd84da8 Binary files /dev/null and b/src/assets/art/gradientTriangle.png differ diff --git a/src/assets/art/orbe/1.png b/src/assets/art/orbe/1.png new file mode 100644 index 0000000..1271ffb Binary files /dev/null and b/src/assets/art/orbe/1.png differ diff --git a/src/assets/art/orbe/2.png b/src/assets/art/orbe/2.png new file mode 100644 index 0000000..361cd00 Binary files /dev/null and b/src/assets/art/orbe/2.png differ diff --git a/src/assets/art/orbe/3.png b/src/assets/art/orbe/3.png new file mode 100644 index 0000000..cfb77d8 Binary files /dev/null and b/src/assets/art/orbe/3.png differ diff --git a/src/assets/art/square.png b/src/assets/art/square.png new file mode 100644 index 0000000..5aec6b0 Binary files /dev/null and b/src/assets/art/square.png differ diff --git a/src/assets/art/threeCoins.png b/src/assets/art/threeCoins.png new file mode 100644 index 0000000..831c452 Binary files /dev/null and b/src/assets/art/threeCoins.png differ diff --git a/src/assets/art/triangle.png b/src/assets/art/triangle.png new file mode 100644 index 0000000..8db94cf Binary files /dev/null and b/src/assets/art/triangle.png differ diff --git a/src/assets/fonts/NewYork-Semibold.ttf b/src/assets/fonts/NewYork-Semibold.ttf new file mode 100755 index 0000000..a217a0d Binary files /dev/null and b/src/assets/fonts/NewYork-Semibold.ttf differ diff --git a/src/assets/fonts/OpenSans-Regular.ttf b/src/assets/fonts/OpenSans-Regular.ttf new file mode 100644 index 0000000..29bfd35 Binary files /dev/null and b/src/assets/fonts/OpenSans-Regular.ttf differ diff --git a/src/assets/icons/algolia.png b/src/assets/icons/algolia.png new file mode 100644 index 0000000..1f32efd Binary files /dev/null and b/src/assets/icons/algolia.png differ diff --git a/src/assets/icons/cloud.png b/src/assets/icons/cloud.png new file mode 100644 index 0000000..23219ee Binary files /dev/null and b/src/assets/icons/cloud.png differ diff --git a/src/assets/icons/dashboard.png b/src/assets/icons/dashboard.png new file mode 100644 index 0000000..c7fe3a2 Binary files /dev/null and b/src/assets/icons/dashboard.png differ diff --git a/src/assets/icons/disk.png b/src/assets/icons/disk.png new file mode 100644 index 0000000..2844b14 Binary files /dev/null and b/src/assets/icons/disk.png differ diff --git a/src/assets/icons/figma.png b/src/assets/icons/figma.png new file mode 100644 index 0000000..89fd1de Binary files /dev/null and b/src/assets/icons/figma.png differ diff --git a/src/assets/icons/file.png b/src/assets/icons/file.png new file mode 100644 index 0000000..9ef3c5d Binary files /dev/null and b/src/assets/icons/file.png differ diff --git a/src/assets/icons/gitlab.png b/src/assets/icons/gitlab.png new file mode 100644 index 0000000..a6bc210 Binary files /dev/null and b/src/assets/icons/gitlab.png differ diff --git a/src/assets/icons/musicLandLogo.png b/src/assets/icons/musicLandLogo.png new file mode 100644 index 0000000..57bc401 Binary files /dev/null and b/src/assets/icons/musicLandLogo.png differ diff --git a/src/assets/icons/play.png b/src/assets/icons/play.png new file mode 100644 index 0000000..a193ec5 Binary files /dev/null and b/src/assets/icons/play.png differ diff --git a/src/assets/icons/stars.png b/src/assets/icons/stars.png new file mode 100644 index 0000000..95dbb1f Binary files /dev/null and b/src/assets/icons/stars.png differ diff --git a/src/assets/index.js b/src/assets/index.js new file mode 100644 index 0000000..1130b91 --- /dev/null +++ b/src/assets/index.js @@ -0,0 +1,185 @@ +import home from "./UI/tabs/home.png"; +import tasks from "./UI/tabs/tasks.png"; +import chat from "./UI/tabs/chat.png"; +import design from "./UI/tabs/design.png"; +import quotes from "./UI/tabs/quotes.png"; +import settings from "./UI/tabs/settings.png"; + +export const tabs = { + home, + tasks, + settings, + quotes, + chat, + design, +}; + +import bell from "./UI/bell.png"; +import sort from "./UI/sort.png"; + +import chevronDown from "./UI/chevronDown.png"; +import arrowRight from "./UI/arrowRight.png"; +import threeDots from "./UI/threeDots.png"; + +import thumbUp from "./UI/thumbUp.png"; +import thumbDown from "./UI/thumbDown.png"; + +import add from "./UI/add.png"; +import search from "./UI/search.png"; +import addFile from "./UI/addFile.png"; +import send from "./UI/send.png"; +import eye from "./UI/eye.png"; +import edit from "./UI/edit.png"; +import trash from "./UI/trash.png"; +import message from "./UI/message.png"; +import check from "./UI/check.png"; +import checkCircle from "./UI/checkCircle.png"; +import undo from "./UI/undo.png"; +import shoppingBag from "./UI/shoppingBag.png"; +import lock from "./UI/lock.png"; +import deliveryTime from "./UI/deliveryTime.png"; +import tools from "./UI/tools.png"; + +import picture from "./UI/picture.png"; +import screenshot from "./UI/screenshot.png"; +import focus from "./UI/focus.png"; + +import android from "./UI/android.png"; +import ios from "./UI/ios.png"; +import web from "./UI/web.png"; + +import user from "./UI/user.png"; +import law from "./UI/law.png"; +import support from "./UI/support.png"; + +import attachment from "./UI/attachment.png"; + +import cloud from "./icons/cloud.png"; +import dashboard from "./icons/dashboard.png"; +import file from "./icons/file.png"; + +import figma from "./icons/figma.png"; +import gitlab from "./icons/gitlab.png"; +import algolia from "./icons/algolia.png"; +import play from "./icons/play.png"; +import disk from "./icons/disk.png"; +import stars from "./icons/stars.png"; +import musicLandLogo from "./icons/musicLandLogo.png"; + +export const icons = { + bell, + sort, + + chevronDown, + arrowRight, + threeDots, + + thumbUp, + thumbDown, + + add, + search, + addFile, + send, + eye, + edit, + trash, + message, + check, + checkCircle, + undo, + shoppingBag, + lock, + deliveryTime, + tools, + + screenshot, + picture, + attachment, + focus, + + android, + ios, + web, + + cloud, + dashboard, + file, + + figma, + gitlab, + algolia, + + user, + law, + support, + play, + disk, + stars, + musicLandLogo, +}; + +import triangle from "./art/triangle.png"; +import circle from "./art/circle.png"; +import square from "./art/square.png"; +import gradientTriangle from "./art/gradientTriangle.png"; + +import coin from "./art/coin.png"; +import threeCoins from "./art/threeCoins.png"; +import boost from "./art/boost.png"; +import boostBig from "./art/boostBig.png"; + +export const art = { + triangle, + circle, + square, + gradientTriangle, + coin, + threeCoins, + boost, + boostBig, +}; + +import welcome from "./tutorial/welcome.png"; +import tutorialChat from "./tutorial/chat.png"; +import coins from "./tutorial/coins.png"; +import followProgress from "./tutorial/followProgress.png"; +import tutorialTasks from "./tutorial/tasks.png"; + +export const tutorial = { + welcome, + chat: tutorialChat, + coins, + followProgress, + tasks: tutorialTasks, +}; + +import loginAppDashboard from "./mockups/loginAppDashboard.png"; + +export const mockups = { + loginAppDashboard, +}; + +import writingBG from "./UI/writingBG.png"; +import studioBG from "./UI/studioBG.png"; +import studioBG2 from "./UI/studioBG2.png"; + +export const background = { + writingBG, + studioBG, + studioBG2, +}; + +import nathalie from "./UI/nathalie.png"; +import theo from "./UI/theo.png"; + +export const ai = { + nathalie, + theo, +}; + +import placeholder from "./UI/placeholder.jpg"; + +export const img = { + placeholder, +}; diff --git a/src/assets/mockups/loginAppDashboard.png b/src/assets/mockups/loginAppDashboard.png new file mode 100644 index 0000000..44bf218 Binary files /dev/null and b/src/assets/mockups/loginAppDashboard.png differ diff --git a/src/assets/tutorial/chat.png b/src/assets/tutorial/chat.png new file mode 100644 index 0000000..2521a31 Binary files /dev/null and b/src/assets/tutorial/chat.png differ diff --git a/src/assets/tutorial/coins.png b/src/assets/tutorial/coins.png new file mode 100644 index 0000000..d81ca26 Binary files /dev/null and b/src/assets/tutorial/coins.png differ diff --git a/src/assets/tutorial/followProgress.png b/src/assets/tutorial/followProgress.png new file mode 100644 index 0000000..4ee6c8d Binary files /dev/null and b/src/assets/tutorial/followProgress.png differ diff --git a/src/assets/tutorial/tasks.png b/src/assets/tutorial/tasks.png new file mode 100644 index 0000000..360edb0 Binary files /dev/null and b/src/assets/tutorial/tasks.png differ diff --git a/src/assets/tutorial/welcome.png b/src/assets/tutorial/welcome.png new file mode 100644 index 0000000..7d959c4 Binary files /dev/null and b/src/assets/tutorial/welcome.png differ diff --git a/src/common/constants.js b/src/common/constants.js new file mode 100644 index 0000000..443da01 --- /dev/null +++ b/src/common/constants.js @@ -0,0 +1,9 @@ +import {Dimensions} from 'react-native'; +import {resWidth} from '../styles'; + +const {width: DIMENSION_WIDTH, height: DIMENSION_HEIGHT} = + Dimensions.get('screen'); + +const BOTTOM_BAR_HEIGHT = resWidth(80); + +export {DIMENSION_WIDTH, DIMENSION_HEIGHT, BOTTOM_BAR_HEIGHT}; diff --git a/src/common/index.js b/src/common/index.js new file mode 100644 index 0000000..c94f80f --- /dev/null +++ b/src/common/index.js @@ -0,0 +1 @@ +export * from './constants'; diff --git a/src/components/Alert.js b/src/components/Alert.js new file mode 100644 index 0000000..0909e07 --- /dev/null +++ b/src/components/Alert.js @@ -0,0 +1,110 @@ +import React, { useState } from "react"; +import { Alert, Platform, View, Text } from "react-native"; +import { PortalProvider } from "@gorhom/portal"; + +import { Fonts, Style, gutters } from "../styles"; + +import Overlay from "./Overlay"; +import Button from "./Button"; + +const WebAlertModal = ({ title, description, options }) => { + const [visible, setVisible] = useState(true); + + const confirmOption = options?.find(({ style }) => style !== "cancel"); + const cancelOption = options?.find(({ style }) => style === "cancel"); + + const onConfirm = () => { + setVisible(false); + confirmOption?.onPress(); + }; + + const onCancel = () => { + setVisible(false); + cancelOption?.onPress(); + }; + + return ( + + + + + {title} + + + {description} + + + onCancel(), + } + : null + } + /> + + + + ); +}; + +const alertPolyfill = (title, description, options, extra) => { + const rootDiv = document.createElement("div"); + document.body.appendChild(rootDiv); + + const closeModal = () => { + document.body.removeChild(rootDiv); + }; + + const WebAlertComponent = () => ( + + ); + + // Render the React component into the div + require("react-dom").render(, rootDiv); +}; + +const customAlert = (title, description, options, extra) => { + // Utilisation de la propriété userInterfaceStyle pour le mettre en mode sombre + Alert.alert(title, description, options, { + ...extra, + userInterfaceStyle: "dark", + }); +}; + +const alert = Platform.OS === "web" ? alertPolyfill : customAlert; + +export default alert; diff --git a/src/components/Avatar.js b/src/components/Avatar.js new file mode 100644 index 0000000..8013afa --- /dev/null +++ b/src/components/Avatar.js @@ -0,0 +1,74 @@ +import { Text, View } from "react-native"; +import { Image } from "expo-image"; +import { responsiveWidth } from "../actions/responsiveSizes.js"; +import { formatImageURL, getInitials } from "../helpers"; +import { Fonts, Palette, Style } from "../styles"; +import Badge from "./Badge.js"; + +export default ({ + name = "", + url = null, + size = responsiveWidth(7), + containerStyle = {}, + forceRawImage = false, + badge = {}, +}) => { + const uniqColorById = (uniqId = "test") => { + // Calculer un nombre unique à partir de l'ID de l'employé + let uniqueNumber = 0; + + for (let i = 0; i < uniqId?.length; i++) { + uniqueNumber += uniqId.charCodeAt(i); + } + + // génère des couleurs pastels claires + const color = `hsl(${uniqueNumber % 360}, 100%, 90%)`; + + return color; + }; + + return ( + + + {url ? ( + + ) : ( + + {getInitials(name)} + + )} + + + + ); +}; diff --git a/src/components/Badge.js b/src/components/Badge.js new file mode 100644 index 0000000..d8f9062 --- /dev/null +++ b/src/components/Badge.js @@ -0,0 +1,49 @@ +import { Motion } from "@legendapp/motion"; + +import { Fonts, Palette, Style } from "../styles"; + +const Badge = ({ + count = 0, + size = 20, + customContent = null, + backgroundColor = null, +} = {}) => { + if (!count && !customContent) { + return null; + } + + return ( + + {customContent ? ( + customContent() + ) : ( + + {count} + + )} + + ); +}; + +export default Badge; diff --git a/src/components/BaseHeader.js b/src/components/BaseHeader.js new file mode 100644 index 0000000..cd578a7 --- /dev/null +++ b/src/components/BaseHeader.js @@ -0,0 +1,61 @@ +import React from "reactn"; +import { Image, Pressable, Text, View } from "react-native"; +import { responsiveWidth } from "../actions/responsiveSizes.js"; + +import { icons } from "../assets"; +import { Fonts, Style, gutters } from "../styles"; + +import { Routes } from "../navigation"; +import { navigate } from "../navigation/NavigationService"; + +import useLayoutType, { sidebarWidth } from "../hooks/useLayoutType.js"; + +export default ({ title = "", containerStyle = {} }) => { + const { isDesktop } = useLayoutType(); + + return ( + + + + {title} + + + + + navigate(Routes.Notifications)}> + + + + + + + ); +}; diff --git a/src/components/BorderGradient/BorderGradient.js b/src/components/BorderGradient/BorderGradient.js new file mode 100644 index 0000000..44197ec --- /dev/null +++ b/src/components/BorderGradient/BorderGradient.js @@ -0,0 +1,26 @@ +import { StyleSheet, View } from "react-native"; + +import { GradientBorderView } from "../GradientBorderView"; + +const BorderGradient = ({ children, gradientProps, ...props }) => { + return ( + + + {children} + ); + +}; + +export default BorderGradient; + +const styles = StyleSheet.create({ + innerContainer: { + flex: 1, + } +}); \ No newline at end of file diff --git a/src/components/BorderGradient/BorderGradient.web.js b/src/components/BorderGradient/BorderGradient.web.js new file mode 100644 index 0000000..ea3f10f --- /dev/null +++ b/src/components/BorderGradient/BorderGradient.web.js @@ -0,0 +1,135 @@ +import { StyleSheet, View } from "react-native"; +import { useState } from "react"; + +const BorderGradient = ({ children, gradientProps, ...props }) => { + const defaultGradientProps = { + start: { + x: 0.5, + y: 0 + }, + end: { + x: 0.5, + y: 1 + }, + locations: [], + colors: [], + useAngle: false, + angle: 0 + }; + + const { locations, end, start, useAngle, angle, onLayout, colors } = + gradientProps; + + const { + style, + borderWidth, + borderRadius, + borderTopRightRadius, + borderTopLeftRadius, + borderBottomLeftRadius, + borderBottomRightRadius, + borderTopWidth, + borderLeftWidth, + borderRightWidth, + borderBottomWidth + } = props; + + const propStart = start ?? defaultGradientProps?.start; + const propEnd = end ?? defaultGradientProps?.end; + + const [state, setState] = useState({ + width: 1, + height: 1 + }); + + const measure = (event) => { + setState({ + width: event.nativeEvent.layout.width, + height: event.nativeEvent.layout.height + }); + if (onLayout) { + onLayout(event); + } + }; + + const getAngle = () => { + if (useAngle) { + return angle + "deg"; + } + + // Math.atan2 handles Infinity + const _angle = + Math.atan2( + state.width * (propEnd.y - propStart.y), + state.height * (propEnd.x - propStart.x) + ) + + Math.PI / 2; + return _angle + "rad"; + }; + + const getColors = () => + colors. + map((color, index) => { + const location = locations?.[index] ?? defaultGradientProps.locations; + let locationStyle = ""; + if (location) { + locationStyle = " " + location * 100 + "%"; + } + return color + locationStyle; + }). + join(","); + + return ( + + + + + {children} + ); + +}; + +export default BorderGradient; + +const styles = StyleSheet.create({ + innerContainer: { + flex: 1, + margin: 5, // <-- Border Width + position: "absolute", + top: 0, + bottom: 0, + alignItems: "center", + justifyContent: "center", + right: 0, + left: 0, + overflow: "hidden" + } +}); \ No newline at end of file diff --git a/src/components/BorderGradientButton.js b/src/components/BorderGradientButton.js new file mode 100644 index 0000000..e2e152c --- /dev/null +++ b/src/components/BorderGradientButton.js @@ -0,0 +1,54 @@ +import { View, Text, Pressable } from "react-native"; +import React from "react"; +import BorderGradient from "./BorderGradient/BorderGradient"; +import { Palette, Style } from "../styles"; +import { BlurView } from "expo-blur"; +import { FONT_FAMILY } from "../styles/Fonts"; + +const BorderGradientButton = () => { + return ( + + + + + + J’ai déjà mes paroles + + + + + + ); +}; + +export default BorderGradientButton; diff --git a/src/components/BottomSheet/index.js b/src/components/BottomSheet/index.js new file mode 100644 index 0000000..9ce76eb --- /dev/null +++ b/src/components/BottomSheet/index.js @@ -0,0 +1,3 @@ +import BottomSheet from "@gorhom/bottom-sheet"; + +export default BottomSheet; diff --git a/src/components/BottomSheet/index.web.js b/src/components/BottomSheet/index.web.js new file mode 100644 index 0000000..82a63ab --- /dev/null +++ b/src/components/BottomSheet/index.web.js @@ -0,0 +1,94 @@ +import React, { useImperativeHandle, useState, useRef } from "react"; +import { View, TouchableOpacity, ScrollView } from "react-native"; +import { Portal } from "@gorhom/portal"; +import { Motion } from "@legendapp/motion"; + +import { Palette } from "../../styles"; +import { + isDesktop, + isLargeDesktop, + sidebarWidth, +} from "../../hooks/useLayoutType"; + +export const SheetScrollView = ScrollView; +export const SheetBackdrop = View; + +const BottomSheet = React.forwardRef((props, ref) => { + const [showSheet, setShowSheet] = useState(false); + + const bottomSheetRef = useRef(); + + useImperativeHandle(ref, () => ({ + snapToIndex: () => { + setShowSheet(true); + }, + expand: () => { + setShowSheet(true); + }, + collapse: () => closeBottomSheet(), + close: () => closeBottomSheet(), + })); + + const closeBottomSheet = () => { + setShowSheet(false); + props.onChange(-1); + }; + + if (!showSheet) { + return null; + } + + return ( + + + + + + {props.children} + + + + ); +}); +// TODO une croix pour fermer sur mobile web + +export default BottomSheet; diff --git a/src/components/BottomSheetContainer.js b/src/components/BottomSheetContainer.js new file mode 100644 index 0000000..e5d838a --- /dev/null +++ b/src/components/BottomSheetContainer.js @@ -0,0 +1,87 @@ +import React, { useState, useCallback, useEffect } from "react"; +import { Keyboard, StyleSheet } from "react-native"; +import { AnimatePresence, Motion } from "@legendapp/motion"; +import { useKeyboard } from "@react-native-community/hooks"; + +import BottomSheet from "./BottomSheet"; + +import { Palette } from "../styles"; +import useLayoutType from "../hooks/useLayoutType"; + +export default ({ + children, + bottomSheetRef, + snapPoints = ["25%", "50%"], + handleStyle = {}, + ...rest +}) => { + const [currentSnapPointIndex, setCurrentSnapPointIndex] = useState(0); + + const { keyboardShown = false } = useKeyboard(); + const { isWeb } = useLayoutType(); + + const handleSheetChanges = useCallback((index) => { + setCurrentSnapPointIndex(index); + + if (index <= 0) { + Keyboard.dismiss(); + } + }, []); + + useEffect(() => { + if (bottomSheetRef.current && !isWeb && currentSnapPointIndex > 0) { + if (keyboardShown) { + bottomSheetRef.current.expand(); + } else { + bottomSheetRef.current.snapToIndex(1); + } + } + }, [keyboardShown]); + + return ( + <> + + {currentSnapPointIndex > 0 ? ( + bottomSheetRef?.current?.close()} + > + + + ) : null} + + + + {children} + + > + ); +}; diff --git a/src/components/Button.js b/src/components/Button.js new file mode 100644 index 0000000..45e116d --- /dev/null +++ b/src/components/Button.js @@ -0,0 +1,151 @@ +import { Motion } from "@legendapp/motion"; +import { Text, View } from "react-native"; +import * as Haptics from "expo-haptics"; + +import { Fonts, Palette } from "../styles"; +import Style, { gutters, mainBorderRadius } from "../styles/Style"; +import useLayoutType, { + isDesktop, + isMobile, + isNative, +} from "../hooks/useLayoutType"; + +export default ({ + type = "primary", + theme = "default", // "default" | "radioactiv" + + text, + onPress = () => console.log("null"), + isAbsoluteBottom = false, + + alternateAction = {}, + + contentContainerStyle = {}, + containerStyle = {}, + + textStyle = {}, + + isMainDesktopPanel = false, +}) => { + const buttonWidth = alternateAction?.text ? "49%" : "100%"; + + return ( + + {alternateAction?.text && alternateAction?.onPress ? ( + + ) : null} + + + + ); +}; + +export const BaseButton = ({ + type = "primary", + theme = "default", + text, + onPress = () => console.log("null"), + containerStyle = {}, + textStyle = {}, + hasShadow = false, +}) => { + const primaryColor = + theme === "radioactiv" ? Palette.radioactivGreen : Palette.primary; + const primaryTransparentColor = + theme === "radioactiv" + ? Palette.transparentRadioactivGreen + : Palette.transparentPrimary; + + const textColor = type === "secondary" ? primaryColor : Palette.darkPurple; + + return ( + { + if (isNative) { + Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); + } + onPress(); + }} + style={{ + width: "100%", + height: 50, + marginTop: gutters / 2, + ...Style.containerRow, + ...Style.containerCenter, + backgroundColor: primaryColor, + borderRadius: mainBorderRadius, + ...(type === "secondary" + ? { + backgroundColor: primaryTransparentColor, + } + : hasShadow + ? { ...Style.defaultShadows } + : {}), + ...containerStyle, + }} + > + + {text} + + + ); +}; diff --git a/src/components/ChatInput.js b/src/components/ChatInput.js new file mode 100644 index 0000000..f514f32 --- /dev/null +++ b/src/components/ChatInput.js @@ -0,0 +1,141 @@ +import { useState, useEffect } from "reactn"; +import { Pressable, TextInput, View, Image } from "react-native"; +import { BlurView } from "expo-blur"; + +import { Fonts, gutters, Palette } from "../styles"; +import Style from "../styles/Style"; + +import { chatsRef } from "../config/firebase"; + +import { icons } from "../assets"; + +import { isWeb } from "../hooks/useLayoutType.js"; + +import DocumentDropZone from "./DocumentDropZone.js"; +import FilesPreview from "./FilesPreview.js"; + +const ChatInput = ({ + message, + setMessage, + onSendMessage, + containerStyle = {}, + placeholder = "", + chatID = null, +}) => { + const [files, setFiles] = useState([]); + + useEffect(() => { + setFiles([]); + }, [chatID]); + + const handleMessageObject = () => { + if (message.length > 0 || files.length > 0) { + onSendMessage({ + customPayload: { + files, + }, + }); + setMessage(""); + setFiles([]); + } + }; + + const handleKeyPress = (e) => { + if (e?.nativeEvent?.key?.toLowerCase() === "enter") { + handleMessageObject(); + } + }; + + return ( + + + + + + ( + + + + )} + /> + + + + + + + + + + ); +}; + +export default ChatInput; diff --git a/src/components/ChatInterface.js b/src/components/ChatInterface.js new file mode 100644 index 0000000..b750b6a --- /dev/null +++ b/src/components/ChatInterface.js @@ -0,0 +1,294 @@ +import { useState, useRef, useEffect, useGlobal, getGlobal } from "reactn"; +import { + Pressable, + TextInput, + View, + Image, + Text, + Keyboard, + FlatList, +} from "react-native"; +import { responsiveHeight } from "../actions/responsiveSizes.js"; +import { useDataFromRef } from "react-native-minuit/src/hooks"; +import { useKeyboard } from "@react-native-community/hooks"; +import moment from "moment"; + +import { Fonts, gutters, Palette } from "../styles"; +import Style, { bubbleStyle } from "../styles/Style"; + +import firebase, { chatsRef } from "../config/firebase"; + +import { formatNameForConfidentiality } from "../helpers/index.js"; +import useLayoutType from "../hooks/useLayoutType.js"; + +import TypingLoader from "./TypingLoader"; +import Avatar from "./Avatar"; +import RenderChatFile from "./RenderChatFile.js"; +import HyperlinkContainer from "./HyperlinkContainer.js"; + +export default ({ + chatID = null, + + layout = "default", // default | taskSideBar + + containerStyle = {}, + messageListContainerStyle = {}, +}) => { + const [currentUID] = useGlobal("currentUID"); + const [currentProjectData] = useGlobal("currentProjectData"); + + const [isTyping] = useState(false); + + const flatListRef = useRef(); + + const { isNative } = useLayoutType(); + const { keyboardShown = false } = useKeyboard(); + + const { data: messageList } = useDataFromRef({ + ref: chatID + ? chatsRef + .doc(chatID) + .collection("messages") + .orderBy("createdAt", "desc") + .limit(50) + : null, + simpleRef: false, + listener: true, + condition: chatID, + refreshArray: [chatID], + documentID: "messageID", + }); + + let conversation = [ + isTyping ? { senderID: "minuit.ai", userTyping: true } : null, + ...(messageList || []), + ].filter((item) => item); + + if (layout === "default") { + conversation = conversation.reverse(); + } + + useEffect(() => { + if (flatListRef?.current && isNative && keyboardShown) { + flatListRef?.current?.scrollToEnd?.({ animated: true }); + } + }, [keyboardShown, isNative]); + + return ( + + + + item?.messageID + ? `${item?.messageID?.toString()}-${index}` + : `no-messageID-${index}` + } + renderItem={({ + item: { + createdAt = null, + senderID, + senderName = "", + senderProfilePicture = null, + text = "", + userTyping = false, + files = [], + }, + index, + }) => { + const isCurrentUser = senderID === currentUID; + const isChatbot = senderID === "minuit.ai"; + + const senderData = + currentProjectData?.teamMembers?.[senderID] || {}; + + const isDayChange = + moment(createdAt?.toDate()).format("DD/MM/YYYY") !== + moment( + conversation[index - 1]?.createdAt?.toDate() || new Date() + ).format("DD/MM/YYYY") || !conversation[index - 1]; + + return ( + <> + {isDayChange && ( + + + {moment(createdAt?.toDate()).format( + "[Le] DD/MM/YYYY [à] HH:mm" + )} + + + + + )} + + + {!isCurrentUser && ( + + + + )} + + + {files?.map((props, index) => ( + 0 || userTyping + ? gutters / 2 + : 0, + }} + /> + )) || null} + + {(text?.length > 0 || userTyping) && ( + 0 ? gutters / 2 : 0, + }, + }), + }} + > + {userTyping ? ( + + ) : ( + + + {text} + + + )} + + )} + + + > + ); + }} + /> + + + ); +}; + +export const onSendMessage = async ({ + chatID = null, + projectID = null, + message = "", + setMessage = () => {}, + setIsTyping = () => {}, + customPayload = {}, +}) => { + try { + const currentUID = getGlobal()?.currentUID || null; + const { name = "", profilePictureURL = null } = + getGlobal()?.currentUserData || {}; + + if (message.length > 0 || customPayload?.files?.length > 0) { + Keyboard.dismiss(); + setMessage(""); + + const messageData = { + projectID, + createdAt: firebase.firestore.FieldValue.serverTimestamp(), + senderID: currentUID, + senderName: formatNameForConfidentiality({ name }), + senderProfilePicture: profilePictureURL || null, + text: message, + ...customPayload, + }; + + await chatsRef.doc(chatID).collection("messages").add(messageData); + } + } catch (error) { + console.log(error); + } finally { + setIsTyping(false); + } +}; diff --git a/src/components/Dialog/index.js b/src/components/Dialog/index.js new file mode 100644 index 0000000..1bed148 --- /dev/null +++ b/src/components/Dialog/index.js @@ -0,0 +1,8 @@ +import Dialog from "react-native-dialog"; + +export const Container = Dialog.Container; +export const Button = Dialog.Button; +export const Title = Dialog.Title; +export const Input = Dialog.Input; +export const Description = Dialog.Description; + diff --git a/src/components/Dialog/index.web.js b/src/components/Dialog/index.web.js new file mode 100644 index 0000000..6cd243f --- /dev/null +++ b/src/components/Dialog/index.web.js @@ -0,0 +1,77 @@ +import React from "react"; +import { Text, View } from "react-native"; + +import { Input as MinuitInput } from "../Input"; +import { BaseButton as MinuitButton } from "../Button"; +import Overlay from "../Overlay"; + +import { Fonts, Palette, gutters } from "../../styles"; +import Style from "../../styles/Style"; + +export const Container = ({ visible, setVisible = () => null, children }) => { + return ( + + {children} + + ); +}; + +export const Title = ({ children }) => { + return ( + + {children} + + ); +}; + +export const Description = ({ children }) => { + return ( + + {children} + + ); +}; + +export const Button = ({ + label, + onPress, + type = "primary", + containerStyle = {}, +}) => { + return ( + + ); +}; + +export const Input = (props) => { + return ; +}; diff --git a/src/components/DocumentDropZone.js b/src/components/DocumentDropZone.js new file mode 100644 index 0000000..efeb682 --- /dev/null +++ b/src/components/DocumentDropZone.js @@ -0,0 +1,405 @@ +import React, { + useCallback, + useEffect, + useRef, + useState, + useGlobal, +} from "reactn"; +import { Image, Pressable, Text, View } from "react-native"; +import * as ImagePicker from "expo-image-picker"; +import moment from "moment"; +import { useActionSheet } from "@expo/react-native-action-sheet"; +import * as DocumentPicker from "expo-document-picker"; +import Compressor from "react-native-compressor"; +import useMinuit from "react-native-minuit/src/hooks/useMinuit"; + +import { arrayUnion } from "../config/firebase"; + +import Style, { gutterConstant, mainBorderRadius } from "../styles/Style"; +import { Fonts, Palette } from "../styles"; +import { icons } from "../assets"; + +import { uploadFileToFirebase } from "../helpers/uploadToFirebase"; +import useLayoutType from "../hooks/useLayoutType"; + +const NATIVE_OPTIONS = [ + "Importer depuis la galerie", + "Ajouter un fichier", + "Prendre une photo ou une vidéo", + "Annuler", +]; + +const DocumentDropZone = ({ + containerStyle = {}, + + documentID = null, + documentExists = false, + + collectionRef = null, + + setFiles = null, + customElement = null, + shouldReturnObject = false, +}) => { + const dropRef = useRef(null); + + const [isDragging, setIsDragging] = useState(false); + + const { setIsLoading, setTooltip } = useMinuit(); + const { isDesktop, isWeb, isNative } = useLayoutType(); + const { showActionSheetWithOptions } = useActionSheet(); + + useEffect(() => { + if (isWeb && dropRef.current) { + const el = dropRef.current; + + const handleDragIn = (e) => { + e.preventDefault(); + e.stopPropagation(); + setIsDragging(true); + }; + + const handleDragOut = (e) => { + e.preventDefault(); + e.stopPropagation(); + if (!dropRef.current.contains(e.relatedTarget)) { + console.log("drag left"); + setIsDragging(false); + } + }; + + const handleDrop = (e) => { + e.preventDefault(); + e.stopPropagation(); + setIsDragging(false); + + let files = [...e.dataTransfer.files]; + + if (files.length > 0) { + for (const file of files) { + handleWebFile({ file }); + } + } + }; + + el.addEventListener("dragenter", handleDragIn); + el.addEventListener("dragleave", handleDragOut); + el.addEventListener("dragover", (e) => e.preventDefault()); + el.addEventListener("drop", handleDrop); + + return () => { + el.removeEventListener("dragenter", handleDragIn); + el.removeEventListener("dragleave", handleDragOut); + el.removeEventListener("dragover", (e) => e.preventDefault()); + el.removeEventListener("drop", handleDrop); + }; + } + }, [dropRef?.current]); + + const handleWebFile = ({ file }) => { + try { + const { type = "" } = file; + const reader = new FileReader(); + + reader.onloadend = () => { + const base64 = reader.result.split(",")[1]; // Vous pourriez avoir besoin de cette valeur base64 pour un upload direct + const uri = reader.result; // URI en base64 du fichier + + console.log("file", file); + + onUploadDocument({ files: [{ name: file.name, uri, type }] }); + }; + + reader.onerror = (err) => { + console.error("FileReader error", err); + }; + + reader.readAsDataURL(file); // Lire le fichier et déclencher reader.onloadend lorsque c'est fait + } catch (error) { + console.log(error); + setTooltip({ text: error.message, type: "error" }); + } + }; + + const onAddFile = async ({} = {}) => { + try { + if (isNative) { + const cancelButtonIndex = NATIVE_OPTIONS.length - 1; + + showActionSheetWithOptions( + { + options: NATIVE_OPTIONS, + cancelButtonIndex, + userInterfaceStyle: "dark", + ...Style.actionSheet, + }, + async (selectedIndex) => { + if (selectedIndex !== cancelButtonIndex) { + switch (selectedIndex) { + case 0: + onChooseLibrary(); + break; + case 1: + onChooseDocumentPicker(); + break; + case 2: + onTakePicture(); + break; + default: + break; + } + } + } + ); + } else { + onChooseDocumentPicker(); + } + } catch (error) { + console.log(error); + setTooltip({ text: error.message, type: "error" }); + } finally { + setIsLoading(false); + } + }; + + const onChooseLibrary = async ({} = {}) => { + const result = await ImagePicker.launchImageLibraryAsync({ + mediaTypes: ImagePicker.MediaTypeOptions.All, + allowsEditing: false, + quality: 3, + }); + + if (result?.assets?.[0]?.uri) { + const { uri, fileName = "" } = result?.assets?.[0]; + + onUploadDocument({ + files: [ + { + name: getAssetName({ fileName, uri }), + uri, + type: "IMAGE", + }, + ], + }); + } else { + throw new Error("Aucune image sélectionnée"); + } + }; + + const onChooseDocumentPicker = async ({} = {}) => { + const result = await DocumentPicker.getDocumentAsync({ + type: "*/*", + copyToCacheDirectory: false, + }); + + if (result?.assets?.length > 0) { + const { name = "", uri = null } = result?.assets[0] || {}; + + if (!uri) { + throw new Error("Erreur lors de l'ajout du document"); + } + + onUploadDocument({ + files: [ + { + name: name || getDefaultFileName(), + uri, + }, + ], + }); + } else { + console.log(result); + throw new Error("Erreur lors de l'ajout du document"); + } + }; + + const onTakePicture = useCallback(async () => { + const { status } = await ImagePicker.requestCameraPermissionsAsync(); + + if (status !== "granted") { + throw new Error("Permissions caméra non accordées"); + } + + const result = await ImagePicker.launchCameraAsync({ + mediaTypes: ImagePicker.MediaTypeOptions.All, + allowsEditing: true, + quality: 1, + }); + + if (result?.assets?.[0]?.uri) { + const { uri, fileName = "" } = result?.assets?.[0]; + + onUploadDocument({ + files: [ + { + name: getAssetName({ fileName, uri }), + uri, + type: "IMAGE", + }, + ], + }); + } else { + throw new Error("Aucune image sélectionnée"); + } + }, []); + + const getDefaultFileName = () => { + const randomID = Math.random().toString(36).substring(7); + return `${moment().format(`DD_MM_YYYY_HH_mm_ss`)}_${randomID}`; + }; + + const getAssetName = ({ fileName = "", uri = "" }) => { + let name = fileName; + + if (!name && uri?.startsWith("file://")) { + const splittedArray = uri?.split("/") || []; + name = splittedArray?.[splittedArray?.length - 1] || ""; + } + + if (!name?.length) { + let extension = uri?.split(";")?.[0]?.split("/")?.[1] || ""; + + const defaultFileName = getDefaultFileName(); + + if (extension?.length) { + name = `${defaultFileName}.${extension}`; + } else { + name = `${defaultFileName}`; + } + } + + return name; + }; + + const onUploadDocument = async ({ files = [] } = {}) => { + try { + setIsLoading(true); + + const filesToUpdate = []; + + await Promise.all( + files.map(async (file) => { + const { name = "", uri = null } = file; + + console.log(file); + + if (!uri) { + throw new Error("Erreur lors de l'ajout du document"); + } + + const fileName = name || getDefaultFileName(); + let type = "FILE"; + + if (name?.toLowerCase()?.match(/\.(jpeg|jpg|gif|png)$/) != null) { + type = "IMAGE"; + } + + if (name?.toLowerCase()?.match(/\.(mp4|mov|avi|mkv)$/) != null) { + type = "VIDEO"; + } + + let compressedURI = uri; + let thumbnailURI = null; + + if (isNative) { + if (type === "IMAGE") { + compressedURI = await Compressor.Image.compress(uri, { + compressionMethod: "manual", + maxWidth: 1000, + quality: 0.8, + }); + } else if (type === "VIDEO") { + compressedURI = await Compressor.Video.compress(uri); + } + } + + const { resultURI = null } = await uploadFileToFirebase({ + uri: compressedURI, + path: `documents/${documentID}/files/${fileName}`, + }); + + if (resultURI) { + if (shouldReturnObject) { + filesToUpdate.push({ + name: fileName, + uri: resultURI, + type, + thumbnailURI, + }); + } else { + filesToUpdate.push(resultURI); + } + } else { + console.log("resultURI is null"); + } + }) + ); + + if (filesToUpdate.length > 0) { + if (documentExists) { + await collectionRef.doc(documentID).update({ + files: arrayUnion(...filesToUpdate), + }); + } + + if (setFiles) { + setFiles((prev) => [...prev, ...filesToUpdate]); + } + } + + setTooltip({ text: "Document(s) ajouté(s) avec succès" }); + } catch (error) { + console.log(error); + setTooltip({ text: error.message, type: "error" }); + } finally { + setIsLoading(false); + } + }; + + if (!documentID) { + return null; + } + + return ( + + + {customElement?.() || ( + + + + {isWeb && isDesktop + ? `Glissez-déposez ici\nles fichiers, images et vidéos\nà ajouter.` + : "Ajouter une image,\nun fichier ou une vidéo."} + + + )} + + + ); +}; + +export default DocumentDropZone; diff --git a/src/components/DynamicImage.js b/src/components/DynamicImage.js new file mode 100644 index 0000000..8847fec --- /dev/null +++ b/src/components/DynamicImage.js @@ -0,0 +1,40 @@ +import React, { useState, useEffect } from "react"; +import { View } from "react-native"; +import { Image } from "expo-image"; + +const DynamicImage = ({ uri, children, ...props }) => { + const [loading, setLoading] = useState(true); + const [numRetries, setNumRetries] = useState(0); + + useEffect(() => { + if (numRetries < 15) { + const timer = setTimeout(() => { + setLoading(true); + }, 2500); + return () => clearTimeout(timer); + } + }, [numRetries]); + + const handleError = () => { + setLoading(false); + setNumRetries(numRetries + 1); + }; + + return ( + + {loading && numRetries < 15 && uri ? ( + + ) : ( + {children} + )} + + ); +}; + +export default DynamicImage; diff --git a/src/components/EmptyFlashListPlaceholder.js b/src/components/EmptyFlashListPlaceholder.js new file mode 100644 index 0000000..7889c35 --- /dev/null +++ b/src/components/EmptyFlashListPlaceholder.js @@ -0,0 +1,60 @@ +import React, { useGlobal } from "reactn"; +import { View, Text } from "react-native"; + +import useLayoutType from "../hooks/useLayoutType"; + +import Button from "./Button"; + +import { Style, Fonts } from "../styles"; +import { responsiveScreenHeight } from "react-native-responsive-dimensions"; + +const EmptyFlashListPlaceholder = ({ + loading = false, + text = "-", + buttonData = {}, +}) => { + const [, setShowSearch] = useGlobal("showSearch"); + + const { isMobile } = useLayoutType; + + if (loading) { + return ( + + Chargement en cours... + + ); + } + + return ( + + + {text} + + + {buttonData?.text?.length > 0 && ( + { + setShowSearch(false); + + buttonData?.onPress?.() || (() => console.log("null")); + }} + containerStyle={{ + alignSelf: "center", + width: "100%", + }} + /> + )} + + ); +}; + +export default EmptyFlashListPlaceholder; diff --git a/src/components/FilesPreview.js b/src/components/FilesPreview.js new file mode 100644 index 0000000..9018b38 --- /dev/null +++ b/src/components/FilesPreview.js @@ -0,0 +1,134 @@ +import { useContext, useGlobal } from "reactn"; +import { ScrollView, Text, View, Image, Pressable } from "react-native"; + +import firebase, { arrayRemove } from "../config/firebase"; + +import { getFileNameFromURL } from "../helpers"; +import { Fonts, Palette, Style, gutters } from "../styles"; +import { icons } from "../assets"; + +import { WebViewContext } from "../providers/WebViewProvider"; +import alert from "./Alert"; + +export default ({ + files = [], + setFiles = null, + documentID = null, + collectionRef = null, + containerStyle = {}, +}) => { + const [, setIsLoading] = useGlobal("_isLoading"); + const [, setTooltip] = useGlobal("_tooltip"); + + const { setWebViewUrl } = useContext(WebViewContext); + + const onDeleteFile = async (url) => { + alert( + "Êtes-vous sûr ?", + "Cette action est irréversible.", + [ + { + text: "Annuler", + style: "cancel", + }, + { + text: "Confirmer", + onPress: async () => { + try { + setIsLoading(true); + + setFiles( + files.filter((file) => file !== url && file.uri !== url) + ); + await firebase.storage().refFromURL(url).delete(); + + if (documentID) { + await collectionRef.doc(documentID).update({ + files: arrayRemove(url), + }); + } + + setTooltip({ + type: "success", + text: "Fichier supprimé avec succès !", + }); + } catch (error) { + console.log(error); + } finally { + setIsLoading(false); + } + }, + style: "confirm", + }, + ], + { cancelable: false } + ); + }; + + if (files.length === 0) { + return null; + } + + return ( + + + {files.map((file, index) => { + const uri = file.uri || file; + + return ( + 1 ? 250 : 400, + }, + ]} + > + 1 ? 100 : 200, + marginRight: 10, + }, + })} + > + {getFileNameFromURL({ url: uri })} + + + {setFiles && ( + onDeleteFile(uri)}> + + + )} + + setWebViewUrl(uri)}> + + + + ); + })} + + + ); +}; diff --git a/src/components/GradientBorderView/components/GradientBorder.tsx b/src/components/GradientBorderView/components/GradientBorder.tsx new file mode 100644 index 0000000..a415336 --- /dev/null +++ b/src/components/GradientBorderView/components/GradientBorder.tsx @@ -0,0 +1,127 @@ + +import { AnimatableNumericValue, StyleSheet, View } from "react-native"; +import { LinearGradientProps } from "../../LinearGradient/LinearGradient"; +import MaskedView from "../../MaskedView/MaskedView"; +import LinearGradient from "react-native-linear-gradient"; + + +export type GradientProps = Omit< + LinearGradientProps, + "style" | "pointerEvents">; + + +export type RequiredGradientBorderProps = { + /** + * Props to be passed to the gradient component. See `react-native-linear-gradient` for full list. Requires "colors" prop. + */ + gradientProps: GradientProps; +}; + +type BorderProps = { + /** + * Width of border. + */ + borderWidth?: number; + + /** + * Border applied to top of view, overrides borderWidth. + */ + borderTopWidth?: number; + /** + * Border applied to left side of view, overrides borderWidth. + */ + borderLeftWidth?: number; + + /** + * Border applied to bottom side of view, overrides borderWidth. + */ + borderBottomWidth?: number; + + /** + * Border appled to right side of view, overrides borderWidth. + */ + borderRightWidth?: number; + /** + * Border radius applied to each corner. + */ + borderRadius?: AnimatableNumericValue | string | undefined; + /** + * Border radius applied to top right corner, Overrides borderRadius. + */ + borderTopRightRadius?: AnimatableNumericValue | string | undefined; + /** + * Border radius applied to top left corner. Overrides borderRadius + */ + borderTopLeftRadius?: AnimatableNumericValue | string | undefined; + /** + * Border radius applied to bottom right corner. Overrides borderRadius + */ + borderBottomRightRadius?: AnimatableNumericValue | string | undefined; + /** + * Border radius applied to bottom left corner. Overrides borderRadius + */ + borderBottomLeftRadius?: AnimatableNumericValue | string | undefined; +}; + +/** + * A component that applies a gradient border to the parent. + * Should be placed as the last child of the parent so that it isn't overlapped. + * @example + * ```tsx + * + * + * + * ``` + */ +export default function GradientBorder({ + gradientProps, + borderWidth, + borderRadius, + borderTopRightRadius, + borderTopLeftRadius, + borderBottomLeftRadius, + borderBottomRightRadius, + borderTopWidth, + borderLeftWidth, + borderRightWidth, + borderBottomWidth +}: RequiredGradientBorderProps & BorderProps) { + return ( + + + } + style={[StyleSheet.absoluteFill]} + pointerEvents="none"> + + + + ); + +} \ No newline at end of file diff --git a/src/components/GradientBorderView/components/GradientBorderView.tsx b/src/components/GradientBorderView/components/GradientBorderView.tsx new file mode 100644 index 0000000..dd0f005 --- /dev/null +++ b/src/components/GradientBorderView/components/GradientBorderView.tsx @@ -0,0 +1,131 @@ +import { + StyleProp, + StyleSheet, + View, + ViewProps, + ViewStyle, +} from "react-native"; +import GradientBorder, { RequiredGradientBorderProps } from "./GradientBorder"; +import omit from "lodash/omit"; + +type GradientBorderViewProps = Omit< + ViewStyle, + | "paddingLeft" + | "paddingRight" + | "paddingTop" + | "paddingBottom" + | "padding" + | "borderColor" + | "borderLeftColor" + | "borderRightColor" + | "borderTopColor" + | "borderBottomColor" +>; + +export type GradientBorderViewStyle = StyleProp< + GradientBorderViewProps & { + paddingLeft?: number; + paddingRight?: number; + paddingTop?: number; + paddingBottom?: number; + padding?: number; + } +>; + +/** + * A view that applies a gradient border. `gradientProps` is required and can be used to control the gradient (react-native-linear-gradient props), + * and `borderWidth` is required. See + * @example + * + */ +export const GradientBorderView = ({ + gradientProps, + ...props +}: Omit & { + style?: GradientBorderViewStyle; +} & RequiredGradientBorderProps) => { + const styles = StyleSheet.flatten(props.style); + const userAllPadding = styles.padding ? styles.padding : 0; + const compensationAllPadding = styles.borderWidth ? styles.borderWidth : 0; + function calcPaddingForSide( + paddingName: + | "paddingLeft" + | "paddingRight" + | "paddingTop" + | "paddingBottom", + borderWidthName: + | "borderTopWidth" + | "borderBottomWidth" + | "borderLeftWidth" + | "borderRightWidth" + ) { + const userPadding = + typeof styles[paddingName] !== "undefined" + ? styles[paddingName]! + : userAllPadding; + const compensationPadding = + typeof styles[borderWidthName] !== "undefined" + ? styles[borderWidthName]! + : compensationAllPadding; + return compensationPadding + userPadding; + } + + if ( + __DEV__ && + !( + styles.borderWidth || + styles.borderTopWidth || + styles.borderLeftWidth || + styles.borderRightWidth || + styles.borderBottomWidth + ) + ) { + console.warn( + "No borderWidth was passed in the GradientBorderView style, no border will be shown." + ); + } + + return ( + + {props.children} + + + ); +}; diff --git a/src/components/GradientBorderView/index.ts b/src/components/GradientBorderView/index.ts new file mode 100644 index 0000000..31af062 --- /dev/null +++ b/src/components/GradientBorderView/index.ts @@ -0,0 +1,8 @@ +import { + GradientBorderView, + GradientBorderViewStyle, +} from "./components/GradientBorderView"; +import { GradientProps } from "./components/GradientBorder"; + +export { GradientBorderView }; +export type { GradientBorderViewStyle, GradientProps as GP }; diff --git a/src/components/GradientButton.js b/src/components/GradientButton.js new file mode 100644 index 0000000..dc6c169 --- /dev/null +++ b/src/components/GradientButton.js @@ -0,0 +1,40 @@ +import { View, Text, Pressable } from "react-native"; +import React from "react"; +import { LinearGradient } from "./LinearGradient/LinearGradient"; +import { Palette, Style } from "../styles"; +import { FONT_FAMILY } from "../styles/Fonts"; + +const GradientButton = ({ + title = "", + colors = ["#F94697", "#7023F7"], + onPress, + props, +}) => { + return ( + + + + {title} + + + + ); +}; + +export default GradientButton; diff --git a/src/components/HyperlinkContainer.js b/src/components/HyperlinkContainer.js new file mode 100644 index 0000000..d543d25 --- /dev/null +++ b/src/components/HyperlinkContainer.js @@ -0,0 +1,24 @@ +import Hyperlink from "react-native-hyperlink"; + +import { useWebView } from "../providers/WebViewProvider"; +import { Palette } from "../styles"; + +const HyperlinkContainer = ({ children }) => { + const { setWebViewUrl } = useWebView(); + + return ( + { + setWebViewUrl(url); + }} + linkStyle={{ + color: Palette.primary, + textDecorationLine: "underline", + }} + > + {children} + + ); +}; + +export default HyperlinkContainer; diff --git a/src/components/IconContainer.js b/src/components/IconContainer.js new file mode 100644 index 0000000..651818c --- /dev/null +++ b/src/components/IconContainer.js @@ -0,0 +1,31 @@ +import { Image, View } from "react-native"; + +import { Palette, Style } from "../styles"; +import { gutters, mainBorderRadius } from "../styles/Style"; + +const IconContainer = ({ icon }) => { + return ( + + + + ); +}; + +export default IconContainer; diff --git a/src/components/IconSelector.js b/src/components/IconSelector.js new file mode 100644 index 0000000..8df8a27 --- /dev/null +++ b/src/components/IconSelector.js @@ -0,0 +1,106 @@ +import React, { useState, useEffect } from "reactn"; +import { Image, Pressable, Text, View } from "react-native"; +import { FlatGrid } from "react-native-super-grid"; + +import { responsiveWidth } from "../actions/responsiveSizes.js"; + +import { Fonts, Palette, Style, gutters } from "../styles"; +import { mainBorderRadius } from "../styles/Style"; + +import useLayoutType from "../hooks/useLayoutType.js"; + +const IconSelector = ({ onClose } = {}) => { + const { isNative } = useLayoutType(); + + const [currentIconIndex, setCurrentIconIndex] = useState(0); + + useEffect(() => { + if (isNative) { + // import("expo-dynamic-app-icon").then((module) => { + // getAppIcon = module.getAppIcon; + + // const iconIndex = getAppIcon(); + // setCurrentIconIndex(Number(iconIndex)); + // }); + } + }, []); + + return ( + + + Nouvelle icône + + + Modifiez l'icône de votre app, pour une expérience plus personnelle. + + + } + itemDimension={responsiveWidth(45)} + data={[ + require(`../../assets/alternateIcons/1.png`), + require(`../../assets/alternateIcons/2.png`), + require(`../../assets/alternateIcons/3.png`), + require(`../../assets/alternateIcons/4.png`), + ]} + style={{ flex: 1, backgroundColor: Palette.darkPurple }} + spacing={10} + renderItem={({ item, index }) => { + const isSelected = currentIconIndex === index + 1; + + return ( + { + // import("expo-dynamic-app-icon").then((module) => { + // setAppIcon = module.setAppIcon; + + // setAppIcon((index + 1).toString()); + // setCurrentIconIndex(index + 1); + // onClose?.(); + // }); + }} + > + + + ); + }} + /> + ); +}; + +export default IconSelector; diff --git a/src/components/Input.js b/src/components/Input.js new file mode 100644 index 0000000..c62a542 --- /dev/null +++ b/src/components/Input.js @@ -0,0 +1,272 @@ +import { + Pressable, + TextInput, + InputAccessoryView, + Text, + View, + Image, + Keyboard, +} from "react-native"; +import { useState } from "react"; +import CountryPicker, { DARK_THEME } from "react-native-country-picker-modal"; +import usePlaceApi from "react-native-minuit/src/hooks/usePlacesApi"; + +import { art, icons } from "../assets"; +import { Fonts, Palette, Style, gutters } from "../styles"; +import { fontTypeList } from "../styles/Fonts"; + +import { isWeb } from "../hooks/useLayoutType"; +import { GOOGLE_API_KEY } from "../data/keys"; + +const Input = ({ + inputRef = null, + label = "", + placeholder = "", + + containerStyle = {}, + textInputStyle = {}, + + value, + setValue, + + textInputProps = {}, + + type = "default", // "default" | "password" | "textarea" | "coinAmount" | "countryPicker" | "autoCompleteAddress" + theme = "default", // "default" | "radioactiv" | "dashed" + + borderType = "none", // "solid" | "dashed" | "none" + + layout = "default", // "default" | "line" + + isNumeric = false, +}) => { + const [isFocused, setIsFocused] = useState(false); + const [showPassword, setShowPassword] = useState(false); + const [showCountryPicker, setShowCountryPicker] = useState(false); + + const isDefaultLayout = layout === "default"; + + const mainColor = + theme === "radioactiv" ? Palette.radioactivGreen : Palette.primary; + + const isRoundedRectangle = + ["textarea", "coinAmount"].includes(type) || layout === "default"; + + const inputAccessoryViewID = "uniqueID"; + + const { places } = usePlaceApi({ + query: type === "autoCompleteAddress" ? value : "", + apiKey: GOOGLE_API_KEY, // Your Google API Key + queryFields: "formatted_address,geometry,name,address_components", + queryCountries: ["fr"], + language: "fr-FR", + minChars: 2, + }); + + return ( + <> + + {label?.length > 0 && ( + {label} + )} + + + {type === "search" ? ( + + ) : null} + + {type === "countryPicker" ? ( + { + console.log(country); + setValue(country.cca2); + }} + visible={showCountryPicker} + theme={{ + ...DARK_THEME, + primaryColor: Palette.primary, + backgroundColor: Palette.darkPurple, + ...fontTypeList.default, + }} + closeButtonImage={icons.arrowRight} + closeButtonStyle={[Style.mirrorHorizontal]} + withEmoji={true} + withFilter={true} + withAlphaFilter={false} + withCountryNameButton={true} + containerButtonStyle={{ padding: 0, margin: 0 }} + translation="fra" + placeholder={"Sélectionnez un pays"} + countryName={value} + preferredCountries={["FR", "BE", "CH", "LU", "CA", "US", "GB"]} + filterProps={{ + placeholder: "Rechercher un pays", + style: { + ...Fonts({}), + }, + }} + /> + ) : ( + setIsFocused(true)} + onBlur={() => setIsFocused(false)} + style={{ + width: "100%", + ...(isRoundedRectangle + ? { height: "100%", flex: 1, textAlignVertical: "top" } + : { textAlign: "center" }), + ...Fonts({ type: "default", color: mainColor }), + ...(isWeb + ? { + lineHeight: "auto", + } + : {}), + ...textInputStyle, + }} + {...(type === "password" + ? { + secureTextEntry: !showPassword, + autoCapitalize: "none", + autoCompleteType: "password", + textContentType: "password", + } + : {})} + {...(type === "email" + ? { + keyboardType: "email-address", + autoCapitalize: "none", + autoCompleteType: "email", + textContentType: "emailAddress", + } + : {})} + keyboardType={isNumeric ? "numeric" : "default"} + keyboardAppearance="dark" + inputAccessoryViewID={inputAccessoryViewID} + {...textInputProps} + /> + )} + + {type === "password" ? ( + setShowPassword(!showPassword)} + style={{ position: "absolute", right: 0 }} + > + + + ) : type === "coinAmount" ? ( + + ) : null} + + + {type === "autoCompleteAddress" && + places?.[0]?.description && + places?.[0]?.description !== value && + places.map((place, index) => ( + { + setValue(place?.description); + }} + style={{ + ...Style.containerSpaceBetween, + marginBottom: index !== places.length - 1 ? gutters / 2 : 0, + }} + > + + {place?.description || "-"} + + + ))} + + + {(type === "textarea" || isNumeric) && !isWeb && ( + + Keyboard.dismiss()} + style={{ + ...Style.containerRow, + justifyContent: "flex-end", + backgroundColor: Palette.transparentPrimary, + padding: gutters, + paddingVertical: gutters / 2, + }} + > + + Fermer + + + + )} + > + ); +}; + +export { Input }; diff --git a/src/components/InputRow.js b/src/components/InputRow.js new file mode 100644 index 0000000..260774f --- /dev/null +++ b/src/components/InputRow.js @@ -0,0 +1,116 @@ +import { useState } from "react"; +import { View, Text, Image, Pressable, StyleSheet } from "react-native"; +import { BlurView } from "expo-blur"; + +import Switch from "../components/Switch"; +import { Container, Title, Input, Button } from "../components/Dialog"; + +import { Fonts, Style, gutters } from "../styles"; +import { icons } from "../assets"; + +const labelOptions = { + name: "Nouveau nom", + email: "Nouvelle adresse email", + password: "Nouveau mot de passe", +}; + +export default ({ itemKey, type, value, title, onUpdateValue }) => { + const [showDialog, setShowDialog] = useState(false); + const [inputData, setInputData] = useState(value); + const [currentPassword, setCurrentPassword] = useState(""); + + return ( + <> + + + {title} + {type === "boolean" ? ( + + onUpdateValue({ key: itemKey, value: newValue }) + } + /> + ) : ( + setShowDialog(true)} + style={[ + Style.containerRow, + { maxWidth: "50%", justifyContent: "flex-end" }, + ]} + > + + {itemKey === "password" ? "********" : value} + + + + + )} + + + + + + + } + > + {`Changement ${title?.toLowerCase()}`} + + {["password", "email"].includes(itemKey) && ( + setCurrentPassword(text)} + keyboardType="visible-password" + type={itemKey} + containerStyle={{ marginBottom: gutters / 2 }} + /> + )} + setInputData(text)} + autoCapitalize={ + ["password", "email"].includes(itemKey) ? "none" : "words" + } + type={itemKey} + containerStyle={{ marginBottom: gutters / 2 }} + /> + { + onUpdateValue({ key: itemKey, value: inputData, currentPassword }); + setShowDialog(false); + }} + /> + setShowDialog(false)} + type={"secondary"} + /> + + > + ); +}; diff --git a/src/components/ItemRowList.js b/src/components/ItemRowList.js new file mode 100644 index 0000000..fc47776 --- /dev/null +++ b/src/components/ItemRowList.js @@ -0,0 +1,49 @@ +import React from "react"; +import { Image, Pressable, Text, View } from "react-native"; + +import { responsiveHeight } from "../actions/responsiveSizes"; + +import { Fonts, Palette, Style } from "../styles"; +import { icons } from "../assets"; +import IconContainer from "./IconContainer"; + +const ItemRowList = ({ + title, + action, + icon = null, + textStyle = {}, + addMarginTopFromPrevious = false, + containerStyle = {}, + separatorPosition = "bottom", +}) => { + return ( + + {separatorPosition === "top" && ( + + )} + + + + {icon && } + + + {title} + + + + + + + {separatorPosition === "bottom" && ( + + )} + + ); +}; + +export default ItemRowList; diff --git a/src/components/LinearGradient/LinearGradient.ts b/src/components/LinearGradient/LinearGradient.ts new file mode 100644 index 0000000..ff3d1a0 --- /dev/null +++ b/src/components/LinearGradient/LinearGradient.ts @@ -0,0 +1,7 @@ +import NativeLinearGradient, { + LinearGradientProps, +} from "react-native-linear-gradient"; + +const LinearGradient = NativeLinearGradient; + +export { LinearGradient, LinearGradientProps }; diff --git a/src/components/LinearGradient/LinearGradient.web.ts b/src/components/LinearGradient/LinearGradient.web.ts new file mode 100644 index 0000000..fc0522d --- /dev/null +++ b/src/components/LinearGradient/LinearGradient.web.ts @@ -0,0 +1,3 @@ +import WebLinearGradient from "react-native-web-linear-gradient"; + +export const LinearGradient = WebLinearGradient; diff --git a/src/components/MaskedView/MaskedView.js b/src/components/MaskedView/MaskedView.js new file mode 100644 index 0000000..95206cd --- /dev/null +++ b/src/components/MaskedView/MaskedView.js @@ -0,0 +1,4 @@ +import NativeMaskedView from "@react-native-masked-view/masked-view"; + +const MaskedView = NativeMaskedView; +export default MaskedView; diff --git a/src/components/MaskedView/MaskedView.web.js b/src/components/MaskedView/MaskedView.web.js new file mode 100644 index 0000000..c284c33 --- /dev/null +++ b/src/components/MaskedView/MaskedView.web.js @@ -0,0 +1,8 @@ +import React from "react"; +import { View } from "react-native"; + +function MaskedView({ maskElement, ...props }) { + return React.createElement(View, props, maskElement); +} + +export default MaskedView; diff --git a/src/components/MusicLandHeader.js b/src/components/MusicLandHeader.js new file mode 100644 index 0000000..38ab935 --- /dev/null +++ b/src/components/MusicLandHeader.js @@ -0,0 +1,44 @@ +import { View, Text, Image, Pressable } from "react-native"; +import React from "react"; +import { icons } from "../assets"; +import { Palette, Style } from "../styles"; +import ProgressBar from "./ProgressBar"; +import { FONT_FAMILY } from "../styles/Fonts"; + +const MusicLandHeader = ({ onPressBack, onPressSkip, showSkip = false }) => { + return ( + + + + + + + + + + {showSkip && ( + + + Passer + + + )} + + + ); +}; + +export default MusicLandHeader; diff --git a/src/components/NavigateHeader.js b/src/components/NavigateHeader.js new file mode 100644 index 0000000..015343e --- /dev/null +++ b/src/components/NavigateHeader.js @@ -0,0 +1,64 @@ +import { Image, Pressable, View } from "react-native"; +import { Motion } from "@legendapp/motion"; + +import { icons } from "../assets"; +import { Fonts, gutters, Style } from "../styles"; +import { goBack } from "../navigation/NavigationService"; + +export default ({ + title = "", + rightComponent = null, + onBackPressed = null, + containerStyle = {}, +}) => { + return ( + + onBackPressed?.() || goBack()}> + + + + {typeof title === "function" ? ( + title() + ) : title?.length > 0 ? ( + 15 + ? Fonts({ type: "section" }).fontSize + : Fonts({ type: "navigationTitle" }).fontSize, + }, + })} + > + {title} + + ) : null} + + {rightComponent?.() || null} + + ); +}; diff --git a/src/components/OptionSelector.js b/src/components/OptionSelector.js new file mode 100644 index 0000000..3aee7ef --- /dev/null +++ b/src/components/OptionSelector.js @@ -0,0 +1,58 @@ +import { Pressable, Text, View } from "react-native"; + +import { Fonts } from "../styles"; +import Style, { defaultItemHeight } from "../styles/Style"; + +const OptionSelector = ({ + optionTypeList = {}, + selected, + setSelected, + containerStyle = {}, + colorMap = {}, +}) => { + return ( + + {Object.entries(optionTypeList).map(([key, value], index) => { + const isSelected = key === selected; + + return ( + setSelected(key)} + style={{ + ...Style.containerItem, + ...Style.containerCenter, + flex: 1, + padding: 0, + height: defaultItemHeight, + margin: defaultItemHeight * 0.2, + backgroundColor: isSelected + ? colorMap[key]?.secondary + : "transparent", + borderWidth: 1, + borderColor: isSelected ? colorMap[key]?.primary : "transparent", + }} + > + + {value} + + + ); + })} + + ); +}; + +export default OptionSelector; diff --git a/src/components/Overlay.js b/src/components/Overlay.js new file mode 100644 index 0000000..3f274da --- /dev/null +++ b/src/components/Overlay.js @@ -0,0 +1,77 @@ +import React from "react"; +import { Pressable, StyleSheet } from "react-native"; +import { AnimatePresence, Motion } from "@legendapp/motion"; +import { BlurView } from "expo-blur"; +import { Portal } from "@gorhom/portal"; + +import useLayoutType from "../hooks/useLayoutType"; + +import { Palette, Style } from "../styles"; +import { defaultBlurIntensity } from "../styles/Style"; + +const Overlay = ({ + isVisible, + setIsVisible, + + blurIntensity = null, + + children, + contentContainerStyle = {}, + + hasPortal = true, +}) => { + const { isNative } = useLayoutType(); + + const ContentContainerView = hasPortal ? Portal : React.Fragment; + + return ( + + + {isVisible ? ( + + + { + console.log("overlay pressed"); + setIsVisible?.(false); + }} + /> + {children} + + + ) : null} + + + ); +}; + +export default Overlay; diff --git a/src/components/Pagination.js b/src/components/Pagination.js new file mode 100644 index 0000000..2daf7be --- /dev/null +++ b/src/components/Pagination.js @@ -0,0 +1,40 @@ +import { View } from "react-native"; +import { Motion } from "@legendapp/motion"; + +import { Palette } from "../styles"; + +export default ({ + carouselRef = null, + selectedIndex, + length, + containerStyle = {}, +}) => { + return ( + + {Array.from({ length }).map((_, index) => ( + { + if (carouselRef?.current && index !== selectedIndex) { + console.log("scroll to", index); + carouselRef.current.scrollTo({ index }); + } + }} + style={{ + width: 10, + height: 10, + borderRadius: 5, + backgroundColor: + index === selectedIndex + ? Palette.primary + : Palette.ultraLightWhite, + marginHorizontal: 5, + }} + animate={{ + width: index === selectedIndex ? 20 : 10, + }} + /> + ))} + + ); +}; diff --git a/src/components/PendingActions.js b/src/components/PendingActions.js new file mode 100644 index 0000000..f325c3e --- /dev/null +++ b/src/components/PendingActions.js @@ -0,0 +1,103 @@ +import React, { useGlobal } from "reactn"; +import { View, Text, Pressable } from "react-native"; +import { capitalize } from "lodash"; +import moment from "moment"; +import { Motion } from "@legendapp/motion"; +import { validateDate } from "react-native-minuit/src/actions/dateActions"; + +import { Fonts, Palette, Style } from "../styles"; +import { projectsRef } from "../config/firebase"; + +export default ({ actionList = [] }) => { + const [currentProjectID] = useGlobal("currentProjectID"); + + const onCheck = async ({ todoID, isChecked = false }) => { + try { + const updatedObject = { + isChecked: !isChecked, + completionTimestamp: !isChecked ? new Date() : null, + }; + + await projectsRef + .doc(currentProjectID) + .collection("todoList") + .doc(todoID) + .update(updatedObject); + } catch (error) { + console.log("error", error); + } + }; + + if (!actionList.length) { + return ( + + Vous n'avez pas d'actions en attente. + + ); + } + + return actionList.map( + ( + { + title = "", + requestedCompletionTimestamp = null, + isChecked = false, + todoID = null, + }, + index + ) => { + return ( + + onCheck({ todoID, isChecked })} + > + + {isChecked && ( + + )} + + + + + {capitalize(title)} + + + + {capitalize( + moment(validateDate(requestedCompletionTimestamp)).fromNow() + )} + + + + + {index !== actionList.length - 1 && ( + + )} + + ); + } + ); +}; diff --git a/src/components/ProgressBar.js b/src/components/ProgressBar.js new file mode 100644 index 0000000..9c84731 --- /dev/null +++ b/src/components/ProgressBar.js @@ -0,0 +1,30 @@ +import { useEffect, useState } from "react"; +import { View } from "react-native"; +import { mainBorderRadius } from "../styles/Style"; +import { Palette } from "../styles"; + +const ProgressBar = ({ progress = 0, containerStyle = {} }) => { + return ( + + + + ); +}; + +export default ProgressBar; diff --git a/src/components/ProjectIcon.js b/src/components/ProjectIcon.js new file mode 100644 index 0000000..00195bc --- /dev/null +++ b/src/components/ProjectIcon.js @@ -0,0 +1,80 @@ +import { Image, Text, View } from "react-native"; +import { responsiveWidth } from "../actions/responsiveSizes.js"; +import { getInitials } from "../helpers"; +import { Fonts, Style } from "../styles"; + +export default ({ + name = "", + url = null, + size = responsiveWidth(7), + containerStyle = {}, +}) => { + const colors = [ + "#FB68A8", + "#FA6DA8", + "#F971A7", + "#F876A7", + "#F67BA6", + "#F580A6", + "#F384A5", + "#F289A5", + "#F08EA4", + "#EF93A4", + "#ED97A3", + "#EC9CA3", + "#EAA1A2", + "#E8A6A2", + "#E7AAA1", + "#E5AFA1", + "#E3B4A0", + "#E2B9A0", + "#E0BDAF", + "#DFC2AE", + "#DDC7AE", + "#DBCBAE", + "#DACFAE", + "#D8D4AE", + "#D6D8AE", + "#D5DCAE", + "#D3E1AE", + "#D2E5AE", + "#D0E9AE", + "#CFEDAE", + ]; + + const pickColor = (name) => { + const sumChars = name + .split("") + .reduce((acc, char) => acc + char.charCodeAt(0), 0); + const index = sumChars % 30; + + return colors[index]; + }; + + return ( + + {url ? ( + + ) : ( + + {getInitials(name)} + + )} + + ); +}; diff --git a/src/components/RenderChatFile.js b/src/components/RenderChatFile.js new file mode 100644 index 0000000..328756a --- /dev/null +++ b/src/components/RenderChatFile.js @@ -0,0 +1,98 @@ +import { useContext } from "reactn"; +import { Pressable, View, Image, Text } from "react-native"; +import { Video, ResizeMode } from "expo-av"; + +import { Fonts, gutters, Palette } from "../styles"; +import Style, { mainBorderRadius } from "../styles/Style"; + +import { icons } from "../assets"; + +import { substringTextLength } from "../helpers/index.js"; + +import { WebViewContext } from "../providers/WebViewProvider.js"; + +const thumbnailStyle = { + width: 200, + height: 200, + borderRadius: mainBorderRadius / 2, + overflow: "hidden", +}; + +const RenderChatFile = ( + { uri, type = "image", name = "", containerStyle = {} }, + index +) => { + const { setWebViewUrl } = useContext(WebViewContext); + + return ( + + {type === "IMAGE" ? ( + + + + ) : type === "FILE" ? ( + { + setWebViewUrl(uri); + }} + style={{ + ...Style.containerRow, + ...Style.containerCenter, + backgroundColor: Palette.transparentPrimary, + padding: gutters / 2, + borderRadius: mainBorderRadius / 2, + }} + > + + + {substringTextLength({ text: name, maxLength: 40 })} + + + ) : type === "VIDEO" ? ( + setStatus(() => status)} + /> + ) : null} + + ); +}; + +export default RenderChatFile; diff --git a/src/components/SectionTextHeader.js b/src/components/SectionTextHeader.js new file mode 100644 index 0000000..aaac1b5 --- /dev/null +++ b/src/components/SectionTextHeader.js @@ -0,0 +1,54 @@ +import React from "reactn"; +import { Text, View } from "react-native"; + +import { Fonts, gutters, Style } from "../styles"; + +const SectionTextHeader = ({ + title = "", + rightText = "", + rightTextStyle = {}, + subTitle = "", + containerStyle = {}, +}) => { + return ( + + + + {title} + + + + {rightText} + + + + {subTitle?.length > 0 && ( + + {subTitle} + + )} + + ); +}; + +export default SectionTextHeader; diff --git a/src/components/SlideToUnlock.js b/src/components/SlideToUnlock.js new file mode 100644 index 0000000..7d7f4f7 --- /dev/null +++ b/src/components/SlideToUnlock.js @@ -0,0 +1,96 @@ +import React, { useRef } from "react"; +import { View, Text, Image, Animated, PanResponder } from "react-native"; + +import { Fonts, Palette, Style } from "../styles"; +import { icons } from "../assets"; + +const SlideToUnlock = ({ onUnlock, containerStyle = {} }) => { + const { width = 0 } = containerStyle; + const triggerPoint = width * 0.8; // Modification de la valeur du triggerPoint + + const slideAnim = useRef(new Animated.Value(0)).current; + + const panResponder = useRef( + PanResponder.create({ + onStartShouldSetPanResponder: () => true, + onPanResponderMove: (e, gestureState) => { + if (gestureState.dx > 0 && gestureState.dx < triggerPoint) { + slideAnim.setValue(gestureState.dx); + } + }, + onPanResponderRelease: (e, gestureState) => { + if (gestureState.dx > triggerPoint) { + // Modification de la condition + Animated.spring(slideAnim, { + toValue: 0, + useNativeDriver: false, + onComplete: () => onUnlock(), + }).start(); + } else { + Animated.spring(slideAnim, { + toValue: 0, + useNativeDriver: false, + }).start(); + } + }, + }) + ).current; + + return ( + + Slidez pour confirmer + + + + + ); +}; + +const styles = { + container: { + height: 50, + backgroundColor: Palette.transparentRadioactivGreen, + borderRadius: 50, + borderWidth: 2, + borderStyle: "solid", + borderColor: Palette.radioactivGreen, + overflow: "hidden", + alignItems: "center", + justifyContent: "center", + }, + slider: { + position: "absolute", + left: 3, + top: 3, + width: 40, + height: 40, + backgroundColor: Palette.radioactivGreen, + borderRadius: 25, + }, + text: { + position: "absolute", + ...Fonts({ + color: "white", + style: { + fontWeight: "bold", + }, + }), + }, +}; + +export default SlideToUnlock; diff --git a/src/components/Slider.js b/src/components/Slider.js new file mode 100644 index 0000000..91792a0 --- /dev/null +++ b/src/components/Slider.js @@ -0,0 +1,16 @@ +import Slider from "@react-native-community/slider"; + +import { Palette } from "../styles"; + +export default (props) => { + return ( + + ); +}; diff --git a/src/components/Switch.js b/src/components/Switch.js new file mode 100644 index 0000000..1c85f82 --- /dev/null +++ b/src/components/Switch.js @@ -0,0 +1,50 @@ +import { Motion } from "@legendapp/motion"; +import { Pressable, View } from "react-native"; +import { Easing } from "react-native-reanimated"; + +import { Palette } from "../styles"; + +export default ({ value, setValue, containerStyle = {} }) => { + const currentColor = value ? Palette.green : Palette.red; + + const switchHeight = 28; + const borderWidth = 2; + const internalMargin = 2; + + const itemSize = switchHeight - borderWidth * 2 - internalMargin * 2; + + return ( + setValue(!value)} + style={{ + flexDirection: "row", + width: switchHeight * 2, + height: switchHeight, + borderColor: currentColor, + borderWidth: borderWidth, + borderRadius: 25, + ...containerStyle, + }} + > + + + ); +}; diff --git a/src/components/Tableau.js b/src/components/Tableau.js new file mode 100644 index 0000000..d8d8280 --- /dev/null +++ b/src/components/Tableau.js @@ -0,0 +1,179 @@ +import { View, Text, ScrollView, Pressable } from "react-native"; + +import { Style, Fonts, gutters, Palette } from "../styles"; +import { Input } from "./Input"; +import { mainBorderRadius } from "../styles/Style"; + +const Tableau = ({ + headings = [], + data = [], + + isEdit = false, + + onUpdate = () => {}, + onPressRow = null, + + mainColor = Palette.primary, + transparentColor = Palette.transparentPrimary, +}) => { + const filteredHeadings = headings.filter(({ condition = true }) => condition); + + return ( + <> + + {filteredHeadings.map(({ title = "", flex }, index) => ( + + + {title} + + + ))} + + + {data?.length > 0 ? ( + + {data.map((item, indexItemList) => { + return ( + <> + onPressRow?.({ item })} + style={{ + ...Style.containerSpaceBetween, + alignItems: "flex-start", + paddingHorizontal: gutters / 2, + }} + > + {filteredHeadings.map( + ( + { key, type = "DEFAULT", textStyle = () => {} }, + indexColumn + ) => { + const { flex, isEditable, renderCell } = + filteredHeadings[indexColumn]; + + const content = renderCell({ + item, + key, + indexItemList, + }); + + return ( + + {type === "CUSTOM" ? ( + content + ) : isEdit && isEditable ? ( + + onUpdate({ + index: indexItemList, + key, + value, + }) + } + type={!indexColumn ? "textarea" : "default"} + borderType="dashed" + containerStyle={{ + borderRadius: mainBorderRadius / 2, + width: "100%", + backgroundColor: "transparent", // 'white + }} + textInputStyle={{ + textAlign: !indexColumn + ? "left" + : indexColumn === filteredHeadings?.length - 1 + ? "right" + : "center", + }} + /> + ) : ( + + {content} + + )} + + ); + } + )} + + + + > + ); + })} + + ) : ( + + + Il n'y a pas encore de données + + + )} + > + ); +}; + +export default Tableau; diff --git a/src/components/TypingLoader.js b/src/components/TypingLoader.js new file mode 100644 index 0000000..7c1c5de --- /dev/null +++ b/src/components/TypingLoader.js @@ -0,0 +1,37 @@ +import { View } from "react-native"; +import { useState } from "react"; +import { Motion } from "@legendapp/motion"; + +import { Palette, Style } from "../styles"; + +export default () => { + const [animatedDotIndex, setAnimatedDotIndex] = useState(0); + + setTimeout(() => { + setAnimatedDotIndex((animatedDotIndex + 1) % 3); + }, 500); + + return ( + + {[1, 2, 3].map((item) => ( + + ))} + + ); +}; diff --git a/src/components/WebView/index.js b/src/components/WebView/index.js new file mode 100644 index 0000000..0898c4c --- /dev/null +++ b/src/components/WebView/index.js @@ -0,0 +1,3 @@ +import { WebView as NativeWebView } from "react-native-webview"; + +export const WebView = NativeWebView; diff --git a/src/components/WebView/index.web.js b/src/components/WebView/index.web.js new file mode 100644 index 0000000..5966aff --- /dev/null +++ b/src/components/WebView/index.web.js @@ -0,0 +1,39 @@ +import React, { useEffect, useRef } from "react"; + +export const WebView = ({ source, allowFullScreen, onURLChange }) => { + const iframeRef = useRef(null); + + useEffect(() => { + // Définition de la fonction handleLoad à l'intérieur du useEffect + const handleLoad = () => { + try { + const currentUrl = iframeRef.current?.contentWindow?.location?.href; + onURLChange(currentUrl); // Appeler la fonction de callback avec l'URL actuelle + } catch (error) { + console.error("Erreur d'accès à l'URL de l'iframe:", error); + } + }; + + const iframeElement = iframeRef.current; + iframeElement.addEventListener("load", handleLoad); + + return () => { + iframeElement.removeEventListener("load", handleLoad); + }; + }, [onURLChange]); // Assurez-vous que cette dépendance est correctement définie pour éviter des appels excessifs + + return ( + + ); +}; diff --git a/src/config/firebase.js b/src/config/firebase.js new file mode 100644 index 0000000..30e0f1c --- /dev/null +++ b/src/config/firebase.js @@ -0,0 +1,45 @@ +import firebase from "firebase/compat/app"; +import { + initializeAuth, + getReactNativePersistence, +} from "firebase/auth/react-native"; +import AsyncStorage from "@react-native-async-storage/async-storage"; + +import "firebase/compat/auth"; +import "firebase/compat/storage"; +import "firebase/compat/functions"; +import "firebase/compat/firestore"; + +export const firebaseConfig = { + apiKey: "AIzaSyDrD0yGi4U_5zxLjJmypnA7QmKXVeEkhyc", + authDomain: "minuitstarter.firebaseapp.com", + projectId: "minuitstarter", + storageBucket: "minuitstarter.appspot.com", + messagingSenderId: "918923582918", + appId: "1:918923582918:web:c2ff55f8e19881f249a6c7", +}; + +if (!firebase?.apps?.filter(({ name_ }) => name_ === "[DEFAULT]").length) { + const defaultApp = firebase.initializeApp(firebaseConfig); + + initializeAuth(defaultApp, { + persistence: getReactNativePersistence(AsyncStorage), + }); + + // if (__DEV__) { + // firebase.functions().useEmulator("localhost", 5001); + // } + console.log("Firebase init"); +} + +const firestore = firebase.firestore(); + +export const usersRef = firestore.collection("users"); +export const notificationsRef = firestore.collection("notifications"); +export const documentsRef = firestore.collection("documents"); +export const chatsRef = firestore.collection("chats"); + +export const { arrayUnion, arrayRemove, increment } = + firebase.firestore.FieldValue; + +export default firebase; diff --git a/src/config/initialGlobalState.js b/src/config/initialGlobalState.js new file mode 100644 index 0000000..3ae291a --- /dev/null +++ b/src/config/initialGlobalState.js @@ -0,0 +1,15 @@ +import { Palette } from "../styles"; + +export default { + currentUID: null, + currentUserData: null, + currentUserRoles: [], + + _config: { + colors: { + primary: Palette.primary, + secondary: Palette.lightPurple, + destructive: Palette.red, + }, + }, +}; diff --git a/src/data/index.js b/src/data/index.js new file mode 100644 index 0000000..b1d1a14 --- /dev/null +++ b/src/data/index.js @@ -0,0 +1,15 @@ +import { Palette } from "../styles"; + +export const dailyAgencyPrice = 450; + +export const agencyWhatsAppNumber = "33651581106"; + +export const termsOfSalesUrl = "https://www.minuit.agency/termsOfSales"; +export const calendlyUrl = "https://calendly.com/minuitagency"; +export const instagramUrl = "https://www.instagram.com/minuit.agency/"; +export const zenvoiceUrl = "https://zenvoice.io/p/65da63e86000344f99035fb6"; +export const firebaseDashboardUrl = + "https://console.firebase.google.com/u/0/project"; +export const appleAppStoreUrl = "https://apps.apple.com/app"; +export const algoliaAppUrl = "https://dashboard.algolia.com/apps"; + diff --git a/src/data/keys.js b/src/data/keys.js new file mode 100644 index 0000000..9612e2f --- /dev/null +++ b/src/data/keys.js @@ -0,0 +1,3 @@ +export const STRIPE_PUBLISHABLE_KEY_TEST = ".."; +export const STRIPE_PUBLISHABLE_KEY_LIVE = "..."; +export const GOOGLE_API_KEY = "..."; diff --git a/src/data/structure.js b/src/data/structure.js new file mode 100644 index 0000000..1785ad4 --- /dev/null +++ b/src/data/structure.js @@ -0,0 +1,48 @@ +import { icons } from "../assets"; +import { Palette } from "../styles"; + +export const taskStatusList = { + PENDING: "Ouvert", + WAITING_VERIFICATION: "À vérifier", + LATER: "Plus tard", + DONE: "Terminé", +}; + +export const taskPriorityColor = { + LOW: { + primary: Palette.green, + secondary: Palette.transparentGreen, + }, + MEDIUM: { + primary: Palette.primary, + secondary: Palette.transparentPrimary, + }, + HIGH: { + primary: Palette.red, + secondary: Palette.transparentRed, + }, +}; + +export const platformOptionList = [ + { + key: "IOS", + icon: icons.ios, + label: "iOS", + }, + { + key: "ANDROID", + icon: icons.android, + label: "Android", + }, + { + key: "WEB", + icon: icons.web, + label: "Web", + }, + { + key: "DASHBOARD", + icon: icons.web, + label: "Dash.", + availableInTaskList: false, + }, +]; diff --git a/src/helpers/index.js b/src/helpers/index.js new file mode 100644 index 0000000..c14bcea --- /dev/null +++ b/src/helpers/index.js @@ -0,0 +1,221 @@ +import numbro from "numbro"; +import { Clipboard } from "react-native-web"; +import moment from "moment"; + +import alert from "../components/Alert.js"; + +import { isTauri, isWeb } from "../hooks/useLayoutType"; +import Palette from "../styles/Palette.js"; +import { Linking, Share } from "react-native"; + +export const capitalize = (string) => { + return string.charAt(0).toUpperCase() + string.slice(1); +}; + +export const getInitials = (string) => { + return ( + string + ?.split(" ") + ?.map((word) => word.charAt(0).toUpperCase()) + ?.join("") + ?.toUpperCase() || "" + ); +}; + +export const getPresenceStatus = ({ lastPresenceTimestamp = null }) => { + if (!lastPresenceTimestamp) { + return { + status: "OFFLINE", + color: Palette.red, + }; + } + + const lastPresenceDate = lastPresenceTimestamp?.toDate(); + const currentDate = new Date(); + + const diff = Math.abs(currentDate - lastPresenceDate); + + const minutes = Math.floor(diff / 1000 / 60); + + if (minutes < 5) { + return { + status: "ONLINE", + color: Palette.green, + }; + } else if (minutes < 60) { + return { + status: "AWAY", + color: Palette.primary, + }; + } else { + return { + status: "OFFLINE", + color: Palette.red, + }; + } +}; + +export const formatNameForConfidentiality = ({ name = "" }) => { + if (!name) { + return ""; + } + + const nameArray = name?.replace(/\s\s+/g, " ")?.split(" "); // Remove multiple spaces + + if (nameArray?.length > 1) { + return `${nameArray?.[0]} ${nameArray?.[1]?.charAt(0)}.`; + } + + return name; +}; + +export const getFileNameFromURL = ({ url }) => { + let fileName = decodeURIComponent( + url.substring(url.lastIndexOf("/") + 1, url.indexOf("?")) + ); + + fileName = fileName.split("/")[fileName.split("/").length - 1]; + + substringTextLength({ text: fileName }); + + return fileName; +}; + +export const substringTextLength = ({ text, maxLength = 10 }) => { + let newText = text; + + if (newText.length > maxLength) { + newText = + newText.substring(0, maxLength / 2) + + "..." + + newText.substring(newText.length - maxLength / 2, newText.length); + } + + return newText; +}; + +export const formatImageURL = ({ url, size = 600 }) => { + const imageFormatList = ["png", "jpg", "jpeg", "webp", "gif"]; + + const formattedURL = imageFormatList.reduce((acc, format) => { + if (url?.toLowerCase()?.includes(format)) { + return url?.replace(`.${format}`, `_${size}x${size}.png`); + } + return acc; + }, undefined); + + return formattedURL; +}; + +export const formatAmount = ({ amount = 0, average = true }) => { + let returnAmount = amount; + + if (isNaN(amount) || !amount) { + returnAmount = 0; + } + + return numbro(returnAmount).format({ + spaceSeparated: true, + thousandSeparated: true, + average, + mantissa: average ? 1 : 2, + }); +}; + +export const formatDate = ({ date, format = "DD/MM/YYYY" }) => { + const validatedDate = validateDate(date); + + return moment(validatedDate).format(format); +}; + +export const validateDate = (date = null) => { + let formattedDate = date; + + if (!formattedDate) { + formattedDate = new Date(); + } + + if (typeof formattedDate?.toDate === "function") { + formattedDate = formattedDate?.toDate(); + } + + return moment(formattedDate).toDate(); +}; + +export const onStoreReview = async () => { + let StoreReview; + + if (!isWeb) { + import("react-native-store-review").then((module) => { + StoreReview = module; + + StoreReview.requestReview(); + }); + } else { + console.log("Store review not available on web"); + + return; + } +}; + +export const getValueFromKeyState = ({ key = "", state = {} }) => { + if (typeof key !== "string") { + return null; + } + + const splitKey = key?.split(".") || []; + let value = null; + + if (splitKey.length === 1) { + value = state?.[key]; + } else { + value = splitKey.reduce((acc, curr) => { + return acc?.[curr]; + }, state); + } + + return value; +}; + +export const openLinkInBrowser = ({ url }) => { + try { + let formattedUrl = url; + if ( + !formattedUrl?.toLowerCase?.()?.startsWith("http") && + !formattedUrl?.toLowerCase?.()?.startsWith("https") + ) { + formattedUrl = "http://" + formattedUrl; + } + + if (isWeb && !isTauri) { + window.open(formattedUrl, "_blank"); + } else { + Linking.openURL(formattedUrl); + } + } catch (error) { + console.error(error); + } +}; + +export const shareLink = ({ url, title = "", message = "" }) => { + try { + if (isWeb) { + if (!Clipboard.isAvailable) { + throw new Error("Clipboard not available"); + } + + Clipboard.setString(url); + + alert("Lien copié", "Le lien a été copié dans votre presse-papiers."); + } else { + Share.share({ + message, + url, + title, + }); + } + } catch (error) { + console.log(error); + alert("Partage non disponible", "Il y a eu une erreur lors du partage."); + } +}; diff --git a/src/helpers/uploadToFirebase.js b/src/helpers/uploadToFirebase.js new file mode 100644 index 0000000..1e59b1f --- /dev/null +++ b/src/helpers/uploadToFirebase.js @@ -0,0 +1,42 @@ +import { Platform } from "react-native"; + +import firebase from "../config/firebase"; + +export function uploadFileToFirebase({ uri, path }) { + return new Promise(async (resolve, reject) => { + try { + let resultResize = { uri }; + + const response = await fetch(resultResize.uri); + const blob = await response.blob(); + + const uploadTask = firebase.storage().ref(path).put(blob); + + uploadTask.on( + Platform.OS === "web" + ? "state_changed" + : firebase.storage.TaskEvent.STATE_CHANGED, + (snapshot) => { + if ( + Platform.OS !== "web" && + snapshot.state === firebase.storage.TaskState.SUCCESS + ) { + snapshot.ref.getDownloadURL().then((resultURI) => { + resolve({ resultURI }); + }); + } + }, + (error) => { + reject(error); + }, + async () => { + const url = await firebase.storage().ref(path).getDownloadURL(); + + resolve({ resultURI: url }); + } + ); + } catch (e) { + reject(e); + } + }); +} diff --git a/src/hooks/index.js b/src/hooks/index.js new file mode 100644 index 0000000..d73f061 --- /dev/null +++ b/src/hooks/index.js @@ -0,0 +1,3 @@ +import useDebounce from './useDebounce'; + +export {useDebounce}; diff --git a/src/hooks/useAlgoliaSearch.js b/src/hooks/useAlgoliaSearch.js new file mode 100644 index 0000000..95b69d5 --- /dev/null +++ b/src/hooks/useAlgoliaSearch.js @@ -0,0 +1,51 @@ +import { useEffect, useState } from "reactn"; + +import algoliasearch from "algoliasearch/lite"; + +export default ({ + query = "", + options = {}, + algoliaObject: { index = null, projectID, publicKey }, + documentID = "id", +}) => { + const [result, setResult] = useState([]); + const [indexAlgolia, setIndexAlgolia] = useState(null); + + useEffect(() => { + if (!indexAlgolia) { + setIndexAlgolia(algoliasearch(projectID, publicKey).initIndex(index)); + } + + return () => { + setIndexAlgolia(null); + }; + }, [index]); + + useEffect(() => { + if (indexAlgolia) { + getSearchResult(); + } + }, [query, indexAlgolia]); + + const getSearchResult = async () => { + try { + if (query.length > 1) { + const { hits } = await indexAlgolia.search(query, options); + + setResult( + hits.map((itemHit) => ({ + ...itemHit, + [documentID]: itemHit.objectID, + })) + ); + } else { + setResult([]); + } + } catch (e) { + setResult([]); + console.log("ALGOLIA" + e); + } + }; + + return result; +}; diff --git a/src/hooks/useAsyncStorage.js b/src/hooks/useAsyncStorage.js new file mode 100644 index 0000000..d727f5f --- /dev/null +++ b/src/hooks/useAsyncStorage.js @@ -0,0 +1,32 @@ +import { useEffect, useState } from "react"; +import AsyncStorage from "@react-native-async-storage/async-storage"; + +const useAsyncStorage = (key, initialValue) => { + const [data, setData] = useState(initialValue); + const [retrievedFromStorage, setRetrievedFromStorage] = useState(false); + + useEffect(() => { + (async () => { + try { + const value = await AsyncStorage.getItem(key); + console.log(`Retrieved data for ${key}: ${value}`); + setData(JSON.parse(value) || initialValue); + setRetrievedFromStorage(true); + } catch (error) { + console.error("useAsyncStorage getItem error:", error); + } + })(); + }, [key, initialValue]); + + const setNewData = async (value) => { + try { + await AsyncStorage.setItem(key, JSON.stringify(value)); + setData(value); + } catch (error) { + console.error("useAsyncStorage setItem error:", error); + } + }; + + return [data, setNewData, retrievedFromStorage]; +}; +export default useAsyncStorage; diff --git a/src/hooks/useDataFromRef.js b/src/hooks/useDataFromRef.js new file mode 100644 index 0000000..a345d13 --- /dev/null +++ b/src/hooks/useDataFromRef.js @@ -0,0 +1,167 @@ +import { useState, setGlobal } from "reactn"; +import { useEffect } from "react"; +import _ from "lodash"; + +export default function useDataFromRef({ + ref, + + initialState = [], + refreshArray = [], + + initialDocumentRef = null, + documentID = "id", + listener = false, + + condition = true, + simpleRef = false, + + usePagination = false, + + updateGlobalState = null, + + batchSize = 4, + + format = null, + onUpdate = () => null, +}) { + const [loading, setLoading] = useState(true); + const [endReached, setEndReached] = useState(false); + const [data, setData] = useState(initialState); + const [lastVisible, setLastVisible] = useState(null); + + useEffect(() => { + if (condition) { + if (listener && !usePagination) { + const subData = getListenerData(); + return () => subData?.(); + } else { + resetState(); + + getData({ paginate: usePagination }); + } + } else { + resetState(); + } + }, [...refreshArray, condition, usePagination]); + + const loadMore = () => { + if (!loading && !endReached) { + getData({ paginate: true }); + console.log("Loading more"); + } + }; + + const resetState = () => { + if (!_.isEqual(data, initialState)) { + onUpdate(initialState); + } + + console.log("Reset state", initialState); + + setEndReached(false); + setLastVisible(null); + setData(initialState); + }; + + const getData = async ({ paginate = false } = {}) => { + try { + setLoading(true); + let newData = simpleRef ? null : []; + let initialDoc = null; + + if (initialDocumentRef && !lastVisible && !simpleRef) { + initialDoc = await initialDocumentRef.get(); + } + + const dynamicRef = + paginate && lastVisible + ? ref.startAfter(lastVisible).limit(batchSize) + : initialDoc + ? ref.startAt(initialDoc).limit(batchSize) + : paginate + ? ref.limit(batchSize) + : ref; + + const dataSnap = await dynamicRef.get(); + + if (simpleRef && dataSnap.data()) { + newData = { ...dataSnap.data(), [documentID]: dataSnap.id }; + } else if (!simpleRef && dataSnap.docs.length > 0) { + newData = dataSnap.docs.map((item) => { + return { ...item.data(), [documentID]: item.id }; + }); + + if (paginate) { + if (batchSize !== dataSnap.docs.length) { + setEndReached(true); + } + setLastVisible(dataSnap.docs[dataSnap.docs.length - 1]); + } + } + + if (newData) { + if (paginate) { + console.log("new pagination"); + await updateData([...data, ...newData]); + } else { + await updateData(newData); + } + } else { + console.log("NO DATA"); + } + } catch (e) { + if (e.code === "firestore/permission-denied") { + console.warn( + "Permission denied for ref: ", + ref?._collectionPath?.relativeName + ); + } else { + console.log(e); + } + await updateData([]); + } finally { + setLoading(false); + } + }; + + const getListenerData = () => { + return ref?.onSnapshot( + async (dataSnap) => { + let newData; + + if (simpleRef) { + newData = { ...dataSnap.data(), [documentID]: dataSnap.id }; + } else { + newData = dataSnap.docs.map((item) => { + return { ...item.data(), [documentID]: item.id }; + }); + } + await updateData(newData); + setLoading(false); + }, + async (e) => { + if (e.code === "firestore/permission-denied") { + console.warn( + "Permission denied for ref: ", + ref?._collectionPath?.relativeName + ); + } else { + console.log(e); + } + await updateData([]); + setLoading(false); + } + ); + }; + + const updateData = async (newData) => { + setData(format ? await format(newData) : newData); + onUpdate(newData); + + if (updateGlobalState) { + setGlobal({ [updateGlobalState]: data }); + } + }; + + return { data, setData, loading, loadMore }; +} diff --git a/src/hooks/useFirestorePagination.js b/src/hooks/useFirestorePagination.js new file mode 100644 index 0000000..3fa7ddf --- /dev/null +++ b/src/hooks/useFirestorePagination.js @@ -0,0 +1,73 @@ +import { useState, useEffect } from "react"; + +export const useFirestorePagination = ({ + ref = null, + refreshArray = [], + condition = false, + documentID = "id", + batchSize = 10, + maxLoads = 15, // Maximum number of times loadMore can be called +}) => { + const [data, setData] = useState([]); + const [loading, setLoading] = useState(false); + const [lastVisible, setLastVisible] = useState(null); + const [error, setError] = useState(null); + const [loadMoreCount, setLoadMoreCount] = useState(0); // Counter for loadMore invocations + + useEffect(() => { + let unsubscribe = () => {}; + + if (condition && ref) { + setLoading(true); + unsubscribe = ref.limit(batchSize).onSnapshot( + (snapshot) => { + const fetchedDocuments = snapshot.docs.map((doc) => ({ + [documentID]: doc.id, + ...doc.data(), + })); + const lastVisibleDocument = snapshot.docs[snapshot.docs.length - 1]; + setData(fetchedDocuments); + setLastVisible(lastVisibleDocument); + setLoading(false); + }, + (err) => { + setError(err); + setLoading(false); + } + ); + } + + return () => unsubscribe(); + }, [...refreshArray, condition, ref, batchSize]); + + const loadMore = () => { + if (lastVisible && !loading && loadMoreCount < maxLoads) { + setLoading(true); + setLoadMoreCount((count) => count + 1); // Increment loadMore counter + + ref + .startAfter(lastVisible) + .limit(batchSize) + .onSnapshot( + (snapshot) => { + const newDocuments = snapshot.docs.map((doc) => ({ + [documentID]: doc.id, + ...doc.data(), + })); + setData((prev) => [...prev, ...newDocuments]); + setLastVisible(snapshot.docs[snapshot.docs.length - 1]); + setLoading(false); + }, + (err) => { + setError(err); + setLoading(false); + } + ); + } + }; + + // Function to check if more data can be loaded + const canLoadMore = loadMoreCount < maxLoads; + + return { data, loading, error, loadMore, canLoadMore }; +}; diff --git a/src/hooks/useLayoutType.js b/src/hooks/useLayoutType.js new file mode 100644 index 0000000..f18554e --- /dev/null +++ b/src/hooks/useLayoutType.js @@ -0,0 +1,102 @@ +import { useState, useEffect } from "react"; +import { Platform } from "react-native"; +import { responsiveWidth } from "react-native-responsive-dimensions"; + +const getLayoutType = () => { + const windowWidth = responsiveWidth(100); + + const isWeb = Platform.OS === "web"; + const isNative = !isWeb; + const isIOS = Platform.OS === "ios"; + + const isTauri = typeof window.__TAURI__ !== "undefined"; + + const superSmallDesktopBreakpoint = 800; + const smallDesktopBreakpoint = 1100; + const mediumDesktopBreakpoint = smallDesktopBreakpoint * 1.2; + const largeDesktopBreakpoint = smallDesktopBreakpoint * 1.5; + + const isDesktop = windowWidth > superSmallDesktopBreakpoint; + + const isDesktopWeb = isDesktop && isWeb; + const isMobile = !isDesktop; + const isMobileWeb = isMobile && isWeb; + const isMobileNative = isMobile && !isWeb; + const isDesktopNative = isDesktop && !isWeb; + + const isSuperSmallDesktop = + windowWidth > superSmallDesktopBreakpoint && + windowWidth < smallDesktopBreakpoint; + const isSmallDesktop = + windowWidth > smallDesktopBreakpoint && + windowWidth < mediumDesktopBreakpoint; + const isMediumDesktop = windowWidth > mediumDesktopBreakpoint; + const isLargeDesktop = windowWidth > largeDesktopBreakpoint; + + const sidebarWidth = windowWidth > 1350 ? 400 : 320; + + return { + isWeb, + isNative, + isIOS, + isTauri, + + superSmallDesktopBreakpoint, + smallDesktopBreakpoint, + mediumDesktopBreakpoint, + largeDesktopBreakpoint, + isDesktop, + isSuperSmallDesktop, + isSmallDesktop, + isMediumDesktop, + isLargeDesktop, + isDesktopWeb, + isMobile, + isMobileWeb, + isMobileNative, + isDesktopNative, + sidebarWidth, + windowWidth, + }; +}; + +export const { + isWeb, + isNative, + isIOS, + isTauri, + + superSmallDesktopBreakpoint, + smallDesktopBreakpoint, + mediumDesktopBreakpoint, + largeDesktopBreakpoint, + isDesktop, + isSuperSmallDesktop, + isSmallDesktop, + isMediumDesktop, + isLargeDesktop, + isDesktopWeb, + isMobile, + isMobileWeb, + isMobileNative, + sidebarWidth, + windowWidth, +} = getLayoutType(); + +export default () => { + const [layoutType, setLayoutType] = useState(getLayoutType()); + + useEffect(() => { + if (isWeb) { + const handleResize = () => { + setLayoutType(getLayoutType()); + }; + window.addEventListener("resize", handleResize); + return () => { + window.removeEventListener("resize", handleResize); + }; + } + }, []); + + return layoutType; +}; diff --git a/src/hooks/usePaymentSession.js b/src/hooks/usePaymentSession.js new file mode 100644 index 0000000..b64e188 --- /dev/null +++ b/src/hooks/usePaymentSession.js @@ -0,0 +1,72 @@ +import { useGlobal, useContext } from "reactn"; + +import firebase from "../config/firebase"; +import { checkBillingDetails } from "../helpers"; + +import { StripeEmbeddedContext } from "../providers/StripeEmbeddedProvider"; +import { useWebView } from "../providers/WebViewProvider"; + +import useLayoutType from "./useLayoutType"; + +const usePaymentSession = () => { + const [, setIsLoading] = useGlobal("_isLoading"); + const [, setTooltip] = useGlobal("_tooltip"); + + const { isNative } = useLayoutType(); + const { setWebViewUrl } = useWebView(); + + const [currentProjectID] = useGlobal("currentProjectID"); + + const { setClientSecret } = useContext(StripeEmbeddedContext); + + const onCreatePaymentSession = async ({ + numberOfCoin = 0, + taskList = [], + } = {}) => { + checkBillingDetails({ + onValidBillingDetails: () => { + triggerPayment({ numberOfCoin, taskList }); + }, + }); + }; + + const triggerPayment = async ({ numberOfCoin = 0, taskList = [] }) => { + try { + setIsLoading(true); + + const { data } = await firebase + .functions() + .httpsCallable("coins-createPaymentSession")({ + numberOfCoin, + taskList, + projectID: currentProjectID, + type: "CHECKOUT", + isEmbedded: !isNative, + }); + + if (data) { + if (isNative) { + setWebViewUrl(data); + } else { + setClientSecret(data); + } + } else { + throw new Error("Erreur lors de la création du paiement"); + } + } catch (error) { + console.log(error); + setTooltip({ + type: "error", + text: error.message, + }); + } finally { + setIsLoading(false); + } + }; + + return { + onCreatePaymentSession, + }; +}; + +export default usePaymentSession; diff --git a/src/layouts/AppLayout.js b/src/layouts/AppLayout.js new file mode 100644 index 0000000..c21955a --- /dev/null +++ b/src/layouts/AppLayout.js @@ -0,0 +1,43 @@ +import { View } from "react-native"; +import { Motion } from "@legendapp/motion"; + +import useLayoutType from "../hooks/useLayoutType"; + +import Home from "../screens/Home"; + +import { Style } from "../styles"; + +export default ({ currentUID = null, children }) => { + const { isWeb = false } = useLayoutType(); + + const sharedPanelStyle = { + ...(isWeb ? {} : {}), + }; + + const mainContainer = { + flex: 1, + ...(isWeb ? { maxHeight: "100svh" } : {}), + }; + + return ( + + + {children} + + + ); +}; diff --git a/src/layouts/Page.js b/src/layouts/Page.js new file mode 100644 index 0000000..dd355f0 --- /dev/null +++ b/src/layouts/Page.js @@ -0,0 +1,127 @@ +import React, { useState } from "reactn"; +import { Image, View } from "react-native"; +import { SafeAreaView } from "react-native-safe-area-context"; +import { Motion } from "@legendapp/motion"; +import { KeyboardAwareScrollView } from "react-native-keyboard-aware-scroll-view"; + +import { responsiveHeight } from "../actions/responsiveSizes.js"; + +import { Fonts, gutters } from "../styles"; + +import BaseHeader from "../components/BaseHeader"; +import NavigateHeader from "../components/NavigateHeader"; + +import { isDesktop, isWeb } from "../hooks/useLayoutType.js"; +import { useUserData } from "../providers/UserDataProvider.js"; +import { background } from "../assets/index.js"; + +export default ({ + children, + + topStickyContent = null, + bottomStickyContent = null, + + title = "", + rightComponent = null, + + containerType = "SAFE_AREA_VIEW", + headerType = "BASE", + + containerStyle = {}, + headerStyle = {}, + contentContainerStyle = {}, + + scrollEnabled = false, + + onBackPressed = null, + backgroundImg = background.writingBG, +}) => { + const { currentUID } = useUserData(); + + const [scrollPosition, setScrollPosition] = useState(0); + + const PageContainer = + containerType === "SAFE_AREA_VIEW" ? SafeAreaView : View; + + const ContentContainer = scrollEnabled ? KeyboardAwareScrollView : View; + + const handleScroll = (event) => { + const position = event.nativeEvent.contentOffset.y; + setScrollPosition(position); + }; + + return ( + <> + + + {headerType !== "NONE" ? ( + headerType === "BASE" ? ( + + ) : ( + 50 + ? title + : "" + } + rightComponent={rightComponent} + onBackPressed={onBackPressed} + /> + ) + ) : null} + + {topStickyContent?.()} + + + {scrollEnabled && typeof title === "string" && title.length > 0 && ( + + {title} + + )} + {children} + + + + {bottomStickyContent?.()} + > + ); +}; diff --git a/src/navigation/BottomTab.js b/src/navigation/BottomTab.js new file mode 100644 index 0000000..9d018ab --- /dev/null +++ b/src/navigation/BottomTab.js @@ -0,0 +1,80 @@ +import React, { useGlobal } from "reactn"; +import { StyleSheet } from "react-native"; +import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; +import { Motion } from "@legendapp/motion"; + +import { responsiveHeight } from "../actions/responsiveSizes.js"; + +import useLayoutType from "../hooks/useLayoutType.js"; + +import { Routes } from "./Routes"; +import { Palette } from "../styles"; + +import { tabs } from "../assets"; + +import TabBar from "./TabBar"; + +import HomeStack from "./HomeStack"; +import ChatStack from "./ChatStack"; +import SettingsStack from "./SettingsStack"; + +const bottomTabStyles = StyleSheet.create({ + icon: { + width: responsiveHeight(5), + height: responsiveHeight(5), + resizeMode: "contain", + }, +}); + +const BottomTab = createBottomTabNavigator(); + +export const BottomTabScreen = () => { + const renderIcon = (icon, focused) => ( + + ); + + return ( + }> + renderIcon(tabs.home, focused), + }} + /> + renderIcon(tabs.chat, focused), + }} + /> + renderIcon(tabs.settings, focused), + }} + /> + + ); +}; diff --git a/src/navigation/ChatStack.js b/src/navigation/ChatStack.js new file mode 100644 index 0000000..a4cdae6 --- /dev/null +++ b/src/navigation/ChatStack.js @@ -0,0 +1,41 @@ +import React from "react"; +import { createStackNavigator } from "@react-navigation/stack"; + +import { Palette } from "../styles"; +import { Routes } from "./Routes"; + +import Chat from "../screens/Chat"; + +const screenOptions = { + headerShown: false, + cardOverlayEnabled: true, + headerStyle: { + backgroundColor: Palette.background, + }, + headerTitleAlign: "center", + headerBackTitleVisible: false, +}; + +const HomeStack = createStackNavigator(); + +export default () => { + return ( + + + + ); +}; diff --git a/src/navigation/HomeStack.js b/src/navigation/HomeStack.js new file mode 100644 index 0000000..23435d1 --- /dev/null +++ b/src/navigation/HomeStack.js @@ -0,0 +1,41 @@ +import React from "react"; +import { createStackNavigator } from "@react-navigation/stack"; + +import { Palette } from "../styles"; +import { Routes } from "./Routes"; + +import Home from "../screens/Home"; + +const screenOptions = { + headerShown: false, + cardOverlayEnabled: true, + headerStyle: { + backgroundColor: Palette.background, + }, + headerTitleAlign: "center", + headerBackTitleVisible: false, +}; + +const HomeStack = createStackNavigator(); + +export default function HomeStackScreen() { + return ( + + + + ); +} diff --git a/src/navigation/MainStack.js b/src/navigation/MainStack.js new file mode 100644 index 0000000..af1b8f1 --- /dev/null +++ b/src/navigation/MainStack.js @@ -0,0 +1,97 @@ +import React from "react"; +import { createStackNavigator } from "@react-navigation/stack"; + +import { Palette } from "../styles"; +import { Routes } from "./Routes"; + +import { BottomTabScreen } from "./BottomTab"; + +import Splash from "../screens/Splash"; +import Onboarding from "../screens/Onboarding"; +import Login from "../screens/Login"; +import ForgotPassword from "../screens/ForgotPassword"; + +import Notifications from "../screens/Notifications"; + +import TermsOfUse from "../screens/TermsOfUse"; +import PrivacyPolicy from "../screens/PrivacyPolicy"; +import Writing from "../screens/Writing/Writing"; +import WritingLyrics from "../screens/Writing/WritingLyrics"; + +const screenOptions = { + headerShown: false, + cardOverlayEnabled: true, + headerStyle: { + backgroundColor: Palette.background, + }, + headerTitleStyle: {}, + headerTitleAlign: "center", + headerBackTitleVisible: false, +}; + +const MainStack = createStackNavigator(); + +const screens = [ + { name: Routes.Splash, component: Splash }, + { name: Routes.Onboarding, component: Onboarding }, + { name: Routes.Login, component: Login, title: "Connexion" }, + { + name: Routes.ForgotPassword, + component: ForgotPassword, + title: "Mot de passe oublié", + }, + { + name: Routes.BottomTab, + component: BottomTabScreen, + options: { animationEnabled: false }, + }, + { + name: Routes.Notifications, + component: Notifications, + title: "Notifications", + }, + { + name: Routes.TermsOfUse, + component: TermsOfUse, + title: "Conditions d'utilisation", + }, + { + name: Routes.PrivacyPolicy, + component: PrivacyPolicy, + title: "Politique de confidentialité", + }, + { + name: Routes.Writing, + component: Writing, + }, + { + name: Routes.WritingLyrics, + component: WritingLyrics, + }, +]; + +export default function Main() { + return ( + + {screens.map((screen) => ( + + ))} + + ); +} diff --git a/src/navigation/NavigationService.js b/src/navigation/NavigationService.js new file mode 100644 index 0000000..85d885a --- /dev/null +++ b/src/navigation/NavigationService.js @@ -0,0 +1,30 @@ +import React, { setGlobal } from "reactn"; + +import { isDesktop } from "../hooks/useLayoutType"; +import { Routes } from "./Routes"; + +export const navigationRef = React.createRef(); + +export function navigate(name, params) { + navigationRef.current?.navigate(name, params); +} + +export function dispatch(route) { + navigationRef.current?.dispatch(route); +} + +export function reset(route) { + navigationRef.current?.reset(route); +} + +export function goBack() { + navigationRef.current?.goBack(); +} + +export const navigateToTask = (taskData = {}) => { + if (isDesktop) { + setGlobal({ currentTaskData: taskData }); + } else { + navigate(Routes.TaskDetails, taskData); + } +}; diff --git a/src/navigation/Routes.js b/src/navigation/Routes.js new file mode 100644 index 0000000..7a0443e --- /dev/null +++ b/src/navigation/Routes.js @@ -0,0 +1,28 @@ +export const Routes = { + Splash: "Splash", + Onboarding: "Onboarding", + Login: "Login", + ForgotPassword: "ForgotPassword", + + BottomTab: "BottomTab", + Welcome: "Welcome", + Notifications: "Notifications", + + HomeStack: "HomeStack", + Home: "Home", + ProjectEdit: "ProjectEdit", + + ChatStack: "ChatStack", + Chat: "Chat", + + SettingsStack: "SettingsStack", + Settings: "Settings", + ProjectSettings: "ProjectSettings", + AccountSettings: "AccountSettings", + + TermsOfUse: "TermsOfUse", + PrivacyPolicy: "PrivacyPolicy", + + Writing: "Writing", + WritingLyrics: "WritingLyrics", +}; diff --git a/src/navigation/SettingsStack.js b/src/navigation/SettingsStack.js new file mode 100644 index 0000000..ab8b146 --- /dev/null +++ b/src/navigation/SettingsStack.js @@ -0,0 +1,53 @@ +import React from "react"; +import { createStackNavigator } from "@react-navigation/stack"; + +import { Palette } from "../styles"; +import { Routes } from "./Routes"; + +import Settings from "../screens/Settings"; +import ProjectSettings from "../screens/ProjectSettings"; +import AccountSettings from "../screens/AccountSettings"; + +const screenOptions = { + headerShown: false, + cardOverlayEnabled: true, + headerStyle: { + backgroundColor: Palette.background, + }, + headerTitleAlign: "center", + headerBackTitleVisible: false, +}; + +const HomeStack = createStackNavigator(); + +export default () => { + return ( + + + + + + ); +}; diff --git a/src/navigation/TabBar.js b/src/navigation/TabBar.js new file mode 100644 index 0000000..fab435e --- /dev/null +++ b/src/navigation/TabBar.js @@ -0,0 +1,85 @@ +import React from "react"; +import { View, TouchableOpacity } from "react-native"; +import * as Haptics from "expo-haptics"; + +import { gutters, Palette, Style } from "../styles"; +import useLayoutType from "../hooks/useLayoutType"; + +const TabBar = ({ state = {}, descriptors = {}, navigation = {} }) => { + const { isDesktop, windowWidth, mediumDesktopBreakpoint, isWeb } = + useLayoutType(); + + return ( + + {state?.routes?.map((route, index) => { + const { options } = descriptors[route.key]; + const isFocused = state?.index === index; + + const _onPressTabBar = () => { + if (!isWeb) { + Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); + } + + const event = navigation.emit({ + type: "tabPress", + target: route.key, + canPreventDefault: true, + }); + + if (!isFocused && !event.defaultPrevented) { + // The `merge: true` option makes sure that the params inside the tab screen are preserved + navigation.navigate({ name: route.name, merge: true }); + } + }; + + const onLongPress = () => { + navigation.emit({ + type: "tabLongPress", + target: route.key, + }); + }; + + return ( + !options?.hide && ( + + {options?.tabBarIcon({ focused: isFocused })} + + ) + ); + })} + + ); +}; + +export default TabBar; diff --git a/src/navigation/TaskStack.js b/src/navigation/TaskStack.js new file mode 100644 index 0000000..9f029c2 --- /dev/null +++ b/src/navigation/TaskStack.js @@ -0,0 +1,41 @@ +import React from "react"; +import { createStackNavigator } from "@react-navigation/stack"; + +import { Palette } from "../styles"; +import { Routes } from "./Routes"; + +import Tasks from "../screens/Tasks"; + +const screenOptions = { + headerShown: false, + cardOverlayEnabled: true, + headerStyle: { + backgroundColor: Palette.background, + }, + headerTitleAlign: "center", + headerBackTitleVisible: false, +}; + +const HomeStack = createStackNavigator(); + +export default () => { + return ( + + + + ); +}; diff --git a/src/navigation/index.js b/src/navigation/index.js new file mode 100644 index 0000000..a030f27 --- /dev/null +++ b/src/navigation/index.js @@ -0,0 +1,4 @@ +import {Routes} from './Routes'; +import MainStack from './MainStack'; + +export {Routes, MainStack}; diff --git a/src/providers/BottomSheetProvider.js b/src/providers/BottomSheetProvider.js new file mode 100644 index 0000000..23cea9b --- /dev/null +++ b/src/providers/BottomSheetProvider.js @@ -0,0 +1,73 @@ +import React, { useState, useRef, createContext } from "react"; +import { View, TouchableOpacity } from "react-native"; +import { Motion } from "@legendapp/motion"; + +import { mainBorderRadius } from "../styles/Style"; +import { Palette } from "../styles"; + +export const BottomSheetContext = createContext(); + +export default ({ children }) => { + const [showSheet, setShowSheet] = useState(false); + const [sheetContent, setSheetContent] = useState(null); + + const bottomSheetRef = useRef(); + + return ( + + {children} + + {showSheet && ( + + setShowSheet(false)} + ref={bottomSheetRef} + style={{ + position: "absolute", + right: 0, + top: 0, + left: 0, + bottom: 0, + flex: 1, + backgroundColor: "rgba(0,0,0,0.4)", + }} + /> + + + {sheetContent} + + + )} + + ); +}; diff --git a/src/providers/LoadingProvider.js b/src/providers/LoadingProvider.js new file mode 100644 index 0000000..84734bb --- /dev/null +++ b/src/providers/LoadingProvider.js @@ -0,0 +1,46 @@ +import React, { useGlobal } from "reactn"; +import { ActivityIndicator, View } from "react-native"; + +import { Palette } from "../styles"; +import useLayoutType from "../hooks/useLayoutType"; + +export default ({ children }) => { + const [isGlobalLoading] = useGlobal("_isLoading"); + + const { isDesktopWeb = false, isMobileWeb = false } = useLayoutType(); + + return ( + <> + {children} + + {isGlobalLoading && ( + + + + )} + > + ); +}; + +export const LoaderIndicator = () => { + return ; +}; diff --git a/src/providers/NotificationProvider.js b/src/providers/NotificationProvider.js new file mode 100644 index 0000000..af35d4f --- /dev/null +++ b/src/providers/NotificationProvider.js @@ -0,0 +1,155 @@ +import { + createContext, + useContext, + useEffect, + useGlobal, + setGlobal, +} from "reactn"; +import messaging from "@react-native-firebase/messaging"; +import notifee, { EventType } from "@notifee/react-native"; +import { CommonActions } from "@react-navigation/core"; +import { useAppState } from "@react-native-community/hooks"; +import { Linking } from "react-native"; + +import { dispatch } from "../navigation/NavigationService"; +import { Routes } from "../navigation"; +import firebase, { usersRef } from "../config/firebase"; +import alert from "../components/Alert"; + +export const NotificationContext = createContext(); + +export async function displayNotification(data) { + const { title, message, picture = null, video = null } = data || {}; + + let ios = { + categoryId: "default", + }; + + if (picture) { + ios.attachments = [{ url: picture }]; + } + + if (video) { + ios.attachments = [ + { + url: video, + thumbnailTime: data?.thumbnailTime + ? parseInt(data?.thumbnailTime, 10) + : 0, + }, + ]; + } + + await notifee.displayNotification({ + title, + body: message, + ios, + android: { + channelId: "default", + }, + data, + }); + + await notifee.incrementBadgeCount(); +} + +export async function triggerEvent({ type, detail }) { + const { notification } = detail; + + if (type === EventType.PRESS) { + const { data = {} } = notification || {}; + const { projectID = null, taskID = null, messageID = null } = data || {}; + + if (projectID) { + setGlobal({ currentProjectID: projectID }); + + if (taskID) { + dispatch( + CommonActions.navigate({ + name: Routes.TaskDetails, + params: { taskID, messageID }, + }) + ); + } + } + } +} + +export default ({ children }) => { + const [currentUID] = useGlobal("currentUID"); + + const currentAppState = useAppState(); + + useEffect(() => { + if (currentUID) { + updateFCMToken({ uid: currentUID }); + } + }, [currentUID]); + + useEffect(() => { + const unsubscribe = messaging().onMessage(async (remoteMessage) => { + console.log("Message handled in the foreground!", remoteMessage); + const { data } = remoteMessage; + + await displayNotification(data); + }); + const foregroundSubscription = notifee.onForegroundEvent(triggerEvent); + + return () => { + unsubscribe(); + foregroundSubscription(); + }; + }, []); + + useEffect(() => { + if (currentAppState === "active") { + notifee.setBadgeCount(0); + } + }, [currentAppState]); + + const updateFCMToken = async ({ uid }) => { + try { + const authResponse = await messaging().requestPermission(); + const enabled = authResponse === messaging.AuthorizationStatus.AUTHORIZED; + if (enabled) { + const fcmToken = await messaging().getToken(); + if (fcmToken) { + await usersRef.doc(uid).update({ + fcmTokens: firebase.firestore.FieldValue.arrayUnion(fcmToken), + }); + } + } else { + alert( + "Activez les notifications", + "Afin de rester informé de l'avancée de votre projet, il est important d'activer les notifications.", + [ + { + text: "Annuler", + onPress: () => {}, + style: "cancel", + }, + { + text: "Paramètres", + onPress: async () => { + Linking.openSettings(); + }, + style: "confirm", + }, + ] + ); + } + } catch (error) { + console.log("error", error); + } + }; + + return ( + + {children} + + ); +}; + +export const useNotification = () => { + return useContext(NotificationContext); +}; diff --git a/src/providers/PremiumProvider.js b/src/providers/PremiumProvider.js new file mode 100644 index 0000000..0e0f9ab --- /dev/null +++ b/src/providers/PremiumProvider.js @@ -0,0 +1,56 @@ +import React, { useContext, createContext, useEffect, useState } from "react"; + +import firebase from "../config/firebase"; +import { useUserData } from "./UserDataProvider"; + +export const PremiumContext = createContext(); + +export default ({ children }) => { + const { currentUID } = useUserData(); + + const [subscriptions, setSubscriptions] = useState(null); + + const subscriptionType = subscriptions?.length > 0 ? "PREMIUM" : "FREE"; + const isPaying = subscriptionType !== "FREE"; + + useEffect(() => { + if (currentUID) { + getPremiumStatus(); + } + }, [currentUID]); + + const getPremiumStatus = async () => { + try { + const { data } = await firebase + .functions() + .httpsCallable("payment-getPremiumStatus")({ + userID: currentUID, + }); + + if (data?.subscriptions?.length) { + setSubscriptions( + (data.subscriptions || [])?.filter((sub) => sub.status === "active") + ); + } + } catch (error) { + console.log(error); + } + }; + + return ( + + {children} + + ); +}; + +export const usePremium = () => useContext(PremiumContext); diff --git a/src/providers/SharedProviders.js b/src/providers/SharedProviders.js new file mode 100644 index 0000000..3a6930c --- /dev/null +++ b/src/providers/SharedProviders.js @@ -0,0 +1,39 @@ +import React from "react"; +import { ActionSheetProvider } from "@expo/react-native-action-sheet"; +import { SafeAreaProvider } from "react-native-safe-area-context"; + +import UserDataProvider from "./UserDataProvider"; +import WebViewProvider from "./WebViewProvider"; +import SplashAnimationProvider from "./SplashAnimationProvider"; +import UniversalLinkProvider from "./UniversalLinkProvider"; +import PremiumProvider from "./PremiumProvider"; +import StripeEmbeddedProvider from "./StripeEmbeddedProvider"; + +const SharedProviders = ({ children }) => { + const providers = [ + [SafeAreaProvider, {}], + [ActionSheetProvider, {}], + [SplashAnimationProvider, {}], + [WebViewProvider, {}], + [UserDataProvider, {}], + [StripeEmbeddedProvider, {}], + [PremiumProvider, {}], + [UniversalLinkProvider, {}], + ]; + + // Dynamically nest the providers using reduce + const Combined = providers.reduceRight( + (AccumulatedChildren, [Provider, props]) => { + return ({ children }) => ( + + {children} + + ); + }, + ({ children }) => <>{children}> + ); + + return {children}; +}; + +export default SharedProviders; diff --git a/src/providers/SplashAnimationProvider.js b/src/providers/SplashAnimationProvider.js new file mode 100644 index 0000000..e4e15b6 --- /dev/null +++ b/src/providers/SplashAnimationProvider.js @@ -0,0 +1,49 @@ +import { useState, useEffect, createContext, useRef } from "react"; +import { StyleSheet, Text, Animated } from "react-native"; +import { Fonts, Palette, Style } from "../styles"; +import { isWeb } from "../hooks/useLayoutType"; + +export const SplashAnimationContext = createContext(); + +const SplashAnimationProvider = ({ children }) => { + const [isFullyLoaded, setIsFullyLoaded] = useState(false); + const [showOverlay, setShowOverlay] = useState(true); + + const fadeAnim = useRef(new Animated.Value(1)).current; + + useEffect(() => { + if (isFullyLoaded) { + Animated.timing(fadeAnim, { + toValue: 0, + duration: 500, + useNativeDriver: true, + }).start(() => { + setShowOverlay(false); + }); + } + }, [isFullyLoaded]); + + return ( + + {children} + + {showOverlay && ( + + {isWeb && m} + + )} + + ); +}; + +export default SplashAnimationProvider; diff --git a/src/providers/StripeEmbeddedProvider.js b/src/providers/StripeEmbeddedProvider.js new file mode 100644 index 0000000..79823fe --- /dev/null +++ b/src/providers/StripeEmbeddedProvider.js @@ -0,0 +1,73 @@ +import { + EmbeddedCheckoutProvider, + EmbeddedCheckout, +} from "@stripe/react-stripe-js"; +import { useState, createContext } from "react"; +import { View, StyleSheet } from "react-native"; + +import { loadStripe } from "@stripe/stripe-js"; + +import { + STRIPE_PUBLISHABLE_KEY_LIVE, + STRIPE_PUBLISHABLE_KEY_TEST, +} from "../data/keys"; +import { mainBorderRadius } from "../styles/Style"; +import Overlay from "../components/Overlay"; +import Button from "../components/Button"; +import useLayoutType from "../hooks/useLayoutType"; + +const isStripeTesting = false; +const stripePromise = loadStripe( + isStripeTesting ? STRIPE_PUBLISHABLE_KEY_TEST : STRIPE_PUBLISHABLE_KEY_LIVE +); + +export const StripeEmbeddedContext = createContext(); + +export default ({ children }) => { + const { isMobile } = useLayoutType(); + + const [clientSecret, setClientSecret] = useState(null); + + return ( + + {children} + setClientSecret(null)} + > + + + + + + + + setClientSecret(null)} + /> + + + + ); +}; diff --git a/src/providers/TooltipProvider.js b/src/providers/TooltipProvider.js new file mode 100644 index 0000000..e62a7ed --- /dev/null +++ b/src/providers/TooltipProvider.js @@ -0,0 +1,63 @@ +import React, { useEffect, useGlobal } from "reactn"; +import { Text } from "react-native"; +import { Motion } from "@legendapp/motion"; + +import { Fonts, Palette } from "../styles"; +import { responsiveHeight } from "../actions/responsiveSizes"; + +function TooltipProvider({ children }) { + const [tooltip, setTooltip] = useGlobal("_tooltip"); + + useEffect(() => { + const resetTimeout = setTimeout(async () => { + setTooltip(null); + }, 2500); + + return () => clearTimeout(resetTimeout); + }, [tooltip]); + + function getBackgroundColor() { + if (tooltip?.type === "error") { + return Palette.red; + } + return Palette.primary; + } + return ( + <> + {children} + + + + {tooltip?.text} + + + > + ); +} + +export default TooltipProvider; diff --git a/src/providers/UniversalLinkProvider.js b/src/providers/UniversalLinkProvider.js new file mode 100644 index 0000000..cdd7aa0 --- /dev/null +++ b/src/providers/UniversalLinkProvider.js @@ -0,0 +1,111 @@ +import { useContext, useState, useEffect } from "reactn"; +import * as Linking from "expo-linking"; + +import { UserDataContext } from "./UserDataProvider"; +import { isWeb } from "../hooks/useLayoutType"; +import { navigateToTask } from "../navigation/NavigationService"; +import { SplashAnimationContext } from "./SplashAnimationProvider"; + +const appJson = require("../../app.json"); + +export const storeURL = { + apple: "apps.apple.com/app/id1661696886", + google: "play.google.com/store/apps", +}; + +const UniversalLinkProvider = ({ children }) => { + const { currentUID } = useContext(UserDataContext); + const { isFullyLoaded } = useContext(SplashAnimationContext); + + const [tempTaskData, setTempTaskData] = useState(null); + + useEffect(() => { + const handleDeepLink = async (event) => { + console.log("event", event); + + const { path = "", queryParams } = Linking.parse(event.url); + + console.log("path", path); + console.log("queryParams", queryParams); + + const appSchemeURL = `${ + appJson.expo.scheme + }://app/${path}?${new URLSearchParams(queryParams).toString()}`; + + const appStoreURL = `itms-apps://${storeURL.apple}`; + + if (isWeb) { + const userAgent = + navigator.userAgent || navigator.vendor || window.opera; + const isIOSBrowser = + /iPad|iPhone|iPod/.test(userAgent) || + (/Macintosh/.test(userAgent) && + navigator.maxTouchPoints && + navigator.maxTouchPoints > 2); + + if (isIOSBrowser) { + try { + const canOpen = await Linking.canOpenURL(appSchemeURL); + if (canOpen) { + window.location.href = appSchemeURL; + } else { + window.location.href = appStoreURL; + } + } catch (error) { + console.error("Redirection error:", error); + handleParams(path); + } + } else { + handleParams(path); + } + } else { + handleParams(path); + } + }; + + const initDeepLinkHandling = async () => { + const initialUrl = await Linking.getInitialURL(); + if (initialUrl) { + console.log("Initial URL:", initialUrl); + handleDeepLink({ url: initialUrl }); + } + + Linking.addEventListener("url", handleDeepLink); + + return () => { + Linking.removeEventListener("url", handleDeepLink); + }; + }; + + initDeepLinkHandling(); + }, []); + + useEffect(() => { + if (tempTaskData && currentUID && isFullyLoaded) { + console.log("try to navigate to task"); + navigateToTask(tempTaskData); + setTempTaskData(null); + } + }, [tempTaskData, currentUID, isFullyLoaded]); + + const handleParams = (path) => { + console.log("path", path); + + cleanURL(); + }; + + const cleanURL = () => { + if (isWeb) { + const url = new URL(window.location); + + console.log(url); + + url.search = ""; + window.history.replaceState({}, document.title, url.origin.toString()); + } + }; + + return children; +}; + +export default UniversalLinkProvider; diff --git a/src/providers/UserDataProvider.js b/src/providers/UserDataProvider.js new file mode 100644 index 0000000..970c35d --- /dev/null +++ b/src/providers/UserDataProvider.js @@ -0,0 +1,165 @@ +import { useContext, createContext, useGlobal } from "reactn"; +import { useDataFromRef } from "react-native-minuit/src/hooks"; +import useMinuit from "react-native-minuit/src/hooks/useMinuit"; + +import firebase, { usersRef } from "../config/firebase"; +import { useState } from "react"; +import { checkIfEmailIsValid } from "../actions/signupActions"; + +export const UserDataContext = createContext(); + +export default ({ children }) => { + const { setIsLoading, setTooltip } = useMinuit(); + + const [pendingUserData, setPendingUserData] = useState({ + creationTimestamp: new Date(), + }); + + const [currentUID] = useGlobal("currentUID"); + const [currentUserData, setCurrentUserData] = useGlobal("currentUserData"); + const [currentUserRoles] = useGlobal("currentUserRoles"); + + useDataFromRef({ + ref: currentUID ? usersRef.doc(currentUID) : null, + simpleRef: true, + listener: true, + condition: currentUID, + refreshArray: [currentUID], + onUpdate: (data) => { + if (data) { + setCurrentUserData(data); + } else { + setCurrentUserData(null); + } + }, + }); + + const updatePendingUserData = (newData) => { + setPendingUserData((prevData) => ({ + ...prevData, + ...newData, + })); + }; + + const updateUserData = async ({ data, shouldSetTooltip = true }) => { + try { + await setIsLoading(true); + + let dynamicUID = currentUID || null; + + let cleanData = { + ...currentUserData, + ...data, + lastUpdateTimestamp: new Date(), + }; + + // if (cleanData?.firstName?.length > 2 && cleanData?.lastName?.length > 2) { + // cleanData = { + // ...cleanData, + // firstName: capitalize(cleanData?.firstName?.toLowerCase()), + // lastName: capitalize(cleanData?.lastName?.toLowerCase()), + // }; + // } else { + // throw new Error("Veuillez renseigner un prénom et un nom"); + // } + + if (!checkIfEmailIsValid({ email: cleanData?.email })) { + throw new Error("Veuillez renseigner un email valide"); + } + + // let cleanPhoneNumber = formatPhoneNumber({ + // phoneNumber: cleanData.phoneNumber, + // }); + + // if (cleanPhoneNumber) { + // cleanData.phoneNumber = cleanPhoneNumber; + // } else { + // throw new Error("Veuillez renseigner un numéro de téléphone valide"); + // } + + if (!dynamicUID) { + const { email, password } = cleanData; + + const { user = null } = await firebase + .auth() + .createUserWithEmailAndPassword(email, password); + + dynamicUID = user.uid; + } + + delete cleanData.password; + + cleanData = { + ...cleanData, + userID: dynamicUID, + }; + + if (!cleanData?.creationTimestamp) { + cleanData.creationTimestamp = new Date(); + } + + console.log("cleanData", cleanData); + + await usersRef.doc(dynamicUID).set(cleanData, { merge: true }); + + if (shouldSetTooltip) { + setTooltip({ + type: "success", + text: "Données enregistrées avec succès", + }); + } + } catch (e) { + console.log(e); + + setTooltip({ + type: "error", + text: "Erreur lors de la mise à jour des données utilisateur", + }); + + throw e; + } finally { + await setIsLoading(false); + } + }; + + const onSignOut = async () => { + try { + setIsLoading(true); + + await firebase.auth().signOut(); + } catch (e) { + console.log(e); + } finally { + setIsLoading(false); + } + }; + + const isSuperAdmin = currentUserRoles.some((role) => role === "SUPERADMIN"); + + return ( + + {children} + + ); +}; + +export const useUserData = () => { + return useContext(UserDataContext); +}; diff --git a/src/providers/WebViewProvider.js b/src/providers/WebViewProvider.js new file mode 100644 index 0000000..6c0d30d --- /dev/null +++ b/src/providers/WebViewProvider.js @@ -0,0 +1,73 @@ +import React, { useRef, useEffect, useMemo, createContext } from "reactn"; + +import BottomSheetContainer from "../components/BottomSheetContainer"; +import { WebView } from "../components/WebView"; + +import { Palette } from "../styles"; +import { useContext } from "react"; +import { Platform } from "react-native"; + +export const WebViewContext = createContext(); + +export default ({ children }) => { + const [webViewUrl, setWebViewUrl] = React.useState(Platform.OS == "ios" ? null : undefined); + + const snapPoints = useMemo(() => ["70%", "90%"], []); + const bottomSheetRef = useRef(null); + + useEffect(() => { + if (webViewUrl) { + bottomSheetRef.current?.expand(); + } else { + bottomSheetRef.current?.close(); + } + }, [webViewUrl]); + + const handleCloseWebView = (url) => { + if (url?.includes("minuit.starter")) { + setWebViewUrl(Platform.OS == "ios" ? null : undefined); // Réinitialiser l'URL + bottomSheetRef.current?.close(); // Fermer la BottomSheet + } + }; + + const docExtensionList = [".docx", ".doc", ".xlsx", ".xls", ".pptx", ".ppt"]; + const isOfficeDoc = docExtensionList.some((ext) => + webViewUrl?.toLowerCase()?.includes(ext) + ); + + const dynamicWebViewUrl = isOfficeDoc + ? `https://docs.google.com/gview?embedded=true&url=${encodeURIComponent( + webViewUrl + )}` + : webViewUrl; + + return ( + + {children} + + { + if (index === -1) { + setWebViewUrl(Platform.OS == "ios" ? null : undefined); + } + }} + index={-1} + enablePanDownToClose + > + handleCloseWebView(event.url)} + /> + + + ); +}; + +export const useWebView = () => useContext(WebViewContext); diff --git a/src/providers/index.js b/src/providers/index.js new file mode 100644 index 0000000..e0e4071 --- /dev/null +++ b/src/providers/index.js @@ -0,0 +1,24 @@ +import React from "react"; +import { MinuitProvider } from "react-native-minuit"; + +import SharedProviders from "./SharedProviders"; +import NotificationProvider from "./NotificationProvider"; + +import { Palette } from "../styles"; + +export default ({ children }) => { + return ( + + + {children} + + + ); +}; diff --git a/src/providers/index.web.js b/src/providers/index.web.js new file mode 100644 index 0000000..c2ee959 --- /dev/null +++ b/src/providers/index.web.js @@ -0,0 +1,19 @@ +import React from "react"; + +import LoadingProvider from "./LoadingProvider"; +import TooltipProvider from "./TooltipProvider"; +import StripeEmbeddedProvider from "./StripeEmbeddedProvider"; + +import SharedProviders from "./SharedProviders"; + +export default ({ children }) => { + return ( + + + + {children} + + + + ); +}; diff --git a/src/screens/AccountSettings.js b/src/screens/AccountSettings.js new file mode 100644 index 0000000..88cd177 --- /dev/null +++ b/src/screens/AccountSettings.js @@ -0,0 +1,277 @@ +import React, { useGlobal } from "reactn"; +import { Text, Pressable } from "react-native"; +import * as ImagePicker from "expo-image-picker"; +import useMinuit from "react-native-minuit/src/hooks/useMinuit.js"; + +import { responsiveWidth } from "../actions/responsiveSizes.js"; +import Page from "../layouts/Page"; + +import Avatar from "../components/Avatar"; +import InputRow from "../components/InputRow"; +import ItemRowList from "../components/ItemRowList.js"; +import alert from "../components/Alert.js"; + +import firebase, { usersRef } from "../config/firebase"; + +import { Fonts, gutters, Palette, Style } from "../styles"; +import { uploadFileToFirebase } from "../helpers/uploadToFirebase"; +import { Routes } from "../navigation/Routes.js"; + +import { useUserData } from "../providers/UserDataProvider.js"; + +export default ({ navigation }) => { + const { setIsLoading, setTooltip } = useMinuit(); + const { onSignOut } = useUserData(); + + const [currentUID] = useGlobal("currentUID"); + const [currentUserData] = useGlobal("currentUserData"); + + const settingsList = [ + { + title: "Nom du compte", + key: "name", + value: currentUserData?.name || "", + type: "string", + }, + { + title: "Adresse email", + key: "email", + value: currentUserData?.email || "", + type: "string", + }, + { + title: "Mot de passe", + key: "password", + value: "", + type: "string", + }, + ]; + + const destructiveSettingsList = [ + { + title: "Supprimer mon compte", + action: () => onDeleteUserAccount(), + textStyle: { + color: Palette.red, + }, + }, + ].filter(({ condition = true }) => condition); + + const onChangePicture = async () => { + try { + setIsLoading(true); + + let result = await ImagePicker.launchImageLibraryAsync({ + mediaTypes: ImagePicker.MediaTypeOptions.Images, + allowsEditing: true, + aspect: [4, 4], + quality: 1, + }); + + if (result?.assets?.[0]?.uri) { + const { resultURI = null } = await uploadFileToFirebase({ + uri: result?.assets?.[0]?.uri, + path: `users/${currentUID}/profilePicture.png`, + }); + + if (resultURI) { + await usersRef.doc(currentUID).update({ + profilePictureURL: resultURI, + }); + + await firebase.auth().currentUser.updateProfile({ + photoURL: resultURI, + }); + + setTooltip({ + type: "success", + text: "Photo de profil mise à jour", + }); + } else { + throw new Error("Erreur changement photo de profil"); + } + } + } catch (error) { + console.log(error); + + setTooltip({ + type: "error", + text: error.message, + }); + } finally { + setIsLoading(false); + } + }; + + const onUpdateValue = async ({ + key, + value = null, + currentPassword = null, + }) => { + try { + setIsLoading(true); + const user = firebase.auth().currentUser; + + const reauthenticateUser = async () => { + try { + const credential = firebase.auth.EmailAuthProvider.credential( + user?.email, + currentPassword + ); + + await user.reauthenticateWithCredential(credential); + } catch (error) { + throw new Error("Erreur authentification"); + } + }; + + if (!value) { + throw new Error("Vérifiez les informations saisies"); + } + + if (key === "name") { + await user.updateProfile({ + displayName: value, + }); + } + + if (["email", "password"].includes(key)) { + await reauthenticateUser(); + + if (key === "email") { + try { + await user.updateEmail(value); + } catch (e) { + throw new Error("Erreur changement email"); + } + } + + if (key === "password") { + try { + await user.updatePassword(value); + } catch (e) { + throw new Error("Erreur changement mot de passe"); + } + } + } + + if (key !== "password") { + await usersRef.doc(currentUID).update({ + [key]: value, + }); + } + + setTooltip({ + type: "success", + text: "Modifications enregistrées", + }); + } catch (error) { + console.log(error); + + setTooltip({ + type: "error", + text: error.message, + }); + } finally { + setIsLoading(false); + } + }; + + const onDeleteUserAccount = async () => { + alert( + "Êtes-vous sûr?", + "La suppression de votre compte entraînera la suppression de toutes les données liées.", + [ + { + text: "Annuler", + onPress: () => {}, + style: "cancel", + }, + { + text: "Confirmer", + onPress: async () => { + try { + setIsLoading(true); + + await firebase + .functions() + .httpsCallable("users-deleteUserAccount")(); + + await onSignOut(); + + setTooltip({ + type: "success", + text: "Compte supprimé avec succès!", + }); + + navigation.reset({ + index: 0, + routes: [ + { + name: Routes.Login, + }, + ], + }); + } catch (error) { + setTooltip({ + type: "error", + text: error.message, + }); + } finally { + setIsLoading(false); + } + }, + style: "confirm", + }, + ], + { cancelable: false } + ); + }; + + return ( + + + + + Modifier + + + + {settingsList.map((setting) => { + const { title, key, value, type } = setting; + + return ( + + ); + })} + + {destructiveSettingsList.map((setting, index) => ( + + ))} + + ); +}; diff --git a/src/screens/Chat.js b/src/screens/Chat.js new file mode 100644 index 0000000..1aa1f57 --- /dev/null +++ b/src/screens/Chat.js @@ -0,0 +1,59 @@ +import React, { useState, useGlobal } from "reactn"; +import { useKeyboard } from "@react-native-community/hooks"; + +import { responsiveHeight } from "../actions/responsiveSizes.js"; + +import Page from "../layouts/Page"; + +import ChatInterface, { onSendMessage } from "../components/ChatInterface"; +import ChatInput from "../components/ChatInput.js"; +import useLayoutType from "../hooks/useLayoutType.js"; + +import { gutters } from "../styles/Style.js"; + +export default ({ navigation }) => { + const [currentUID] = useGlobal("currentUID"); + const [currentProjectID] = useGlobal("currentProjectID"); + + const [message, setMessage] = useState(""); + + const chatID = `TEST_CHAT_ID`; + + const { isDesktop } = useLayoutType(); + const { keyboardShown = false, keyboardHeight = 0 } = useKeyboard(); + + return ( + + + + { + onSendMessage({ + message, + setMessage, + chatID, + customPayload: { ...customPayload }, + }); + }} + placeholder={"Laissez un commentaire..."} + containerStyle={{ + position: "absolute", + bottom: gutters * 6 + (keyboardShown ? keyboardHeight : 0), + right: 0, + left: 0, + width: "auto", + }} + /> + + ); +}; diff --git a/src/screens/ForgotPassword.js b/src/screens/ForgotPassword.js new file mode 100644 index 0000000..32fcece --- /dev/null +++ b/src/screens/ForgotPassword.js @@ -0,0 +1,86 @@ +import React, { useState, useRef, useGlobal } from "reactn"; +import { Text, KeyboardAvoidingView } from "react-native"; +import { responsiveHeight } from "../actions/responsiveSizes.js"; + +import firebase from "../config/firebase"; + +import Button from "../components/Button"; +import { Input } from "../components/Input"; + +import { Fonts, Style } from "../styles"; +import Page from "../layouts/Page"; + +export default ({ navigation }) => { + const [, setTooltip] = useGlobal("_tooltip"); + const [, setIsLoading] = useGlobal("_isLoading"); + + const [email, setEmail] = useState(__DEV__ ? "hello@minuit.agency" : ""); + + const onResetPassword = async () => { + try { + setIsLoading(true); + + await firebase.auth().sendPasswordResetEmail(email); + + setTooltip({ + text: "Email de réinitialisation envoyé!", + type: "success", + }); + + navigation.goBack(); + } catch (error) { + console.log(error); + setTooltip({ + text: "Une erreur est survenue", + type: "error", + }); + } finally { + setIsLoading(false); + } + }; + + return ( + ( + + )} + > + + + Saisissez votre adresse mail, nous vous enverrons un lien pour + réinitialiser votre mot de passe. + + + + + + ); +}; diff --git a/src/screens/Home.js b/src/screens/Home.js new file mode 100644 index 0000000..a64f2f6 --- /dev/null +++ b/src/screens/Home.js @@ -0,0 +1,224 @@ +import { useState } from "react"; +import React from "reactn"; +import { responsiveHeight } from "react-native-responsive-dimensions"; +import useMinuit from "react-native-minuit/src/hooks/useMinuit"; + +import Page from "../layouts/Page"; + +import { Palette, gutters } from "../styles"; + +import SectionTextHeader from "../components/SectionTextHeader"; +import OptionSelector from "../components/OptionSelector"; +import { Input } from "../components/Input"; +import Button from "../components/Button"; +import DocumentDropZone from "../components/DocumentDropZone"; +import FilesPreview from "../components/FilesPreview"; + +import { documentsRef } from "../config/firebase"; + +const accountTypeList = { + INDIVIDUAL: "Particulier", + COMPANY: "Société", +}; + +const accountTypeColorMap = { + INDIVIDUAL: { + primary: Palette.primary, + secondary: Palette.transparentPrimary, + }, + COMPANY: { + primary: Palette.radioactivGreen, + secondary: Palette.transparentRadioactivGreen, + }, +}; + +export default ({ containerStyle = {} }) => { + const { setIsLoading, setTooltip } = useMinuit(); + + const documentID = "TEST_DOCUMENT_ID"; + + const [billingDetails, setBillingDetails] = useState({ + type: "INDIVIDUAL", + name: "", + address: "", + city: "", + zipCode: "", + countryCode: "", + vatNumber: "", + companyIdentifier: "", + files: [], + }); + + const { + type = "INDIVIDUAL", + name = "", + address = "", + city = "", + zipCode = "", + countryCode = "FR", + vatNumber = "", + companyIdentifier = "", + files = [], + } = billingDetails || {}; + + const updateBillingDetails = (key, value) => { + setBillingDetails({ + ...billingDetails, + [key]: value, + }); + }; + + const fieldList = [ + { + key: "name", + label: type === "COMPANY" ? "Raison sociale" : "Nom", + value: name, + inputProps: { + autoCapitalize: type === "COMPANY" ? "none" : "words", + }, + }, + { + key: "address", + label: "Adresse", + value: address, + inputProps: { + type: "autoCompleteAddress", + }, + }, + { + key: "city", + label: "Ville", + value: city, + }, + { + key: "zipCode", + label: "Code postal", + value: zipCode, + inputProps: { + isNumeric: true, + }, + }, + { + key: "countryCode", + label: "Pays", + value: countryCode, + type: "countryPicker", + }, + { + key: "vatNumber", + label: "Numéro de TVA intracommunautaire (facultatif)", + value: vatNumber, + condition: type === "COMPANY", + required: false, + }, + { + key: "companyIdentifier", + label: "Numéro SIRET", + value: companyIdentifier, + condition: type === "COMPANY", + }, + ].filter(({ condition = true }) => condition); + + const onSubmit = async () => { + try { + setIsLoading(true); + + let cleanObject = {}; + + fieldList.forEach(({ key, value, label, required = true }) => { + if (value) { + cleanObject[key] = value; + } else if (required) { + throw new Error(`Le champ ${label.toLowerCase()} est obligatoire`); + } + }); + + await documentsRef.doc(documentID).set( + { + ...cleanObject, + }, + { + merge: true, + } + ); + + setTooltip({ + type: "sucess", + text: "Document publié!", + }); + } catch (error) { + setTooltip({ + type: "error", + text: error.message, + }); + } finally { + setIsLoading(false); + } + }; + + return ( + ( + + )} + > + <> + + + updateBillingDetails("type", value)} + containerStyle={{ marginBottom: gutters }} + colorMap={accountTypeColorMap} + /> + + {fieldList.map( + ({ key, label, value, type = "default", inputProps = {} }) => ( + + + + updateBillingDetails(key, value)} + containerStyle={{ marginBottom: gutters }} + type={type} + {...inputProps} + /> + + ) + )} + + updateBillingDetails("files", files)} + containerStyle={{ + alignSelf: "center", + height: 150, + width: "100%", + marginBottom: gutters, + }} + /> + + updateBillingDetails("files", files)} + documentID={documentID} + containerStyle={{}} + /> + > + + ); +}; diff --git a/src/screens/Login.js b/src/screens/Login.js new file mode 100644 index 0000000..c87597d --- /dev/null +++ b/src/screens/Login.js @@ -0,0 +1,344 @@ +import React, { useState, useRef, useEffect, useGlobal } from "reactn"; +import { + Text, + View, + KeyboardAvoidingView, + Image, + Pressable, +} from "react-native"; +import AsyncStorage from "@react-native-async-storage/async-storage"; + +import { + responsiveHeight, + responsiveWidth, +} from "../actions/responsiveSizes.js"; + +import firebase from "../config/firebase"; + +import Button from "../components/Button"; +import { Input } from "../components/Input"; + +import { Fonts, gutters, Palette, Style } from "../styles"; +import { Routes } from "../navigation"; +import { art, mockups } from "../assets"; +import { + checkIfEmailIsValid, + checkIfPasswordIsStrongEnough, + handleFirebaseError, +} from "../actions/signupActions"; + +import useLayoutType from "../hooks/useLayoutType.js"; +import { capitalize } from "../helpers/index.js"; + +export default ({ navigation }) => { + console.log("LOGINSCREEN"); + const [, setTooltip] = useGlobal("_tooltip"); + const [, setIsLoading] = useGlobal("_isLoading"); + + const [mode, setMode] = useState("LOGIN"); + + const [emailIsStatic, setEmailIsStatic] = useState(false); + + const [email, setEmail] = useState("login@minuit.com"); + const [password, setPassword] = useState("password"); + + const [firstName, setFirstName] = useState(""); + const [lastName, setLastName] = useState(""); + + const passwordInputRef = useRef(); + + const { isDesktop } = useLayoutType(); + + useEffect(() => { + const checkIfUserIsLoggedIn = async () => { + const userEmail = await AsyncStorage.getItem("userEmail"); + + if (userEmail) { + setEmail(userEmail); + setEmailIsStatic(true); + } + }; + + checkIfUserIsLoggedIn(); + }, []); + + const onLogin = async () => { + try { + setIsLoading(true); + + let trimmedEmail = email.trim(); + + await firebase.auth().signInWithEmailAndPassword(trimmedEmail, password); + await AsyncStorage.setItem("userEmail", trimmedEmail); + + onAuthSuccess(); + } catch (error) { + console.log(error); + setTooltip({ + text: handleFirebaseError(error.code), + type: "error", + }); + } finally { + setIsLoading(false); + } + }; + + const onSignup = async () => { + try { + setIsLoading(true); + + if (!checkIfPasswordIsStrongEnough({ password })) { + throw new Error( + "Votre mot de passe doit contenir au moins 6 caractères, une majuscule et un chiffre." + ); + } + + if (!checkIfEmailIsValid({ email })) { + throw new Error("Veuillez renseigner une adresse email valide."); + } + + const { user = null } = await firebase + .auth() + .createUserWithEmailAndPassword(email, password); + + if (!user) { + throw new Error("Erreur lors de la création du compte"); + } + + let userObject = { + firstName: capitalize(firstName.trim()), + lastName: capitalize(lastName.trim()), + }; + + // push user data to firestore + + onAuthSuccess(); + + setTooltip({ + text: "Votre compte a été créé avec succès!", + type: "success", + }); + } catch (error) { + console.log(error); + setTooltip({ + text: error?.code?.startsWith("auth/") + ? handleFirebaseError(error.code) + : error.message, + type: "error", + }); + } finally { + setIsLoading(false); + } + }; + + const onAuthSuccess = async () => { + navigation.reset({ + index: 0, + routes: [{ name: Routes.Splash }], + }); + }; + + return ( + + + + + + + minuit.starter + + + {emailIsStatic && mode === "LOGIN" ? ( + <> + + {`Vous êtes connecté(e) avec l'adresse ${email},`} + + + { + await AsyncStorage.removeItem("userEmail"); + + setEmailIsStatic(false); + }} + > + + Modifier + + + > + ) : ( + passwordInputRef.current.focus(), + }} + /> + )} + + + + {mode === "LOGIN" ? ( + navigation.navigate("ForgotPassword")} + style={{ marginBottom: gutters }} + > + + Mot de passe oublié? + + + ) : ( + <> + + + + > + )} + + + + navigation.navigate("TermsOfUse")}> + + En vous {mode === "LOGIN" ? "connectant" : "inscrivant"}, vous + acceptez sans réserve les{" "} + + conditions générales d'utilisation + {" "} + de minuit.starter. + + + + + + {isDesktop && ( + + + + )} + + ); +}; diff --git a/src/screens/Notifications.js b/src/screens/Notifications.js new file mode 100644 index 0000000..3c30537 --- /dev/null +++ b/src/screens/Notifications.js @@ -0,0 +1,92 @@ +import React, { useEffect } from "reactn"; +import { Text, View, FlatList } from "react-native"; +import { useDataFromRef } from "react-native-minuit/src/hooks"; +import moment from "moment"; +import { Motion } from "@legendapp/motion"; + +import Page from "../layouts/Page"; + +import { Fonts, Style } from "../styles"; +import { notificationsRef } from "../config/firebase"; + +import { LoaderIndicator } from "../providers/LoadingProvider"; + +export default (props) => { + const baseNotificationRef = notificationsRef; + + useEffect(() => { + markAsRead(); + }, []); + + const markAsRead = async () => { + try { + } catch (error) { + console.error(error); + } + }; + + const { + data: notificationList, + loading, + loadMore, + } = useDataFromRef({ + ref: baseNotificationRef.orderBy("timestamp", "desc"), + usePagination: true, + batchSize: 40, + documentID: "notificationID", + }); + + return ( + + { + const { title = "", timestamp } = item; + + const randomDuration = Math.floor(Math.random() * 1000) + 500; + + return ( + {}} + > + + + {title} + + + + + {moment(timestamp.toDate()).format("[Le] DD/MM [à] HH:mm")} + + + ); + }} + keyExtractor={(item) => + `Notifications_${item.notificationID}_${item.projectID}` + } + ItemSeparatorComponent={() => ( + + )} + ListFooterComponent={loading ? : null} + onEndReached={loadMore} + onEndReachedThreshold={0.5} + /> + + ); +}; diff --git a/src/screens/Onboarding.js b/src/screens/Onboarding.js new file mode 100644 index 0000000..618aeb5 --- /dev/null +++ b/src/screens/Onboarding.js @@ -0,0 +1,21 @@ +import React from "react"; +import { Text, View } from "react-native"; +import Button from "../components/Button"; +import { gutters } from "../styles"; +import { navigate } from "../navigation/NavigationService"; +import { Routes } from "../navigation"; + +export default ({ navigation }) => { + return ( + + navigate(Routes.Writing)} /> + + ); +}; diff --git a/src/screens/PrivacyPolicy.js b/src/screens/PrivacyPolicy.js new file mode 100644 index 0000000..fc0a5df --- /dev/null +++ b/src/screens/PrivacyPolicy.js @@ -0,0 +1,60 @@ +import React from "reactn"; +import { Text } from "react-native"; + +import Page from "../layouts/Page"; + +import { Fonts } from "../styles"; + +const privacyPolicy = `Politique de Confidentialité de minuit.starter + +1. Introduction + +La présente Politique de Confidentialité s'applique à l'application "minuit.starter" éditée par MINUIT.AGENCY. Elle a pour objet d'informer les utilisateurs de la manière dont leurs informations personnelles sont collectées, utilisées et protégées. + +2. Collecte des données + +Nous collectons les informations que vous nous fournissez directement lorsque vous utilisez notre application. Cela peut inclure votre nom, adresse e-mail, contenu du projet, et tout autre information que vous choisissez de partager. + +3. Utilisation des données + +Les informations collectées sont utilisées pour : + +Fournir, maintenir et améliorer notre application. +Traiter les transactions et envoyer des notifications relatives à vos transactions. +Envoyer des communications techniques, mises à jour, alertes de sécurité et messages d'assistance. +4. Partage des informations +Nous ne vendons, ni louons vos informations personnelles à des tiers à des fins marketing. Nous pouvons partager vos informations avec des tiers en relation avec la prestation de services pour notre compte (par exemple, le traitement des paiements). + +5. Sécurité + +MINUIT.AGENCY s'engage à protéger la sécurité de vos informations et utilise pour ce faire des mesures techniques et organisationnelles appropriées. + +6. Conservation des données + +Nous conservons vos informations aussi longtemps que votre compte est actif ou aussi longtemps que nécessaire pour vous fournir des services. + +7. Vos droits + +Conformément à la réglementation en vigueur, vous disposez d'un droit d'accès, de rectification et de suppression de vos données. Vous pouvez également vous opposer à l'utilisation de vos données. + +8. Mises à jour de la Politique de Confidentialité + +Nous pouvons occasionnellement mettre à jour cette politique. Si des modifications majeures sont apportées, nous vous en informerons via notre application ou par d'autres moyens. + +9. Contact + +Si vous avez des questions concernant cette Politique de Confidentialité, contactez-nous à : hello@minuit.agency. + +Dernière mise à jour : 06/08/2023.`; + +export default ({} = {}) => { + return ( + + {privacyPolicy} + + ); +}; diff --git a/src/screens/ProjectLinks.js b/src/screens/ProjectLinks.js new file mode 100644 index 0000000..de94c80 --- /dev/null +++ b/src/screens/ProjectLinks.js @@ -0,0 +1,93 @@ +import React, { useGlobal } from "reactn"; + +import Page from "../layouts/Page"; + +import InputRow from "../components/InputRow.js"; + +import { projectsRef } from "../config/firebase"; +import { + checkIfFigmaLinkIsValid, + getValueFromKeyState, +} from "../helpers/index.js"; + +export default (props) => { + const [, setIsLoading] = useGlobal("_isLoading"); + const [, setTooltip] = useGlobal("_tooltip"); + + const [currentProjectData] = useGlobal("currentProjectData"); + + const settingsList = [ + { + title: "Lien du Figma", + key: "links.figma", + type: "string", + }, + { + title: "Lien de test", + key: "links.test", + type: "string", + }, + { + title: "Lien de production", + key: "links.production", + type: "string", + }, + { + title: "Lien du dashboard", + key: "dashboardURL", + type: "string", + }, + { + title: "Lien du git", + key: "links.git", + type: "string", + }, + ]; + + const onUpdateSetting = async ({ key, value }) => { + try { + setIsLoading(true); + + if (key === "links.figma") { + if (!checkIfFigmaLinkIsValid({ figmaLink: value })) { + throw new Error("Le lien Figma n'est pas valide"); + } + } + + await projectsRef.doc(currentProjectData.id).update({ + [key]: value, + }); + + setTooltip({ + type: "success", + text: "Paramètre mis à jour", + }); + } catch (error) { + setTooltip({ + type: "error", + text: error.message, + }); + } finally { + setIsLoading(false); + } + }; + + return ( + + {settingsList.map((setting) => { + const { title, key, type } = setting; + + return ( + + ); + })} + + ); +}; diff --git a/src/screens/ProjectSettings.js b/src/screens/ProjectSettings.js new file mode 100644 index 0000000..483763d --- /dev/null +++ b/src/screens/ProjectSettings.js @@ -0,0 +1,226 @@ +import React, { useState } from "reactn"; +import { Text, Pressable } from "react-native"; +import * as ImagePicker from "expo-image-picker"; +import useMinuit from "react-native-minuit/src/hooks/useMinuit.js"; + +import Page from "../layouts/Page"; +import { responsiveWidth } from "../actions/responsiveSizes.js"; + +import Avatar from "../components/Avatar"; +import InputRow from "../components/InputRow.js"; +import ItemRowList from "../components/ItemRowList.js"; +import alert from "../components/Alert.js"; + +import { Fonts, gutters, Palette, Style } from "../styles"; + +import { projectsRef } from "../config/firebase"; + +import { uploadFileToFirebase } from "../helpers/uploadToFirebase"; +import { getValueFromKeyState } from "../helpers/index.js"; + +import { useUserData } from "../providers/UserDataProvider.js"; +import { Routes } from "../navigation/Routes.js"; + +export default ({ navigation }) => { + const { setIsLoading, setTooltip } = useMinuit(); + + const [stateToEdit] = useState({}); + + const { isSuperAdmin } = useUserData(); + + const settingsList = [ + { + title: "Activer le 'shake'", + key: "enableShake", + type: "boolean", + }, + { + title: "Activer les copies de sauvegarde", + key: "enableBackup", + type: "boolean", + }, + { + title: "Passer en mode 'maintenance'", + key: "enableMaintenanceMode", + type: "boolean", + }, + { + title: "Identifiant Firebase", + key: "firebaseConfig.projectId", + type: "string", + }, + { + title: "Identifiant App Store", + key: "storeConfig.apple.appID", + type: "string", + }, + { + title: "Identifiant Algolia", + key: "algoliaConfig.appId", + type: "string", + }, + ]; + + const destructiveSettingsList = [ + { + title: "Archiver le projet", + action: () => onArchiveProject(), + textStyle: { + color: Palette.red, + }, + condition: isSuperAdmin, + }, + ].filter(({ condition = true }) => condition); + + const onChangePicture = async () => { + try { + setIsLoading(true); + + let result = await ImagePicker.launchImageLibraryAsync({ + mediaTypes: ImagePicker.MediaTypeOptions.All, + allowsEditing: true, + aspect: [4, 4], + quality: 1, + }); + + if (result?.assets?.[0]?.uri) { + const { resultURI = null } = await uploadFileToFirebase({ + uri: result?.assets?.[0]?.uri, + path: `projects/${Math.random()}/icon.png`, + }); + + if (resultURI) { + await projectsRef.doc(Math.random()).update({ + iconURL: resultURI, + }); + + setTooltip({ + type: "success", + text: "Image changée avec succès", + }); + } else { + throw new Error("Erreur changement d'image"); + } + } + } catch (error) { + console.log(error); + + setTooltip({ + type: "error", + text: error.message, + }); + } finally { + setIsLoading(false); + } + }; + + const onUpdateSetting = async ({ key, value }) => { + try { + await projectsRef.doc(Math.random()).update({ + [key]: value, + }); + + setTooltip({ + type: "success", + text: "Paramètre mis à jour", + }); + } catch (error) { + setTooltip({ + type: "error", + text: error.message, + }); + } + }; + + const onArchiveProject = async () => { + alert( + "Êtes-vous sûr?", + "Pour annuler l'archivage du projet, il faudra contacter le support.", + [ + { + text: "Annuler", + onPress: () => {}, + style: "cancel", + }, + { + text: "Confirmer", + onPress: async () => { + try { + setIsLoading(true); + + setTooltip({ + type: "success", + text: "Projet archivé avec succès!", + }); + + navigation.reset({ + index: 0, + routes: [ + { + name: Routes.BottomTab, + }, + ], + }); + } catch (error) { + setTooltip({ + type: "error", + text: error.message, + }); + } finally { + setIsLoading(false); + } + }, + style: "confirm", + }, + ], + { cancelable: false } + ); + }; + + return ( + + + + + Modifier + + + + {settingsList.map((setting) => { + const { title, key, type } = setting; + + return ( + + ); + })} + + {destructiveSettingsList.map((setting, index) => ( + + ))} + + ); +}; diff --git a/src/screens/Settings.js b/src/screens/Settings.js new file mode 100644 index 0000000..ff10000 --- /dev/null +++ b/src/screens/Settings.js @@ -0,0 +1,191 @@ +import React, { useRef, useContext, useGlobal } from "reactn"; +import { Text, View } from "react-native"; + +import { WebViewContext } from "../providers/WebViewProvider"; +import { useUserData } from "../providers/UserDataProvider"; + +import Page from "../layouts/Page"; + +import { Routes } from "../navigation"; +import { responsiveHeight } from "../actions/responsiveSizes.js"; + +import ItemRowList from "../components/ItemRowList"; +import BottomSheetContainer from "../components/BottomSheetContainer.js"; +import IconSelector from "../components/IconSelector.js"; + +import useLayoutType from "../hooks/useLayoutType"; + +import { Fonts, Palette, Style, gutters } from "../styles"; +import { icons } from "../assets"; + +import { onStoreReview, openLinkInBrowser } from "../helpers"; +import { + agencyWhatsAppNumber, + calendlyUrl, + instagramUrl, + termsOfSalesUrl, +} from "../data"; +import IconContainer from "../components/IconContainer.js"; + +export default ({ navigation }) => { + const { isDesktop, isWeb, isNative } = useLayoutType(); + const { onSignOut } = useUserData(); + + const [currentProjectID] = useGlobal("currentProjectID"); + + const { setWebViewUrl } = useContext(WebViewContext); + + const appIconBottomSheetRef = useRef(null); + + const settingsList = [ + { + sectionTitle: "Projet", + icon: icons.tools, + optionList: [ + { + title: "Paramètres", + action: () => navigation.navigate(Routes.ProjectSettings), + }, + ], + condition: currentProjectID, + }, + { + sectionTitle: "Compte", + icon: icons.user, + optionList: [ + { + title: "Paramètres du compte", + action: () => navigation.navigate(Routes.AccountSettings), + }, + ], + }, + { + sectionTitle: "Support", + icon: icons.support, + optionList: [ + { + title: "Prendre rendez-vous", + action: () => setWebViewUrl(calendlyUrl), + }, + { + title: "Nous suivre sur Instagram", + action: () => setWebViewUrl(instagramUrl), + }, + { + title: "Nous contacter sur WhatsApp", + action: () => { + openLinkInBrowser({ + url: `http://api.whatsapp.com/send/?phone=${agencyWhatsAppNumber}&text&type=phone_number`, + }); + }, + }, + { + title: "Changer l'icône de l'application", + action: () => { + appIconBottomSheetRef.current?.expand(); + }, + condition: isNative, + }, + { + title: "Noter l'application", + action: () => { + onStoreReview(); + }, + condition: !isWeb, + }, + ], + }, + { + sectionTitle: "Légal", + icon: icons.law, + optionList: [ + { + title: "Conditions générales d'utilisation", + action: () => navigation.navigate(Routes.TermsOfUse), + }, + { + title: "Conditions générales de vente", + action: () => setWebViewUrl(termsOfSalesUrl), + }, + { + title: "Politique de confidentialité", + action: () => navigation.navigate(Routes.PrivacyPolicy), + }, + { + title: "Se déconnecter", + action: async () => { + await onSignOut(); + }, + textStyle: { color: Palette.red }, + addMarginTopFromPrevious: true, + }, + ], + }, + ] + .filter(({ condition = true }) => condition) + .filter( + ({ optionList }) => + optionList.filter(({ condition }) => !condition || condition).length > 0 + ); + + return ( + <> + + {settingsList.map( + ({ icon, sectionTitle = "", optionList = [] }, index) => ( + + + + + + {sectionTitle} + + + + {optionList + .filter(({ condition = true }) => condition) + .map((item, index) => ( + + ))} + + ) + )} + + + + appIconBottomSheetRef.current?.close()} /> + + > + ); +}; diff --git a/src/screens/Splash.js b/src/screens/Splash.js new file mode 100644 index 0000000..9951ecf --- /dev/null +++ b/src/screens/Splash.js @@ -0,0 +1,64 @@ +import React, { useEffect, useContext } from "reactn"; +import { View } from "react-native"; + +import firebase, { usersRef } from "../config/firebase"; +import { Routes } from "../navigation"; + +import { SplashAnimationContext } from "../providers/SplashAnimationProvider"; +import { UserDataContext } from "../providers/UserDataProvider"; + +import { isDesktop, isWeb } from "../hooks/useLayoutType"; + +export default ({ navigation }) => { + const { setCurrentUserData } = useContext(UserDataContext); + const { setIsFullyLoaded } = useContext(SplashAnimationContext); + + useEffect(() => { + userRouting(); + }, []); + + const userRouting = async () => { + try { + if (!firebase.auth().currentUser?.uid) { + throw new Error("No user"); + } + + const userDoc = await usersRef + .doc(firebase.auth().currentUser?.uid) + .get(); + + if (userDoc?.data()) { + setCurrentUserData(userDoc.data()); + + navigation.reset({ + index: 0, + routes: [ + { + name: Routes.BottomTab, + params: { + screen: Routes.Home, + }, + }, + ], + }); + } else { + throw new Error("No data"); + } + } catch (error) { + console.log(error); + + navigation.reset({ + index: 0, + routes: [ + { + name: isDesktop || isWeb ? Routes.Login : Routes.Onboarding, + }, + ], + }); + } finally { + setIsFullyLoaded(true); + } + }; + + return ; +}; diff --git a/src/screens/TermsOfUse.js b/src/screens/TermsOfUse.js new file mode 100644 index 0000000..40817d8 --- /dev/null +++ b/src/screens/TermsOfUse.js @@ -0,0 +1,77 @@ +import React from "reactn"; +import { Text } from "react-native"; + +import Page from "../layouts/Page"; + +import { Fonts } from "../styles"; + +const terms = `Conditions Générales d'Utilisation (CGU) de minuit.starter + +Édition par MINUIT.AGENCY, +44 RUE MINVIELLE, 33000 BORDEAUX, +RCS Bordeaux 919 289 496, +Capital : 1000 €. +Représenté par minuit.holdings, Président. + +Définitions : + +Utilisateur : toute personne physique ou morale qui utilise l'application minuit.starter. +Contenu Utilisateur : toute information, texte, image, ou autre matériel que les utilisateurs publient ou partagent sur minuit.starter. +Minuit.boost : service prioritaire commandé par les utilisateurs sur minuit.starter pour accélérer le processus de réalisation de leurs tâches. +Tâche Supplémentaire : toute tâche additionnelle commandée par les utilisateurs sur minuit.starter. +Minuit.coin : unité de monnaie virtuelle utilisée sur minuit.starter pour acheter des services ou des tâches supplémentaires. +Acceptation des CGU et CGV +L'utilisation de "minuit.starter" et/ou le téléchargement de l'application sur l'App Store iOS implique l'acceptation inconditionnelle de ces CGU. Tout achat de services ou de tâches supplémentaires sur la plateforme implique également l'acceptation des Conditions Générales de Vente (CGV). Si vous n'êtes pas d'accord avec l'une de ces conditions, vous devez immédiatement cesser toute utilisation de l'application. + +Objet +"minuit.starter" fournit des outils pour aider les utilisateurs à publier des tâches, suivre l'évolution de leurs projets, commander des Minuit.boosts pour un service prioritaire, commander des tâches supplémentaires, et acheter des minuit.coins pour utiliser les services payants proposés sur la plateforme. + +Fonctionnement AI de l'Application +Toutes les informations, notamment les délais, fournies par l'application sont basées sur des algorithmes d'intelligence artificielle. Elles sont fournies "telles quelles", sans garantie d'exactitude, d'exhaustivité ou de pertinence pour des situations spécifiques. Les réponses du chat AI sont à titre informatif et ne doivent pas remplacer un avis professionnel. + +Accès & Utilisation +Seuls les individus majeurs et capables juridiquement peuvent utiliser l'application. Toute utilisation illégale, abusive ou en violation des présentes CGU est interdite. + +Disponibilité & Interruption +L'accès à minuit.starter peut être interrompu, suspendu ou modifié à tout moment, pour n'importe quelle raison, sans préavis ni obligation. MINUIT.AGENCY ne sera pas responsable des pertes de données ou des interruptions de service. + +Confidentialité +Nous traitons les données personnelles conformément à notre politique de confidentialité, que les utilisateurs doivent consulter séparément. + +Responsabilité des Informations et Contenu Utilisateur +MINUIT.AGENCY ne garantit pas la véracité, la précision, ou la fiabilité des informations fournies par l'application. minuit.starter est une plateforme sur laquelle les utilisateurs peuvent publier du contenu. Malgré nos meilleurs efforts pour maintenir un environnement sûr et respectueux, MINUIT.AGENCY n'est pas responsable du contenu publié par les utilisateurs. Tout contenu publié reflète uniquement l'opinion de l'utilisateur qui le publie. + +Propriété Intellectuelle +Toute violation des droits de propriété intellectuelle de MINUIT.AGENCY pourra donner lieu à des poursuites judiciaires. + +Limitation de Responsabilité +MINUIT.AGENCY décline toute responsabilité pour tout dommage, direct ou indirect, résultant de l'utilisation de l'application. + +Modifications des CGU +Les CGU peuvent être modifiées à tout moment. Il appartient à l'utilisateur de les consulter régulièrement. + +Résiliation & Suspension +MINUIT.AGENCY peut suspendre ou résilier l'accès d'un utilisateur sans préavis en cas de non-respect des CGU ou pour tout autre motif à sa discrétion. + +Droit Applicable & Juridiction +Les CGU sont soumises au droit français. Tout litige sera porté devant les tribunaux compétents de Bordeaux. + +Divers +Si une disposition des présentes CGU est jugée inapplicable, les autres resteront en vigueur. + +Contact +Pour toute question : hello@minuit.agency. + +Dernière mise à jour : 22/10/2023.`; + +export default ({ navigation, route }) => { + return ( + + {terms} + + ); +}; diff --git a/src/screens/Writing/Writing.js b/src/screens/Writing/Writing.js new file mode 100644 index 0000000..b1839f6 --- /dev/null +++ b/src/screens/Writing/Writing.js @@ -0,0 +1,28 @@ +import { View } from "react-native"; +import React from "react"; +import Page from "../../layouts/Page"; +import GradientButton from "../../components/GradientButton"; +import { gutters } from "../../styles"; +import { navigate } from "../../navigation/NavigationService"; +import { Routes } from "../../navigation"; + +const Writing = () => { + return ( + + + navigate(Routes.WritingLyrics)} + /> + + + ); +}; + +export default Writing; diff --git a/src/screens/Writing/WritingLyrics.js b/src/screens/Writing/WritingLyrics.js new file mode 100644 index 0000000..702521c --- /dev/null +++ b/src/screens/Writing/WritingLyrics.js @@ -0,0 +1,44 @@ +import { View, Text, Image, StyleSheet } from "react-native"; +import React from "react"; +import Page from "../../layouts/Page"; +import { ai } from "../../assets"; +import GradientButton from "../../components/GradientButton"; +import { gutters } from "../../styles"; +import BorderGradientButton from "../../components/BorderGradientButton"; +import MusicLandHeader from "../../components/MusicLandHeader"; +import { goBack } from "../../navigation/NavigationService"; + +const WritingLyrics = () => { + return ( + + + + + + + + + + + ); +}; + +export default WritingLyrics; + +const styles = StyleSheet.create({ + img: { + width: "100%", + height: "70%", + position: "absolute", + bottom: -40, + right: -30, + }, +}); diff --git a/src/styles/Colors.js b/src/styles/Colors.js new file mode 100644 index 0000000..10e422e --- /dev/null +++ b/src/styles/Colors.js @@ -0,0 +1,29 @@ +import Palette from './Palette'; + +const Colors = { + background: Palette.white, + text: { + primary: 'rgba(0,0,0,0.7)', + secondary: Palette.text1, + link: Palette.text1, + }, + button: { + primary: { + background: Palette.primary, + text: Palette.white, + border: Palette.primary, + }, + secondary: { + background: 'transparent', + text: Palette.text1, + border: Palette.text1, + }, + }, + input: { + background: Palette.grey15, + text: Palette.text1, + placeholder: '#8E9192', + }, +}; + +export default Colors; diff --git a/src/styles/Fonts.js b/src/styles/Fonts.js new file mode 100644 index 0000000..37506d5 --- /dev/null +++ b/src/styles/Fonts.js @@ -0,0 +1,54 @@ +import { responsiveFontSize } from "../actions/responsiveSizes.js"; +import { Palette } from "../styles"; + +export const fontTypeList = { + default: { + fontFamily: "OpenSansRegular", + fontSize: responsiveFontSize(1.5), + lineHeight: 20, + }, + section: { + fontFamily: "OpenSansRegular", + fontSize: responsiveFontSize(1.8), + lineHeight: 20, + }, + navigationTitle: { + fontFamily: "NewYorkSemibold", + fontSize: responsiveFontSize(2.5), + }, + title: { + fontFamily: "NewYorkSemibold", + fontSize: responsiveFontSize(3), + }, + mainTitle: { + fontFamily: "NewYorkSemibold", + fontSize: responsiveFontSize(4.5), + }, + megaTitle: { + fontFamily: "NewYorkSemibold", + fontSize: responsiveFontSize(5), + }, +}; + +export const FONT_FAMILY = { + InterRegular: "InterRegular", + InterMedium: "InterMedium", + InterSemiBold: "InterSemiBold", + InterBold: "InterBold", +}; + +const Fonts = ({ + type = "default", + fontSize = null, + fontWeight = "normal", + color = Palette.white, + style = {}, +} = {}) => ({ + ...fontTypeList[type], + ...(fontSize && { fontSize: responsiveFontSize(fontSize) }), + fontWeight, + color, + ...style, +}); + +export default Fonts; diff --git a/src/styles/Palette.js b/src/styles/Palette.js new file mode 100644 index 0000000..85b80d0 --- /dev/null +++ b/src/styles/Palette.js @@ -0,0 +1,37 @@ +const Palette = { + primary: "#FB68A8", + transparentPrimary: "rgba(251, 104, 168, 0.1)", + + darkPurple: "#0F0C14", + transparentDarkPurple: "rgba(15, 12, 20, 0.1)", + lightPurple: "#16121E", + + green: "#05CD99", + transparentGreen: "rgba(5, 205, 153, 0.1)", + + radioactivGreen: "#7AFB77", + darkRadioactivGreen: "#4FC74D", + transparentRadioactivGreen: "rgba(122, 251, 119, 0.1)", + + orange: "#FDC22A", + transparentOrange: "rgba(253, 194, 42, 0.1)", + + firebaseYellow: "#FFCA28", + transparentFirebaseYellow: "rgba(255, 202, 40, 0.1)", + + red: "#E31A1A", + transparentRed: "rgba(227, 26, 26, 0.1)", + + white: "#ffffff", + black: "#000000", + + transparentWhite: "rgba(255, 255, 255, 0.5)", + ultraLightWhite: "rgba(255, 255, 255, 0.1)", + + transparentBlack: "rgba(0, 0, 0, 0.8)", + ultraLightBlack: "rgba(0, 0, 0, 0.6)", + + tran: "transparent", +}; + +export default Palette; diff --git a/src/styles/Style.js b/src/styles/Style.js new file mode 100644 index 0000000..f52e324 --- /dev/null +++ b/src/styles/Style.js @@ -0,0 +1,356 @@ +import { StyleSheet, Platform } from "react-native"; +import { + responsiveHeight, + responsiveWidth, +} from "../actions/responsiveSizes.js"; + +import { Fonts, Palette } from "./index"; + +import { isDesktop, isWeb } from "../hooks/useLayoutType.js"; + +export const mainBorderRadius = 10; + +export const gutterConstant = 5.33; +export const gutters = isDesktop ? 30 : responsiveWidth(gutterConstant); + +export const defaultItemHeight = 40; +export const defaultBlurIntensity = 50; + +export const bubbleStyle = ({ isCurrentUser, customStyle = {} }) => ({ + padding: gutters / 2, + backgroundColor: isCurrentUser ? Palette.transparentPrimary : "transparent", + borderRadius: mainBorderRadius / 2, + width: "80%", + maxWidth: 250, + minWidth: 50, + ...(isCurrentUser + ? { borderBottomRightRadius: 0 } + : { + borderColor: Palette.primary, + borderWidth: 1, + borderBottomLeftRadius: 0, + }), + ...customStyle, +}); + +const containerRow = { + flexDirection: "row", + alignItems: "center", +}; + +const containerCenter = { + alignItems: "center", + justifyContent: "center", +}; + +const containerSpaceBetween = { + ...containerRow, + justifyContent: "space-between", +}; + +const containerRevertGutter = { + marginHorizontal: responsiveWidth(-gutterConstant), + paddingHorizontal: gutters, +}; + +const containerCheckBox = { + height: 25, + width: 25, + borderRadius: 4, + borderColor: Palette.darkPurple, + borderWidth: 1, +}; + +const shadows = { + shadowColor: "#4C3E73", + + shadowOpacity: 0.8, + shadowRadius: 60, + + elevation: 5, +}; + +const defaultShadows = { + ...shadows, + shadowOffset: { + width: 0, + height: Platform.OS !== "ios" ? 0 : 10, + }, +}; + +const blackShadows = { + ...defaultShadows, + shadowColor: Palette.black, + shadowOpacity: 0.15, +}; + +const pinkShadows = { + ...defaultShadows, + shadowColor: Palette.primary, + shadowOpacity: 0.8, +}; + +const radioactivGlow = { + ...defaultShadows, + shadowRadius: 10, + shadowOffset: { + width: 0, + height: 0, + }, + shadowColor: Palette.radioactivGreen, + shadowOpacity: 0.8, +}; + +const reverseShadows = { + ...shadows, + shadowOffset: { + width: 0, + height: -10, + }, +}; + +const defaultBorder = { + borderStyle: "solid", + borderWidth: 1, + borderColor: Palette.ultraLightWhite, +}; + +const actionSheet = { + containerStyle: { + backgroundColor: Palette.primary, + width: "40%", + minWidth: responsiveWidth(60), + maxWidth: 500, + alignSelf: "center", + borderRadius: 20, + marginBottom: 50, + }, + textStyle: { + ...Fonts({ + type: "navigationTitle", + style: { color: Palette.white, textAlign: "center" }, + }), + }, + showSeparators: true, + separatorStyle: { + backgroundColor: Palette.transparentWhite, + height: 1, + alignItems: "center", + }, + destructiveColor: Palette.red, +}; + +export default StyleSheet.create({ + containerRow, + containerCenter, + containerSpaceBetween, + containerRevertGutter, + + defaultShadows, + reverseShadows, + blackShadows, + pinkShadows, + + radioactivGlow, + + defaultBorder, + dashedBorder: { + ...defaultBorder, + borderStyle: "dashed", + borderColor: Palette.primary, + }, + primaryBorder: { + ...defaultBorder, + borderColor: Palette.primary, + }, + + containerMain: { + flex: 1, + backgroundColor: Palette.darkPurple, + padding: gutters, + paddingBottom: 0, + }, + + containerItem: { + padding: gutters / 2, + backgroundColor: Palette.lightPurple, + borderRadius: mainBorderRadius, + }, + + containerDefaultShadow: { + ...defaultShadows, + padding: gutters, + width: "100%", + backgroundColor: "white", + marginBottom: responsiveHeight(2), + borderRadius: mainBorderRadius, + }, + + containerItemPicture: { + width: "100%", + height: responsiveHeight(20), + ...defaultShadows, + }, + + containerModal: { + width: "60%", + maxWidth: 450, + minWidth: 300, + padding: "2.5%", + backgroundColor: Palette.darkPurple, + borderRadius: mainBorderRadius, + ...containerCenter, + }, + + containerBottomSheet: { + flex: 1, + padding: gutters, + paddingBottom: isWeb ? gutters : 3 * gutters, + backgroundColor: Palette.darkPurple, + }, + + itemPicture: { + overflow: "hidden", + borderRadius: mainBorderRadius, + }, + + containerInput: { + height: 50, + backgroundColor: "white", + borderColor: Palette.white, + borderWidth: 1, + borderRadius: mainBorderRadius, + padding: 15, + }, + containerContentScrollView: { + paddingTop: responsiveHeight(3), + paddingBottom: responsiveHeight(15), + paddingHorizontal: gutters, + }, + containerRound: { + ...containerCenter, + backgroundColor: Palette.white, + width: 40, + height: 40, + borderRadius: 500, + overflow: "hidden", + }, + containerAbsoluteBottom: { + ...containerSpaceBetween, + position: "absolute", + bottom: 0, + right: 0, + left: 0, + backgroundColor: Palette.primary, + paddingHorizontal: gutters, + paddingVertical: 25, + }, + containerActionSheet: { + paddingHorizontal: gutters, + borderTopRightRadius: 0, + borderTopLeftRadius: 0, + }, + containerLightBorder: { + ...defaultBorder, + flex: 1, + width: "50%", + borderRightWidth: 0, + padding: "5%", + paddingRight: 0, + }, + + // Items + itemImageAvatar: { + width: 40, + height: 40, + borderRadius: 150, + overflow: "hidden", + }, + + // Icon + containerIcon: { + ...containerCenter, + borderRadius: mainBorderRadius, + width: 30, + height: 30, + backgroundColor: Palette.primary, + }, + + iconSuperSmall: { width: 10, height: 10 }, + iconSmall: { width: 15, height: 15 }, + iconDefault: { width: 20, height: 20 }, + iconLarge: { width: 30, height: 30 }, + + iconContainerRound: { width: "50%", height: "50%" }, + + // Badge + itemBadge: { + position: "absolute", + top: -5, + right: -5, + backgroundColor: Palette.primary, + borderRadius: 150, + width: 10, + height: 10, + }, + + // Separators + separatorVertical: { + width: 1, + height: 30, + marginHorizontal: 10, + backgroundColor: Palette.ultraLightWhite, + }, + + separatorHorizontal: { + width: "100%", + height: 1, + marginVertical: 10, + backgroundColor: Palette.ultraLightWhite, + }, + + separatorHorizontalLarge: { + height: 10, + marginVertical: responsiveHeight(2), + backgroundColor: Palette.ultraLightWhite, + }, + + // Hitslop + mainHitSlop: { top: 20, right: 20, left: 20, bottom: 20 }, + extremeHitSlop: { top: 30, right: 30, left: 30, bottom: 30 }, + + // Misc UI + + containerRadio: { + ...containerCenter, + ...containerCheckBox, + borderColor: Palette.white, + borderRadius: 150, + }, + + circleRadio: { + width: "50%", + height: "50%", + borderRadius: 150, + backgroundColor: Palette.primary, + }, + + containerCheckBox: { + ...containerCenter, + ...containerCheckBox, + }, + + squareCheckBox: { + width: "50%", + height: "50%", + borderRadius: 2, + backgroundColor: Palette.primary, + }, + + actionSheet, + + // Transform + mirrorHorizontal: { + transform: [{ scaleX: -1 }], + }, +}); diff --git a/src/styles/css/global.css b/src/styles/css/global.css new file mode 100644 index 0000000..b9732ba --- /dev/null +++ b/src/styles/css/global.css @@ -0,0 +1,13 @@ +*:focus { + outline: none; +} + +* { + scrollbar-width: none; + -ms-overflow-style: none; /* hide scrollbar on Windows */ +} + +/* Pour les navigateurs WebKit comme Chrome, Safari */ +*::-webkit-scrollbar { + display: none; +} diff --git a/src/styles/index.js b/src/styles/index.js new file mode 100644 index 0000000..2653e54 --- /dev/null +++ b/src/styles/index.js @@ -0,0 +1,6 @@ +import Colors from './Colors'; +import Palette from './Palette'; +import Fonts from './Fonts'; +import Style, {gutters, resHeight, resWidth} from './Style'; + +export {Colors, Palette, Fonts, Style, gutters, resHeight, resWidth}; diff --git a/src/utils/index.js b/src/utils/index.js new file mode 100644 index 0000000..656d7fb --- /dev/null +++ b/src/utils/index.js @@ -0,0 +1,56 @@ +import dayjs from 'dayjs'; +import isToday from 'dayjs/plugin/isToday'; +import isYesterday from 'dayjs/plugin/isYesterday'; +import updateLocale from 'dayjs/plugin/updateLocale'; +import relativeTime from 'dayjs/plugin/relativeTime'; +import reactotron from 'reactotron-react-native'; + +// Dayjs plugins +dayjs.extend(isToday); +dayjs.extend(isYesterday); +dayjs.extend(updateLocale); +dayjs.extend(relativeTime); + +/** + * Return the distance between the given date and now in words. + */ +export const distanceToNow = value => { + if (!dayjs(value).isValid()) { + return 'Invalid Date'; + } + return dayjs(value).fromNow(); +}; + +export const warn = reactotron.warn; + +export function decode(t, e) { + for ( + var n, + o, + u = 0, + l = 0, + r = 0, + d = [], + h = 0, + i = 0, + a = null, + c = Math.pow(10, e || 5); + u < t.length; + + ) { + (a = null), (h = 0), (i = 0); + do (a = t.charCodeAt(u++) - 63), (i |= (31 & a) << h), (h += 5); + while (a >= 32); + (n = 1 & i ? ~(i >> 1) : i >> 1), (h = i = 0); + do (a = t.charCodeAt(u++) - 63), (i |= (31 & a) << h), (h += 5); + while (a >= 32); + + (o = 1 & i ? ~(i >> 1) : i >> 1), + (l += n), + (r += o), + d.push([l / c, r / c]); + } + return d.map(function (t) { + return {latitude: t[0], longitude: t[1]}; + }); +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..0e6371f --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,4 @@ +{ + "compilerOptions": {}, + "extends": "expo/tsconfig.base" +} diff --git a/vercel.json b/vercel.json new file mode 100644 index 0000000..852d249 --- /dev/null +++ b/vercel.json @@ -0,0 +1,3 @@ +{ + "rewrites": [{ "source": "/tasks/:taskId", "destination": "/index.html" }] +} diff --git a/web/.well-known/apple-app-site-association b/web/.well-known/apple-app-site-association new file mode 100644 index 0000000..01d3197 --- /dev/null +++ b/web/.well-known/apple-app-site-association @@ -0,0 +1,18 @@ +{ + "applinks": { + "apps": [], + "details": [ + { + "appID": "MW8MX2T3ZL.com.minuit.starter", + "paths": [ + "/tasks/*" + ] + } + ] + }, + "webcredentials": { + "apps": [ + "MW8MX2T3ZL.com.minuit.starter" + ] + } +} diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..80540e2 --- /dev/null +++ b/web/index.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + minuit.starter - Suivi de projet + + + + + + + + + Oh no! It looks like JavaScript is not enabled in your browser. + + + Reload + + + + + + + + diff --git a/web/minuit.dmg b/web/minuit.dmg new file mode 100644 index 0000000..bcdb660 Binary files /dev/null and b/web/minuit.dmg differ diff --git a/web/minuitdev.dmg b/web/minuitdev.dmg new file mode 100644 index 0000000..e6ea11f Binary files /dev/null and b/web/minuitdev.dmg differ diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..20f6d05 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,9115 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@0no-co/graphql.web@^1.0.5", "@0no-co/graphql.web@^1.0.8": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@0no-co/graphql.web/-/graphql.web-1.0.11.tgz#035cbc6523af43358b81993f10b13e8d7a79c816" + integrity sha512-xuSJ9WXwTmtngWkbdEoopMo6F8NLtjy84UNAMsAr5C3/2SgAL/dEU10TMqTIsipqPQ8HA/7WzeqQ9DEQxSvPPA== + +"@algolia/cache-browser-local-storage@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz#97bc6d067a9fd932b9c922faa6b7fd6e546e1348" + integrity sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww== + dependencies: + "@algolia/cache-common" "4.24.0" + +"@algolia/cache-common@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.24.0.tgz#81a8d3a82ceb75302abb9b150a52eba9960c9744" + integrity sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g== + +"@algolia/cache-in-memory@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz#ffcf8872f3a10cb85c4f4641bdffd307933a6e44" + integrity sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w== + dependencies: + "@algolia/cache-common" "4.24.0" + +"@algolia/client-account@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.24.0.tgz#eba7a921d828e7c8c40a32d4add21206c7fe12f1" + integrity sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA== + dependencies: + "@algolia/client-common" "4.24.0" + "@algolia/client-search" "4.24.0" + "@algolia/transporter" "4.24.0" + +"@algolia/client-analytics@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.24.0.tgz#9d2576c46a9093a14e668833c505ea697a1a3e30" + integrity sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg== + dependencies: + "@algolia/client-common" "4.24.0" + "@algolia/client-search" "4.24.0" + "@algolia/requester-common" "4.24.0" + "@algolia/transporter" "4.24.0" + +"@algolia/client-common@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.24.0.tgz#77c46eee42b9444a1d1c1583a83f7df4398a649d" + integrity sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA== + dependencies: + "@algolia/requester-common" "4.24.0" + "@algolia/transporter" "4.24.0" + +"@algolia/client-personalization@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.24.0.tgz#8b47789fb1cb0f8efbea0f79295b7c5a3850f6ae" + integrity sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w== + dependencies: + "@algolia/client-common" "4.24.0" + "@algolia/requester-common" "4.24.0" + "@algolia/transporter" "4.24.0" + +"@algolia/client-search@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.24.0.tgz#75e6c02d33ef3e0f34afd9962c085b856fc4a55f" + integrity sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA== + dependencies: + "@algolia/client-common" "4.24.0" + "@algolia/requester-common" "4.24.0" + "@algolia/transporter" "4.24.0" + +"@algolia/logger-common@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.24.0.tgz#28d439976019ec0a46ba7a1a739ef493d4ef8123" + integrity sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA== + +"@algolia/logger-console@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.24.0.tgz#c6ff486036cd90b81d07a95aaba04461da7e1c65" + integrity sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg== + dependencies: + "@algolia/logger-common" "4.24.0" + +"@algolia/recommend@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-4.24.0.tgz#8a3f78aea471ee0a4836b78fd2aad4e9abcaaf34" + integrity sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw== + dependencies: + "@algolia/cache-browser-local-storage" "4.24.0" + "@algolia/cache-common" "4.24.0" + "@algolia/cache-in-memory" "4.24.0" + "@algolia/client-common" "4.24.0" + "@algolia/client-search" "4.24.0" + "@algolia/logger-common" "4.24.0" + "@algolia/logger-console" "4.24.0" + "@algolia/requester-browser-xhr" "4.24.0" + "@algolia/requester-common" "4.24.0" + "@algolia/requester-node-http" "4.24.0" + "@algolia/transporter" "4.24.0" + +"@algolia/requester-browser-xhr@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz#313c5edab4ed73a052e75803855833b62dd19c16" + integrity sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA== + dependencies: + "@algolia/requester-common" "4.24.0" + +"@algolia/requester-common@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.24.0.tgz#1c60c198031f48fcdb9e34c4057a3ea987b9a436" + integrity sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA== + +"@algolia/requester-node-http@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz#4461593714031d02aa7da221c49df675212f482f" + integrity sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw== + dependencies: + "@algolia/requester-common" "4.24.0" + +"@algolia/transporter@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.24.0.tgz#226bb1f8af62430374c1972b2e5c8580ab275102" + integrity sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA== + dependencies: + "@algolia/cache-common" "4.24.0" + "@algolia/logger-common" "4.24.0" + "@algolia/requester-common" "4.24.0" + +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@babel/code-frame@7.10.4", "@babel/code-frame@~7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.26.2": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.9": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.3.tgz#99488264a56b2aded63983abd6a417f03b92ed02" + integrity sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.20.0", "@babel/core@^7.20.5", "@babel/core@^7.25.2": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" + integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.26.0" + "@babel/generator" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helpers" "^7.26.0" + "@babel/parser" "^7.26.0" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.26.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.20.5", "@babel/generator@^7.25.0", "@babel/generator@^7.26.0", "@babel/generator@^7.26.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019" + integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ== + dependencies: + "@babel/parser" "^7.26.3" + "@babel/types" "^7.26.3" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + +"@babel/helper-annotate-as-pure@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" + integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== + dependencies: + "@babel/types" "^7.25.9" + +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" + integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== + dependencies: + "@babel/compat-data" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz#7644147706bb90ff613297d49ed5266bde729f83" + integrity sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ== + dependencies: + "@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/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/traverse" "^7.25.9" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.25.9": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz#5169756ecbe1d95f7866b90bb555b022595302a0" + integrity sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + regexpu-core "^6.2.0" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.6.2", "@babel/helper-define-polyfill-provider@^0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz#f4f2792fae2ef382074bc2d713522cf24e6ddb21" + integrity sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-member-expression-to-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3" + integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-imports@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" + integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-transforms@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" + integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-optimise-call-expression@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" + integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== + dependencies: + "@babel/types" "^7.25.9" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" + integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== + +"@babel/helper-remap-async-to-generator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92" + integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-wrap-function" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-replace-supers@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz#ba447224798c3da3f8713fc272b145e33da6a5c5" + integrity sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" + integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + +"@babel/helper-validator-option@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== + +"@babel/helper-wrap-function@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0" + integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g== + dependencies: + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helpers@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" + integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== + dependencies: + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.0" + +"@babel/highlight@^7.10.4": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.9.tgz#8141ce68fc73757946f983b343f1231f4691acc6" + integrity sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.25.3", "@babel/parser@^7.25.6", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234" + integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA== + dependencies: + "@babel/types" "^7.26.3" + +"@babel/plugin-proposal-class-properties@^7.13.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-decorators@^7.12.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz#8680707f943d1a3da2cd66b948179920f097e254" + integrity sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-decorators" "^7.25.9" + +"@babel/plugin-proposal-export-default-from@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.25.9.tgz#52702be6ef8367fc8f18b8438278332beeb8f87c" + integrity sha512-ykqgwNfSnNOB+C8fV5X4mG3AVmvu+WVxcaU9xHHtBb7PCrPeweMmPjGsn8eMaeJg6SJuoUuZENeeSWaarWqonQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.13.12": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-decorators@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz#986b4ca8b7b5df3f67cee889cedeffc2e2bf14b3" + integrity sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-default-from@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.25.9.tgz#86614767a9ff140366f0c3766ef218beb32a730a" + integrity sha512-9MhJ/SMTsVqsd69GyQg89lYR4o9T+oDGv5F6IsigxxqFVOyR/IflDLYP8WDI1l8fkhNGGktqkvL5qwNCtGEpgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.25.9": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz#96507595c21b45fccfc2bc758d5c45452e6164fa" + integrity sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" + integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" + integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" + integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-arrow-functions@^7.0.0-0", "@babel/plugin-transform-arrow-functions@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845" + integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-async-generator-functions@^7.25.4": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz#1b18530b077d18a407c494eb3d1d72da505283a2" + integrity sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/plugin-transform-async-to-generator@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" + integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" + +"@babel/plugin-transform-block-scoping@^7.25.0": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz#c33665e46b06759c93687ca0f84395b80c0473a1" + integrity sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-class-properties@^7.0.0-0", "@babel/plugin-transform-class-properties@^7.25.4": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f" + integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-classes@^7.0.0-0", "@babel/plugin-transform-classes@^7.25.4": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52" + integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== + dependencies: + "@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/traverse" "^7.25.9" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b" + integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/template" "^7.25.9" + +"@babel/plugin-transform-destructuring@^7.24.8": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1" + integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-export-namespace-from@^7.22.11": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2" + integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-flow-strip-types@^7.25.2", "@babel/plugin-transform-flow-strip-types@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.9.tgz#85879b42a8f5948fd6317069978e98f23ef8aec1" + integrity sha512-/VVukELzPDdci7UUsWQaSkhgnjIWXnIyRpM02ldxaVoFK96c41So8JcKT3m0gYjyv7j5FNPGS5vfELrWalkbDA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-flow" "^7.25.9" + +"@babel/plugin-transform-for-of@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz#4bdc7d42a213397905d89f02350c5267866d5755" + integrity sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + +"@babel/plugin-transform-function-name@^7.25.1": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97" + integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== + dependencies: + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/plugin-transform-literals@^7.25.2": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de" + integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-logical-assignment-operators@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7" + integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.24.8", "@babel/plugin-transform-modules-commonjs@^7.25.9": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz#8f011d44b20d02c3de44d8850d971d8497f981fb" + integrity sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ== + dependencies: + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a" + integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.0.0-0", "@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz#bcb1b0d9e948168102d5f7104375ca21c3266949" + integrity sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-numeric-separator@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" + integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-object-rest-spread@^7.12.13", "@babel/plugin-transform-object-rest-spread@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18" + integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== + dependencies: + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-parameters" "^7.25.9" + +"@babel/plugin-transform-optional-catch-binding@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3" + integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-optional-chaining@^7.0.0-0", "@babel/plugin-transform-optional-chaining@^7.24.8": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd" + integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + +"@babel/plugin-transform-parameters@^7.22.15", "@babel/plugin-transform-parameters@^7.24.7", "@babel/plugin-transform-parameters@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257" + integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-private-methods@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57" + integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-private-property-in-object@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33" + integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-react-display-name@^7.24.7", "@babel/plugin-transform-react-display-name@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz#4b79746b59efa1f38c8695065a92a9f5afb24f7d" + integrity sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-react-jsx-development@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz#8fd220a77dd139c07e25225a903b8be8c829e0d7" + integrity sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.25.9" + +"@babel/plugin-transform-react-jsx-self@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz#c0b6cae9c1b73967f7f9eb2fca9536ba2fad2858" + integrity sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-react-jsx-source@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz#4c6b8daa520b5f155b5fb55547d7c9fa91417503" + integrity sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-react-jsx@^7.25.2", "@babel/plugin-transform-react-jsx@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz#06367940d8325b36edff5e2b9cbe782947ca4166" + integrity sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-jsx" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/plugin-transform-react-pure-annotations@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz#ea1c11b2f9dbb8e2d97025f43a3b5bc47e18ae62" + integrity sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-regenerator@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz#03a8a4670d6cebae95305ac6defac81ece77740b" + integrity sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-runtime@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz#62723ea3f5b31ffbe676da9d6dae17138ae580ea" + integrity sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.6" + babel-plugin-polyfill-regenerator "^0.6.1" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.0.0-0", "@babel/plugin-transform-shorthand-properties@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2" + integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-spread@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9" + integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + +"@babel/plugin-transform-sticky-regex@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32" + integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-template-literals@^7.0.0-0": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz#6dbd4a24e8fad024df76d1fac6a03cf413f60fe1" + integrity sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-typescript@^7.25.2", "@babel/plugin-transform-typescript@^7.25.9": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz#3d6add9c78735623317387ee26d5ada540eee3fd" + integrity sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-syntax-typescript" "^7.25.9" + +"@babel/plugin-transform-unicode-regex@^7.0.0-0", "@babel/plugin-transform-unicode-regex@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1" + integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/preset-flow@^7.13.13": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.25.9.tgz#ef8b5e7e3f24a42b3711e77fb14919b87dffed0a" + integrity sha512-EASHsAhE+SSlEzJ4bzfusnXSHiU+JfAYzj+jbw2vgQKgq5HrUr8qs+vgtiEL5dOH6sEweI+PNt2D7AqrDSHyqQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-transform-flow-strip-types" "^7.25.9" + +"@babel/preset-react@^7.22.15": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.26.3.tgz#7c5e028d623b4683c1f83a0bd4713b9100560caa" + integrity sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-transform-react-display-name" "^7.25.9" + "@babel/plugin-transform-react-jsx" "^7.25.9" + "@babel/plugin-transform-react-jsx-development" "^7.25.9" + "@babel/plugin-transform-react-pure-annotations" "^7.25.9" + +"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.16.7", "@babel/preset-typescript@^7.23.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz#4a570f1b8d104a242d923957ffa1eaff142a106d" + integrity sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-syntax-jsx" "^7.25.9" + "@babel/plugin-transform-modules-commonjs" "^7.25.9" + "@babel/plugin-transform-typescript" "^7.25.9" + +"@babel/register@^7.13.16": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.25.9.tgz#1c465acf7dc983d70ccc318eb5b887ecb04f021b" + integrity sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA== + dependencies: + clone-deep "^4.0.1" + find-cache-dir "^2.0.0" + make-dir "^2.1.0" + pirates "^4.0.6" + source-map-support "^0.5.16" + +"@babel/runtime@^7.18.6", "@babel/runtime@^7.20.0", "@babel/runtime@^7.25.0", "@babel/runtime@^7.8.4": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.25.0", "@babel/template@^7.25.9", "@babel/template@^7.3.3": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" + integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.3.tgz#1ebfc75bd748d8f96b3cc63af5e82ebd4c37ba35" + integrity sha512-yTmc8J+Sj8yLzwr4PD5Xb/WF3bOYu2C2OoSZPzbuqRm4n98XirsbzaX+GloeO376UnSYIYJ4NCanwV5/ugZkwA== + dependencies: + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.26.3" + "@babel/parser" "^7.26.3" + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.3" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/traverse@^7.25.3", "@babel/traverse@^7.25.6", "@babel/traverse@^7.25.9": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.3.tgz#1ebfc75bd748d8f96b3cc63af5e82ebd4c37ba35" + integrity sha512-yTmc8J+Sj8yLzwr4PD5Xb/WF3bOYu2C2OoSZPzbuqRm4n98XirsbzaX+GloeO376UnSYIYJ4NCanwV5/ugZkwA== + dependencies: + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.26.3" + "@babel/parser" "^7.26.3" + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.3" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.25.2", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.3", "@babel/types@^7.3.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0" + integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + +"@callstack/react-theme-provider@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@callstack/react-theme-provider/-/react-theme-provider-3.0.3.tgz#f964dda28cd6e731c3fbcf916b0579c6f9fb2db7" + integrity sha512-B+9JBK7zsND/AdVkjwHvbb4cR05fJofLFG30hOeoXke8WkKAWN36yFljauAhI8qwlXlGFGZMYE1wQvsqBSccrA== + dependencies: + "@types/hoist-non-react-statics" "^3.3.1" + deepmerge "^3.2.0" + hoist-non-react-statics "^3.3.0" + +"@egjs/hammerjs@^2.0.17": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@egjs/hammerjs/-/hammerjs-2.0.17.tgz#5dc02af75a6a06e4c2db0202cae38c9263895124" + integrity sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A== + dependencies: + "@types/hammerjs" "^2.0.36" + +"@expo-google-fonts/inter@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@expo-google-fonts/inter/-/inter-0.4.1.tgz#0240eb12dc906582358b2fbc4b5aabeed6a69d37" + integrity sha512-ypL+XokTHEG+ie/nxNj/mS38afMrY4Li4oKvTJf9k9XvH7I21qfTGCsDtlZ6nIUWEAy1odoUZISdXT1nfMh4kA== + +"@expo/bunyan@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@expo/bunyan/-/bunyan-4.0.1.tgz#ab9e17e36c71c704a0ce72168378a487368da736" + integrity sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg== + dependencies: + uuid "^8.0.0" + +"@expo/cli@0.22.3": + version "0.22.3" + resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-0.22.3.tgz#8dbcc9396abf01b2dd91fe7f34fc23fdd2d8cc7f" + integrity sha512-1HBtqInFDFHUJWzTJ1CJj5MR3JwvOiozmRUWF2kVQAeq/bKzSYM6We6B3XoZBM5XP6z6WtnrG87C7BjeW5E/cA== + dependencies: + "@0no-co/graphql.web" "^1.0.8" + "@babel/runtime" "^7.20.0" + "@expo/code-signing-certificates" "^0.0.5" + "@expo/config" "~10.0.4" + "@expo/config-plugins" "~9.0.10" + "@expo/devcert" "^1.1.2" + "@expo/env" "~0.4.0" + "@expo/image-utils" "^0.6.0" + "@expo/json-file" "^9.0.0" + "@expo/metro-config" "~0.19.0" + "@expo/osascript" "^2.0.31" + "@expo/package-manager" "^1.5.0" + "@expo/plist" "^0.2.0" + "@expo/prebuild-config" "^8.0.22" + "@expo/rudder-sdk-node" "^1.1.1" + "@expo/spawn-async" "^1.7.2" + "@expo/xcpretty" "^4.3.0" + "@react-native/dev-middleware" "0.76.3" + "@urql/core" "^5.0.6" + "@urql/exchange-retry" "^1.3.0" + accepts "^1.3.8" + arg "^5.0.2" + better-opn "~3.0.2" + bplist-creator "0.0.7" + bplist-parser "^0.3.1" + cacache "^18.0.2" + chalk "^4.0.0" + ci-info "^3.3.0" + compression "^1.7.4" + connect "^3.7.0" + debug "^4.3.4" + env-editor "^0.4.1" + fast-glob "^3.3.2" + form-data "^3.0.1" + freeport-async "^2.0.0" + fs-extra "~8.1.0" + getenv "^1.0.0" + glob "^10.4.2" + internal-ip "^4.3.0" + is-docker "^2.0.0" + is-wsl "^2.1.1" + lodash.debounce "^4.0.8" + minimatch "^3.0.4" + node-forge "^1.3.1" + npm-package-arg "^11.0.0" + ora "^3.4.0" + picomatch "^3.0.1" + pretty-bytes "^5.6.0" + pretty-format "^29.7.0" + progress "^2.0.3" + prompts "^2.3.2" + qrcode-terminal "0.11.0" + require-from-string "^2.0.2" + requireg "^0.2.2" + resolve "^1.22.2" + resolve-from "^5.0.0" + resolve.exports "^2.0.2" + semver "^7.6.0" + send "^0.19.0" + slugify "^1.3.4" + 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" + undici "^6.18.2" + unique-string "~2.0.0" + wrap-ansi "^7.0.0" + ws "^8.12.1" + +"@expo/code-signing-certificates@^0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz#a693ff684fb20c4725dade4b88a6a9f96b02496c" + integrity sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw== + dependencies: + node-forge "^1.2.1" + nullthrows "^1.1.1" + +"@expo/config-plugins@~9.0.0", "@expo/config-plugins@~9.0.10": + version "9.0.11" + resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-9.0.11.tgz#7aec3663a783706ded3b6c7f3859221e17c9122a" + integrity sha512-zufuPQWkeEpXfMWFx2lWStoN43p6cO13p8n2KMIEK6jJMC/kkfldYyl8gYtEEYAL1nFfOf/W2pIXXPQ2sggnSw== + dependencies: + "@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.5" + getenv "^1.0.0" + glob "^10.4.2" + resolve-from "^5.0.0" + semver "^7.5.4" + slash "^3.0.0" + slugify "^1.6.6" + xcode "^3.0.1" + xml2js "0.6.0" + +"@expo/config-plugins@~9.0.12": + version "9.0.12" + resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-9.0.12.tgz#f122b2dca22e135eadf6e73442da3ced0ce8aa0a" + integrity sha512-/Ko/NM+GzvJyRkq8PITm8ms0KY5v0wmN1OQFYRMkcJqOi3PjlhndW+G6bHpJI9mkQXBaUnHwAiGLqIC3+MQ5Wg== + dependencies: + "@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.5" + getenv "^1.0.0" + glob "^10.4.2" + resolve-from "^5.0.0" + semver "^7.5.4" + slash "^3.0.0" + slugify "^1.6.6" + xcode "^3.0.1" + xml2js "0.6.0" + +"@expo/config-types@^52.0.0": + version "52.0.1" + resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-52.0.1.tgz#327af1b72a3a9d4556f41e083e0e284dd8198b96" + integrity sha512-vD8ZetyKV7U29lR6+NJohYeoLYTH+eNYXJeNiSOrWCz0witJYY11meMmEnpEaVbN89EfC6uauSUOa6wihtbyPQ== + +"@expo/config@~10.0.4", "@expo/config@~10.0.6": + version "10.0.6" + resolved "https://registry.yarnpkg.com/@expo/config/-/config-10.0.6.tgz#85830491bc8cce2af3f19276922a13f5578d2aa8" + integrity sha512-xXkfPElrtxznkOZxFASJ7OPa6E9IHSjcZwj5BQ6XUF2dz5M7AFa2h5sXM8AalSaDU5tEBSgoUOjTh5957TlR8g== + dependencies: + "@babel/code-frame" "~7.10.4" + "@expo/config-plugins" "~9.0.10" + "@expo/config-types" "^52.0.0" + "@expo/json-file" "^9.0.0" + deepmerge "^4.3.1" + getenv "^1.0.0" + glob "^10.4.2" + require-from-string "^2.0.2" + resolve-from "^5.0.0" + resolve-workspace-root "^2.0.0" + semver "^7.6.0" + slugify "^1.3.4" + sucrase "3.35.0" + +"@expo/devcert@^1.1.2": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@expo/devcert/-/devcert-1.1.4.tgz#d98807802a541847cc42791a606bfdc26e641277" + integrity sha512-fqBODr8c72+gBSX5Ty3SIzaY4bXainlpab78+vEYEKL3fXmsOswMLf0+KE36mUEAa36BYabX7K3EiXOXX5OPMw== + dependencies: + application-config-path "^0.1.0" + command-exists "^1.2.4" + debug "^3.1.0" + eol "^0.9.1" + get-port "^3.2.0" + glob "^10.4.2" + lodash "^4.17.21" + mkdirp "^0.5.1" + password-prompt "^1.0.4" + sudo-prompt "^8.2.0" + tmp "^0.0.33" + tslib "^2.4.0" + +"@expo/env@~0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@expo/env/-/env-0.4.0.tgz#1ff3a15084566d12ca92cb67e5b0a9796a9f0aa7" + integrity sha512-g2JYFqck3xKIwJyK+8LxZ2ENZPWtRgjFWpeht9abnKgzXVXBeSNECFBkg+WQjQocSIdxXhEWM6hz4ZAe7Tc4ng== + dependencies: + chalk "^4.0.0" + debug "^4.3.4" + dotenv "~16.4.5" + dotenv-expand "~11.0.6" + getenv "^1.0.0" + +"@expo/fingerprint@0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@expo/fingerprint/-/fingerprint-0.11.3.tgz#e370ae8f83e0642f752b058e2102e984a0a5bc98" + integrity sha512-9lgXmcIePvZ7Wef63XtvuN3HfCUevF4E4tQPdEbH9/dUWwpOvvwQ3KT4OJ9jdh8JJ3nTdO9eDQ/8k8xr1aQ5Kg== + dependencies: + "@expo/spawn-async" "^1.7.2" + arg "^5.0.2" + chalk "^4.1.2" + debug "^4.3.4" + find-up "^5.0.0" + getenv "^1.0.0" + minimatch "^3.0.4" + p-limit "^3.1.0" + resolve-from "^5.0.0" + semver "^7.6.0" + +"@expo/image-utils@^0.6.0": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.6.3.tgz#89c744460beefc686989b969121357bbd5520c8a" + integrity sha512-v/JbCKBrHeudxn1gN1TgfPE/pWJSlLPrl29uXJBgrJFQVkViQvUHQNDhaS+UEa9wYI5HHh7XYmtzAehyG4L+GA== + dependencies: + "@expo/spawn-async" "^1.7.2" + chalk "^4.0.0" + fs-extra "9.0.0" + getenv "^1.0.0" + jimp-compact "0.16.1" + parse-png "^2.1.0" + resolve-from "^5.0.0" + semver "^7.6.0" + temp-dir "~2.0.0" + unique-string "~2.0.0" + +"@expo/json-file@^9.0.0", "@expo/json-file@~9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-9.0.0.tgz#e3688c9b108cfd7e819f1354a9458ba6e93fc943" + integrity sha512-M+55xFVrFzDcgMDf+52lPDLjKB5xwRfStWlv/b/Vu2OLgxGZLWpxoPYjlRoHqxjPbCQIi2ZCbobK+0KuNhsELg== + dependencies: + "@babel/code-frame" "~7.10.4" + json5 "^2.2.3" + write-file-atomic "^2.3.0" + +"@expo/metro-config@0.19.6": + version "0.19.6" + resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.19.6.tgz#81bbe70c77a322d6c688738fd7b736a3cbb7c5bd" + integrity sha512-pRwZyOstsQa1+Ecss3wOqC28wjyjq9qxvJaQL3LH4G8Sef9x2PX+ySRApeQ01nl4ZN5nlyez6iVDF51tn/WhOw== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.5" + "@babel/parser" "^7.20.0" + "@babel/types" "^7.20.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.0" + debug "^4.3.2" + fs-extra "^9.1.0" + getenv "^1.0.0" + glob "^10.4.2" + jsc-safe-url "^0.2.4" + lightningcss "~1.27.0" + minimatch "^3.0.4" + postcss "~8.4.32" + resolve-from "^5.0.0" + +"@expo/metro-config@~0.19.0": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.19.5.tgz#121817ac85cfc055686daafb8c85afb4f5d6a2d0" + integrity sha512-wl5lVgXq4FN4kBJHNyU5U9J5hH8S8rYXrp/pgbwA+J/smQfiElYKMYomTGbHUb4LQ0VnmlX6/kI4x/zJk+mq7w== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.5" + "@babel/parser" "^7.20.0" + "@babel/types" "^7.20.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.0" + debug "^4.3.2" + fs-extra "^9.1.0" + getenv "^1.0.0" + glob "^10.4.2" + jsc-safe-url "^0.2.4" + lightningcss "~1.27.0" + minimatch "^3.0.4" + postcss "~8.4.32" + resolve-from "^5.0.0" + +"@expo/metro-runtime@~4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@expo/metro-runtime/-/metro-runtime-4.0.0.tgz#fedccde1baebe97c02584331194f1f793492abbe" + integrity sha512-+zgCyuXqIzgZVN8h0g36sursGXBy3xqtJW9han7t/iR2HTTrrbEoep5ftW1a27bdSINU96ng+rSsPLbyHYeBvw== + +"@expo/osascript@^2.0.31": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@expo/osascript/-/osascript-2.1.4.tgz#4918d16ba09d8b01cb393bc5997055e61d31246f" + integrity sha512-LcPjxJ5FOFpqPORm+5MRLV0CuYWMthJYV6eerF+lQVXKlvgSn3EOqaHC3Vf3H+vmB0f6G4kdvvFtg40vG4bIhA== + dependencies: + "@expo/spawn-async" "^1.7.2" + exec-async "^2.2.0" + +"@expo/package-manager@^1.5.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@expo/package-manager/-/package-manager-1.6.1.tgz#ab845238dec10bb48bca2b90e060dfe8c1525602" + integrity sha512-4rT46wP/94Ll+CWXtFKok1Lbo9XncSUtErFOo/9/3FVughGbIfdG4SKZOAWIpr9wxwEfkyhHfAP9q71ONlWODw== + dependencies: + "@expo/json-file" "^9.0.0" + "@expo/spawn-async" "^1.7.2" + ansi-regex "^5.0.0" + chalk "^4.0.0" + find-up "^5.0.0" + js-yaml "^3.13.1" + micromatch "^4.0.8" + npm-package-arg "^11.0.0" + ora "^3.4.0" + resolve-workspace-root "^2.0.0" + split "^1.0.1" + sudo-prompt "9.1.1" + +"@expo/plist@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@expo/plist/-/plist-0.2.0.tgz#beb014c0bfd56a993086c0972ec1ca3ef3f9d36c" + integrity sha512-F/IZJQaf8OIVnVA6XWUeMPC3OH6MV00Wxf0WC0JhTQht2QgjyHUa3U5Gs3vRtDq8tXNsZneOQRDVwpaOnd4zTQ== + dependencies: + "@xmldom/xmldom" "~0.7.7" + base64-js "^1.2.3" + xmlbuilder "^14.0.0" + +"@expo/prebuild-config@^8.0.22": + version "8.0.22" + resolved "https://registry.yarnpkg.com/@expo/prebuild-config/-/prebuild-config-8.0.22.tgz#6e2762a5f333a0519f83ae05b69da45e3e26a913" + integrity sha512-Kwlf3ymHH37W2nuNA9FzYgZvrImJScLA98939kapnOxfNGAPhmhEw26sfIGmBWAa8ymdL6p+HXQ3+b/xJ74bOg== + dependencies: + "@expo/config" "~10.0.4" + "@expo/config-plugins" "~9.0.10" + "@expo/config-types" "^52.0.0" + "@expo/image-utils" "^0.6.0" + "@expo/json-file" "^9.0.0" + "@react-native/normalize-colors" "0.76.3" + debug "^4.3.1" + fs-extra "^9.0.0" + resolve-from "^5.0.0" + semver "^7.6.0" + xml2js "0.6.0" + +"@expo/react-native-action-sheet@^4.0.1": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@expo/react-native-action-sheet/-/react-native-action-sheet-4.1.0.tgz#d10da29f487a4e0fa8c688b560cc354d5212d9d3" + integrity sha512-RILoWhREgjMdr1NUSmZa/cHg8onV2YPDAMOy0iIP1c3H7nT9QQZf5dQNHK8ehcLM82sarVxriBJyYSSHAx7j6w== + dependencies: + "@types/hoist-non-react-statics" "^3.3.1" + hoist-non-react-statics "^3.3.0" + +"@expo/rudder-sdk-node@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz#6aa575f346833eb6290282118766d4919c808c6a" + integrity sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ== + dependencies: + "@expo/bunyan" "^4.0.0" + "@segment/loosely-validate-event" "^2.0.0" + fetch-retry "^4.1.1" + md5 "^2.2.1" + node-fetch "^2.6.1" + remove-trailing-slash "^0.1.0" + uuid "^8.3.2" + +"@expo/sdk-runtime-versions@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz#d7ebd21b19f1c6b0395e50d78da4416941c57f7c" + integrity sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ== + +"@expo/spawn-async@^1.7.2": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@expo/spawn-async/-/spawn-async-1.7.2.tgz#fcfe66c3e387245e72154b1a7eae8cada6a47f58" + integrity sha512-QdWi16+CHB9JYP7gma19OVVg0BFkvU8zNj9GjWorYI8Iv8FUxjOCcYRuAmX4s/h91e4e7BPsskc8cSrZYho9Ew== + dependencies: + cross-spawn "^7.0.3" + +"@expo/vector-icons@^14.0.0": + version "14.0.4" + resolved "https://registry.yarnpkg.com/@expo/vector-icons/-/vector-icons-14.0.4.tgz#fa9d4351877312badf91a806598b2f0bab16039a" + integrity sha512-+yKshcbpDfbV4zoXOgHxCwh7lkE9VVTT5T03OUlBsqfze1PLy6Hi4jp1vSb1GVbY6eskvMIivGVc9SKzIv0oEQ== + dependencies: + prop-types "^15.8.1" + +"@expo/xcpretty@^4.3.0": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@expo/xcpretty/-/xcpretty-4.3.2.tgz#12dba1295167a9c8dde4be783d74f7e81648ca5d" + integrity sha512-ReZxZ8pdnoI3tP/dNnJdnmAk7uLT4FjsKDGW7YeDdvdOMz2XCQSmSCM9IWlrXuWtMF9zeSB6WJtEhCQ41gQOfw== + dependencies: + "@babel/code-frame" "7.10.4" + chalk "^4.1.0" + find-up "^5.0.0" + js-yaml "^4.1.0" + +"@firebase/analytics-compat@0.2.6": + version "0.2.6" + resolved "https://registry.yarnpkg.com/@firebase/analytics-compat/-/analytics-compat-0.2.6.tgz#50063978c42f13eb800e037e96ac4b17236841f4" + integrity sha512-4MqpVLFkGK7NJf/5wPEEP7ePBJatwYpyjgJ+wQHQGHfzaCDgntOnl9rL2vbVGGKCnRqWtZDIWhctB86UWXaX2Q== + dependencies: + "@firebase/analytics" "0.10.0" + "@firebase/analytics-types" "0.8.0" + "@firebase/component" "0.6.4" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/analytics-types@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.8.0.tgz#551e744a29adbc07f557306530a2ec86add6d410" + integrity sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw== + +"@firebase/analytics@0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.10.0.tgz#9c6986acd573c6c6189ffb52d0fd63c775db26d7" + integrity sha512-Locv8gAqx0e+GX/0SI3dzmBY5e9kjVDtD+3zCFLJ0tH2hJwuCAiL+5WkHuxKj92rqQj/rvkBUCfA1ewlX2hehg== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/installations" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/app-check-compat@0.3.7": + version "0.3.7" + resolved "https://registry.yarnpkg.com/@firebase/app-check-compat/-/app-check-compat-0.3.7.tgz#e150f61d653a0f2043a34dcb995616a717161839" + integrity sha512-cW682AxsyP1G+Z0/P7pO/WT2CzYlNxoNe5QejVarW2o5ZxeWSSPAiVEwpEpQR/bUlUmdeWThYTMvBWaopdBsqw== + dependencies: + "@firebase/app-check" "0.8.0" + "@firebase/app-check-types" "0.5.0" + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/app-check-interop-types@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.0.tgz#b27ea1397cb80427f729e4bbf3a562f2052955c4" + integrity sha512-xAxHPZPIgFXnI+vb4sbBjZcde7ZluzPPaSK7Lx3/nmuVk4TjZvnL8ONnkd4ERQKL8WePQySU+pRcWkh8rDf5Sg== + +"@firebase/app-check-types@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@firebase/app-check-types/-/app-check-types-0.5.0.tgz#1b02826213d7ce6a1cf773c329b46ea1c67064f4" + integrity sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ== + +"@firebase/app-check@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@firebase/app-check/-/app-check-0.8.0.tgz#b531ec40900af9c3cf1ec63de9094a0ddd733d6a" + integrity sha512-dRDnhkcaC2FspMiRK/Vbp+PfsOAEP6ZElGm9iGFJ9fDqHoPs0HOPn7dwpJ51lCFi1+2/7n5pRPGhqF/F03I97g== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/app-compat@0.2.13": + version "0.2.13" + resolved "https://registry.yarnpkg.com/@firebase/app-compat/-/app-compat-0.2.13.tgz#c42d392f45f2c9fef1631cb3ae36d53296aa6407" + integrity sha512-j6ANZaWjeVy5zg6X7uiqh6lM6o3n3LD1+/SJFNs9V781xyryyZWXe+tmnWNWPkP086QfJoNkWN9pMQRqSG4vMg== + dependencies: + "@firebase/app" "0.9.13" + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/app-types@0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.9.0.tgz#35b5c568341e9e263b29b3d2ba0e9cfc9ec7f01e" + integrity sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q== + +"@firebase/app@0.9.13": + version "0.9.13" + resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.9.13.tgz#b1d3ad63d52f235a0d70a9b4261cabb3a24690d7" + integrity sha512-GfiI1JxJ7ecluEmDjPzseRXk/PX31hS7+tjgBopL7XjB2hLUdR+0FTMXy2Q3/hXezypDvU6or7gVFizDESrkXw== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + idb "7.1.1" + tslib "^2.1.0" + +"@firebase/auth-compat@0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@firebase/auth-compat/-/auth-compat-0.4.2.tgz#cb65edc2fbd5f72fff32310409f2fd702b5145e7" + integrity sha512-Q30e77DWXFmXEt5dg5JbqEDpjw9y3/PcP9LslDPR7fARmAOTIY9MM6HXzm9KC+dlrKH/+p6l8g9ifJiam9mc4A== + dependencies: + "@firebase/auth" "0.23.2" + "@firebase/auth-types" "0.12.0" + "@firebase/component" "0.6.4" + "@firebase/util" "1.9.3" + node-fetch "2.6.7" + tslib "^2.1.0" + +"@firebase/auth-interop-types@0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz#78884f24fa539e34a06c03612c75f222fcc33742" + integrity sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg== + +"@firebase/auth-types@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.12.0.tgz#f28e1b68ac3b208ad02a15854c585be6da3e8e79" + integrity sha512-pPwaZt+SPOshK8xNoiQlK5XIrS97kFYc3Rc7xmy373QsOJ9MmqXxLaYssP5Kcds4wd2qK//amx/c+A8O2fVeZA== + +"@firebase/auth@0.23.2": + version "0.23.2" + resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.23.2.tgz#9e6d8dd550a28053c1825fb98c7dc9b37119254d" + integrity sha512-dM9iJ0R6tI1JczuGSxXmQbXAgtYie0K4WvKcuyuSTCu9V8eEDiz4tfa1sO3txsfvwg7nOY3AjoCyMYEdqZ8hdg== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + node-fetch "2.6.7" + tslib "^2.1.0" + +"@firebase/component@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.6.4.tgz#8981a6818bd730a7554aa5e0516ffc9b1ae3f33d" + integrity sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA== + dependencies: + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/database-compat@0.3.4": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@firebase/database-compat/-/database-compat-0.3.4.tgz#4e57932f7a5ba761cd5ac946ab6b6ab3f660522c" + integrity sha512-kuAW+l+sLMUKBThnvxvUZ+Q1ZrF/vFJ58iUY9kAcbX48U03nVzIF6Tmkf0p3WVQwMqiXguSgtOPIB6ZCeF+5Gg== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/database" "0.14.4" + "@firebase/database-types" "0.10.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/database-types@0.10.4": + version "0.10.4" + resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.10.4.tgz#47ba81113512dab637abace61cfb65f63d645ca7" + integrity sha512-dPySn0vJ/89ZeBac70T+2tWWPiJXWbmRygYv0smT5TfE3hDrQ09eKMF3Y+vMlTdrMWq7mUdYW5REWPSGH4kAZQ== + dependencies: + "@firebase/app-types" "0.9.0" + "@firebase/util" "1.9.3" + +"@firebase/database@0.14.4": + version "0.14.4" + resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.14.4.tgz#9e7435a16a540ddfdeb5d99d45618e6ede179aa6" + integrity sha512-+Ea/IKGwh42jwdjCyzTmeZeLM3oy1h0mFPsTy6OqCWzcu/KFqRAr5Tt1HRCOBlNOdbh84JPZC47WLU18n2VbxQ== + dependencies: + "@firebase/auth-interop-types" "0.2.1" + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + faye-websocket "0.11.4" + tslib "^2.1.0" + +"@firebase/firestore-compat@0.3.12": + version "0.3.12" + resolved "https://registry.yarnpkg.com/@firebase/firestore-compat/-/firestore-compat-0.3.12.tgz#c08b24c76da7af75598f3c28432b6eb22f959b56" + integrity sha512-mazuNGAx5Kt9Nph0pm6ULJFp/+j7GSsx+Ncw1GrnKl+ft1CQ4q2LcUssXnjqkX2Ry0fNGqUzC1mfIUrk9bYtjQ== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/firestore" "3.13.0" + "@firebase/firestore-types" "2.5.1" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/firestore-types@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-2.5.1.tgz#464b2ee057956599ca34de50eae957c30fdbabb7" + integrity sha512-xG0CA6EMfYo8YeUxC8FeDzf6W3FX1cLlcAGBYV6Cku12sZRI81oWcu61RSKM66K6kUENP+78Qm8mvroBcm1whw== + +"@firebase/firestore@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-3.13.0.tgz#f924a3bb462bc3ac666dc5d375f3f8c4e1a72345" + integrity sha512-NwcnU+madJXQ4fbLkGx1bWvL612IJN/qO6bZ6dlPmyf7QRyu5azUosijdAN675r+bOOJxMtP1Bv981bHBXAbUg== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + "@firebase/webchannel-wrapper" "0.10.1" + "@grpc/grpc-js" "~1.7.0" + "@grpc/proto-loader" "^0.6.13" + node-fetch "2.6.7" + tslib "^2.1.0" + +"@firebase/functions-compat@0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@firebase/functions-compat/-/functions-compat-0.3.5.tgz#7a532d3a9764c6d5fbc1ec5541a989a704326647" + integrity sha512-uD4jwgwVqdWf6uc3NRKF8cSZ0JwGqSlyhPgackyUPe+GAtnERpS4+Vr66g0b3Gge0ezG4iyHo/EXW/Hjx7QhHw== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/functions" "0.10.0" + "@firebase/functions-types" "0.6.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/functions-types@0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.6.0.tgz#ccd7000dc6fc668f5acb4e6a6a042a877a555ef2" + integrity sha512-hfEw5VJtgWXIRf92ImLkgENqpL6IWpYaXVYiRkFY1jJ9+6tIhWM7IzzwbevwIIud/jaxKVdRzD7QBWfPmkwCYw== + +"@firebase/functions@0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.10.0.tgz#c630ddf12cdf941c25bc8d554e30c3226cd560f6" + integrity sha512-2U+fMNxTYhtwSpkkR6WbBcuNMOVaI7MaH3cZ6UAeNfj7AgEwHwMIFLPpC13YNZhno219F0lfxzTAA0N62ndWzA== + dependencies: + "@firebase/app-check-interop-types" "0.3.0" + "@firebase/auth-interop-types" "0.2.1" + "@firebase/component" "0.6.4" + "@firebase/messaging-interop-types" "0.2.0" + "@firebase/util" "1.9.3" + node-fetch "2.6.7" + tslib "^2.1.0" + +"@firebase/installations-compat@0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@firebase/installations-compat/-/installations-compat-0.2.4.tgz#b5557c897b4cd3635a59887a8bf69c3731aaa952" + integrity sha512-LI9dYjp0aT9Njkn9U4JRrDqQ6KXeAmFbRC0E7jI7+hxl5YmRWysq5qgQl22hcWpTk+cm3es66d/apoDU/A9n6Q== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/installations" "0.6.4" + "@firebase/installations-types" "0.5.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/installations-types@0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.5.0.tgz#2adad64755cd33648519b573ec7ec30f21fb5354" + integrity sha512-9DP+RGfzoI2jH7gY4SlzqvZ+hr7gYzPODrbzVD82Y12kScZ6ZpRg/i3j6rleto8vTFC8n6Len4560FnV1w2IRg== + +"@firebase/installations@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.6.4.tgz#20382e33e6062ac5eff4bede8e468ed4c367609e" + integrity sha512-u5y88rtsp7NYkCHC3ElbFBrPtieUybZluXyzl7+4BsIz4sqb4vSAuwHEUgCgCeaQhvsnxDEU6icly8U9zsJigA== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/util" "1.9.3" + idb "7.0.1" + tslib "^2.1.0" + +"@firebase/logger@0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.4.0.tgz#15ecc03c452525f9d47318ad9491b81d1810f113" + integrity sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA== + dependencies: + tslib "^2.1.0" + +"@firebase/messaging-compat@0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@firebase/messaging-compat/-/messaging-compat-0.2.4.tgz#323ca48deef77065b4fcda3cfd662c4337dffcfd" + integrity sha512-lyFjeUhIsPRYDPNIkYX1LcZMpoVbBWXX4rPl7c/rqc7G+EUea7IEtSt4MxTvh6fDfPuzLn7+FZADfscC+tNMfg== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/messaging" "0.12.4" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/messaging-interop-types@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.0.tgz#6056f8904a696bf0f7fdcf5f2ca8f008e8f6b064" + integrity sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ== + +"@firebase/messaging@0.12.4": + version "0.12.4" + resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.12.4.tgz#ccb49df5ab97d5650c9cf5b8c77ddc34daafcfe0" + integrity sha512-6JLZct6zUaex4g7HI3QbzeUrg9xcnmDAPTWpkoMpd/GoSVWH98zDoWXMGrcvHeCAIsLpFMe4MPoZkJbrPhaASw== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/installations" "0.6.4" + "@firebase/messaging-interop-types" "0.2.0" + "@firebase/util" "1.9.3" + idb "7.0.1" + tslib "^2.1.0" + +"@firebase/performance-compat@0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@firebase/performance-compat/-/performance-compat-0.2.4.tgz#95cbf32057b5d9f0c75d804bc50e6ed3ba486274" + integrity sha512-nnHUb8uP9G8islzcld/k6Bg5RhX62VpbAb/Anj7IXs/hp32Eb2LqFPZK4sy3pKkBUO5wcrlRWQa6wKOxqlUqsg== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/performance" "0.6.4" + "@firebase/performance-types" "0.2.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/performance-types@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.2.0.tgz#400685f7a3455970817136d9b48ce07a4b9562ff" + integrity sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA== + +"@firebase/performance@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.6.4.tgz#0ad766bfcfab4f386f4fe0bef43bbcf505015069" + integrity sha512-HfTn/bd8mfy/61vEqaBelNiNnvAbUtME2S25A67Nb34zVuCSCRIX4SseXY6zBnOFj3oLisaEqhVcJmVPAej67g== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/installations" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/remote-config-compat@0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@firebase/remote-config-compat/-/remote-config-compat-0.2.4.tgz#1f494c81a6c9560b1f9ca1b4fbd4bbbe47cf4776" + integrity sha512-FKiki53jZirrDFkBHglB3C07j5wBpitAaj8kLME6g8Mx+aq7u9P7qfmuSRytiOItADhWUj7O1JIv7n9q87SuwA== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/remote-config" "0.4.4" + "@firebase/remote-config-types" "0.3.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/remote-config-types@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.3.0.tgz#689900dcdb3e5c059e8499b29db393e4e51314b4" + integrity sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA== + +"@firebase/remote-config@0.4.4": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.4.4.tgz#6a496117054de58744bc9f382d2a6d1e14060c65" + integrity sha512-x1ioTHGX8ZwDSTOVp8PBLv2/wfwKzb4pxi0gFezS5GCJwbLlloUH4YYZHHS83IPxnua8b6l0IXUaWd0RgbWwzQ== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/installations" "0.6.4" + "@firebase/logger" "0.4.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/storage-compat@0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@firebase/storage-compat/-/storage-compat-0.3.2.tgz#51a97170fd652a516f729f82b97af369e5a2f8d7" + integrity sha512-wvsXlLa9DVOMQJckbDNhXKKxRNNewyUhhbXev3t8kSgoCotd1v3MmqhKKz93ePhDnhHnDs7bYHy+Qa8dRY6BXw== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/storage" "0.11.2" + "@firebase/storage-types" "0.8.0" + "@firebase/util" "1.9.3" + tslib "^2.1.0" + +"@firebase/storage-types@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.8.0.tgz#f1e40a5361d59240b6e84fac7fbbbb622bfaf707" + integrity sha512-isRHcGrTs9kITJC0AVehHfpraWFui39MPaU7Eo8QfWlqW7YPymBmRgjDrlOgFdURh6Cdeg07zmkLP5tzTKRSpg== + +"@firebase/storage@0.11.2": + version "0.11.2" + resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.11.2.tgz#c5e0316543fe1c4026b8e3910f85ad73f5b77571" + integrity sha512-CtvoFaBI4hGXlXbaCHf8humajkbXhs39Nbh6MbNxtwJiCqxPy9iH3D3CCfXAvP0QvAAwmJUTK3+z9a++Kc4nkA== + dependencies: + "@firebase/component" "0.6.4" + "@firebase/util" "1.9.3" + node-fetch "2.6.7" + tslib "^2.1.0" + +"@firebase/util@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.9.3.tgz#45458dd5cd02d90e55c656e84adf6f3decf4b7ed" + integrity sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA== + dependencies: + tslib "^2.1.0" + +"@firebase/webchannel-wrapper@0.10.1": + version "0.10.1" + resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.10.1.tgz#60bb2aaf129f9e00621f8d698722ddba6ee1f8ac" + integrity sha512-Dq5rYfEpdeel0bLVN+nfD1VWmzCkK+pJbSjIawGE+RY4+NIJqhbUDDQjvV0NUK84fMfwxvtFoCtEe70HfZjFcw== + +"@gorhom/bottom-sheet@^4": + version "4.6.4" + resolved "https://registry.yarnpkg.com/@gorhom/bottom-sheet/-/bottom-sheet-4.6.4.tgz#387d0f0f21e3470eb8575498cb81ce96f5108e79" + integrity sha512-0itLMblLBvepE065w3a60S030c2rNUsGshPC7wbWDm31VyqoaU2xjzh/ojH62YIJOcobBr5QoC30IxBBKDGovQ== + dependencies: + "@gorhom/portal" "1.0.14" + invariant "^2.2.4" + +"@gorhom/portal@1.0.14", "@gorhom/portal@^1.0.14": + version "1.0.14" + resolved "https://registry.yarnpkg.com/@gorhom/portal/-/portal-1.0.14.tgz#1953edb76aaba80fb24021dc774550194a18e111" + integrity sha512-MXyL4xvCjmgaORr/rtryDNFy3kU4qUbKlwtQqqsygd0xX3mhKjOLn6mQK8wfu0RkoE0pBE0nAasRoHua+/QZ7A== + dependencies: + nanoid "^3.3.1" + +"@grpc/grpc-js@~1.7.0": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.7.3.tgz#f2ea79f65e31622d7f86d4b4c9ae38f13ccab99a" + integrity sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog== + dependencies: + "@grpc/proto-loader" "^0.7.0" + "@types/node" ">=12.12.47" + +"@grpc/proto-loader@^0.6.13": + version "0.6.13" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.13.tgz#008f989b72a40c60c96cd4088522f09b05ac66bc" + integrity sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g== + dependencies: + "@types/long" "^4.0.1" + lodash.camelcase "^4.3.0" + long "^4.0.0" + protobufjs "^6.11.3" + yargs "^16.2.0" + +"@grpc/proto-loader@^0.7.0": + version "0.7.13" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.13.tgz#f6a44b2b7c9f7b609f5748c6eac2d420e37670cf" + integrity sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw== + dependencies: + lodash.camelcase "^4.3.0" + long "^5.0.0" + protobufjs "^7.2.5" + yargs "^17.7.2" + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@isaacs/ttlcache@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz#21fb23db34e9b6220c6ba023a0118a2dd3461ea2" + integrity sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/create-cache-key-function@^29.6.3": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz#793be38148fab78e65f40ae30c36785f4ad859f0" + integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== + dependencies: + "@jest/types" "^29.6.3" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.3": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@legendapp/motion@^2.1.10", "@legendapp/motion@^2.2.1": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@legendapp/motion/-/motion-2.4.0.tgz#eef6f934b784e07fe94631d5648d412f34fa0c6b" + integrity sha512-AAYpRLGvxGD5hIGl9sVHyoUufr66zoH82PuxYcKiPSMdCBI3jwZFWh6CuHjV1leRKVIRk2py1rSvIVabG8eqcw== + dependencies: + "@legendapp/tools" "2.0.1" + +"@legendapp/tools@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@legendapp/tools/-/tools-2.0.1.tgz#995fe6cb3e2398b939f645505aa8e1abc84bd07f" + integrity sha512-Kxt0HWvWElRK6oybHRzcYxdgaKGwuaiRNreS7usW7QuHXRIHaH4yMcW2YNRG4DHE5fpefv+Bno/BohQcCE4FaA== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@notifee/react-native@^7.7.1": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@notifee/react-native/-/react-native-7.9.0.tgz#341bdb55345b2e02690f6161efb24d13291ad538" + integrity sha512-r4iFcAkvfFV/iNwGF50y9uAYS8x0x6+t9gmBsZczWxFHzBvg5nBjwFjshnuC24+oNnlNWIbB03heNmFjrFArJQ== + +"@npmcli/fs@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" + integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== + dependencies: + semver "^7.3.5" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@react-native-async-storage/async-storage@1.23.1": + version "1.23.1" + resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.23.1.tgz#cad3cd4fab7dacfe9838dce6ecb352f79150c883" + integrity sha512-Qd2kQ3yi6Y3+AcUlrHxSLlnBvpdCEMVGFlVBneVOjaFaPU61g1huc38g339ysXspwY1QZA2aNhrk/KlHGO+ewA== + dependencies: + merge-options "^3.0.4" + +"@react-native-community/datetimepicker@8.2.0": + version "8.2.0" + resolved "https://registry.yarnpkg.com/@react-native-community/datetimepicker/-/datetimepicker-8.2.0.tgz#f62ac4fc12bd527fbbe93934e6c1cfbb7ba570f3" + integrity sha512-qrUPhiBvKGuG9Y+vOqsc56RPFcHa1SU2qbAMT0hfGkoFIj3FodE0VuPVrEa8fgy7kcD5NQmkZIKgHOBLV0+hWg== + dependencies: + invariant "^2.2.4" + +"@react-native-community/hooks@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/hooks/-/hooks-3.0.0.tgz#af5f2ca32eea59b792ce9e3d9a4cf0354f9b195f" + integrity sha512-g2OyxXHfwIytXUJitBR6Z/ISoOfp0WKx5FOv+NqJ/CrWjRDcTw6zXE5I1C9axfuh30kJqzWchVfCDrkzZYTxqg== + +"@react-native-community/slider@4.5.5": + version "4.5.5" + resolved "https://registry.yarnpkg.com/@react-native-community/slider/-/slider-4.5.5.tgz#d70fc5870477760033769bbd6625d57e7d7678b2" + integrity sha512-x2N415pg4ZxIltArOKczPwn7JEYh+1OxQ4+hTnafomnMsqs65HZuEWcX+Ch8c5r8V83DiunuQUf5hWGWlw8hQQ== + +"@react-native-firebase/app@^21.6.1": + version "21.6.1" + resolved "https://registry.yarnpkg.com/@react-native-firebase/app/-/app-21.6.1.tgz#2f3a5f9bc9436ba3a0a76b9d32eb685e0a379340" + integrity sha512-o1i3aQMtJeofue+73j/8KO2l+/bRHaSHqOl7FtIeZfajQZaulaROugD2Rr2Mlc1o7LfEUyoDOoij9nGdrydEyw== + dependencies: + firebase "10.13.2" + +"@react-native-firebase/crashlytics@^21.6.1": + version "21.6.1" + resolved "https://registry.yarnpkg.com/@react-native-firebase/crashlytics/-/crashlytics-21.6.1.tgz#e43f419e2b13985d73d0cf76f0bbb712d01b154a" + integrity sha512-9FGflbCEt5uC3l3GP7aOYlzQPz9i2bey7vIPGBDEuTzCCxBups/QDWZW7P9mHTRK8Zi32AaLrqPbrvGEepABPQ== + dependencies: + stacktrace-js "^2.0.2" + +"@react-native-firebase/firestore@^21.6.1": + version "21.6.1" + resolved "https://registry.yarnpkg.com/@react-native-firebase/firestore/-/firestore-21.6.1.tgz#228122fc2cd380f403f8984570b0ae6fa47c030a" + integrity sha512-i3RQM11zTRCYc7/KdD0MiCm7UyyTecDXG/89lEv5hvVJMS6ltIfK+0rDheSpBzYlK4kNoK765jnvVAQxIFEqbA== + +"@react-native-firebase/messaging@^21.6.1": + version "21.6.1" + resolved "https://registry.yarnpkg.com/@react-native-firebase/messaging/-/messaging-21.6.1.tgz#95c45ad7ca81d9a88ce0bfee05ba3a2555c85058" + integrity sha512-WoMGcqflDyhwpe5saqJFNKcvRiGRhW764cNv9j9fca11rtzqw186/frvE+QDVuUBEeaOZJg7bW+BV19IToc92g== + +"@react-native-masked-view/masked-view@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@react-native-masked-view/masked-view/-/masked-view-0.3.2.tgz#7064533a573e3539ec912f59c1f457371bf49dd9" + integrity sha512-XwuQoW7/GEgWRMovOQtX3A4PrXhyaZm0lVUiY8qJDvdngjLms9Cpdck6SmGAUNqQwcj2EadHC1HwL0bEyoa/SQ== + +"@react-native/assets-registry@0.76.5": + version "0.76.5" + resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.76.5.tgz#3343338813aa6354df9fec52af50d0b5f7f3d013" + integrity sha512-MN5dasWo37MirVcKWuysRkRr4BjNc81SXwUtJYstwbn8oEkfnwR9DaqdDTo/hHOnTdhafffLIa2xOOHcjDIGEw== + +"@react-native/babel-plugin-codegen@0.76.3": + version "0.76.3" + resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.76.3.tgz#331f1afb4fe744b135979f0d0db62b1cd07cb5bf" + integrity sha512-mZ7jmIIg4bUnxCqY3yTOkoHvvzsDyrZgfnIKiTGm5QACrsIGa5eT3pMFpMm2OpxGXRDrTMsYdPXE2rCyDX52VQ== + dependencies: + "@react-native/codegen" "0.76.3" + +"@react-native/babel-plugin-codegen@0.76.5": + version "0.76.5" + resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.76.5.tgz#a7c32274351e51db9c0a7849ce8059940448c087" + integrity sha512-xe7HSQGop4bnOLMaXt0aU+rIatMNEQbz242SDl8V9vx5oOTI0VbZV9yLy6yBc6poUlYbcboF20YVjoRsxX4yww== + dependencies: + "@react-native/codegen" "0.76.5" + +"@react-native/babel-preset@0.76.3": + version "0.76.3" + resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.76.3.tgz#f1a839b0b2ced0399148ada5e1e152136109b940" + integrity sha512-zi2nPlQf9q2fmfPyzwWEj6DU96v8ziWtEfG7CTAX2PG/Vjfsr94vn/wWrCdhBVvLRQ6Kvd/MFAuDYpxmQwIiVQ== + dependencies: + "@babel/core" "^7.25.2" + "@babel/plugin-proposal-export-default-from" "^7.24.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-default-from" "^7.24.7" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.24.7" + "@babel/plugin-transform-async-generator-functions" "^7.25.4" + "@babel/plugin-transform-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoping" "^7.25.0" + "@babel/plugin-transform-class-properties" "^7.25.4" + "@babel/plugin-transform-classes" "^7.25.4" + "@babel/plugin-transform-computed-properties" "^7.24.7" + "@babel/plugin-transform-destructuring" "^7.24.8" + "@babel/plugin-transform-flow-strip-types" "^7.25.2" + "@babel/plugin-transform-for-of" "^7.24.7" + "@babel/plugin-transform-function-name" "^7.25.1" + "@babel/plugin-transform-literals" "^7.25.2" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.8" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" + "@babel/plugin-transform-numeric-separator" "^7.24.7" + "@babel/plugin-transform-object-rest-spread" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.8" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-private-methods" "^7.24.7" + "@babel/plugin-transform-private-property-in-object" "^7.24.7" + "@babel/plugin-transform-react-display-name" "^7.24.7" + "@babel/plugin-transform-react-jsx" "^7.25.2" + "@babel/plugin-transform-react-jsx-self" "^7.24.7" + "@babel/plugin-transform-react-jsx-source" "^7.24.7" + "@babel/plugin-transform-regenerator" "^7.24.7" + "@babel/plugin-transform-runtime" "^7.24.7" + "@babel/plugin-transform-shorthand-properties" "^7.24.7" + "@babel/plugin-transform-spread" "^7.24.7" + "@babel/plugin-transform-sticky-regex" "^7.24.7" + "@babel/plugin-transform-typescript" "^7.25.2" + "@babel/plugin-transform-unicode-regex" "^7.24.7" + "@babel/template" "^7.25.0" + "@react-native/babel-plugin-codegen" "0.76.3" + babel-plugin-syntax-hermes-parser "^0.25.1" + babel-plugin-transform-flow-enums "^0.0.2" + react-refresh "^0.14.0" + +"@react-native/babel-preset@0.76.5": + version "0.76.5" + resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.76.5.tgz#794ca17e1107e46712153f296a4930de2048e20e" + integrity sha512-1Nu5Um4EogOdppBLI4pfupkteTjWfmI0hqW8ezWTg7Bezw0FtBj8yS8UYVd3wTnDFT9A5mA2VNoNUqomJnvj2A== + dependencies: + "@babel/core" "^7.25.2" + "@babel/plugin-proposal-export-default-from" "^7.24.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-default-from" "^7.24.7" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.24.7" + "@babel/plugin-transform-async-generator-functions" "^7.25.4" + "@babel/plugin-transform-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoping" "^7.25.0" + "@babel/plugin-transform-class-properties" "^7.25.4" + "@babel/plugin-transform-classes" "^7.25.4" + "@babel/plugin-transform-computed-properties" "^7.24.7" + "@babel/plugin-transform-destructuring" "^7.24.8" + "@babel/plugin-transform-flow-strip-types" "^7.25.2" + "@babel/plugin-transform-for-of" "^7.24.7" + "@babel/plugin-transform-function-name" "^7.25.1" + "@babel/plugin-transform-literals" "^7.25.2" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.8" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" + "@babel/plugin-transform-numeric-separator" "^7.24.7" + "@babel/plugin-transform-object-rest-spread" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.8" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-private-methods" "^7.24.7" + "@babel/plugin-transform-private-property-in-object" "^7.24.7" + "@babel/plugin-transform-react-display-name" "^7.24.7" + "@babel/plugin-transform-react-jsx" "^7.25.2" + "@babel/plugin-transform-react-jsx-self" "^7.24.7" + "@babel/plugin-transform-react-jsx-source" "^7.24.7" + "@babel/plugin-transform-regenerator" "^7.24.7" + "@babel/plugin-transform-runtime" "^7.24.7" + "@babel/plugin-transform-shorthand-properties" "^7.24.7" + "@babel/plugin-transform-spread" "^7.24.7" + "@babel/plugin-transform-sticky-regex" "^7.24.7" + "@babel/plugin-transform-typescript" "^7.25.2" + "@babel/plugin-transform-unicode-regex" "^7.24.7" + "@babel/template" "^7.25.0" + "@react-native/babel-plugin-codegen" "0.76.5" + babel-plugin-syntax-hermes-parser "^0.25.1" + babel-plugin-transform-flow-enums "^0.0.2" + react-refresh "^0.14.0" + +"@react-native/codegen@0.76.3": + version "0.76.3" + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.76.3.tgz#a94664601bb60797dd1042972bffdd1b2bfe008c" + integrity sha512-oJCH/jbYeGmFJql8/y76gqWCCd74pyug41yzYAjREso1Z7xL88JhDyKMvxEnfhSdMOZYVl479N80xFiXPy3ZYA== + dependencies: + "@babel/parser" "^7.25.3" + glob "^7.1.1" + hermes-parser "0.23.1" + invariant "^2.2.4" + jscodeshift "^0.14.0" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + yargs "^17.6.2" + +"@react-native/codegen@0.76.5": + version "0.76.5" + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.76.5.tgz#4d89ec14a023d6946dbc44537c39b03bd006db7b" + integrity sha512-FoZ9VRQ5MpgtDAnVo1rT9nNRfjnWpE40o1GeJSDlpUMttd36bVXvsDm8W/NhX8BKTWXSX+CPQJsRcvN1UPYGKg== + dependencies: + "@babel/parser" "^7.25.3" + glob "^7.1.1" + hermes-parser "0.23.1" + invariant "^2.2.4" + jscodeshift "^0.14.0" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + yargs "^17.6.2" + +"@react-native/community-cli-plugin@0.76.5": + version "0.76.5" + resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.76.5.tgz#e701a9f99565504a2510d1b54713b1c5dd0f1bb4" + integrity sha512-3MKMnlU0cZOWlMhz5UG6WqACJiWUrE3XwBEumzbMmZw3Iw3h+fIsn+7kLLE5EhzqLt0hg5Y4cgYFi4kOaNgq+g== + dependencies: + "@react-native/dev-middleware" "0.76.5" + "@react-native/metro-babel-transformer" "0.76.5" + chalk "^4.0.0" + execa "^5.1.1" + invariant "^2.2.4" + metro "^0.81.0" + metro-config "^0.81.0" + metro-core "^0.81.0" + node-fetch "^2.2.0" + readline "^1.3.0" + semver "^7.1.3" + +"@react-native/debugger-frontend@0.76.3": + version "0.76.3" + resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.76.3.tgz#531e616f6dad159a58117efc69cec20422d15b0d" + integrity sha512-pMHQ3NpPB28RxXciSvm2yD+uDx3pkhzfuWkc7VFgOduyzPSIr0zotUiOJzsAtrj8++bPbOsAraCeQhCqoOTWQw== + +"@react-native/debugger-frontend@0.76.5": + version "0.76.5" + resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.76.5.tgz#0e89940543fb5029506690b83f12547d0bf42cc4" + integrity sha512-5gtsLfBaSoa9WP8ToDb/8NnDBLZjv4sybQQj7rDKytKOdsXm3Pr2y4D7x7GQQtP1ZQRqzU0X0OZrhRz9xNnOqA== + +"@react-native/dev-middleware@0.76.3": + version "0.76.3" + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.76.3.tgz#52edc76c88e0c2c436eb989551b827bf69f2a56f" + integrity sha512-b+2IpW40z1/S5Jo5JKrWPmucYU/PzeGyGBZZ/SJvmRnBDaP3txb9yIqNZAII1EWsKNhedh8vyRO5PSuJ9Juqzw== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + "@react-native/debugger-frontend" "0.76.3" + chrome-launcher "^0.15.2" + chromium-edge-launcher "^0.2.0" + connect "^3.6.5" + debug "^2.2.0" + nullthrows "^1.1.1" + open "^7.0.3" + selfsigned "^2.4.1" + serve-static "^1.13.1" + ws "^6.2.3" + +"@react-native/dev-middleware@0.76.5": + version "0.76.5" + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.76.5.tgz#10d02fcc6c3c9d24f6dc147c2ef95d6fa6bd3787" + integrity sha512-f8eimsxpkvMgJia7POKoUu9uqjGF6KgkxX4zqr/a6eoR1qdEAWUd6PonSAqtag3PAqvEaJpB99gLH2ZJI1nDGg== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + "@react-native/debugger-frontend" "0.76.5" + chrome-launcher "^0.15.2" + chromium-edge-launcher "^0.2.0" + connect "^3.6.5" + debug "^2.2.0" + nullthrows "^1.1.1" + open "^7.0.3" + selfsigned "^2.4.1" + serve-static "^1.13.1" + ws "^6.2.3" + +"@react-native/gradle-plugin@0.76.5": + version "0.76.5" + resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.76.5.tgz#90d55ec3a99c609358db97b2d7444b28fdc35bc0" + integrity sha512-7KSyD0g0KhbngITduC8OABn0MAlJfwjIdze7nA4Oe1q3R7qmAv+wQzW+UEXvPah8m1WqFjYTkQwz/4mK3XrQGw== + +"@react-native/js-polyfills@0.76.5": + version "0.76.5" + resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.76.5.tgz#8f35696d96f804de589cd38382c4f0ffbbc248d5" + integrity sha512-ggM8tcKTcaqyKQcXMIvcB0vVfqr9ZRhWVxWIdiFO1mPvJyS6n+a+lLGkgQAyO8pfH0R1qw6K9D0nqbbDo865WQ== + +"@react-native/metro-babel-transformer@0.76.5": + version "0.76.5" + resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.76.5.tgz#ed5a05fff34c47af43eba4069e50be7c486f77bd" + integrity sha512-Cm9G5Sg5BDty3/MKa3vbCAJtT3YHhlEaPlQALLykju7qBS+pHZV9bE9hocfyyvc5N/osTIGWxG5YOfqTeMu1oQ== + dependencies: + "@babel/core" "^7.25.2" + "@react-native/babel-preset" "0.76.5" + hermes-parser "0.23.1" + nullthrows "^1.1.1" + +"@react-native/normalize-color@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.1.0.tgz#939b87a9849e81687d3640c5efa2a486ac266f91" + integrity sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA== + +"@react-native/normalize-colors@0.76.3": + version "0.76.3" + resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.76.3.tgz#8d4de4a8671385c53b2d202ef0137632abcf747d" + integrity sha512-Yrpmrh4IDEupUUM/dqVxhAN8QW1VEUR3Qrk2lzJC1jB2s46hDe0hrMP2vs12YJqlzshteOthjwXQlY0TgIzgbg== + +"@react-native/normalize-colors@0.76.5": + version "0.76.5" + resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.76.5.tgz#a33560736311aefcf1d3cb594597befe81a9a53c" + integrity sha512-6QRLEok1r55gLqj+94mEWUENuU5A6wsr2OoXpyq/CgQ7THWowbHtru/kRGRr6o3AQXrVnZheR60JNgFcpNYIug== + +"@react-native/normalize-colors@^0.74.1": + version "0.74.88" + resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.74.88.tgz#46f4c7270c8e6853281d7dd966e0eb362068e41a" + integrity sha512-He5oTwPBxvXrxJ91dZzpxR7P+VYmc9IkJfhuH8zUiU50ckrt+xWNjtVugPdUv4LuVjmZ36Vk2EX8bl1gVn2dVA== + +"@react-native/virtualized-lists@0.76.5": + version "0.76.5" + resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.76.5.tgz#394c2d48687db30c79278d183fda8a129a2d24d3" + integrity sha512-M/fW1fTwxrHbcx0OiVOIxzG6rKC0j9cR9Csf80o77y1Xry0yrNPpAlf8D1ev3LvHsiAUiRNFlauoPtodrs2J1A== + dependencies: + invariant "^2.2.4" + nullthrows "^1.1.1" + +"@react-navigation/bottom-tabs@^6.0.9": + version "6.6.1" + resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-6.6.1.tgz#589edc9c8fbf652c485b3c37d344faafe3cd4cc4" + integrity sha512-9oD4cypEBjPuaMiu9tevWGiQ4w/d6l3HNhcJ1IjXZ24xvYDSs0mqjUcdt8SWUolCvRrYc/DmNBLlT83bk0bHTw== + dependencies: + "@react-navigation/elements" "^1.3.31" + color "^4.2.3" + warn-once "^0.1.0" + +"@react-navigation/core@^6.1.0", "@react-navigation/core@^6.4.17": + version "6.4.17" + resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.17.tgz#f277a196b578c8a456efcc563d1c9bd87eb4ab04" + integrity sha512-Nd76EpomzChWAosGqWOYE3ItayhDzIEzzZsT7PfGcRFDgW5miHV2t4MZcq9YIK4tzxZjVVpYbIynOOQQd1e0Cg== + dependencies: + "@react-navigation/routers" "^6.1.9" + escape-string-regexp "^4.0.0" + nanoid "^3.1.23" + query-string "^7.1.3" + react-is "^16.13.0" + use-latest-callback "^0.2.1" + +"@react-navigation/elements@^1.3.31": + version "1.3.31" + resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.31.tgz#28dd802a0787bb03fc0e5be296daf1804dbebbcf" + integrity sha512-bUzP4Awlljx5RKEExw8WYtif8EuQni2glDaieYROKTnaxsu9kEIA515sXQgUDZU4Ob12VoL7+z70uO3qrlfXcQ== + +"@react-navigation/native@^6.0.6": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.18.tgz#338fa9afa2c89feec1d3eac41c963840d8d6f106" + integrity sha512-mIT9MiL/vMm4eirLcmw2h6h/Nm5FICtnYSdohq4vTLA2FF/6PNhByM7s8ffqoVfE5L0uAa6Xda1B7oddolUiGg== + dependencies: + "@react-navigation/core" "^6.4.17" + escape-string-regexp "^4.0.0" + fast-deep-equal "^3.1.3" + nanoid "^3.1.23" + +"@react-navigation/routers@^6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-6.1.9.tgz#73f5481a15a38e36592a0afa13c3c064b9f90bed" + integrity sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA== + dependencies: + nanoid "^3.1.23" + +"@react-navigation/stack@^6.0.11": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@react-navigation/stack/-/stack-6.4.1.tgz#a158350637f5298292202ce854e5c5c9688f23f9" + integrity sha512-upMEHOKMtuMu4c9gmoPlO/JqI6mDlSqwXg1aXKOTQLXAF8H5koOLRfrmi7AkdiE9A7lDXWUAZoGuD9O88cYvDQ== + dependencies: + "@react-navigation/elements" "^1.3.31" + color "^4.2.3" + warn-once "^0.1.0" + +"@sec-ant/readable-stream@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz#60de891bb126abfdc5410fdc6166aca065f10a0c" + integrity sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg== + +"@segment/loosely-validate-event@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz#87dfc979e5b4e7b82c5f1d8b722dfd5d77644681" + integrity sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw== + dependencies: + component-type "^1.2.1" + join-component "^1.1.0" + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sindresorhus/is@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" + integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== + +"@sindresorhus/is@^6.3.0": + version "6.3.1" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-6.3.1.tgz#43bbe2a94de0d7a11b95b7fc8100fa0e4694bbe0" + integrity sha512-FX4MfcifwJyFOI2lPoX7PQxCqx8BG1HCho7WdiXwpEQx1Ycij0JxkfYtGK7yqNScrZGSlt6RE6sw8QYoH7eKnQ== + +"@sindresorhus/merge-streams@^2.1.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz#719df7fb41766bc143369eaa0dd56d8dc87c9958" + integrity sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg== + +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@stripe/react-stripe-js@^2.5.0": + version "2.9.0" + resolved "https://registry.yarnpkg.com/@stripe/react-stripe-js/-/react-stripe-js-2.9.0.tgz#1f1a9a3d5eab8ca144e060df1e9fd855a7658aca" + integrity sha512-+/j2g6qKAKuWSurhgRMfdlIdKM+nVVJCy/wl0US2Ccodlqx0WqfIIBhUkeONkCG+V/b+bZzcj4QVa3E/rXtT4Q== + dependencies: + prop-types "^15.7.2" + +"@stripe/stripe-js@^3.0.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@stripe/stripe-js/-/stripe-js-3.5.0.tgz#7fff3d9d931e972c24dcc8ee25f7481a58879b2b" + integrity sha512-pKS3wZnJoL1iTyGBXAvCwduNNeghJHY6QSRSNNvpYnrrQrLZ6Owsazjyynu0e0ObRgks0i7Rv+pe2M7/MBTZpQ== + +"@tokenizer/token@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" + integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@types/babel__core@^7.1.14": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.8" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.20.6" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" + integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== + dependencies: + "@babel/types" "^7.20.7" + +"@types/graceful-fs@^4.1.3": + version "4.1.9" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== + dependencies: + "@types/node" "*" + +"@types/hammerjs@^2.0.36": + version "2.0.46" + resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.46.tgz#381daaca1360ff8a7c8dff63f32e69745b9fb1e1" + integrity sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw== + +"@types/hoist-non-react-statics@^3.3.1": + version "3.3.5" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz#dab7867ef789d87e2b4b0003c9d65c49cc44a494" + integrity sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/long@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" + integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== + +"@types/node-forge@^1.3.0": + version "1.3.11" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" + integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== + dependencies: + "@types/node" "*" + +"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0": + version "22.10.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.1.tgz#41ffeee127b8975a05f8c4f83fb89bcb2987d766" + integrity sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ== + dependencies: + undici-types "~6.20.0" + +"@types/prop-types@*": + version "15.7.13" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451" + integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA== + +"@types/react@*": + version "18.3.13" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.13.tgz#84c9690d9a271f548659760754ea8745701bfd82" + integrity sha512-ii/gswMmOievxAJed4PAHT949bpYjPKXvXo1v6cRB/kqc2ZR4n+SgyCyvyc5Fec5ez8VnUumI1Vk7j6fRyRogg== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.8": + version "17.0.33" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" + integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== + dependencies: + "@types/yargs-parser" "*" + +"@urql/core@^5.0.0", "@urql/core@^5.0.6": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@urql/core/-/core-5.0.8.tgz#eba39eaa2bf9a0a963383e87a65cba7a9ca794bd" + integrity sha512-1GOnUw7/a9bzkcM0+U8U5MmxW2A7FE5YquuEmcJzTtW5tIs2EoS4F2ITpuKBjRBbyRjZgO860nWFPo1m4JImGA== + dependencies: + "@0no-co/graphql.web" "^1.0.5" + wonka "^6.3.2" + +"@urql/exchange-retry@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@urql/exchange-retry/-/exchange-retry-1.3.0.tgz#c46abdf74aee612645ff47562e6c6868ad1731dd" + integrity sha512-FLt+d81gP4oiHah4hWFDApimc+/xABWMU1AMYsZ1PVB0L0YPtrMCjbOp9WMM7hBzy4gbTDrG24sio0dCfSh/HQ== + dependencies: + "@urql/core" "^5.0.0" + wonka "^6.3.2" + +"@xmldom/xmldom@^0.8.8": + version "0.8.10" + resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" + integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== + +"@xmldom/xmldom@~0.7.7": + version "0.7.13" + resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.13.tgz#ff34942667a4e19a9f4a0996a76814daac364cf3" + integrity sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g== + +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +accepts@^1.3.7, accepts@^1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn@^8.8.2: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@8.11.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ajv@^8.11.0: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +algoliasearch@^4.14.2: + version "4.24.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.24.0.tgz#b953b3e2309ef8f25da9de311b95b994ac918275" + integrity sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g== + dependencies: + "@algolia/cache-browser-local-storage" "4.24.0" + "@algolia/cache-common" "4.24.0" + "@algolia/cache-in-memory" "4.24.0" + "@algolia/client-account" "4.24.0" + "@algolia/client-analytics" "4.24.0" + "@algolia/client-common" "4.24.0" + "@algolia/client-personalization" "4.24.0" + "@algolia/client-search" "4.24.0" + "@algolia/logger-common" "4.24.0" + "@algolia/logger-console" "4.24.0" + "@algolia/recommend" "4.24.0" + "@algolia/requester-browser-xhr" "4.24.0" + "@algolia/requester-common" "4.24.0" + "@algolia/requester-node-http" "4.24.0" + "@algolia/transporter" "4.24.0" + +anser@^1.4.9: + version "1.4.10" + resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.10.tgz#befa3eddf282684bd03b63dcda3927aef8c2e35b" + integrity sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.0, ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@^3.0.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +application-config-path@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/application-config-path/-/application-config-path-0.1.1.tgz#8b5ac64ff6afdd9bd70ce69f6f64b6998f5f756e" + integrity sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw== + +arch@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== + +archive-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70" + integrity sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA== + dependencies: + file-type "^4.2.0" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +asap@~2.0.3, asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +ast-types@0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.15.2.tgz#39ae4809393c4b16df751ee563411423e85fb49d" + integrity sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg== + dependencies: + tslib "^2.0.1" + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +babel-core@^7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-polyfill-corejs2@^0.4.10: + version "0.4.12" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz#ca55bbec8ab0edeeef3d7b8ffd75322e210879a9" + integrity sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.6.3" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.10.6: + version "0.10.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7" + integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.2" + core-js-compat "^3.38.0" + +babel-plugin-polyfill-regenerator@^0.6.1: + version "0.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz#abeb1f3f1c762eace37587f42548b08b57789bc8" + integrity sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.3" + +babel-plugin-react-native-web@~0.19.13: + version "0.19.13" + resolved "https://registry.yarnpkg.com/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz#bf919bd6f18c4689dd1a528a82bda507363b953d" + integrity sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ== + +babel-plugin-syntax-hermes-parser@^0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.23.1.tgz#470e9d1d30ad670d4c8a37138e22ae39c843d1ff" + integrity sha512-uNLD0tk2tLUjGFdmCk+u/3FEw2o+BAwW4g+z2QVlxJrzZYOOPADroEcNtTPt5lNiScctaUmnsTkVEnOwZUOLhA== + dependencies: + hermes-parser "0.23.1" + +babel-plugin-syntax-hermes-parser@^0.25.1: + version "0.25.1" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.25.1.tgz#58b539df973427fcfbb5176a3aec7e5dee793cb0" + integrity sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ== + dependencies: + hermes-parser "0.25.1" + +babel-plugin-transform-flow-enums@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz#d1d0cc9bdc799c850ca110d0ddc9f21b9ec3ef25" + integrity sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ== + dependencies: + "@babel/plugin-syntax-flow" "^7.12.1" + +babel-preset-current-node-syntax@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz#9a929eafece419612ef4ae4f60b1862ebad8ef30" + integrity sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + +babel-preset-expo@~12.0.3: + version "12.0.3" + resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-12.0.3.tgz#2ad62fe007517704841788cfea38b333e307663f" + integrity sha512-1695e8y3U/HjifKx33vcNnFMSUSXwPWwhFxRlL6NRx2TENN6gySH82gPOWgxcra6gi+EJgXx52xG3PcqTjwW6w== + dependencies: + "@babel/plugin-proposal-decorators" "^7.12.9" + "@babel/plugin-transform-export-namespace-from" "^7.22.11" + "@babel/plugin-transform-object-rest-spread" "^7.12.13" + "@babel/plugin-transform-parameters" "^7.22.15" + "@babel/preset-react" "^7.22.15" + "@babel/preset-typescript" "^7.23.0" + "@react-native/babel-preset" "0.76.3" + babel-plugin-react-native-web "~0.19.13" + react-refresh "^0.14.2" + +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.2.3, base64-js@^1.3.1, base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +better-opn@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-3.0.2.tgz#f96f35deaaf8f34144a4102651babcf00d1d8817" + integrity sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ== + dependencies: + open "^8.0.4" + +big-integer@1.6.x: + version "1.6.52" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" + integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== + +"bignumber.js@^8 || ^9": + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== + +bin-build@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-3.0.0.tgz#c5780a25a8a9f966d8244217e6c1f5082a143861" + integrity sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA== + dependencies: + decompress "^4.0.0" + download "^6.2.2" + execa "^0.7.0" + p-map-series "^1.0.0" + tempfile "^2.0.0" + +bin-check@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-4.1.0.tgz#fc495970bdc88bb1d5a35fc17e65c4a149fc4a49" + integrity sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA== + dependencies: + execa "^0.7.0" + executable "^4.1.0" + +bin-version-check@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-4.0.0.tgz#7d819c62496991f80d893e6e02a3032361608f71" + integrity sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ== + dependencies: + bin-version "^3.0.0" + semver "^5.6.0" + semver-truncate "^1.1.2" + +bin-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-3.1.0.tgz#5b09eb280752b1bd28f0c9db3f96f2f43b6c0839" + integrity sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ== + dependencies: + execa "^1.0.0" + find-versions "^3.0.0" + +bin-wrapper@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-4.1.0.tgz#99348f2cf85031e3ef7efce7e5300aeaae960605" + integrity sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q== + dependencies: + bin-check "^4.1.0" + bin-version-check "^4.0.0" + download "^7.1.0" + import-lazy "^3.1.0" + os-filter-obj "^2.0.0" + pify "^4.0.1" + +bl@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +bplist-creator@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.0.7.tgz#37df1536092824b87c42f957b01344117372ae45" + integrity sha512-xp/tcaV3T5PCiaY04mXga7o/TE+t95gqeLmADeBI1CvZtdWTbgBt3uLpvh4UWtenKeBhCV6oVxGk38yZr2uYEA== + dependencies: + stream-buffers "~2.2.0" + +bplist-creator@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.1.0.tgz#018a2d1b587f769e379ef5519103730f8963ba1e" + integrity sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg== + dependencies: + stream-buffers "2.2.x" + +bplist-parser@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.3.1.tgz#e1c90b2ca2a9f9474cc72f6862bbf3fee8341fd1" + integrity sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA== + dependencies: + big-integer "1.6.x" + +bplist-parser@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.3.2.tgz#3ac79d67ec52c4c107893e0237eb787cbacbced7" + integrity sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ== + dependencies: + big-integer "1.6.x" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.24.0, browserslist@^4.24.2: + version "4.24.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580" + integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== + dependencies: + caniuse-lite "^1.0.30001669" + electron-to-chromium "^1.5.41" + node-releases "^2.0.18" + update-browserslist-db "^1.1.1" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.1.0, buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.2.1, buffer@^5.4.3: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacache@^18.0.2: + version "18.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-18.0.4.tgz#4601d7578dadb59c66044e157d02a3314682d6a5" + integrity sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^10.0.1" + minipass "^7.0.3" + minipass-collect "^2.0.1" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + +cacheable-request@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" + integrity sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ== + dependencies: + clone-response "1.0.2" + get-stream "3.0.0" + http-cache-semantics "3.8.1" + keyv "3.0.0" + lowercase-keys "1.0.0" + normalize-url "2.0.1" + responselike "1.0.2" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== + +callsites@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-4.2.0.tgz#98761d5be3ce092e4b9c92f7fb8c8eb9b83cadc8" + integrity sha512-kfzR4zzQtAE9PC7CzZsjl3aBNbXWuXiSeOCdLcPpBfGW8YuCqQHcRPFDbr/BPVmd3EEPVpuFzLyuT/cUhPr4OQ== + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ== + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001669: + version "1.0.30001686" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001686.tgz#0e04b8d90de8753188e93c9989d56cb19d902670" + integrity sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA== + +caw@^2.0.0, caw@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95" + integrity sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA== + dependencies: + get-proxy "^2.0.0" + isurl "^1.0.0-alpha5" + tunnel-agent "^0.6.0" + url-to-options "^1.0.1" + +chalk@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +change-file-extension@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/change-file-extension/-/change-file-extension-0.1.1.tgz#46a342c4f327cdc0578ac7fc8412c364561da677" + integrity sha512-lB0j9teu8JtDPDHRfU8pNH33w4wMu5bOaKoT4PxH+AKugBrIfpiJMTTKIm0TErNeJPkeQEgvH31YpccTwOKPRg== + +charenc@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-launcher@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/chrome-launcher/-/chrome-launcher-0.15.2.tgz#4e6404e32200095fdce7f6a1e1004f9bd36fa5da" + integrity sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + +chromium-edge-launcher@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz#0c378f28c99aefc360705fa155de0113997f62fc" + integrity sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg== + dependencies: + "@types/node" "*" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + mkdirp "^1.0.4" + rimraf "^3.0.2" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.2.0, ci-info@^3.3.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== + dependencies: + restore-cursor "^2.0.0" + +cli-spinners@^2.0.0: + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone-response@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q== + dependencies: + mimic-response "^1.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.4: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@^12.0.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== + +commander@^2.20.0, commander@^2.8.1: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +component-type@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/component-type/-/component-type-1.2.2.tgz#4458ecc0c1871efc6288bfaff0cbdab08141d079" + integrity sha512-99VUHREHiN5cLeHm3YLq312p6v+HUEcwtLCAtelvUDI6+SH5g5Cr85oNR2S1o6ywzL0ykMbuwLzM2ANocjEOIA== + +compressible@~2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.5" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.5.tgz#fdd256c0a642e39e314c478f6c2cd654edd74c93" + integrity sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q== + dependencies: + bytes "3.1.2" + compressible "~2.0.18" + debug "2.6.9" + negotiator "~0.6.4" + on-headers "~1.0.2" + safe-buffer "5.2.1" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +config-chain@^1.1.11: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +connect@^3.6.5, connect@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +console-stream@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44" + integrity sha512-QC/8l9e6ofi6nqZ5PawlDgzmMw3OxIXtvolBzap/F4UDBJlDaZRSNbL/lb41C29FcbSJncBFlJFj2WJoNyZRfQ== + +content-disposition@^0.5.2: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +convert-hrtime@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/convert-hrtime/-/convert-hrtime-5.0.0.tgz#f2131236d4598b95de856926a67100a0a97e9fa3" + integrity sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +core-js-compat@^3.38.0: + version "3.39.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.39.0.tgz#b12dccb495f2601dc860bdbe7b4e3ffa8ba63f61" + integrity sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw== + dependencies: + browserslist "^4.24.2" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^5.0.5: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.6.tgz#30d0efa0712ddb7eb5a76e1e8721bffafa6b5d57" + integrity sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0, cross-spawn@^7.0.3: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypt@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +css-in-js-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz#640ae6a33646d401fc720c54fc61c42cd76ae2bb" + integrity sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A== + dependencies: + hyphenate-style-name "^1.0.3" + +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-tree@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + dependencies: + mdn-data "2.0.28" + source-map-js "^1.0.1" + +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + dependencies: + css-tree "~2.2.0" + +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng== + dependencies: + array-find-index "^1.0.1" + +d@1, d@^1.0.1, d@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de" + integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== + dependencies: + es5-ext "^0.10.64" + type "^2.7.2" + +debug@2.6.9, debug@^2.2.0, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decode-uri-component@^0.2.0, decode-uri-component@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== + dependencies: + mimic-response "^1.0.0" + +decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" + integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== + dependencies: + file-type "^5.2.0" + is-stream "^1.1.0" + tar-stream "^1.5.2" + +decompress-tarbz2@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" + integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== + dependencies: + decompress-tar "^4.1.0" + file-type "^6.1.0" + is-stream "^1.1.0" + seek-bzip "^1.0.5" + unbzip2-stream "^1.0.9" + +decompress-targz@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" + integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== + dependencies: + decompress-tar "^4.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" + +decompress-unzip@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" + integrity sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw== + dependencies: + file-type "^3.8.0" + get-stream "^2.2.0" + pify "^2.3.0" + yauzl "^2.4.2" + +decompress@^4.0.0, decompress@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118" + integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== + dependencies: + decompress-tar "^4.0.0" + decompress-tarbz2 "^4.0.0" + decompress-targz "^4.0.0" + decompress-unzip "^4.0.1" + graceful-fs "^4.1.10" + make-dir "^1.0.0" + pify "^2.3.0" + strip-dirs "^2.0.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deepmerge@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.3.0.tgz#d3c47fd6f3a93d517b14426b0628a17b0125f5f7" + integrity sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA== + +deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +del@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" + integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" + integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +deprecated-react-native-prop-types@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-3.0.2.tgz#e724a9837e6a7ccb778753c06ae4f79065873493" + integrity sha512-JoZY5iNM+oJlN2Ldpq0KSi0h3Nig4hlNJj5nWzWp8eL3uikMCvHwjSGPitwkEw0arL5JFra5nuGJQpXRbEjApg== + dependencies: + "@react-native/normalize-color" "^2.1.0" + invariant "^2.2.4" + prop-types "^15.8.1" + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + +dot-prop@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-8.0.2.tgz#afda6866610684dd155a96538f8efcdf78a27f18" + integrity sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ== + dependencies: + type-fest "^3.8.0" + +dotenv-expand@~11.0.6: + version "11.0.7" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-11.0.7.tgz#af695aea007d6fdc84c86cd8d0ad7beb40a0bd08" + integrity sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA== + dependencies: + dotenv "^16.4.5" + +dotenv@^16.4.5, dotenv@~16.4.5: + version "16.4.7" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" + integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== + +download@^6.2.2: + version "6.2.5" + resolved "https://registry.yarnpkg.com/download/-/download-6.2.5.tgz#acd6a542e4cd0bb42ca70cfc98c9e43b07039714" + integrity sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA== + dependencies: + caw "^2.0.0" + content-disposition "^0.5.2" + decompress "^4.0.0" + ext-name "^5.0.0" + file-type "5.2.0" + filenamify "^2.0.0" + get-stream "^3.0.0" + got "^7.0.0" + make-dir "^1.0.0" + p-event "^1.0.0" + pify "^3.0.0" + +download@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/download/-/download-7.1.0.tgz#9059aa9d70b503ee76a132897be6dec8e5587233" + integrity sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ== + dependencies: + archive-type "^4.0.0" + caw "^2.0.1" + content-disposition "^0.5.2" + decompress "^4.2.0" + ext-name "^5.0.0" + file-type "^8.1.0" + filenamify "^2.0.0" + get-stream "^3.0.0" + got "^8.3.1" + make-dir "^1.2.0" + p-event "^2.1.0" + pify "^3.0.0" + +duplexer3@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.5.41: + version "1.5.70" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.70.tgz#8be2f92e54a3d069c0eefcf766a48bf0f78d93e0" + integrity sha512-P6FPqAWIZrC3sHDAwBitJBs7N7IF58m39XVny7DFseQXK2eiMn7nNQizFf63mWDDUnFvaqsM8FI0+ZZfLkdUGA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +entities@^4.2.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +env-editor@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/env-editor/-/env-editor-0.4.2.tgz#4e76568d0bd8f5c2b6d314a9412c8fe9aa3ae861" + integrity sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA== + +environment@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/environment/-/environment-1.1.0.tgz#8e86c66b180f363c7ab311787e0259665f45a9f1" + integrity sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q== + +eol@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" + integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg== + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + +es5-ext@^0.10.35, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14: + version "0.10.64" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" + integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + esniff "^2.0.1" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.0, es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.4" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c" + integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== + dependencies: + d "^1.0.2" + ext "^1.7.0" + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +esniff@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" + integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== + dependencies: + d "^1.0.1" + es5-ext "^0.10.62" + event-emitter "^0.3.5" + type "^2.7.2" + +esprima@^4.0.0, esprima@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + +event-target-shim@^5.0.0, event-target-shim@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +exec-async@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/exec-async/-/exec-async-2.2.0.tgz#c7c5ad2eef3478d38390c6dd3acfe8af0efc8301" + integrity sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw== + +exec-buffer@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/exec-buffer/-/exec-buffer-3.2.0.tgz#b1686dbd904c7cf982e652c1f5a79b1e5573082b" + integrity sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA== + dependencies: + execa "^0.7.0" + p-finally "^1.0.0" + pify "^3.0.0" + rimraf "^2.5.4" + tempfile "^2.0.0" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw== + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^5.0.0, execa@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +executable@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" + integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== + dependencies: + pify "^2.2.0" + +expo-asset@~11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/expo-asset/-/expo-asset-11.0.1.tgz#8608f5ea4639698553725b6690dd621f6f70f206" + integrity sha512-WatvD7JVC89EsllXFYcS/rji3ajVzE2B/USo0TqedsETixwyVCQfrrvCdCPQyuKghrxVNEj8bQ/Qbea/RZLYjg== + dependencies: + "@expo/image-utils" "^0.6.0" + expo-constants "~17.0.0" + invariant "^2.2.4" + md5-file "^3.2.3" + +expo-av@~15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/expo-av/-/expo-av-15.0.1.tgz#c337f831c2e29174de7117c37d2f92c1275bb4c4" + integrity sha512-2d4j7RTH9Y5nI1FoC0woRjqnj5G8sF0al2iW6kG21PPs/CgS4QARbHxMrPxKpUXrC6iu+6EMj2h5H6T0nqteFg== + +expo-blur@~14.0.1: + version "14.0.1" + resolved "https://registry.yarnpkg.com/expo-blur/-/expo-blur-14.0.1.tgz#4bdbec43b5015891990e78d31d8ff2f1f5d27464" + integrity sha512-3Q6jFBLbY8n2vwk28ycUC+eIlVhnlqwkXUKk/Lfaj+SGV3AZMQyrixe7OYwJdUfwqETBrnYYMB6uNrJzOSbG+g== + +expo-build-properties@~0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/expo-build-properties/-/expo-build-properties-0.13.1.tgz#e40645b34debed5eab53a273c89543aaef58bc57" + integrity sha512-7tDlAM0PPkXC0B00C6/FG19sMzwxZNyiDfn22AWVbBxWxZE1/3RqxPgT3MlPVNfvy+wJw7jt/qbAb0S06wFYVg== + dependencies: + ajv "^8.11.0" + semver "^7.6.0" + +expo-constants@~17.0.0, expo-constants@~17.0.3: + version "17.0.3" + resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-17.0.3.tgz#a05b38e0417d59759ece1642b4d483889e04dbda" + integrity sha512-lnbcX2sAu8SucHXEXxSkhiEpqH+jGrf+TF+MO6sHWIESjwOUVVYlT8qYdjR9xbxWmqFtrI4KV44FkeJf2DaFjQ== + dependencies: + "@expo/config" "~10.0.4" + "@expo/env" "~0.4.0" + +expo-dev-client@~5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-5.0.5.tgz#2ecae855c6365abd4c48d436b1486c7559709622" + integrity sha512-LfrJ/a1UVqU1LxQ2oaduKWx2F0/1wDsiUv4lic4a2ug9wazGSR+bZ88fRlnAbhdMBfuymUKBMyUA+X3WDqf/bw== + dependencies: + expo-dev-launcher "5.0.18" + expo-dev-menu "6.0.13" + expo-dev-menu-interface "1.9.2" + expo-manifests "~0.15.0" + expo-updates-interface "~1.0.0" + +expo-dev-launcher@5.0.18: + version "5.0.18" + resolved "https://registry.yarnpkg.com/expo-dev-launcher/-/expo-dev-launcher-5.0.18.tgz#62a33efc9d56998bd155be50c69d31e83d19553f" + integrity sha512-rPPTR0KoHHpYl0MOAxc3IUZ/cUge3CFgE3Qmk8ccpQDL/PmhodsPqTcV6fnyKf1xuTa6hT7qI6CHJtSZbx6xNA== + dependencies: + ajv "8.11.0" + expo-dev-menu "6.0.13" + expo-manifests "~0.15.0" + resolve-from "^5.0.0" + +expo-dev-menu-interface@1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/expo-dev-menu-interface/-/expo-dev-menu-interface-1.9.2.tgz#3515d1365df965f1ad56607cddd133a3c764e23d" + integrity sha512-9piGiHZYnNjoO9oQFWlVsndQ1jhTdGCKf81WfCMHbQBamna/zucC1A+jbGpyzE4icXZZ29CpsSd4uVR+tB2Rfw== + +expo-dev-menu@6.0.13: + version "6.0.13" + resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-6.0.13.tgz#1f6d448d0a74812a20ea8699ef52024c6081395c" + integrity sha512-wLzTqGY89boVMNEqoWgIzYc7G6aXEsvsQrEXg9S5jkKfVyRcNvL46ppKkdGQ8AKkLm/wFQ2XkCk7C5izhxIb6g== + dependencies: + expo-dev-menu-interface "1.9.2" + +expo-document-picker@~13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/expo-document-picker/-/expo-document-picker-13.0.1.tgz#f8c70d11cd59d7e57d5065667893c277b1a8869e" + integrity sha512-M3O3SDqubsRbVyY+Xu6V45K0/G1S1IqEdmVAnPkOiUU2eIEFfF5oP4KON4CsvEhO9IIunnpRr/oq9NQxb3SrEA== + +expo-eas-client@~0.13.0: + version "0.13.1" + resolved "https://registry.yarnpkg.com/expo-eas-client/-/expo-eas-client-0.13.1.tgz#ebca627f3f58a54906394eb3f5d22f41a1822618" + integrity sha512-IyeDiM6YSJG0c45kbuEo0qt76z0KTEZtisEFEtle+b+vfn9I3N+r3jbPscaI4yS3P6gpuoDyHv81YDVC6Dmkhw== + +expo-file-system@~18.0.4: + version "18.0.4" + resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-18.0.4.tgz#eecf8dc0b3b545e9ac5cd00352665afe2d57732f" + integrity sha512-aAWEDwnu0XHOBYvQ9Q0+QIa+483vYJaC4IDsXyWQ73Rtsg273NZh5kYowY+cAocvoSmA99G6htrLBn11ax2bTQ== + dependencies: + web-streams-polyfill "^3.3.2" + +expo-font@~13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-13.0.1.tgz#3a7eed7a4238a352fc74a425fd8c020c5f122382" + integrity sha512-8JE47B+6cLeKWr5ql8gU6YsPHjhrz1vMrTqYMm72No/8iW8Sb/uL4Oc0dpmbjq3hLLXBY0xPBQOgU7FQ6Y04Vg== + dependencies: + fontfaceobserver "^2.1.0" + +expo-haptics@~14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/expo-haptics/-/expo-haptics-14.0.0.tgz#b3ccea2ed5c7f4c2505e2e8cbfa799091b185303" + integrity sha512-5tYJN+2axYF22BtG1elBQAV1aZPUOCtr9sItClfm4jDoekGiPCxZG/nylcA3DVh2bUHMSll4Y98qjFFFhwZ1Cw== + +expo-image-loader@~5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/expo-image-loader/-/expo-image-loader-5.0.0.tgz#4f58a21ab26e40d6fccc211b664fd9fe21a5dcb8" + integrity sha512-Eg+5FHtyzv3Jjw9dHwu2pWy4xjf8fu3V0Asyy42kO+t/FbvW/vjUixpTjPtgKQLQh+2/9Nk4JjFDV6FwCnF2ZA== + +expo-image-picker@~16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/expo-image-picker/-/expo-image-picker-16.0.3.tgz#8b096777b4455272a3cb0dccfa3cee89b81bb13c" + integrity sha512-c4IOqIQOtx8puWWU4fVsJhuGiAhH6gAIdrVzhimOXSEUHnfxCckRYzvznbd/0cuvaA5y9H0CSYrxpTUc/0WNVw== + dependencies: + expo-image-loader "~5.0.0" + +expo-image@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expo-image/-/expo-image-2.0.3.tgz#0a39a51af7af786226aa5ffc000277ca0e564a52" + integrity sha512-+YnHTQv8jbXaut3FY7TDhNiSiGZ927C329mHvTZWV4Fyj32/Hjhhmk7dqq9I6LrA0nqBBiJjFj3u6VdHvCBnZg== + +expo-insights@~0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/expo-insights/-/expo-insights-0.8.1.tgz#0751bfbc68bdda3c0b24323e5e728693a5e335ea" + integrity sha512-WzasquBCwCUzMLIJrErcfhuxo/Dfllw3q1kdGxmv3ajnfHbXw2O+XgiL+NWLVVI7Jpqpqyia78aYBgAZCEgJ9A== + dependencies: + expo-eas-client "~0.13.0" + +expo-json-utils@~0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/expo-json-utils/-/expo-json-utils-0.14.0.tgz#ad3cbbcb4fb22e4d23bf9fb19b611e36758861d2" + integrity sha512-xjGfK9dL0B1wLnOqNkX0jM9p48Y0I5xEPzHude28LY67UmamUyAACkqhZGaPClyPNfdzczk7Ej6WaRMT3HfXvw== + +expo-keep-awake@~14.0.1: + version "14.0.1" + resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-14.0.1.tgz#77c38feefa95c494aa167e6df5a6eacd17af2358" + integrity sha512-c5mGCAIk2YM+Vsdy90BlEJ4ZX+KG5Au9EkJUIxXWlpnuKmDAJ3N+5nEZ7EUO1ZTheqoSBeAo4jJ8rTWPU+JXdw== + +expo-linear-gradient@~14.0.1: + version "14.0.1" + resolved "https://registry.yarnpkg.com/expo-linear-gradient/-/expo-linear-gradient-14.0.1.tgz#f93c518014b6eb5ee17ed6562db716640ad27f3e" + integrity sha512-apGtUO9AZ52ZWvX9f6K9TamWw8XcUby7jZ0Pcvd5LxUO7pl7tDPx2VlKqpzbhhS4yfCiUwX58wqocwVnE/0ZVg== + +expo-linking@~7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/expo-linking/-/expo-linking-7.0.3.tgz#307851288ec65e1c533bcc70b57dfb6372f9679e" + integrity sha512-YiDacNzeQZd/bdOwGyi+YlawM4GGbcSRkuFCpDGIK7D1KUGqLinBHwJvxUMb9Zert2Ois5IHtmZaZ1et6g229g== + dependencies: + expo-constants "~17.0.0" + invariant "^2.2.4" + +expo-location@~18.0.3: + version "18.0.3" + resolved "https://registry.yarnpkg.com/expo-location/-/expo-location-18.0.3.tgz#ef6eb442bb18f75165caaf344be0c19a45820048" + integrity sha512-QwdPzbWWAqhTjUDMwbcnMnOpkNAZMjw//c345Fxf3BEKMPc9z1Tg4tMFUbnYGFaCrPcNYa2A13u4mtV1ha7wwQ== + +expo-manifests@~0.15.0: + version "0.15.4" + resolved "https://registry.yarnpkg.com/expo-manifests/-/expo-manifests-0.15.4.tgz#43627d00c5ef8163ffd1880e42093d342bc7e80f" + integrity sha512-Ki6+twRbm+HTX3L8larhOdDbSYPG3ojGnZepR/+TGg3JF/5yyscosDVY6c6z8xEGjKIjs1F813yq9yAfiPh8/g== + dependencies: + "@expo/config" "~10.0.4" + expo-json-utils "~0.14.0" + +expo-modules-autolinking@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-2.0.3.tgz#c0de0129bedf1b6f9aa36093e435d00509f27fcd" + integrity sha512-Q/ALJ54eS7Cr7cmbP+unEDTkHFQivQerWWrqZxuXOrSFYGCYU22+/xAZXaJOpZwseOVsP74zSkoRY/wBimVs7w== + dependencies: + "@expo/spawn-async" "^1.7.2" + chalk "^4.1.0" + commander "^7.2.0" + fast-glob "^3.2.5" + find-up "^5.0.0" + fs-extra "^9.1.0" + require-from-string "^2.0.2" + resolve-from "^5.0.0" + +expo-modules-core@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-2.1.1.tgz#970af4cfd70c8aa6fc0096dd0a6578aa003a479f" + integrity sha512-yQzYCLR2mre4BNMXuqkeJ0oSNgmGEMI6BcmIzeNZbC2NFEjiaDpKvlV9bclYCtyVhUEVNbJcEPYMr6c1Y4eR4w== + dependencies: + invariant "^2.2.4" + +expo-speech@~13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/expo-speech/-/expo-speech-13.0.0.tgz#a37d7091bd6d10b1fd446e361891d6559cac33d1" + integrity sha512-LscUm2vnRyW6ej8PP8/5E80ivix8PP3hnagOcb/7TGFyDIFVIXy1zyEjT/1kTkpT0FzN2ha+qxtLzQyQvHQcJA== + +expo-splash-screen@~0.29.16: + version "0.29.16" + resolved "https://registry.yarnpkg.com/expo-splash-screen/-/expo-splash-screen-0.29.16.tgz#80b49af2605213e661a40022d724caa1ea48ccb3" + integrity sha512-1WnExDA23hEJhz+djUthVUWxUvVtDT9sqRrpCgU4srG2OfBN0NryJ+Fbnoc1V2xw2uYc4Ij3ru0nH9a1TNvW9w== + dependencies: + "@expo/prebuild-config" "^8.0.22" + +expo-status-bar@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/expo-status-bar/-/expo-status-bar-2.0.0.tgz#dd99adc2ace12a24c92718cd0f97b93347103393" + integrity sha512-vxxdpvpNDMTEc5uTiIrbTvySKKUsOACmfl8OZuUdjNle05oGqwtq3v5YObwym/njSByjoyuZX8UpXBZnxvarwQ== + +expo-system-ui@~4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/expo-system-ui/-/expo-system-ui-4.0.5.tgz#d43489113a766cacb763be72ed33475b642a9735" + integrity sha512-PQJIFMAMnt3LrWCCHqg82zW+hXytvtJdFiiIYE2UuP0kDvl346tazQupbtJsSxJp1OpxhuNVhpvKoWV72is3bg== + dependencies: + "@react-native/normalize-colors" "0.76.3" + debug "^4.3.2" + +expo-updates-interface@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/expo-updates-interface/-/expo-updates-interface-1.0.0.tgz#b98c66b800d29561c62409556948b2af3d5316e5" + integrity sha512-93oWtvULJOj+Pp+N/lpTcFfuREX1wNeHtp7Lwn8EbzYYmdn37MvZU3TPW2tYYCZuhzmKEXnUblYcruYoDu7IrQ== + +expo@~52.0.17: + version "52.0.17" + resolved "https://registry.yarnpkg.com/expo/-/expo-52.0.17.tgz#8a3edc20dabdb69a47f7b4b92e1bb96284044c14" + integrity sha512-f0WBD2T6p9r/a8v8MqkoWQq7TmbbAgPUg2zZtOp+kBrSCb3obHeNAsPDAUFzh+jEgug2qDVVkauBJa6ACe9AMg== + dependencies: + "@babel/runtime" "^7.20.0" + "@expo/cli" "0.22.3" + "@expo/config" "~10.0.6" + "@expo/config-plugins" "~9.0.12" + "@expo/fingerprint" "0.11.3" + "@expo/metro-config" "0.19.6" + "@expo/vector-icons" "^14.0.0" + babel-preset-expo "~12.0.3" + expo-asset "~11.0.1" + expo-constants "~17.0.3" + expo-file-system "~18.0.4" + expo-font "~13.0.1" + expo-keep-awake "~14.0.1" + expo-modules-autolinking "2.0.3" + expo-modules-core "2.1.1" + fbemitter "^3.0.0" + web-streams-polyfill "^3.3.2" + whatwg-url-without-unicode "8.0.0-3" + +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + +ext-list@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37" + integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA== + dependencies: + mime-db "^1.28.0" + +ext-name@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6" + integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ== + dependencies: + ext-list "^2.0.0" + sort-keys-length "^1.0.0" + +ext@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-equals@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-5.0.1.tgz#a4eefe3c5d1c0d021aeed0bc10ba5e0c12ee405d" + integrity sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ== + +fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-loops@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/fast-loops/-/fast-loops-1.1.4.tgz#61bc77d518c0af5073a638c6d9d5c7683f069ce2" + integrity sha512-8dbd3XWoKCTms18ize6JmQF1SFnnfj5s0B7rRry22EofgMu7B6LKHVh+XfFqFGsqnbH54xgeO83PzpKI+ODhlg== + +fast-uri@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.3.tgz#892a1c91802d5d7860de728f18608a0573142241" + integrity sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw== + +fast-xml-parser@^4.4.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz#2882b7d01a6825dfdf909638f2de0256351def37" + integrity sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg== + dependencies: + strnum "^1.0.5" + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +faye-websocket@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +fbemitter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3" + integrity sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw== + dependencies: + fbjs "^3.0.0" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^3.0.0, fbjs@^3.0.4: + version "3.0.5" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.5.tgz#aa0edb7d5caa6340011790bd9249dbef8a81128d" + integrity sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg== + dependencies: + cross-fetch "^3.1.5" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^1.0.35" + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + +fetch-retry@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-4.1.1.tgz#fafe0bb22b54f4d0a9c788dff6dd7f8673ca63f3" + integrity sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA== + +figma-squircle@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/figma-squircle/-/figma-squircle-0.2.1.tgz#08002658420076f318d846a558ee21de37ab8b27" + integrity sha512-UePsOSdigugsBvGZJAzrLeYY43fXy6iGQ7rz7bpEPd9jf54WbWM3jmgAF6VU0HANte1+hBiWb0PK6KyXTvXQdw== + +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ== + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +file-type@5.2.0, file-type@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" + integrity sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ== + +file-type@^10.4.0: + version "10.11.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-10.11.0.tgz#2961d09e4675b9fb9a3ee6b69e9cd23f43fd1890" + integrity sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw== + +file-type@^19.0.0: + version "19.6.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-19.6.0.tgz#b43d8870453363891884cf5e79bb3e4464f2efd3" + integrity sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ== + dependencies: + get-stream "^9.0.1" + strtok3 "^9.0.1" + token-types "^6.0.0" + uint8array-extras "^1.3.0" + +file-type@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA== + +file-type@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" + integrity sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ== + +file-type@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" + integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== + +file-type@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-8.1.0.tgz#244f3b7ef641bbe0cca196c7276e4b332399f68c" + integrity sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ== + +filename-reserved-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" + integrity sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ== + +filenamify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-2.1.0.tgz#88faf495fb1b47abfd612300002a16228c677ee9" + integrity sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA== + dependencies: + filename-reserved-regex "^2.0.0" + strip-outer "^1.0.0" + trim-repeated "^1.0.0" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== + +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + 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" + +find-cache-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-versions@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== + dependencies: + semver-regex "^2.0.0" + +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + +firebase@10.13.2, firebase@^9.20.0: + version "9.23.0" + resolved "https://registry.yarnpkg.com/firebase/-/firebase-9.23.0.tgz#71fea60d704bfed8e92162911544fd6564a04d0e" + integrity sha512-/4lUVY0lUvBDIaeY1q6dUYhS8Sd18Qb9CgWkPZICUo9IXpJNCEagfNZXBBFCkMTTN5L5gx2Hjr27y21a9NzUcA== + dependencies: + "@firebase/analytics" "0.10.0" + "@firebase/analytics-compat" "0.2.6" + "@firebase/app" "0.9.13" + "@firebase/app-check" "0.8.0" + "@firebase/app-check-compat" "0.3.7" + "@firebase/app-compat" "0.2.13" + "@firebase/app-types" "0.9.0" + "@firebase/auth" "0.23.2" + "@firebase/auth-compat" "0.4.2" + "@firebase/database" "0.14.4" + "@firebase/database-compat" "0.3.4" + "@firebase/firestore" "3.13.0" + "@firebase/firestore-compat" "0.3.12" + "@firebase/functions" "0.10.0" + "@firebase/functions-compat" "0.3.5" + "@firebase/installations" "0.6.4" + "@firebase/installations-compat" "0.2.4" + "@firebase/messaging" "0.12.4" + "@firebase/messaging-compat" "0.2.4" + "@firebase/performance" "0.6.4" + "@firebase/performance-compat" "0.2.4" + "@firebase/remote-config" "0.4.4" + "@firebase/remote-config-compat" "0.2.4" + "@firebase/storage" "0.11.2" + "@firebase/storage-compat" "0.3.2" + "@firebase/util" "1.9.3" + +flow-enums-runtime@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz#5bb0cd1b0a3e471330f4d109039b7eba5cb3e787" + integrity sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw== + +flow-parser@0.*: + version "0.255.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.255.0.tgz#5531951318db50ad760fdc1f150e09a3972785c0" + integrity sha512-7QHV2m2mIMh6yIMaAPOVbyNEW77IARwO69d4DgvfDCjuORiykdMLf7XBjF7Zeov7Cpe1OXJ8sB6/aaCE3xuRBw== + +fontfaceobserver@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz#5fb392116e75d5024b7ec8e4f2ce92106d1488c8" + integrity sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg== + +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +form-data@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.2.tgz#83ad9ced7c03feaad97e293d6f6091011e1659c8" + integrity sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +freeport-async@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/freeport-async/-/freeport-async-2.0.0.tgz#6adf2ec0c629d11abff92836acd04b399135bab4" + integrity sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +from2@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3" + integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + +fs-extra@^9.0.0, fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@~8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-minipass@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== + dependencies: + minipass "^7.0.3" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function-timeout@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/function-timeout/-/function-timeout-1.0.2.tgz#e5a7b6ffa523756ff20e1231bbe37b5f373aadd5" + integrity sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA== + +fuse.js@3.4.5: + version "3.4.5" + resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.4.5.tgz#8954fb43f9729bd5dbcb8c08f251db552595a7a6" + integrity sha512-s9PGTaQIkT69HaeoTVjwGsLfb8V8ScJLx5XGFcKHg0MqLUH/UZ4EKOtqtXX9k7AFqCGxD1aJmYb8Q5VYDibVRQ== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +geofirex@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/geofirex/-/geofirex-0.1.0.tgz#db6214d31307bc98d15b4addbd64e79cc9f7ec91" + integrity sha512-3I1HJuWYUI4Re85meprZZapcwq4Zc47ZaL8Z16dRT3Z3OT1yRl6l9Zcepz86mEqk2VmejtwBfERXfl0YcbAWJQ== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-port@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== + +get-proxy@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93" + integrity sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw== + dependencies: + npm-conf "^1.1.0" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw== + +get-stream@3.0.0, get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== + +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + integrity sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA== + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-stream@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-9.0.1.tgz#95157d21df8eb90d1647102b63039b1df60ebd27" + integrity sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA== + dependencies: + "@sec-ant/readable-stream" "^0.4.1" + is-stream "^4.0.1" + +getenv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/getenv/-/getenv-1.0.0.tgz#874f2e7544fbca53c7a4738f37de8605c3fcfc31" + integrity sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg== + +gifsicle@^5.0.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/gifsicle/-/gifsicle-5.3.0.tgz#499713c6f1e89ebbc3630da3a74fdb4697913b4e" + integrity sha512-FJTpgdj1Ow/FITB7SVza5HlzXa+/lqEY0tHQazAJbuAdvyJtkH4wIdsR2K414oaTwRXHFLLF+tYbipj+OpYg+Q== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.0" + execa "^5.0.0" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^10.2.2, glob@^10.3.10, glob@^10.4.2: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^7.1.1, glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globby@^11.0.1: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globby@^14.0.1: + version "14.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-14.0.2.tgz#06554a54ccfe9264e5a9ff8eded46aa1e306482f" + integrity sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw== + dependencies: + "@sindresorhus/merge-streams" "^2.1.0" + fast-glob "^3.3.2" + ignore "^5.2.4" + path-type "^5.0.0" + slash "^5.1.0" + unicorn-magic "^0.1.0" + +got@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +got@^8.3.1: + version "8.3.2" + resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" + integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== + dependencies: + "@sindresorhus/is" "^0.7.0" + cacheable-request "^2.1.1" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + into-stream "^3.1.0" + is-retry-allowed "^1.1.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + mimic-response "^1.0.0" + p-cancelable "^0.4.0" + p-timeout "^2.0.1" + pify "^3.0.0" + safe-buffer "^5.1.1" + timed-out "^4.0.1" + url-parse-lax "^3.0.0" + url-to-options "^1.0.1" + +graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +hermes-estree@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.23.1.tgz#d0bac369a030188120ee7024926aabe5a9f84fdb" + integrity sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg== + +hermes-estree@0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.24.0.tgz#487dc1ddc0bae698c2d79f34153ac9bf62d7b3c0" + integrity sha512-LyoXLB7IFzeZW0EvAbGZacbxBN7t6KKSDqFJPo3Ydow7wDlrDjXwsdiAHV6XOdvEN9MEuWXsSIFN4tzpyrXIHw== + +hermes-estree@0.25.1: + version "0.25.1" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.25.1.tgz#6aeec17d1983b4eabf69721f3aa3eb705b17f480" + integrity sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw== + +hermes-parser@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.23.1.tgz#e5de648e664f3b3d84d01b48fc7ab164f4b68205" + integrity sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA== + dependencies: + hermes-estree "0.23.1" + +hermes-parser@0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.24.0.tgz#2ed19d079efc0848eb1f800f0c393a074c4696fb" + integrity sha512-IJooSvvu2qNRe7oo9Rb04sUT4omtZqZqf9uq9WM25Tb6v3usmvA93UqfnnoWs5V0uYjEl9Al6MNU10MCGKLwpg== + dependencies: + hermes-estree "0.24.0" + +hermes-parser@0.25.1: + version "0.25.1" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.25.1.tgz#5be0e487b2090886c62bd8a11724cd766d5f54d1" + integrity sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA== + dependencies: + hermes-estree "0.25.1" + +hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hosted-git-info@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17" + integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== + dependencies: + lru-cache "^10.0.1" + +http-cache-semantics@3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +hyphenate-style-name@^1.0.3: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz#1797bf50369588b47b72ca6d5e65374607cf4436" + integrity sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw== + +idb@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/idb/-/idb-7.0.1.tgz#d2875b3a2f205d854ee307f6d196f246fea590a7" + integrity sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg== + +idb@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" + integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== + +identifier-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/identifier-regex/-/identifier-regex-1.0.0.tgz#b9fc92aecfe3d9f3b427fd5af0d2e663163fcbef" + integrity sha512-Rcy5cjBOM9iTR+Vwy0Llyip9u0cA99T1yiWOhDW/+PDaTQhyski0tMovsipQ/FRNDkudjLWusJ/IMVIlG5WZnQ== + dependencies: + reserved-identifiers "^1.0.0" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +image-size@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.1.1.tgz#ddd67d4dc340e52ac29ce5f546a09f4e29e840ac" + integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== + dependencies: + queue "6.0.2" + +imagemin-gifsicle@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/imagemin-gifsicle/-/imagemin-gifsicle-7.0.0.tgz#1a7ab136a144c4678657ba3b6c412f80805d26b0" + integrity sha512-LaP38xhxAwS3W8PFh4y5iQ6feoTSF+dTAXFRUEYQWYst6Xd+9L/iPk34QGgK/VO/objmIlmq9TStGfVY2IcHIA== + dependencies: + execa "^1.0.0" + gifsicle "^5.0.0" + is-gif "^3.0.0" + +imagemin-jpegtran@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/imagemin-jpegtran/-/imagemin-jpegtran-7.0.0.tgz#7728f84876362d489b9a1656e0cc8e2009406e6f" + integrity sha512-MJoyTCW8YjMJf56NorFE41SR/WkaGA3IYk4JgvMlRwguJEEd3PnP9UxA8Y2UWjquz8d+On3Ds/03ZfiiLS8xTQ== + dependencies: + exec-buffer "^3.0.0" + is-jpg "^2.0.0" + jpegtran-bin "^5.0.0" + +imagemin-optipng@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/imagemin-optipng/-/imagemin-optipng-8.0.0.tgz#b88e5cf6da25cc8479e07cdf38c3ae0479df7ef2" + integrity sha512-CUGfhfwqlPjAC0rm8Fy+R2DJDBGjzy2SkfyT09L8rasnF9jSoHFqJ1xxSZWK6HVPZBMhGPMxCTL70OgTHlLF5A== + dependencies: + exec-buffer "^3.0.0" + is-png "^2.0.0" + optipng-bin "^7.0.0" + +imagemin-svgo@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/imagemin-svgo/-/imagemin-svgo-11.0.1.tgz#e33379cca496c5eae321a911f7a1e31d735be104" + integrity sha512-sUZdlXFXZkPt61nzVXbt7EzYjjevPkNuZmAw0VjEm085PRrK5AHSF+1myF0NKtE+ZhY2Vf6W3CEoRqAgksruWQ== + dependencies: + is-svg "^5.0.1" + svgo "^3.3.2" + +imagemin@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-9.0.0.tgz#1a65aba528a9dcb6521bead8a7ae507bf0ddc59d" + integrity sha512-oFlmioXTIrDCNYiKUVPjzUzm8M/7X74WEO6v8NFjn3ZtxjArdVJiRRdbPpq/OG4BdwaHMUz8ej9Fp4AcaDzMnA== + dependencies: + change-file-extension "^0.1.1" + environment "^1.0.0" + file-type "^19.0.0" + globby "^14.0.1" + junk "^4.0.1" + ow "^2.0.0" + p-pipe "^4.0.0" + slash "^5.1.0" + uint8array-extras "^1.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-lazy@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-3.1.0.tgz#891279202c8a2280fdbd6674dbd8da1a1dfc67cc" + integrity sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ== + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg== + dependencies: + repeating "^2.0.0" + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.4, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inline-style-prefixer@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz#4290ed453ab0e4441583284ad86e41ad88384f44" + integrity sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg== + dependencies: + css-in-js-utils "^3.1.0" + fast-loops "^1.1.3" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +into-stream@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" + integrity sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ== + dependencies: + from2 "^2.1.1" + p-is-promise "^1.1.0" + +invariant@2.2.4, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw== + +ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-buffer@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-core-module@^2.13.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== + dependencies: + hasown "^2.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-gif@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-gif/-/is-gif-3.0.0.tgz#c4be60b26a301d695bb833b20d9b5d66c6cf83b1" + integrity sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw== + dependencies: + file-type "^10.4.0" + +is-glob@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-identifier@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-identifier/-/is-identifier-1.0.1.tgz#76d66e7813e37cc85cc8263f04eaa558d1a5d2dc" + integrity sha512-HQ5v4rEJ7REUV54bCd2l5FaD299SGDEn2UPoVXaTHAyGviLq2menVUD2udi3trQ32uvB6LdAh/0ck2EuizrtpA== + dependencies: + identifier-regex "^1.0.0" + super-regex "^1.0.0" + +is-jpg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-2.0.0.tgz#2e1997fa6e9166eaac0242daae443403e4ef1d97" + integrity sha512-ODlO0ruzhkzD3sdynIainVP5eoOFNN85rxA1+cwwnPe4dKyX0r5+hxNO5XpCrxlHcmb9vkOit9mhRD2JVuimHg== + +is-natural-number@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + integrity sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== + +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-png@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-png/-/is-png-2.0.0.tgz#ee8cbc9e9b050425cedeeb4a6fb74a649b0a4a8d" + integrity sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g== + +is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + +is-stream@^1.0.0, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-stream@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-4.0.1.tgz#375cf891e16d2e4baec250b85926cffc14720d9b" + integrity sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A== + +is-svg@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-5.1.0.tgz#fdeeea1dc28b72f1cb5d36f44dfd8f6ad1e05caa" + integrity sha512-uVg5yifaTxHoefNf5Jcx+i9RZe2OBYd/UStp1umx+EERa4xGRa3LLGXjoEph43qUORC0qkafUgrXZ6zzK89yGA== + dependencies: + fast-xml-parser "^4.4.1" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jest-environment-node@^29.6.3: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.6.3: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-worker@^29.6.3, jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jimp-compact@0.16.1: + version "0.16.1" + resolved "https://registry.yarnpkg.com/jimp-compact/-/jimp-compact-0.16.1.tgz#9582aea06548a2c1e04dd148d7c3ab92075aefa3" + integrity sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww== + +join-component@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/join-component/-/join-component-1.1.0.tgz#b8417b750661a392bee2c2537c68b2a9d4977cd5" + integrity sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ== + +jpegtran-bin@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/jpegtran-bin/-/jpegtran-bin-5.0.2.tgz#5870fd7e68317bd203a1c94572bd06ae7732cac3" + integrity sha512-4FSmgIcr8d5+V6T1+dHbPZjaFH0ogVyP4UVsE+zri7S9YLO4qAT2our4IN3sW3STVgNTbqPermdIgt2XuAJ4EA== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.0" + logalot "^2.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsc-android@^250231.0.0: + version "250231.0.0" + resolved "https://registry.yarnpkg.com/jsc-android/-/jsc-android-250231.0.0.tgz#91720f8df382a108872fa4b3f558f33ba5e95262" + integrity sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw== + +jsc-safe-url@^0.2.2, jsc-safe-url@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz#141c14fbb43791e88d5dc64e85a374575a83477a" + integrity sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q== + +jscodeshift@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.14.0.tgz#7542e6715d6d2e8bde0b4e883f0ccea358b46881" + integrity sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA== + dependencies: + "@babel/core" "^7.13.16" + "@babel/parser" "^7.13.16" + "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8" + "@babel/plugin-proposal-optional-chaining" "^7.13.12" + "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/preset-flow" "^7.13.13" + "@babel/preset-typescript" "^7.13.0" + "@babel/register" "^7.13.16" + babel-core "^7.0.0-bridge.0" + chalk "^4.1.2" + flow-parser "0.*" + graceful-fs "^4.2.4" + micromatch "^4.0.4" + neo-async "^2.5.0" + node-dir "^0.1.17" + recast "^0.21.0" + temp "^0.8.4" + write-file-atomic "^2.3.0" + +jsesc@^3.0.2, jsesc@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +junk@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/junk/-/junk-4.0.1.tgz#7ee31f876388c05177fe36529ee714b07b50fbed" + integrity sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ== + +keyv@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== + dependencies: + json-buffer "3.0.0" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +lighthouse-logger@^1.0.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz#aef90f9e97cd81db367c7634292ee22079280aaa" + integrity sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g== + dependencies: + debug "^2.6.9" + marky "^1.2.2" + +lightningcss-darwin-arm64@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.27.0.tgz#565bd610533941cba648a70e105987578d82f996" + integrity sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ== + +lightningcss-darwin-x64@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.27.0.tgz#c906a267237b1c7fe08bff6c5ac032c099bc9482" + integrity sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg== + +lightningcss-freebsd-x64@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.27.0.tgz#a7c3c4d6ee18dffeb8fa69f14f8f9267f7dc0c34" + integrity sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA== + +lightningcss-linux-arm-gnueabihf@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.27.0.tgz#c7c16432a571ec877bf734fe500e4a43d48c2814" + integrity sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA== + +lightningcss-linux-arm64-gnu@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.27.0.tgz#cfd9e18df1cd65131da286ddacfa3aee6862a752" + integrity sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A== + +lightningcss-linux-arm64-musl@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.27.0.tgz#6682ff6b9165acef9a6796bd9127a8e1247bb0ed" + integrity sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg== + +lightningcss-linux-x64-gnu@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.27.0.tgz#714221212ad184ddfe974bbb7dbe9300dfde4bc0" + integrity sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A== + +lightningcss-linux-x64-musl@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.27.0.tgz#247958daf622a030a6dc2285afa16b7184bdf21e" + integrity sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA== + +lightningcss-win32-arm64-msvc@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.27.0.tgz#64cfe473c264ef5dc275a4d57a516d77fcac6bc9" + integrity sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ== + +lightningcss-win32-x64-msvc@1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.27.0.tgz#237d0dc87d9cdc9cf82536bcbc07426fa9f3f422" + integrity sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw== + +lightningcss@~1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.27.0.tgz#d4608e63044343836dd9769f6c8b5d607867649a" + integrity sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ== + 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" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +linkify-it@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec" + integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw== + dependencies: + uc.micro "^1.0.1" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.debounce@4.0.8, lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== + +lodash.toarray@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" + integrity sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw== + +lodash@^4.17.15, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +logalot@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552" + integrity sha512-Ah4CgdSRfeCJagxQhcVNMi9BfGYyEKLa6d7OA6xSbld/Hg3Cf2QiOa1mDpmG7Ve8LOH6DN3mdttzjQAvWTyVkw== + dependencies: + figures "^1.3.5" + squeak "^1.0.0" + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +long@^5.0.0: + version "5.2.3" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + +longest@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + integrity sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ== + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lowercase-keys@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + integrity sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A== + +lowercase-keys@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lpad-align@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/lpad-align/-/lpad-align-1.1.2.tgz#21f600ac1c3095c3c6e497ee67271ee08481fe9e" + integrity sha512-MMIcFmmR9zlGZtBcFOows6c2COMekHCIFJz3ew/rRpKZ1wR4mXDPzvcVqLarux8M33X4TPSq2Jdw8WJj0q0KbQ== + dependencies: + get-stdin "^4.0.1" + indent-string "^2.1.0" + longest "^1.0.0" + meow "^3.3.0" + +lru-cache@^10.0.1, lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +make-dir@^1.0.0, make-dir@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== + +marky@^1.2.2: + version "1.2.5" + resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.5.tgz#55796b688cbd72390d2d399eaaf1832c9413e3c0" + integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== + +md5-file@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-3.2.3.tgz#f9bceb941eca2214a4c0727f5e700314e770f06f" + integrity sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw== + dependencies: + buffer-alloc "^1.1.0" + +md5@^2.2.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" + integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== + dependencies: + charenc "0.0.2" + crypt "0.0.2" + is-buffer "~1.1.6" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== + +memoize-one@^5.0.0, memoize-one@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" + integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== + +memoize-one@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045" + integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw== + +meow@^3.3.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA== + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +metro-babel-transformer@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.81.0.tgz#cf468eafea52e4d8a77844eb7257f8a76e9d9d94" + integrity sha512-Dc0QWK4wZIeHnyZ3sevWGTnnSkIDDn/SWyfrn99zbKbDOCoCYy71PAn9uCRrP/hduKLJQOy+tebd63Rr9D8tXg== + dependencies: + "@babel/core" "^7.25.2" + flow-enums-runtime "^0.0.6" + hermes-parser "0.24.0" + nullthrows "^1.1.1" + +metro-cache-key@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.81.0.tgz#5db34fa1a323a2310205bda7abd0df9614e36f45" + integrity sha512-qX/IwtknP9bQZL78OK9xeSvLM/xlGfrs6SlUGgHvrxtmGTRSsxcyqxR+c+7ch1xr05n62Gin/O44QKg5V70rNQ== + dependencies: + flow-enums-runtime "^0.0.6" + +metro-cache@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.81.0.tgz#90470d10d190ad708f04c6e337eec2c7cddb3db0" + integrity sha512-DyuqySicHXkHUDZFVJmh0ygxBSx6pCKUrTcSgb884oiscV/ROt1Vhye+x+OIHcsodyA10gzZtrVtxIFV4l9I4g== + dependencies: + exponential-backoff "^3.1.1" + flow-enums-runtime "^0.0.6" + metro-core "0.81.0" + +metro-config@0.81.0, metro-config@^0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.81.0.tgz#8f8074033cb7e9ddb5b0459642adf6880bc9fbc1" + integrity sha512-6CinEaBe3WLpRlKlYXXu8r1UblJhbwD6Gtnoib5U8j6Pjp7XxMG9h/DGMeNp9aGLDu1OieUqiXpFo7O0/rR5Kg== + dependencies: + connect "^3.6.5" + cosmiconfig "^5.0.5" + flow-enums-runtime "^0.0.6" + jest-validate "^29.6.3" + metro "0.81.0" + metro-cache "0.81.0" + metro-core "0.81.0" + metro-runtime "0.81.0" + +metro-core@0.81.0, metro-core@^0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.81.0.tgz#d0b634f9cf97849b7730c59457ab7a439811d4c8" + integrity sha512-CVkM5YCOAFkNMvJai6KzA0RpztzfEKRX62/PFMOJ9J7K0uq/UkOFLxcgpcncMIrfy0PbfEj811b69tjULUQe1Q== + dependencies: + flow-enums-runtime "^0.0.6" + lodash.throttle "^4.1.1" + metro-resolver "0.81.0" + +metro-file-map@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.81.0.tgz#af0ccf4f8db4fd8429f78f231faa49dde2c402c3" + integrity sha512-zMDI5uYhQCyxbye/AuFx/pAbsz9K+vKL7h1ShUXdN2fz4VUPiyQYRsRqOoVG1DsiCgzd5B6LW0YW77NFpjDQeg== + dependencies: + anymatch "^3.0.3" + debug "^2.2.0" + fb-watchman "^2.0.0" + flow-enums-runtime "^0.0.6" + graceful-fs "^4.2.4" + invariant "^2.2.4" + jest-worker "^29.6.3" + micromatch "^4.0.4" + node-abort-controller "^3.1.1" + nullthrows "^1.1.1" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +metro-minify-terser@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.81.0.tgz#8b0abe977d63a99b99fa94d53678ef3170d5b659" + integrity sha512-U2ramh3W822ZR1nfXgIk+emxsf5eZSg10GbQrT0ZizImK8IZ5BmJY+BHRIkQgHzWFpExOVxC7kWbGL1bZALswA== + dependencies: + flow-enums-runtime "^0.0.6" + terser "^5.15.0" + +metro-resolver@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.81.0.tgz#141f4837e1e0c5a1810ea02f2d9be3c9f6cf3766" + integrity sha512-Uu2Q+buHhm571cEwpPek8egMbdSTqmwT/5U7ZVNpK6Z2ElQBBCxd7HmFAslKXa7wgpTO2FAn6MqGeERbAtVDUA== + dependencies: + flow-enums-runtime "^0.0.6" + +metro-runtime@0.81.0, metro-runtime@^0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.81.0.tgz#63af9b3fec15d1f307d89ef4881f5ba2c592291e" + integrity sha512-6oYB5HOt37RuGz2eV4A6yhcl+PUTwJYLDlY9vhT+aVjbUWI6MdBCf69vc4f5K5Vpt+yOkjy+2LDwLS0ykWFwYw== + dependencies: + "@babel/runtime" "^7.25.0" + flow-enums-runtime "^0.0.6" + +metro-source-map@0.81.0, metro-source-map@^0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.81.0.tgz#ca83964124bb227d5f0bdb1ee304dbfe635f869e" + integrity sha512-TzsVxhH83dyxg4A4+L1nzNO12I7ps5IHLjKGZH3Hrf549eiZivkdjYiq/S5lOB+p2HiQ+Ykcwtmcja95LIC62g== + dependencies: + "@babel/traverse" "^7.25.3" + "@babel/traverse--for-generate-function-map" "npm:@babel/traverse@^7.25.3" + "@babel/types" "^7.25.2" + 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.6" + vlq "^1.0.0" + +metro-symbolicate@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.81.0.tgz#b7b1eae8bfd6ad2a922fa2bcb9f2144e464adafb" + integrity sha512-C/1rWbNTPYp6yzID8IPuQPpVGzJ2rbWYBATxlvQ9dfK5lVNoxcwz77hjcY8ISLsRRR15hyd/zbjCNKPKeNgE1Q== + 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.6" + through2 "^2.0.1" + vlq "^1.0.0" + +metro-transform-plugins@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.81.0.tgz#614c0e50593df545487b3f3383fed810c608fb32" + integrity sha512-uErLAPBvttGCrmGSCa0dNHlOTk3uJFVEVWa5WDg6tQ79PRmuYRwzUgLhVzn/9/kyr75eUX3QWXN79Jvu4txt6Q== + 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" + +metro-transform-worker@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.81.0.tgz#43e63c95014f36786f0e1a132c778c6392950de7" + integrity sha512-HrQ0twiruhKy0yA+9nK5bIe3WQXZcC66PXTvRIos61/EASLAP2DzEmW7IxN/MGsfZegN2UzqL2CG38+mOB45vg== + 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.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" + +metro@0.81.0, metro@^0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.81.0.tgz#cffe9b7d597728dee8b57903ca155417b7c13a4f" + integrity sha512-kzdzmpL0gKhEthZ9aOV7sTqvg6NuTxDV8SIm9pf9sO8VVEbKrQk5DNcwupOUjgPPFAuKUc2NkT0suyT62hm2xg== + 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.7" + chalk "^4.0.0" + ci-info "^2.0.0" + connect "^3.6.5" + debug "^2.2.0" + denodeify "^1.2.1" + error-stack-parser "^2.0.6" + flow-enums-runtime "^0.0.6" + graceful-fs "^4.2.4" + hermes-parser "0.24.0" + image-size "^1.0.2" + invariant "^2.2.4" + jest-worker "^29.6.3" + jsc-safe-url "^0.2.2" + 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.27" + nullthrows "^1.1.1" + serialize-error "^2.1.0" + source-map "^0.5.6" + strip-ansi "^6.0.0" + throat "^5.0.0" + ws "^7.5.10" + yargs "^17.6.2" + +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +"mime-db@>= 1.43.0 < 2", mime-db@^1.28.0: + version "1.53.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.53.0.tgz#3cb63cd820fc29896d9d4e8c32ab4fcd74ccb447" + integrity sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass-collect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" + integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== + dependencies: + minipass "^7.0.3" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3, minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +modal-react-native-web@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/modal-react-native-web/-/modal-react-native-web-0.2.0.tgz#5daaa76213218fd25df739a267b11aed37e8c0c2" + integrity sha512-sC0/jL3ZL4bGtv1VS43TnrH7/FHUqgb7IU3VYWNDzuR223fYlpG5Gc974GsTP172Vi+lnnBL/G70xONmaggxeQ== + dependencies: + warning "^4.0.1" + +moment-range@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/moment-range/-/moment-range-4.0.2.tgz#f7c3863df2a1ed7fd1822ba5a7bcf53a78701be9" + integrity sha512-n8sceWwSTjmz++nFHzeNEUsYtDqjgXgcOBzsHi+BoXQU2FW+eU92LUaK8gqOiSu5PG57Q9sYj1Fz4LRDj4FtKA== + dependencies: + es6-symbol "^3.1.0" + +moment@^2.29.4: + version "2.30.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" + integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.3, ms@^2.1.1, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.1.23, nanoid@^3.3.1, nanoid@^3.3.7: + version "3.3.8" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" + integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +negotiator@~0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" + integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== + +neo-async@^2.5.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +nested-error-stacks@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz#d2cc9fc5235ddb371fc44d506234339c8e4b0a4b" + integrity sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A== + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-abort-controller@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" + integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== + +node-dir@^0.1.17: + version "0.1.17" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" + integrity sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg== + dependencies: + minimatch "^3.0.2" + +node-emoji@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" + integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== + dependencies: + lodash.toarray "^4.4.0" + +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^2.2.0, node-fetch@^2.6.1, node-fetch@^2.6.12: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1, node-forge@^1.2.1, node-forge@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + +npm-conf@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" + integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== + dependencies: + config-chain "^1.1.11" + pify "^3.0.0" + +npm-package-arg@^11.0.0: + version "11.0.3" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.3.tgz#dae0c21199a99feca39ee4bfb074df3adac87e2d" + integrity sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw== + dependencies: + hosted-git-info "^7.0.0" + proc-log "^4.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +numbro@^2.3.6: + version "2.5.0" + resolved "https://registry.yarnpkg.com/numbro/-/numbro-2.5.0.tgz#a16c6e65a692b96c1629a392be9a50984b194e73" + integrity sha512-xDcctDimhzko/e+y+Q2/8i3qNC9Svw1QgOkSkQoO0kIPI473tR9QRbo2KP88Ty9p8WbPy+3OpTaAIzehtuHq+A== + dependencies: + bignumber.js "^8 || ^9" + +ob1@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.81.0.tgz#dc3154cca7aa9c2eb58f5ac63e9ee23ff4c6f520" + integrity sha512-6Cvrkxt1tqaRdWqTAMcVYEiO5i1xcF9y7t06nFdjFqkfPsEloCf8WwhXdwBpNUkVYSQlSGS7cDgVQR86miBfBQ== + dependencies: + flow-enums-runtime "^0.0.6" + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.3, open@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +open@^8.0.4: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optipng-bin@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/optipng-bin/-/optipng-bin-7.0.1.tgz#beb8e55a52f8a26f885ee57ab44fcf62397d6972" + integrity sha512-W99mpdW7Nt2PpFiaO+74pkht7KEqkXkeRomdWXfEz3SALZ6hns81y/pm1dsGZ6ItUIfchiNIP6ORDr1zETU1jA== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.0" + +ora@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" + integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== + dependencies: + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-spinners "^2.0.0" + log-symbols "^2.2.0" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + +os-filter-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-2.0.0.tgz#1c0b62d5f3a2442749a2d139e6dddee6e81d8d16" + integrity sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg== + dependencies: + arch "^2.1.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +ow@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ow/-/ow-2.0.0.tgz#07690490ac9783b37241c4ebee32dfcab1b20ee1" + integrity sha512-ESUigmGrdhUZ2nQSFNkeKSl6ZRPupXzprMs3yF9DYlNVpJ8XAjM/fI9RUZxA7PI1K9HQDCCvBo1jr/GEIo9joQ== + dependencies: + "@sindresorhus/is" "^6.3.0" + callsites "^4.1.0" + dot-prop "^8.0.2" + environment "^1.0.0" + fast-equals "^5.0.1" + is-identifier "^1.0.0" + +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== + +p-cancelable@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" + integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== + +p-event@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-1.3.0.tgz#8e6b4f4f65c72bc5b6fe28b75eda874f96a4a085" + integrity sha512-hV1zbA7gwqPVFcapfeATaNjQ3J0NuzorHPyG8GPL9g/Y/TplWVBVoCKCXL6Ej2zscrCEv195QNWJXuBH6XZuzA== + dependencies: + p-timeout "^1.1.1" + +p-event@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-2.3.1.tgz#596279ef169ab2c3e0cae88c1cfbb08079993ef6" + integrity sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA== + dependencies: + p-timeout "^2.0.1" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg== + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" + integrity sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg== + dependencies: + p-reduce "^1.0.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-pipe@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-4.0.0.tgz#7e5424569351b2ab452a47826acb93ce09ad6a2c" + integrity sha512-HkPfFklpZQPUKBFXzKFB6ihLriIHxnmuQdK9WmLDwe4hf2PdhhfWT/FJa+pc3bA1ywvKXtedxIRmd4Y7BTXE4w== + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ== + +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + integrity sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA== + dependencies: + p-finally "^1.0.0" + +p-timeout@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== + dependencies: + p-finally "^1.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-png@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/parse-png/-/parse-png-2.1.0.tgz#2a42ad719fedf90f81c59ebee7ae59b280d6b338" + integrity sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ== + dependencies: + pngjs "^3.3.0" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +password-prompt@^1.0.4: + version "1.1.3" + resolved "https://registry.yarnpkg.com/password-prompt/-/password-prompt-1.1.3.tgz#05e539f4e7ca4d6c865d479313f10eb9db63ee5f" + integrity sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw== + dependencies: + ansi-escapes "^4.3.2" + cross-spawn "^7.0.3" + +patch-package@^6.5.0: + version "6.5.1" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.5.1.tgz#3e5d00c16997e6160291fee06a521c42ac99b621" + integrity sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^4.1.2" + cross-spawn "^6.0.5" + find-yarn-workspace-root "^2.0.0" + fs-extra "^9.0.0" + is-ci "^2.0.0" + klaw-sync "^6.0.0" + minimist "^1.2.6" + open "^7.4.2" + rimraf "^2.6.3" + semver "^5.6.0" + slash "^2.0.0" + tmp "^0.0.33" + yaml "^1.10.2" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.5, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +path-type@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-5.0.0.tgz#14b01ed7aea7ddf9c7c3f46181d4d04f9c785bb8" + integrity sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg== + +peek-readable@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-5.3.1.tgz#9cc2c275cceda9f3d07a988f4f664c2080387dff" + integrity sha512-GVlENSDW6KHaXcd9zkZltB7tCLosKB/4Hg0fqBJkAoBgYG2Tn1xtMgXtSUuMU9AK/gCm/tTdT8mgAeF4YNeeqw== + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + +picocolors@^1.0.0, picocolors@^1.1.0, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +picomatch@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-3.0.1.tgz#817033161def55ec9638567a2f3bbc876b3e7516" + integrity sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag== + +pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + +pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +plist@^3.0.5: + version "3.1.0" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.1.0.tgz#797a516a93e62f5bde55e0b9cc9c967f860893c9" + integrity sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ== + dependencies: + "@xmldom/xmldom" "^0.8.8" + base64-js "^1.5.1" + xmlbuilder "^15.1.1" + +pngjs@^3.3.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@~8.4.32: + version "8.4.49" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" + integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== + +pretty-bytes@^5.6.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +proc-log@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034" + integrity sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +promise@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +prompts@^2.3.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +prop-types@15.8.1, prop-types@^15.5.10, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + +protobufjs@^6.11.3: + version "6.11.4" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" + integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + long "^4.0.0" + +protobufjs@^7.2.5: + version "7.4.0" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.4.0.tgz#7efe324ce9b3b61c82aae5de810d287bc08a248a" + integrity sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== + +pump@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8" + integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +qrcode-terminal@0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz#ffc6c28a2fc0bfb47052b47e23f4f446a5fbdb9e" + integrity sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ== + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +query-string@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" + integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== + dependencies: + decode-uri-component "^0.2.2" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +queue@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +rc@~1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-async-hook@3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/react-async-hook/-/react-async-hook-3.6.1.tgz#aed3e492d87319392865c83ed7cef3609e2a7fef" + integrity sha512-YWBB2feVQF79t5u2raMPHlZ8975Jds+guCvkWVC4kRLDlSCouLsYpQm4DGSqPeHvoHYVVcDfqNayLZAXQmnxnw== + +react-devtools-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-5.3.2.tgz#d5df92f8ef2a587986d094ef2c47d84cf4ae46ec" + integrity sha512-crr9HkVrDiJ0A4zot89oS0Cgv0Oa4OG1Em4jit3P3ZxZSKPMYyMjfwMqgcJna9o625g8oN87rBm8SWWrSTBZxg== + dependencies: + shell-quote "^1.6.1" + ws "^7" + +react-dom@18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.2" + +react-error-overlay@6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" + integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== + +react-is@^16.13.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^18.0.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +react-native-calendars@^1.1300.0: + version "1.1307.0" + resolved "https://registry.yarnpkg.com/react-native-calendars/-/react-native-calendars-1.1307.0.tgz#2cb8c5abd322037e9b3ef5605afa86f25347068f" + integrity sha512-Fl9NxPgkXw6aboGOifER8Np+p8im753IUGh1sOy7eMuDAP+x5fSDw1K5GnChdVAKWAdLfsNWFIyYehHChf5vmw== + dependencies: + hoist-non-react-statics "^3.3.1" + lodash "^4.17.15" + memoize-one "^5.2.1" + prop-types "^15.5.10" + react-native-swipe-gestures "^1.0.5" + recyclerlistview "^4.0.0" + xdate "^0.8.0" + optionalDependencies: + moment "^2.29.4" + +react-native-compressor@^1.8.24: + version "1.10.3" + resolved "https://registry.yarnpkg.com/react-native-compressor/-/react-native-compressor-1.10.3.tgz#4e44fa8395de17fd6dc63c074e5a8c2ef06b80a1" + integrity sha512-i51DfTwfLcKorWbTXtnPOcQC4SQDuC+DqKkSl9wF9qAUmNS9PtipYZCXOvWShYFnX0mmcWw5vwEp2b2V73PaDQ== + +react-native-country-picker-modal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/react-native-country-picker-modal/-/react-native-country-picker-modal-2.0.0.tgz#005421303349a81fedf5975e465405bb4b7312d5" + integrity sha512-p0wfkKx1mOCEkn3Qm2/FA8TrxSdUw/nqaCcT6KYvIGmPtPdia1Ce+iWh5G0j2hZcDs6yJSkYAx+7lrZ0HwixAw== + dependencies: + "@callstack/react-theme-provider" "3.0.3" + fuse.js "3.4.5" + modal-react-native-web "0.2.0" + node-emoji "1.10.0" + prop-types "15.7.2" + react-async-hook "3.6.1" + +react-native-dialog@^9.3.0: + version "9.3.0" + resolved "https://registry.yarnpkg.com/react-native-dialog/-/react-native-dialog-9.3.0.tgz#9d745cc51653a1e2ae08076b46f11d99723c47f6" + integrity sha512-JEOJY/0AzTM9grIl0BL8o/IJPIJru7k5MPj9POTE9RRezUEtgn0YSvCpTlBtG0obWgOdzg2otMz1OQvMXS0wMQ== + +react-native-figma-squircle@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/react-native-figma-squircle/-/react-native-figma-squircle-0.3.4.tgz#f98c68f426806f2ffad43c8ebfbea67ed1f01d0a" + integrity sha512-os9sQssA4qgSqPxpKOWKQKJodwyp+9r2lWm212se9WBI6T1yV2h1lLzYaUBJKpONvLL9uPTclKQg/4TBEk5BmQ== + dependencies: + figma-squircle "^0.2.1" + +react-native-gesture-handler@~2.20.2: + version "2.20.2" + resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.20.2.tgz#73844c8e9c417459c2f2981bc4d8f66ba8a5ee66" + integrity sha512-HqzFpFczV4qCnwKlvSAvpzEXisL+Z9fsR08YV5LfJDkzuArMhBu2sOoSPUF/K62PCoAb+ObGlTC83TKHfUd0vg== + dependencies: + "@egjs/hammerjs" "^2.0.17" + hoist-non-react-statics "^3.3.0" + invariant "^2.2.4" + prop-types "^15.7.2" + +react-native-hyperlink@^0.0.22: + version "0.0.22" + resolved "https://registry.yarnpkg.com/react-native-hyperlink/-/react-native-hyperlink-0.0.22.tgz#9f553390b5f96ae473d942639c40bce6579abc89" + integrity sha512-IVhG+aP2bAnllUEr08/+rGA3cbpzyl83PtOfe94higfWUR8E7rUGThj21tdhx8SWAyl+4XO1K864tA6ybVbMFA== + dependencies: + linkify-it "^4.0.1" + mdurl "^1.0.1" + +react-native-iphone-x-helper@^1.0.3: + version "1.3.1" + resolved "https://registry.yarnpkg.com/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz#20c603e9a0e765fd6f97396638bdeb0e5a60b010" + integrity sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg== + +react-native-keyboard-aware-scroll-view@^0.9.5: + version "0.9.5" + resolved "https://registry.yarnpkg.com/react-native-keyboard-aware-scroll-view/-/react-native-keyboard-aware-scroll-view-0.9.5.tgz#e2e9665d320c188e6b1f22f151b94eb358bf9b71" + integrity sha512-XwfRn+T/qBH9WjTWIBiJD2hPWg0yJvtaEw6RtPCa5/PYHabzBaWxYBOl0usXN/368BL1XktnZPh8C2lmTpOREA== + dependencies: + prop-types "^15.6.2" + react-native-iphone-x-helper "^1.0.3" + +react-native-linear-gradient@^2.8.3: + version "2.8.3" + resolved "https://registry.yarnpkg.com/react-native-linear-gradient/-/react-native-linear-gradient-2.8.3.tgz#9a116649f86d74747304ee13db325e20b21e564f" + integrity sha512-KflAXZcEg54PXkLyflaSZQ3PJp4uC4whM7nT/Uot9m0e/qxFV3p6uor1983D1YOBJbJN7rrWdqIjq0T42jOJyA== + +react-native-minuit@^1.3.52: + version "1.3.67" + resolved "https://registry.yarnpkg.com/react-native-minuit/-/react-native-minuit-1.3.67.tgz#82ce3d527c6012f4d408e3a46457218a186cf474" + integrity sha512-fPiFgZKedzusmwSrMrAlrNY8rbpEkUR6yF152aizPMWQ6XaxtbINdbF5I7vHHOe/3+1URIMh1y0f3MqagbWALg== + dependencies: + "@legendapp/motion" "^2.1.10" + algoliasearch "^4.14.2" + firebase "^9.20.0" + geofirex "^0.1.0" + lodash "^4.17.21" + moment "^2.29.4" + moment-range "^4.0.2" + react-native-calendars "^1.1300.0" + react-native-modalbox "^2.0.2" + react-native-responsive-dimensions "^3.1.1" + reactn "^2.2.7" + rxjs "^7.5.7" + +react-native-modalbox@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/react-native-modalbox/-/react-native-modalbox-2.0.2.tgz#8a7b3d2e7be79b5d1cb9530b2c6bc535b1bc8c66" + integrity sha512-uSuoZ+siPPNqWGyw8NXhA/Aots7mOx2+qijFoeovequY0kczZEPZDd0ARHbzg+1cE3H3AATJEwGdkVA8lUxs0g== + dependencies: + prop-types "^15.5.10" + +react-native-reanimated-carousel@^4.0.0-alpha.8: + version "4.0.0-canary.22" + resolved "https://registry.yarnpkg.com/react-native-reanimated-carousel/-/react-native-reanimated-carousel-4.0.0-canary.22.tgz#4fa530548bf330184b252eabd2d95dc02eb31f28" + integrity sha512-GOTSXVuoV08ZUxGPuzQ1Kl1YOOOrKWb18uRlPsa759bFyiqFWpjjLrCUdfgBgF9ZqUHUbb1jj+UffFf2eGDz+A== + +react-native-reanimated@~3.16.1: + version "3.16.3" + resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.16.3.tgz#3b559dca49e9e40abcf5de834dc27fc05f856b66" + integrity sha512-OWlA6e1oHhytTpc7WiSZ7Tmb8OYwLKYZz29Sz6d6WAg60Hm5GuAiKIWUG7Ako7FLcYhFkA0pEQ2xPMEYUo9vlw== + dependencies: + "@babel/plugin-transform-arrow-functions" "^7.0.0-0" + "@babel/plugin-transform-class-properties" "^7.0.0-0" + "@babel/plugin-transform-classes" "^7.0.0-0" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.0.0-0" + "@babel/plugin-transform-optional-chaining" "^7.0.0-0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0-0" + "@babel/plugin-transform-template-literals" "^7.0.0-0" + "@babel/plugin-transform-unicode-regex" "^7.0.0-0" + "@babel/preset-typescript" "^7.16.7" + convert-source-map "^2.0.0" + invariant "^2.2.4" + +react-native-responsive-dimensions@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/react-native-responsive-dimensions/-/react-native-responsive-dimensions-3.1.1.tgz#c4daf977b30a909f21164de53a8ba4c9451efefc" + integrity sha512-Vo2OhWsphq0HgKsmeZOeyW+c+vsFn1ZaCFkGDgdeCEEiLriT76jGA1JlUjtrj27hvyo/xzeTlBZ+vBso1A84fw== + +react-native-safe-area-context@4.12.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.12.0.tgz#17868522a55bbc6757418c94a1b4abdda6b045d9" + integrity sha512-ukk5PxcF4p3yu6qMZcmeiZgowhb5AsKRnil54YFUUAXVIS7PJcMHGGC+q44fCiBg44/1AJk5njGMez1m9H0BVQ== + +react-native-store-review@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/react-native-store-review/-/react-native-store-review-0.3.0.tgz#67480b9736c10bd00ad8d4d80324d2146e18d7dd" + integrity sha512-PipH/p3O10DDCUWHiW0sVZ0020HPx6gRFFZOyuAYRRVwdssO7or/+H2pHTlwUt2lasVzLenTf2aZ9sMrpryuKA== + +react-native-super-grid@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/react-native-super-grid/-/react-native-super-grid-5.1.0.tgz#2b263232b967045846685ed456619798d7ae7999" + integrity sha512-pKzkjdc9pgrAIEJDr5k4HH5i9RSmUZ3mw21QEcZr2ECulg2HYrUV5FAdi8NMOmBeenXY4NNP3zVLckHBd2rBqA== + dependencies: + prop-types "^15.6.2" + +react-native-svg@15.8.0: + version "15.8.0" + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-15.8.0.tgz#9b5fd4f5cf5675197b3f4cbfcc77c215de2b9502" + integrity sha512-KHJzKpgOjwj1qeZzsBjxNdoIgv2zNCO9fVcoq2TEhTRsVV5DGTZ9JzUZwybd7q4giT/H3RdtqC3u44dWdO0Ffw== + dependencies: + css-select "^5.1.0" + css-tree "^1.1.3" + warn-once "0.1.1" + +react-native-swipe-gestures@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/react-native-swipe-gestures/-/react-native-swipe-gestures-1.0.5.tgz#a172cb0f3e7478ccd681fd36b8bfbcdd098bde7c" + integrity sha512-Ns7Bn9H/Tyw278+5SQx9oAblDZ7JixyzeOczcBK8dipQk2pD7Djkcfnf1nB/8RErAmMLL9iXgW0QHqiII8AhKw== + +react-native-web-linear-gradient@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/react-native-web-linear-gradient/-/react-native-web-linear-gradient-1.1.2.tgz#33f85f7085a0bb5ffa5106faf02ed105b92a9ed7" + integrity sha512-SmUnpwT49CEe78pXvIvYf72Es8Pv+ZYKCnEOgb2zAKpEUDMo0+xElfRJhwt5nfI8krJ5WbFPKnoDgD0uUjAN1A== + +react-native-web@~0.19.6: + version "0.19.13" + resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.19.13.tgz#2d84849bf0251ec0e3a8072fda7f9a7c29375331" + integrity sha512-etv3bN8rJglrRCp/uL4p7l8QvUNUC++QwDbdZ8CB7BvZiMvsxfFIRM1j04vxNldG3uo2puRd6OSWR3ibtmc29A== + dependencies: + "@babel/runtime" "^7.18.6" + "@react-native/normalize-colors" "^0.74.1" + fbjs "^3.0.4" + inline-style-prefixer "^6.0.1" + memoize-one "^6.0.0" + nullthrows "^1.1.1" + postcss-value-parser "^4.2.0" + styleq "^0.1.3" + +react-native-webview@13.12.5: + version "13.12.5" + resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-13.12.5.tgz#ed9eec1eda234d7cf18d329859b9bdebf7e258b6" + integrity sha512-INOKPom4dFyzkbxbkuQNfeRG9/iYnyRDzrDkJeyvSWgJAW2IDdJkWFJBS2v0RxIL4gqLgHkiIZDOfiLaNnw83Q== + dependencies: + escape-string-regexp "^4.0.0" + invariant "2.2.4" + +react-native@0.76.5: + version "0.76.5" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.76.5.tgz#3ce43d3c31f46cfd98e56ef2dfc70866c04ad185" + integrity sha512-op2p2kB+lqMF1D7AdX4+wvaR0OPFbvWYs+VBE7bwsb99Cn9xISrLRLAgFflZedQsa5HvnOGrULhtnmItbIKVVw== + dependencies: + "@jest/create-cache-key-function" "^29.6.3" + "@react-native/assets-registry" "0.76.5" + "@react-native/codegen" "0.76.5" + "@react-native/community-cli-plugin" "0.76.5" + "@react-native/gradle-plugin" "0.76.5" + "@react-native/js-polyfills" "0.76.5" + "@react-native/normalize-colors" "0.76.5" + "@react-native/virtualized-lists" "0.76.5" + abort-controller "^3.0.0" + anser "^1.4.9" + ansi-regex "^5.0.0" + babel-jest "^29.7.0" + babel-plugin-syntax-hermes-parser "^0.23.1" + base64-js "^1.5.1" + chalk "^4.0.0" + commander "^12.0.0" + event-target-shim "^5.0.1" + flow-enums-runtime "^0.0.6" + glob "^7.1.1" + invariant "^2.2.4" + jest-environment-node "^29.6.3" + jsc-android "^250231.0.0" + memoize-one "^5.0.0" + metro-runtime "^0.81.0" + metro-source-map "^0.81.0" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + pretty-format "^29.7.0" + promise "^8.3.0" + react-devtools-core "^5.3.1" + react-refresh "^0.14.0" + regenerator-runtime "^0.13.2" + scheduler "0.24.0-canary-efb381bbf-20230505" + semver "^7.1.3" + stacktrace-parser "^0.1.10" + whatwg-fetch "^3.0.0" + ws "^6.2.3" + yargs "^17.6.2" + +react-refresh@^0.14.0, react-refresh@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9" + integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== + +react@18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== + dependencies: + loose-envify "^1.1.0" + +reactn@^2.2.7: + version "2.2.7" + resolved "https://registry.yarnpkg.com/reactn/-/reactn-2.2.7.tgz#4d9a94ab0d8a540062666408e4bf1fae6892cecc" + integrity sha512-cqnt23kWN/ABqEZhW3OlpqI1DgTaaNDeHpSHtyd81qk0H1jd32zPTzJ69Hpzti2WakwNYveGFPIgI6i7E7nXOA== + dependencies: + use-force-update "^1.0.5" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@^2.0.0, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readline@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/readline/-/readline-1.3.0.tgz#c580d77ef2cfc8752b132498060dc9793a7ac01c" + integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg== + +recast@^0.21.0: + version "0.21.5" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.21.5.tgz#e8cd22bb51bcd6130e54f87955d33a2b2e57b495" + integrity sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg== + dependencies: + ast-types "0.15.2" + esprima "~4.0.0" + source-map "~0.6.1" + tslib "^2.0.1" + +recyclerlistview@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/recyclerlistview/-/recyclerlistview-4.2.1.tgz#4537a0959400cdce1df1f38d26aab823786e9b13" + integrity sha512-NtVYjofwgUCt1rEsTp6jHQg/47TWjnO92TU2kTVgJ9wsc/ely4HnizHHa+f/dI7qaw4+zcSogElrLjhMltN2/g== + dependencies: + lodash.debounce "4.0.8" + prop-types "15.8.1" + ts-object-utils "0.0.5" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g== + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +regenerate-unicode-properties@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" + integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.2: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + +regexpu-core@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.2.0.tgz#0e5190d79e542bf294955dccabae04d3c7d53826" + integrity sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.2.0" + regjsgen "^0.8.0" + regjsparser "^0.12.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsgen@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" + integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== + +regjsparser@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc" + integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== + dependencies: + jsesc "~3.0.2" + +remove-trailing-slash@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz#be2285a59f39c74d1bce4f825950061915e3780d" + integrity sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA== + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== + dependencies: + is-finite "^1.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +requireg@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/requireg/-/requireg-0.2.2.tgz#437e77a5316a54c9bcdbbf5d1f755fe093089830" + integrity sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg== + dependencies: + nested-error-stacks "~2.0.1" + rc "~1.2.7" + resolve "~1.7.1" + +reserved-identifiers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/reserved-identifiers/-/reserved-identifiers-1.0.0.tgz#a4878ea2b5130ec2bf5aba40074edcb9704d2623" + integrity sha512-h0bP2Katmvf3hv4Z3WtDl4+6xt/OglQ2Xa6TnhZ/Rm9/7IH1crXQqMwD4J2ngKBonVv+fB55zfGgNDAmsevLVQ== + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-workspace-root/-/resolve-workspace-root-2.0.0.tgz#a0098daa0067cd0efa6eb525c57c8fb4a61e78f8" + integrity sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw== + +resolve.exports@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" + integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== + +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.22.2: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@~1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + integrity sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw== + dependencies: + path-parse "^1.0.5" + +responselike@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== + dependencies: + lowercase-keys "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^2.5.4, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.5.7, rxjs@^7.6.0: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +sax@>=0.6.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== + +scheduler@0.24.0-canary-efb381bbf-20230505: + version "0.24.0-canary-efb381bbf-20230505" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz#5dddc60e29f91cd7f8b983d7ce4a99c2202d178f" + integrity sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA== + dependencies: + loose-envify "^1.1.0" + +scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== + dependencies: + loose-envify "^1.1.0" + +seek-bzip@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" + integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== + dependencies: + commander "^2.8.1" + +selfsigned@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== + dependencies: + "@types/node-forge" "^1.3.0" + node-forge "^1" + +semver-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" + integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== + +semver-truncate@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/semver-truncate/-/semver-truncate-1.1.2.tgz#57f41de69707a62709a7e0104ba2117109ea47e8" + integrity sha512-V1fGg9i4CL3qesB6U0L6XAm4xOJiHmt4QAacazumuasc03BvtFGIMCduv01JWQ69Nv+JST9TqhSCiJoxoY031w== + dependencies: + semver "^5.3.0" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.1.3, semver@^7.3.5, semver@^7.5.4, semver@^7.6.0: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +send@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== + 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" + +send@^0.19.0: + version "0.19.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.1.tgz#1c2563b2ee4fe510b806b21ec46f355005a369f9" + integrity sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg== + 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" + +serialize-error@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" + integrity sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw== + +serve-static@^1.13.1: + version "1.16.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.19.0" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.6.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.2.tgz#d2d83e057959d53ec261311e9e9b8f51dcb2934a" + integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA== + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +simple-plist@^1.1.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.3.1.tgz#16e1d8f62c6c9b691b8383127663d834112fb017" + integrity sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw== + dependencies: + bplist-creator "0.1.0" + bplist-parser "0.3.1" + plist "^3.0.5" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce" + integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== + +slugify@^1.3.4, slugify@^1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.6.tgz#2d4ac0eacb47add6af9e04d3be79319cbcc7924b" + integrity sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw== + +sort-keys-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" + integrity sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw== + dependencies: + sort-keys "^1.0.0" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== + dependencies: + is-plain-obj "^1.0.0" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== + dependencies: + is-plain-obj "^1.0.0" + +source-map-js@^1.0.1, source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +source-map-support@^0.5.16, source-map-support@~0.5.20, source-map-support@~0.5.21: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" + integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA== + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.20" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz#e44ed19ed318dd1e5888f93325cee800f0f51b89" + integrity sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw== + +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + +split@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +squeak@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/squeak/-/squeak-1.3.0.tgz#33045037b64388b567674b84322a6521073916c3" + integrity sha512-YQL1ulInM+ev8nXX7vfXsCsDh6IqXlrremc1hzi77776BtpWgYJUMto3UM05GSAaGzJgWekszjoKDrVNB5XG+A== + dependencies: + chalk "^1.0.0" + console-stream "^0.1.1" + lpad-align "^1.0.1" + +ssri@^10.0.0: + version "10.0.6" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" + integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== + dependencies: + minipass "^7.0.3" + +stack-generator@^2.0.5: + version "2.0.10" + resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.10.tgz#8ae171e985ed62287d4f1ed55a1633b3fb53bb4d" + integrity sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ== + dependencies: + stackframe "^1.3.4" + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +stacktrace-gps@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz#0c40b24a9b119b20da4525c398795338966a2fb0" + integrity sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ== + dependencies: + source-map "0.5.6" + stackframe "^1.3.4" + +stacktrace-js@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b" + integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg== + dependencies: + error-stack-parser "^2.0.6" + stack-generator "^2.0.5" + stacktrace-gps "^3.0.4" + +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +stream-buffers@2.2.x, stream-buffers@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" + integrity sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== + +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== + dependencies: + is-utf8 "^0.2.0" + +strip-dirs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== + dependencies: + is-natural-number "^4.0.1" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA== + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +strip-outer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" + integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== + dependencies: + escape-string-regexp "^1.0.2" + +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + +strtok3@^9.0.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-9.1.1.tgz#f8feb188b3fcdbf9b8819cc9211a824c3731df38" + integrity sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw== + dependencies: + "@tokenizer/token" "^0.3.0" + peek-readable "^5.3.1" + +structured-headers@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/structured-headers/-/structured-headers-0.4.1.tgz#77abd9410622c6926261c09b9d16cf10592694d1" + integrity sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg== + +styleq@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/styleq/-/styleq-0.1.3.tgz#8efb2892debd51ce7b31dc09c227ad920decab71" + integrity sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA== + +sucrase@3.35.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "^10.3.10" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +sudo-prompt@9.1.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.1.1.tgz#73853d729770392caec029e2470db9c221754db0" + integrity sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA== + +sudo-prompt@^8.2.0: + version "8.2.5" + resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-8.2.5.tgz#cc5ef3769a134bb94b24a631cc09628d4d53603e" + integrity sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw== + +super-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/super-regex/-/super-regex-1.0.0.tgz#dd90d944a925a1083e7d8570919b21cb76e3d925" + integrity sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg== + dependencies: + function-timeout "^1.0.1" + time-span "^5.1.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svgo@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.2.tgz#ad58002652dffbb5986fc9716afe52d869ecbda8" + integrity sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^5.1.0" + css-tree "^2.3.1" + css-what "^6.1.0" + csso "^5.0.5" + picocolors "^1.0.0" + +tar-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + +tar@^6.1.11, tar@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== + +temp-dir@^2.0.0, temp-dir@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +temp@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" + integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== + dependencies: + rimraf "~2.6.2" + +tempfile@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-2.0.0.tgz#6b0446856a9b1114d1856ffcbe509cccb0977265" + integrity sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA== + dependencies: + temp-dir "^1.0.0" + uuid "^3.0.1" + +tempy@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.7.1.tgz#5a654e6dbd1747cdd561efb112350b55cd9c1d46" + integrity sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg== + dependencies: + del "^6.0.0" + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + +terminal-link@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser@^5.15.0: + version "5.37.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.37.0.tgz#38aa66d1cfc43d0638fab54e43ff8a4f72a21ba3" + integrity sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through2@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@2, through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +time-span@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/time-span/-/time-span-5.1.0.tgz#80c76cf5a0ca28e0842d3f10a4e99034ce94b90d" + integrity sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA== + dependencies: + convert-hrtime "^5.0.0" + +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +token-types@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-6.0.0.tgz#1ab26be1ef9c434853500c071acfe5c8dd6544a3" + integrity sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA== + dependencies: + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw== + +trim-repeated@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" + integrity sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg== + dependencies: + escape-string-regexp "^1.0.2" + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +ts-object-utils@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/ts-object-utils/-/ts-object-utils-0.0.5.tgz#95361cdecd7e52167cfc5e634c76345e90a26077" + integrity sha512-iV0GvHqOmilbIKJsfyfJY9/dNHCs969z3so90dQWsO1eMMozvTpnB1MEaUbb3FYtZTGjv5sIy/xmslEz0Rg2TA== + +tslib@^2.0.1, tslib@^2.1.0, tslib@^2.4.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +type-fest@^3.8.0: + version "3.13.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" + integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== + +type@^2.7.2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.3.tgz#436981652129285cc3ba94f392886c2637ea0486" + integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ== + +typescript@^5.3.3: + version "5.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" + integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== + +ua-parser-js@^1.0.35: + version "1.0.39" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.39.tgz#bfc07f361549bf249bd8f4589a4cccec18fd2018" + integrity sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw== + +uc.micro@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +uint8array-extras@^1.1.0, uint8array-extras@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/uint8array-extras/-/uint8array-extras-1.4.0.tgz#e42a678a6dd335ec2d21661333ed42f44ae7cc74" + integrity sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ== + +unbzip2-stream@^1.0.9: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== + +undici@^6.18.2: + version "6.21.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-6.21.0.tgz#4b3d3afaef984e07b48e7620c34ed8a285ed4cd4" + integrity sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2" + integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz#a0401aee72714598f739b68b104e4fe3a0cb3c71" + integrity sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +unicorn-magic@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4" + integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== + +unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== + dependencies: + unique-slug "^4.0.0" + +unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== + dependencies: + imurmurhash "^0.1.4" + +unique-string@^2.0.0, unique-string@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA== + dependencies: + prepend-http "^1.0.1" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== + dependencies: + prepend-http "^2.0.0" + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A== + +use-force-update@1.0.8, use-force-update@^1.0.5: + version "1.0.8" + resolved "https://registry.yarnpkg.com/use-force-update/-/use-force-update-1.0.8.tgz#14483faa4571673f070080f8233057b43b266ace" + integrity sha512-ua22fB++yaCvnf+Unht3L/2Lq3O7QstCtyh1IV8ydkJcyT6yVwMNgkKKhOsj5HRJCJj2oQbjzd6JJVnx7S+3uA== + +use-latest-callback@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.2.3.tgz#2d644d3063040b9bc2d4c55bb525a13ae3de9e16" + integrity sha512-7vI3fBuyRcP91pazVboc4qu+6ZqM8izPWX9k7cRnT8hbD5svslcknsh3S9BUhaK11OmgTV4oWZZVSeQAiV53SQ== + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^3.0.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" + integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== + +uuid@^8.0.0, uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +validate-npm-package-name@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" + integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +vlq@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" + integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== + +walker@^1.0.7, walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +warn-once@0.1.1, warn-once@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/warn-once/-/warn-once-0.1.1.tgz#952088f4fb56896e73fd4e6a3767272a3fccce43" + integrity sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q== + +warning@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +web-streams-polyfill@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" + integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-fetch@^3.0.0: + version "3.6.20" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz#580ce6d791facec91d37c72890995a0b48d31c70" + integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== + +whatwg-url-without-unicode@8.0.0-3: + version "8.0.0-3" + resolved "https://registry.yarnpkg.com/whatwg-url-without-unicode/-/whatwg-url-without-unicode-8.0.0-3.tgz#ab6df4bf6caaa6c85a59f6e82c026151d4bb376b" + integrity sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig== + dependencies: + buffer "^5.4.3" + punycode "^2.1.1" + webidl-conversions "^5.0.0" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wonka@^6.3.2: + version "6.3.4" + resolved "https://registry.yarnpkg.com/wonka/-/wonka-6.3.4.tgz#76eb9316e3d67d7febf4945202b5bdb2db534594" + integrity sha512-CjpbqNtBGNAeyNS/9W6q3kSkKE52+FjIj7AkFlLr11s/VWGUu6a2CdYSdGxocIhIVjaW/zchesBQUKPVU69Cqg== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^2.3.0: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +ws@^6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.3.tgz#ccc96e4add5fd6fedbc491903075c85c5a11d9ee" + integrity sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA== + dependencies: + async-limiter "~1.0.0" + +ws@^7, ws@^7.5.10: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +ws@^8.12.1: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + +xcode@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/xcode/-/xcode-3.0.1.tgz#3efb62aac641ab2c702458f9a0302696146aa53c" + integrity sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA== + dependencies: + simple-plist "^1.1.0" + uuid "^7.0.3" + +xdate@^0.8.0: + version "0.8.3" + resolved "https://registry.yarnpkg.com/xdate/-/xdate-0.8.3.tgz#422068681eeac81f68acffa1a38cd287bb179b85" + integrity sha512-1NhJWPJwN+VjbkACT9XHbQK4o6exeSVtS2CxhMPwUE7xQakoEFTlwra9YcqV/uHQVyeEUYoYC46VGDJ+etnIiw== + +xml2js@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.6.0.tgz#07afc447a97d2bd6507a1f76eeadddb09f7a8282" + integrity sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-14.0.0.tgz#876b5aec4f05ffd5feb97b0a871c855d16fbeb8c" + integrity sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg== + +xmlbuilder@^15.1.1: + version "15.1.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^17.6.2, yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yauzl@^2.4.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
Oh no! It looks like JavaScript is not enabled in your browser.
+ + Reload + +