diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml new file mode 100644 index 000000000..aa9194fb5 --- /dev/null +++ b/.github/workflows/dev.yml @@ -0,0 +1,103 @@ +name: CI SonarQube Analysis DEV + +on: + push: + + +jobs: + checks: + runs-on: ubuntu-latest + + steps: + - name: Checkout del repositorio + uses: actions/checkout@v3 + + - name: Configurar JDK 17 + uses: actions/setup-java@v3 + with: + distribution: temurin + java-version: '17' + cache: maven + + - name: Compilar y ejecutar tests con Maven + working-directory: API + run: mvn verify + + - name: Ejecutar análisis en SonarQube + working-directory: API + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + BRANCH_NAME: ${{ github.ref_name }} + HOSTNAME: ${{ vars.HOSTING_PC }} + run: | + mvn sonar:sonar \ + -Dsonar.projectKey=RoutineFights \ + -Dsonar.host.url=http://$HOSTNAME:9000 \ + -Dsonar.login=$SONAR_TOKEN \ + -Dsonar.qualitygate.wait=true \ + -Dsonar.branch.name=$BRANCH_NAME + - name: Save Maven build output + if: success() && ${{ github.ref_name == 'main' }} + uses: actions/upload-artifact@v4 + with: + name: api-jar + path: API/target/*.jar + + build: + needs: checks + runs-on: ubuntu-latest + if: ${{ github.ref_name == 'main' }} + strategy: + matrix: + include: + - name: API + slug: api + component: API + - name: administration + slug: administration + component: administration + steps: + - uses: actions/checkout@v3 + + - name: Create TIMESTAMP + run: echo "TIMESTAMP=$(date +%s)" >> $GITHUB_ENV + + - name: Download Maven artifact + uses: actions/download-artifact@v4 + with: + name: api-jar + path: API/target + + - uses: docker/setup-buildx-action@v2 + + - uses: docker/login-action@v3 + with: + username: ${{ vars.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + + - name: Build and push Docker image + uses: docker/build-push-action@v6 + with: + context: ${{ matrix.component }} + file: ${{ matrix.component }}/Dockerfile + push: true + tags: | + ${{ vars.DOCKERHUB_USERNAME }}/${{ matrix.slug }}routinefights:latest, + ${{ vars.DOCKERHUB_USERNAME }}/${{ matrix.slug }}routinefights:${{ env.TIMESTAMP }} + deploy: + needs: build + runs-on: ubuntu-latest + if: ${{ github.ref_name == 'main' }} + steps: + - name: Deploy to digitalocean + uses: appleboy/ssh-action@v0.1.7 + with: + username: ${{ vars.HOSTING_USERNAME }} + host: ${{ vars.HOSTING_PC }} + password: ${{ secrets.HOSTING_PASSWORD }} + script: | + docker compose down; + docker compose pull + docker image prune -f + docker compose up -d diff --git a/.gitignore b/.gitignore index 58071ca05..d6ed319c2 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,7 @@ replay_pid* # Generated directories /target/ +# Ides +.vscode/ +.idea/ + diff --git a/API/.gitattributes b/API/.gitattributes new file mode 100644 index 000000000..3b41682ac --- /dev/null +++ b/API/.gitattributes @@ -0,0 +1,2 @@ +/mvnw text eol=lf +*.cmd text eol=crlf diff --git a/API/.gitignore b/API/.gitignore new file mode 100644 index 000000000..56aa17740 --- /dev/null +++ b/API/.gitignore @@ -0,0 +1,37 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ +.env + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### UPLOADS ### +uploads/ diff --git a/API/.mvn/wrapper/maven-wrapper.properties b/API/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 000000000..d58dfb70b --- /dev/null +++ b/API/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,19 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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 +# +# http://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. +wrapperVersion=3.3.2 +distributionType=only-script +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip diff --git a/API/Dockerfile b/API/Dockerfile new file mode 100644 index 000000000..5c5b5f997 --- /dev/null +++ b/API/Dockerfile @@ -0,0 +1,11 @@ +FROM eclipse-temurin:17-jdk-alpine + +RUN ls -la + +COPY target/*.jar /app.jar + +COPY src/main/resources/application.properties /application.properties + +EXPOSE 8080 + +ENTRYPOINT ["java", "-jar", "/app.jar", "--spring.config.location=classpath:/application.properties"] diff --git a/API/hexagonalScript.sh b/API/hexagonalScript.sh new file mode 100755 index 000000000..a933f07c7 --- /dev/null +++ b/API/hexagonalScript.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# Author: JonayKB (DONT CHANGE THIS) +if [ "$#" -lt 1 ]; then + echo "Use: $0 [ ...]" + exit 1 +fi + +# Shared + +if [ ! -d "shared" ]; then + mkdir -p shared/config + mkdir -p shared/controllers + mkdir -p shared/dto + mkdir -p shared/security + mkdir -p shared/tasks + mkdir -p shared/utils + echo "Shared created." +else + echo "Shared already exists" +fi +for CLASS_NAME in "$@" +do + + # Infrastructure + + mkdir -p "$CLASS_NAME/infrastructure/adapters/primary/v2/controllers" + mkdir -p "$CLASS_NAME/infrastructure/adapters/primary/v3/controllers" + mkdir -p "$CLASS_NAME/infrastructure/adapters/primary/v2/dtos" + mkdir -p "$CLASS_NAME/infrastructure/adapters/primary/v3/dtos" + mkdir -p "$CLASS_NAME/infrastructure/adapters/secondary/repositories" + mkdir -p "$CLASS_NAME/infrastructure/adapters/secondary/mappers" + mkdir -p "$CLASS_NAME/infrastructure/adapters/secondary/services" + mkdir -p "$CLASS_NAME/infrastructure/adapters/secondary/entities" + + # Domain + + mkdir -p "$CLASS_NAME/domain/ports/primary" + mkdir -p "$CLASS_NAME/domain/ports/secondary" + mkdir -p "$CLASS_NAME/domain/services" + + echo "Class structure created: $CLASS_NAME" +done diff --git a/API/mvnw b/API/mvnw new file mode 100755 index 000000000..19529ddf8 --- /dev/null +++ b/API/mvnw @@ -0,0 +1,259 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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 +# +# http://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. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.3.2 +# +# Optional ENV vars +# ----------------- +# JAVA_HOME - location of a JDK home dir, required when download maven via java source +# MVNW_REPOURL - repo url base for downloading maven distribution +# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output +# ---------------------------------------------------------------------------- + +set -euf +[ "${MVNW_VERBOSE-}" != debug ] || set -x + +# OS specific support. +native_path() { printf %s\\n "$1"; } +case "$(uname)" in +CYGWIN* | MINGW*) + [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" + native_path() { cygpath --path --windows "$1"; } + ;; +esac + +# set JAVACMD and JAVACCMD +set_java_home() { + # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched + 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" + JAVACCMD="$JAVA_HOME/jre/sh/javac" + else + JAVACMD="$JAVA_HOME/bin/java" + JAVACCMD="$JAVA_HOME/bin/javac" + + if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then + echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 + echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 + return 1 + fi + fi + else + JAVACMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v java + )" || : + JAVACCMD="$( + 'set' +e + 'unset' -f command 2>/dev/null + 'command' -v javac + )" || : + + if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then + echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 + return 1 + fi + fi +} + +# hash string like Java String::hashCode +hash_string() { + str="${1:-}" h=0 + while [ -n "$str" ]; do + char="${str%"${str#?}"}" + h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) + str="${str#?}" + done + printf %x\\n $h +} + +verbose() { :; } +[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } + +die() { + printf %s\\n "$1" >&2 + exit 1 +} + +trim() { + # MWRAPPER-139: + # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. + # Needed for removing poorly interpreted newline sequences when running in more + # exotic environments such as mingw bash on Windows. + printf "%s" "${1}" | tr -d '[:space:]' +} + +# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties +while IFS="=" read -r key value; do + case "${key-}" in + distributionUrl) distributionUrl=$(trim "${value-}") ;; + distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; + esac +done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" + +case "${distributionUrl##*/}" in +maven-mvnd-*bin.*) + MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ + case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in + *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; + :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; + :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; + :Linux*x86_64*) distributionPlatform=linux-amd64 ;; + *) + echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 + distributionPlatform=linux-amd64 + ;; + esac + distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" + ;; +maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; +*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +esac + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" +distributionUrlName="${distributionUrl##*/}" +distributionUrlNameMain="${distributionUrlName%.*}" +distributionUrlNameMain="${distributionUrlNameMain%-bin}" +MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" +MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" + +exec_maven() { + unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : + exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" +} + +if [ -d "$MAVEN_HOME" ]; then + verbose "found existing MAVEN_HOME at $MAVEN_HOME" + exec_maven "$@" +fi + +case "${distributionUrl-}" in +*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; +*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; +esac + +# prepare tmp dir +if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then + clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } + trap clean HUP INT TERM EXIT +else + die "cannot create temp dir" +fi + +mkdir -p -- "${MAVEN_HOME%/*}" + +# Download and Install Apache Maven +verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +verbose "Downloading from: $distributionUrl" +verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +# select .zip or .tar.gz +if ! command -v unzip >/dev/null; then + distributionUrl="${distributionUrl%.zip}.tar.gz" + distributionUrlName="${distributionUrl##*/}" +fi + +# verbose opt +__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' +[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v + +# normalize http auth +case "${MVNW_PASSWORD:+has-password}" in +'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; +has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; +esac + +if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then + verbose "Found wget ... using wget" + wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" +elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then + verbose "Found curl ... using curl" + curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" +elif set_java_home; then + verbose "Falling back to use Java to download" + javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" + targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" + cat >"$javaSource" <<-END + public class Downloader extends java.net.Authenticator + { + protected java.net.PasswordAuthentication getPasswordAuthentication() + { + return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); + } + public static void main( String[] args ) throws Exception + { + setDefault( new Downloader() ); + java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); + } + } + END + # For Cygwin/MinGW, switch paths to Windows format before running javac and java + verbose " - Compiling Downloader.java ..." + "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" + verbose " - Running Downloader.java ..." + "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" +fi + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +if [ -n "${distributionSha256Sum-}" ]; then + distributionSha256Result=false + if [ "$MVN_CMD" = mvnd.sh ]; then + echo "Checksum validation is not supported for maven-mvnd." >&2 + echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + elif command -v sha256sum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + elif command -v shasum >/dev/null; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then + distributionSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 + echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 + exit 1 + fi + if [ $distributionSha256Result = false ]; then + echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 + echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 + exit 1 + fi +fi + +# unzip and move +if command -v unzip >/dev/null; then + unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" +else + tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" +fi +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" + +clean || : +exec_maven "$@" diff --git a/API/mvnw.cmd b/API/mvnw.cmd new file mode 100644 index 000000000..249bdf382 --- /dev/null +++ b/API/mvnw.cmd @@ -0,0 +1,149 @@ +<# : batch portion +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.3.2 +@REM +@REM Optional ENV vars +@REM MVNW_REPOURL - repo url base for downloading maven distribution +@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven +@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output +@REM ---------------------------------------------------------------------------- + +@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) +@SET __MVNW_CMD__= +@SET __MVNW_ERROR__= +@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% +@SET PSModulePath= +@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( + IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) +) +@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% +@SET __MVNW_PSMODULEP_SAVE= +@SET __MVNW_ARG0_NAME__= +@SET MVNW_USERNAME= +@SET MVNW_PASSWORD= +@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) +@echo Cannot start maven from wrapper >&2 && exit /b 1 +@GOTO :EOF +: end batch / begin powershell #> + +$ErrorActionPreference = "Stop" +if ($env:MVNW_VERBOSE -eq "true") { + $VerbosePreference = "Continue" +} + +# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties +$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl +if (!$distributionUrl) { + Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" +} + +switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { + "maven-mvnd-*" { + $USE_MVND = $true + $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" + $MVN_CMD = "mvnd.cmd" + break + } + default { + $USE_MVND = $false + $MVN_CMD = $script -replace '^mvnw','mvn' + break + } +} + +# apply MVNW_REPOURL and calculate MAVEN_HOME +# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ +if ($env:MVNW_REPOURL) { + $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" +} +$distributionUrlName = $distributionUrl -replace '^.*/','' +$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' +$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" +if ($env:MAVEN_USER_HOME) { + $MAVEN_HOME_PARENT = "$env:MAVEN_USER_HOME/wrapper/dists/$distributionUrlNameMain" +} +$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' +$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" + +if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { + Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" + Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" + exit $? +} + +if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { + Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" +} + +# prepare tmp dir +$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile +$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" +$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null +trap { + if ($TMP_DOWNLOAD_DIR.Exists) { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } + } +} + +New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null + +# Download and Install Apache Maven +Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." +Write-Verbose "Downloading from: $distributionUrl" +Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" + +$webclient = New-Object System.Net.WebClient +if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { + $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) +} +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null + +# If specified, validate the SHA-256 sum of the Maven distribution zip file +$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum +if ($distributionSha256Sum) { + if ($USE_MVND) { + Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." + } + Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash + if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { + Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." + } +} + +# unzip and move +Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null +try { + Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null +} catch { + if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { + Write-Error "fail to move MAVEN_HOME" + } +} finally { + try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } + catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } +} + +Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/API/pom.xml b/API/pom.xml new file mode 100644 index 000000000..9becf23a4 --- /dev/null +++ b/API/pom.xml @@ -0,0 +1,214 @@ + + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 3.4.11 + + + es.iespuertodelacruz.routinefights + RoutineFights + 0.0.1-SNAPSHOT + RoutineFights + Social media productive application + + + + Rubén Abreu González + rubalba.rag@gmail.com + https://github.com/rabgonzalez + + + Jonay Contreras Rodríguez + jonaykb@gmail.com + https://github.com/JonayKB + + + + + 1.6.3 + 17 + + + + + + com.google.firebase + firebase-admin + 9.1.1 + + + + com.deepl.api + deepl-java + 1.10.3 + + + org.springframework.boot + spring-boot-starter-actuator + + + jakarta.xml.bind + jakarta.xml.bind-api + + + org.apache.cxf + cxf-spring-boot-starter-jaxws + 4.1.1 + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + 2.5.0 + + + + com.auth0 + java-jwt + 4.4.0 + + + org.mapstruct + mapstruct + ${org.mapstruct.version} + + + com.sendgrid + sendgrid-java + + + org.springframework.boot + spring-boot-starter-data-neo4j + + + org.springframework.boot + spring-boot-starter-graphql + + + org.springframework.boot + spring-boot-starter-mail + + + org.springframework.boot + spring-boot-starter-oauth2-client + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-web + + + org.neo4j.test + neo4j-harness + 5.14.0 + test + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework + spring-webflux + test + + + org.springframework.graphql + spring-graphql-test + test + + + org.springframework.security + spring-security-test + test + + + + + org.junit.jupiter + junit-jupiter + test + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + org.projectlombok + lombok + + + org.mapstruct + mapstruct-processor + ${org.mapstruct.version} + + + + + + + org.jacoco + jacoco-maven-plugin + + + + prepare-agent + + + + report + test + + report + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + false + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + \ No newline at end of file diff --git a/API/sendgrid.env b/API/sendgrid.env new file mode 100644 index 000000000..e34ddcc1f --- /dev/null +++ b/API/sendgrid.env @@ -0,0 +1 @@ +export SENDGRID_API_KEY='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' diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/RoutineFightsApplication.java b/API/src/main/java/es/iespuertodelacruz/routinefights/RoutineFightsApplication.java new file mode 100644 index 000000000..75d54ad30 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/RoutineFightsApplication.java @@ -0,0 +1,20 @@ +package es.iespuertodelacruz.routinefights; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +/** + * Main class + */ +@SpringBootApplication +public class RoutineFightsApplication { + + /** + * Main method + * + * @param args + */ + public static void main(String[] args) { + SpringApplication.run(RoutineFightsApplication.class, args); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/commons/ActivityCommons.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/commons/ActivityCommons.java new file mode 100644 index 000000000..6c6b4af03 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/commons/ActivityCommons.java @@ -0,0 +1,88 @@ +package es.iespuertodelacruz.routinefights.activity.commons; + +import java.time.LocalDateTime; + +import org.springframework.data.annotation.Transient; + +import es.iespuertodelacruz.routinefights.shared.utils.EntitiesTimestamps; + +public abstract class ActivityCommons extends EntitiesTimestamps { + private String name; + private String description; + private String image; + private String timeRate; + private Integer timesRequiered; + private Integer streak; + @Transient + private Integer timesRemaining; + + protected ActivityCommons(String name, String description, String image, String timeRate, Integer timesRequiered, + LocalDateTime createdAt, LocalDateTime updatedAt, LocalDateTime deletedAt) { + super(createdAt, updatedAt, deletedAt); + this.name = name; + this.description = description; + this.image = image; + this.timeRate = timeRate; + this.timesRequiered = timesRequiered; + + } + + protected ActivityCommons() { + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getImage() { + return this.image; + } + + public void setImage(String image) { + this.image = image; + } + + public String getTimeRate() { + return this.timeRate; + } + + public void setTimeRate(String timeRate) { + this.timeRate = timeRate; + } + + public Integer getTimesRequiered() { + return this.timesRequiered; + } + + public void setTimesRequiered(Integer timesRequiered) { + this.timesRequiered = timesRequiered; + } + + public Integer getStreak() { + return this.streak; + } + + public void setStreak(Integer streak) { + this.streak = streak; + } + + public Integer getTimesRemaining() { + return this.timesRemaining; + } + + public void setTimesRemaining(Integer timesRemaining) { + this.timesRemaining = timesRemaining; + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/commons/TimeRates.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/commons/TimeRates.java new file mode 100644 index 000000000..d03643fe7 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/commons/TimeRates.java @@ -0,0 +1,11 @@ +package es.iespuertodelacruz.routinefights.activity.commons; + +public abstract class TimeRates { + public static final String DAILY = "daily"; + public static final String WEEKLY = "weekly"; + public static final String MONTHLY = "monthly"; + public static final String YEARLY = "yearly"; + + private TimeRates() { + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/domain/Activity.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/domain/Activity.java new file mode 100644 index 000000000..5359af39e --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/domain/Activity.java @@ -0,0 +1,100 @@ +package es.iespuertodelacruz.routinefights.activity.domain; + +import java.time.LocalDateTime; + +import es.iespuertodelacruz.routinefights.activity.commons.ActivityCommons; +import es.iespuertodelacruz.routinefights.user.domain.User; + +import java.util.List; +import java.util.Objects; + +public class Activity extends ActivityCommons { + private String id; + private User creator; + private List participants; + + + public Activity(String id, String name, String description, String image, String timeRate, Integer timesRequiered, + LocalDateTime createdAt, LocalDateTime updatedAt, LocalDateTime deletedAt, User user, List participants) { + super(name, description, image, timeRate, timesRequiered, createdAt, updatedAt, deletedAt); + this.creator = user; + this.id = id; + this.participants = participants; + } + + public Activity() { + } + + public Activity(String id) { + this.id = id; + } + + public Activity(String id, User creator, List participants) { + this.id = id; + this.creator = creator; + this.participants = participants; + } + + public List getParticipants() { + return this.participants; + } + + public void setParticipants(List participants) { + this.participants = participants; + } + + public Activity creator(User creator) { + setCreator(creator); + return this; + } + + public Activity participants(List participants) { + setParticipants(participants); + return this; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public Activity id(String id) { + setId(id); + return this; + } + + public User getCreator() { + return this.creator; + } + + public void setCreator(User user) { + this.creator = user; + } + + @Override + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof Activity)) { + return false; + } + Activity activity = (Activity) o; + return Objects.equals(id, activity.id); + } + + @Override + public int hashCode() { + return Objects.hashCode(id); + } + + @Override + public String toString() { + return "{" + + " id='" + getId() + "'" + + "}"; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/domain/ports/primary/IActivityService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/domain/ports/primary/IActivityService.java new file mode 100644 index 000000000..85ff569ed --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/domain/ports/primary/IActivityService.java @@ -0,0 +1,25 @@ +package es.iespuertodelacruz.routinefights.activity.domain.ports.primary; + +import java.util.List; +import java.util.Set; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; + +public interface IActivityService { + Activity save(String name, String description, String image, String timeRate, Integer timesRequiered, String userID, + String categoryID); + + List getPagination(int page, int perPage); + List getPaginationNotSubscribed(int page, int perPage, String userID, String activityName); + + List getSubscribedActivities(String userID); + + List getSubscribedActivitiesWithStreak(String userID); + List getSubscribedActivitiesWithStreak(String userID, String activityName); + + Set findAllImages(); + + List findAll(); + + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/domain/ports/secondary/IActivityRepository.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/domain/ports/secondary/IActivityRepository.java new file mode 100644 index 000000000..8958b9e4b --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/domain/ports/secondary/IActivityRepository.java @@ -0,0 +1,27 @@ +package es.iespuertodelacruz.routinefights.activity.domain.ports.secondary; + +import java.util.List; +import java.util.Set; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; + +public interface IActivityRepository { + boolean userIsOnActivity(String userID, String activityID); + + Activity findById(String id); + + Activity save(Activity activity); + + List getPagination(int page, int perPage); + + List getSubscribedActivities(String userID); + + public List getSubscribedActivitiesWithStreak(String userID); + + List getPaginationNotSubscribed(int page, int perPage, String userID, String activityName); + List getSubscribedActivities(String userID, String activityName); + + Set findAllImages(); + + List findAll(); +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/domain/services/ActivityService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/domain/services/ActivityService.java new file mode 100644 index 000000000..f702796e3 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/domain/services/ActivityService.java @@ -0,0 +1,86 @@ +package es.iespuertodelacruz.routinefights.activity.domain.services; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +import org.springframework.stereotype.Service; + +import es.iespuertodelacruz.routinefights.activity.commons.TimeRates; +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.activity.domain.ports.primary.IActivityService; +import es.iespuertodelacruz.routinefights.activity.domain.ports.secondary.IActivityRepository; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.ports.secondary.IUserRepository; + +@Service +public class ActivityService implements IActivityService { + + private IActivityRepository activityRepository; + private IUserRepository userRepository; + + public ActivityService(IActivityRepository activityRepository, IUserRepository userRepository) { + this.userRepository = userRepository; + this.activityRepository = activityRepository; + } + + @Override + public Activity save(String name, String description, String image, String timeRate, Integer timesRequiered, + String userID, String categoryID) { + Activity activity = new Activity(); + activity.setName(name); + activity.setDescription(description); + activity.setImage(image); + if (timeRate.equals(TimeRates.DAILY) || timeRate.equals(TimeRates.WEEKLY) || timeRate.equals(TimeRates.MONTHLY) + || timeRate.equals(TimeRates.YEARLY)) { + activity.setTimeRate(timeRate); + } else { + throw new IllegalArgumentException("Time rate not valid, valid options: daily, weekly, monthly, yearly"); + } + activity.setTimesRequiered(timesRequiered); + + User user = userRepository.findById(userID); + activity.setCreator(user); + activity.setCreatedAt(LocalDateTime.now()); + + return activityRepository.save(activity); + } + + @Override + public List getPagination(int page, int perPage) { + return activityRepository.getPagination(page, perPage); + } + + @Override + public List getSubscribedActivities(String userID) { + return activityRepository.getSubscribedActivities(userID); + } + + @Override + public List getSubscribedActivitiesWithStreak(String userID) { + return activityRepository.getSubscribedActivitiesWithStreak(userID); + } + + @Override + public List getPaginationNotSubscribed(int page, int perPage, String userID, String activityName) { + return activityRepository.getPaginationNotSubscribed(page, perPage, userID, activityName); + } + + @Override + public List getSubscribedActivitiesWithStreak(String userID, String activityName) { + return activityRepository.getSubscribedActivities(userID, activityName); + } + + @Override + public Set findAllImages() { + return activityRepository.findAllImages(); + } + + + @Override + public List findAll() { + return activityRepository.findAll(); + } + + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/controllers/ActivityControllerV2.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/controllers/ActivityControllerV2.java new file mode 100644 index 000000000..7e5ac7a66 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/controllers/ActivityControllerV2.java @@ -0,0 +1,98 @@ +package es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.controllers; + +import java.util.List; + +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.MutationMapping; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.security.access.annotation.Secured; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.CrossOrigin; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.activity.domain.ports.primary.IActivityService; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.dtos.ActivityInputV2; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.dtos.ActivityOutputV2; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.dtos.ActivityOutputV2Streak; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.mappers.ActivityOutputV2Mapper; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.mappers.ActivityOutputV2StreakMapper; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.ports.primary.IUserService; + +@Controller +@CrossOrigin +public class ActivityControllerV2 { + private IActivityService activityService; + private ActivityOutputV2Mapper activityOutputV2Mapper; + private ActivityOutputV2StreakMapper activityOutputV2StreakMapper; + private IUserService userService; + + public ActivityControllerV2(IActivityService activityService, ActivityOutputV2Mapper activityOutputV2Mapper, + IUserService userService, ActivityOutputV2StreakMapper activityOutputV2StreakMapper) { + this.activityService = activityService; + this.activityOutputV2Mapper = activityOutputV2Mapper; + this.userService = userService; + this.activityOutputV2StreakMapper = activityOutputV2StreakMapper; + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @MutationMapping("createActivity") + public ActivityOutputV2 createActivity(@Argument ActivityInputV2 activityInput) { + + User user = userService.findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + + Activity activity = activityService.save(activityInput.name(), activityInput.description(), + activityInput.image(), + activityInput.timeRate(), activityInput.timesRequiered(), user.getId(), activityInput.categoryID()); + + return activityOutputV2Mapper.toDTO(activity); + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("paginationActivitiesV2") + public List paginationActivities(@Argument int page, @Argument int perPage) { + List activities = activityService.getPagination(page, perPage); + return activityOutputV2Mapper.toDTO(activities); + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("getSubscribedActivities") + public List getSubscribedActivities() { + User user = userService.findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + List activities = activityService.getSubscribedActivities(user.getId()); + return activityOutputV2Mapper.toDTO(activities); + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("getSubscribedActivitiesWithStreaks") + public List getSubscribedActivitiesWithStreaks() { + User user = userService.findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + List activities = activityService.getSubscribedActivitiesWithStreak(user.getId()); + return activityOutputV2StreakMapper.toDTO(activities); + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("paginationActivitiesNotSubscribed") + public List paginationActivitiesNotSubscribed(@Argument int page, @Argument int perPage, + @Argument String activityName) { + User user = userService.findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + List activities = activityService.getPaginationNotSubscribed(page, perPage, user.getId(), activityName); + return activityOutputV2Mapper.toDTO(activities); + } + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("getSubscribedActivitiesWithStreakByName") + public List getSubscribedActivitiesWithStreak(@Argument String activityName) { + User user = userService.findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + List activities = activityService.getSubscribedActivitiesWithStreak(user.getId(), activityName); + return activityOutputV2StreakMapper.toDTO(activities); + } + + @Secured({"ROLE_ADMIN" }) + @QueryMapping("findAllActivities") + public List findAllActivities() { + List activities = activityService.findAll(); + return activityOutputV2Mapper.toDTO(activities); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/dtos/ActivityInputV2.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/dtos/ActivityInputV2.java new file mode 100644 index 000000000..6e62ce9d2 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/dtos/ActivityInputV2.java @@ -0,0 +1,6 @@ +package es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.dtos; + +public record ActivityInputV2(String name, String description, String image, String timeRate, Integer timesRequiered, String categoryID) { + + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/dtos/ActivityOutputV2.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/dtos/ActivityOutputV2.java new file mode 100644 index 000000000..c7a765e4c --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/dtos/ActivityOutputV2.java @@ -0,0 +1,10 @@ +package es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.dtos; + +import java.time.LocalDateTime; + +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos.UserOutputDTOV2; + +public record ActivityOutputV2(String id, String name, String description, String image, UserOutputDTOV2 creator, + String timeRate, Integer timesRequiered, LocalDateTime createdAt) { + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/dtos/ActivityOutputV2Streak.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/dtos/ActivityOutputV2Streak.java new file mode 100644 index 000000000..61cfb0ae4 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/dtos/ActivityOutputV2Streak.java @@ -0,0 +1,11 @@ +package es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.dtos; + +import java.time.LocalDateTime; + +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos.UserOutputDTOV2; + + +public record ActivityOutputV2Streak(String id, String name, String description, String image, + String timeRate, Integer timesRequiered, LocalDateTime createdAt, Integer streak, UserOutputDTOV2 creator, Integer timesRemaining) { + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/mappers/ActivityOutputV2Mapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/mappers/ActivityOutputV2Mapper.java new file mode 100644 index 000000000..6d99c543a --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/mappers/ActivityOutputV2Mapper.java @@ -0,0 +1,20 @@ +package es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.mappers; + +import java.util.List; + +import org.mapstruct.Mapper; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.dtos.ActivityOutputV2; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.mappers.UserOutputV2Mapper; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.mappers.IUserEntityMapper; + +@Mapper(componentModel = "spring", uses = { UserOutputV2Mapper.class, IUserEntityMapper.class }) +public interface ActivityOutputV2Mapper { + + ActivityOutputV2 toDTO(Activity activity); + + + List toDTO(List activities); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/mappers/ActivityOutputV2StreakMapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/mappers/ActivityOutputV2StreakMapper.java new file mode 100644 index 000000000..96ea391e8 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/mappers/ActivityOutputV2StreakMapper.java @@ -0,0 +1,20 @@ +package es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.mappers; + +import java.util.List; + +import org.mapstruct.Mapper; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.dtos.ActivityOutputV2Streak; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.mappers.UserOutputV2Mapper; + +@Mapper(componentModel = "spring", + uses = { UserOutputV2Mapper.class }) +public interface ActivityOutputV2StreakMapper { + + ActivityOutputV2Streak toDTO(Activity activity); + + + List toDTO(List activities); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/entities/ActivityEntity.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/entities/ActivityEntity.java new file mode 100644 index 000000000..a6429c64b --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/entities/ActivityEntity.java @@ -0,0 +1,150 @@ +package es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities; + +import java.time.LocalDateTime; + +import org.springframework.data.neo4j.core.schema.GeneratedValue; +import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.Relationship; + +import es.iespuertodelacruz.routinefights.activity.commons.ActivityCommons; +import es.iespuertodelacruz.routinefights.category.infrastructure.adapters.secondary.entities.CategoryEntity; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.entities.CommunityEventEntity; +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.entities.PostEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; + +import java.util.List; +import java.util.Objects; + +@Node("Activity") +/** + * ActivityEntity + */ +public class ActivityEntity extends ActivityCommons { + @Id + @GeneratedValue() + private String id; + + @Relationship(type = "Belongs_To", direction = Relationship.Direction.OUTGOING) + private CategoryEntity category; + + @Relationship(type = "Related", direction = Relationship.Direction.INCOMING) + private List communityEvent; + + @Relationship(type = "Created", direction = Relationship.Direction.INCOMING) + private UserEntity creator; + + @Relationship(type = "Participated", direction = Relationship.Direction.INCOMING) + private List participants; + + @Relationship(type = "Related_To", direction = Relationship.Direction.INCOMING) + private List post; + + public ActivityEntity(String id, String name, String description, String image, String timeRate, + Integer timesRequiered, CategoryEntity category, List communityEvent, UserEntity user, + List post, LocalDateTime createdAt, LocalDateTime updatedAt, LocalDateTime deletedAt, List participants) { + super(name, description, image, timeRate, timesRequiered, createdAt, updatedAt, deletedAt); + this.id = id; + + this.category = category; + this.communityEvent = communityEvent; + this.creator = user; + this.post = post; + this.participants = participants; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public CategoryEntity getCategory() { + return this.category; + } + + public void setCategory(CategoryEntity category) { + this.category = category; + } + + public List getCommunityEvent() { + return this.communityEvent; + } + + public void setCommunityEvent(List communityEvent) { + this.communityEvent = communityEvent; + } + + public ActivityEntity(String id, CategoryEntity category, List communityEvent, UserEntity creator, List participants, List post) { + this.id = id; + this.category = category; + this.communityEvent = communityEvent; + this.creator = creator; + this.participants = participants; + this.post = post; + } + + public List getParticipants() { + return this.participants; + } + + public void setParticipants(List participants) { + this.participants = participants; + } + + + + public UserEntity getCreator() { + return this.creator; + } + + public void setCreator(UserEntity user) { + this.creator = user; + } + + public List getPost() { + return this.post; + } + + public void setPost(List post) { + this.post = post; + } + + @Override + public String toString() { + return "{" + + " id='" + getId() + "'" + + ", name='" + getName() + "'" + + ", description='" + getDescription() + "'" + + ", image='" + getImage() + "'" + + ", timeRate='" + getTimeRate() + "'" + + ", timesRequiered='" + getTimesRequiered() + "'" + + ", category='" + getCategory() + "'" + + ", communityEvent='" + getCommunityEvent() + "'" + + ", user='" + getCreator() + "'" + + ", post='" + getPost() + "'" + + "}"; + } + + @Override + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof ActivityEntity)) { + return false; + } + ActivityEntity activityEntity = (ActivityEntity) o; + return Objects.equals(id, activityEntity.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + public ActivityEntity() { + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/mappers/ActivityEntityMapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/mappers/ActivityEntityMapper.java new file mode 100644 index 000000000..c84ffe1d8 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/mappers/ActivityEntityMapper.java @@ -0,0 +1,22 @@ +package es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.mappers; + +import java.util.List; + +import org.mapstruct.Mapper; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities.ActivityEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.mappers.IUserEntityMapper; + +@Mapper(componentModel = "spring", uses = { IUserEntityMapper.class }) +public interface ActivityEntityMapper { + + Activity toDomain(ActivityEntity activityEntity); + + ActivityEntity toEntity(Activity activity); + + List toDomain(List activityEntities); + + List toEntity(List activities); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/repositories/IActivityEntityRepository.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/repositories/IActivityEntityRepository.java new file mode 100644 index 000000000..00c906a83 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/repositories/IActivityEntityRepository.java @@ -0,0 +1,112 @@ +package es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.repositories; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; +import java.util.Set; + +import org.springframework.data.neo4j.repository.Neo4jRepository; +import org.springframework.data.neo4j.repository.query.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.lang.NonNull; +import org.springframework.stereotype.Service; + +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities.ActivityEntity; + +@Service +public interface IActivityEntityRepository extends Neo4jRepository { + @Query(""" + MATCH (a:Activity)<-[r:Participated]-(u:User) + WHERE elementId(a) = $activityID AND elementId(u) = $userID + RETURN COUNT(*) > 0 + """) + boolean userIsOnActivity(@Param("userID") String userID, @Param("activityID") String activityID); + + @NonNull + Optional findById(@NonNull String id); + + @Query(""" + MATCH (a:Activity)<-[c:Created]-(u:User) + RETURN a,c,u + SKIP $offset LIMIT $limit + """) + List getPagination(@Param("offset") int offset, @Param("limit") int limit); + + @Query(""" + MATCH (x:User) + WHERE elementId(x) = $userID + MATCH (a:Activity)<-[c:Created]-(u:User) + WHERE NOT (x)-[:Participated]->(a) AND lower(a.name) CONTAINS lower($activityName) + RETURN a,c,u + SKIP $offset LIMIT $limit + """) + List getPaginationNotSubscribed(@Param("offset") int offset, @Param("limit") int limit, + @Param("userID") String userID, @Param("activityName") String activityName); + + @Query(""" + MATCH (u:User) + WHERE elementId(u) = $userID + MATCH (cc:User)-[c:Created]->(a:Activity) + WHERE NOT EXISTS { (u)-[:Participated]->(a) } + RETURN a, cc, c + """) + List getSubscribedActivities(@Param("userID") String userID); + + @Query(""" + MATCH (u:User)-[:Participated]->(a:Activity)<-[:Created]-(u2:User) + WHERE elementId(u) = $userID + OPTIONAL MATCH (a)<-[:`Related-To`]-(p:Post) + WITH u, a, u2, p + ORDER BY p.createdAt DESC + WITH u, a, u2, collect(p)[0] AS latestPost + SET a.streak = coalesce(latestPost.streak, 0) + RETURN DISTINCT a, u2 AS c, u; + + """) + List getSubscribedActivitiesWithStreak(@Param("userID") String userID); + + @Query(""" + MATCH (u:User)-[:Participated]->(a:Activity)<-[c:Created]-(u2:User) + WHERE elementId(u) = $userID + AND lower(a.name) CONTAINS lower($activityName) + OPTIONAL MATCH (a)<-[:`Related-To`]-(p:Post) + WITH a, c, u, max(coalesce(p.streak, 0)) AS maxStreak + SET a.streak = maxStreak + RETURN DISTINCT a, c, u; + + """) + List getSubscribedActivitiesWithStreak(@Param("userID") String userID, + @Param("activityName") String activityName); + + @Query(""" + MATCH (a:Activity) + WHERE elementId(a) = $activityID + OPTIONAL MATCH (u:User)-[:Posted]->(p:Post)-[:`Related-To`]->(a) + WHERE p.createdAt >= $startDate + AND p.createdAt <= $endDate + AND elementId(u) = $userID + WITH a, COUNT(p) AS postCount + RETURN a.timesRequiered - postCount AS remainingPosts + """) + Integer getTimesRemaining(@Param("activityID") String activityID, + @Param("startDate") LocalDateTime startDate, @Param("endDate") LocalDateTime endDate, + @Param("userID") String userID); + + @Query(""" + MATCH (a:Activity) + RETURN a.image + """) + Set findAllImages(); + + @Query(""" + MATCH (u:User) + WHERE elementId(u) = $userID + CREATE (a:Activity {name: $name, description: $description, image: $image, timeRate: $timeRate, timesRequiered: $timesRequiered, createdAt: $createdAt}) + CREATE (u)-[c:Created]->(a) + RETURN a,u,c + """) + ActivityEntity create(@Param("name") String name, @Param("description") String description, + @Param("image") String image, @Param("timeRate") String timeRate, + @Param("timesRequiered") Integer timesRequiered, + @Param("userID") String userID, @Param("createdAt") LocalDateTime createdAt); +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/services/ActivityEntityService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/services/ActivityEntityService.java new file mode 100644 index 000000000..5affdf0cd --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/services/ActivityEntityService.java @@ -0,0 +1,102 @@ +package es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.services; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; +import java.util.Set; + +import org.springframework.stereotype.Service; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.activity.domain.ports.secondary.IActivityRepository; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities.ActivityEntity; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.mappers.ActivityEntityMapper; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.repositories.IActivityEntityRepository; +import es.iespuertodelacruz.routinefights.activity.infrastructure.exceptions.ActivityNotFoundExcetion; +import es.iespuertodelacruz.routinefights.shared.utils.TimeRatesDate; + +@Service +public class ActivityEntityService implements IActivityRepository { + private IActivityEntityRepository activityEntityRepository; + private ActivityEntityMapper activityEntityMapper; + private TimeRatesDate timeRatesDate; + + public ActivityEntityService(IActivityEntityRepository activityEntityRepository, + ActivityEntityMapper activityEntityMapper) { + this.activityEntityRepository = activityEntityRepository; + this.activityEntityMapper = activityEntityMapper; + this.timeRatesDate = new TimeRatesDate(); + } + + @Override + public boolean userIsOnActivity(String userID, String activityID) { + return activityEntityRepository.userIsOnActivity(userID, activityID); + } + + @Override + public Activity findById(String id) { + Optional activityEntity = activityEntityRepository.findById(id); + if (activityEntity.isPresent()) { + return activityEntityMapper.toDomain(activityEntity.get()); + } + throw new ActivityNotFoundExcetion("Activity not found"); + } + + @Override + public Activity save(Activity activity) { + + return activityEntityMapper.toDomain(activityEntityRepository.create(activity.getName(), + activity.getDescription(), activity.getImage(), activity.getTimeRate(), + activity.getTimesRequiered(), activity.getCreator().getId(), LocalDateTime.now())); + } + + @Override + public List getPagination(int page, int perPage) { + int offset = (page - 1) * perPage; + + return activityEntityMapper.toDomain(activityEntityRepository.getPagination(offset, perPage)); + } + + @Override + public List getSubscribedActivities(String userID) { + return activityEntityMapper.toDomain(activityEntityRepository.getSubscribedActivities(userID)); + } + + @Override + public List getSubscribedActivitiesWithStreak(String userID) { + return activityEntityMapper.toDomain(activityEntityRepository.getSubscribedActivitiesWithStreak(userID)); + } + + @Override + public List getPaginationNotSubscribed(int page, int perPage, String userID, String activityName) { + int offset = (page - 1) * perPage; + + return activityEntityMapper + .toDomain(activityEntityRepository.getPaginationNotSubscribed(offset, perPage, userID, activityName)); + } + + @Override + public List getSubscribedActivities(String userID, String activityName) { + List subscribedActivities = activityEntityRepository.getSubscribedActivitiesWithStreak(userID, + activityName); + subscribedActivities.forEach(activity -> { + + LocalDateTime[] dates = timeRatesDate.getActualIterationDates(activity.getTimeRate()); + + activity.setTimesRemaining( + activityEntityRepository.getTimesRemaining(activity.getId(), dates[0], dates[1], userID)); + }); + return activityEntityMapper.toDomain(subscribedActivities); + } + + @Override + public Set findAllImages() { + return activityEntityRepository.findAllImages(); + } + + @Override + public List findAll() { + return activityEntityMapper.toDomain(activityEntityRepository.findAll()); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/exceptions/ActivityNotFoundExcetion.java b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/exceptions/ActivityNotFoundExcetion.java new file mode 100644 index 000000000..a1d356199 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/activity/infrastructure/exceptions/ActivityNotFoundExcetion.java @@ -0,0 +1,8 @@ +package es.iespuertodelacruz.routinefights.activity.infrastructure.exceptions; + +public class ActivityNotFoundExcetion extends RuntimeException { + public ActivityNotFoundExcetion(String message) { + super(message); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/badge/commons/BadgeCommons.java b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/commons/BadgeCommons.java new file mode 100644 index 000000000..173cbd9ae --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/commons/BadgeCommons.java @@ -0,0 +1,27 @@ +package es.iespuertodelacruz.routinefights.badge.commons; + +public class BadgeCommons { + private String image; + private Integer level; + + public BadgeCommons() { + } + public BadgeCommons(String image, Integer level) { + this.image = image; + this.level = level; + } + public String getImage() { + return this.image; + } + public void setImage(String image) { + this.image = image; + } + public Integer getLevel() { + return this.level; + } + public void setLevel(Integer level) { + this.level = level; + } + + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/badge/domain/Badge.java b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/domain/Badge.java new file mode 100644 index 000000000..16c250f87 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/domain/Badge.java @@ -0,0 +1,71 @@ +package es.iespuertodelacruz.routinefights.badge.domain; + +import java.util.List; + +import es.iespuertodelacruz.routinefights.badge.commons.BadgeCommons; +import es.iespuertodelacruz.routinefights.community_event.domain.CommunityEvent; +import es.iespuertodelacruz.routinefights.user.domain.User; + +public class Badge extends BadgeCommons { + private String id; + private List users; + private CommunityEvent communityEvent; + + public Badge() { + } + + public Badge(String id, String image, Integer level, List users, CommunityEvent communityEvent) { + super(image, level); + this.id = id; + this.users = users; + this.communityEvent = communityEvent; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public List getUsers() { + return this.users; + } + + public void setUsers(List users) { + this.users = users; + } + + public CommunityEvent getCommunityEvent() { + return this.communityEvent; + } + + public void setCommunityEvent(CommunityEvent communityEvent) { + this.communityEvent = communityEvent; + } + + @Override + public String toString() { + return "Badge{" + + "id='" + id + '\'' + + ", image='" + getImage() + '\'' + + ", level='" + getLevel() + '\'' + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof Badge badge)) + return false; + return id.equals(badge.id); + } + + @Override + public int hashCode() { + return id.hashCode(); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/badge/domain/ports/primary/IBadgeService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/domain/ports/primary/IBadgeService.java new file mode 100644 index 000000000..de5683554 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/domain/ports/primary/IBadgeService.java @@ -0,0 +1,22 @@ +package es.iespuertodelacruz.routinefights.badge.domain.ports.primary; + +import java.util.List; + +import es.iespuertodelacruz.routinefights.badge.domain.Badge; + +public interface IBadgeService { + + public Badge createBadge(String image, Integer level, String communityEventId); + + public Badge findById(String id); + + public List findByCommunityEvent(String communityEventId); + + public ListfindByUserEmail(String name); + + public Boolean addBadgeToUser(String userId, String badgeId); + + public List addBadgeToUser(List userId, String badgeId); + + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/badge/domain/ports/secondary/IBadgeRepository.java b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/domain/ports/secondary/IBadgeRepository.java new file mode 100644 index 000000000..558a63777 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/domain/ports/secondary/IBadgeRepository.java @@ -0,0 +1,21 @@ +package es.iespuertodelacruz.routinefights.badge.domain.ports.secondary; + +import java.util.List; + +import es.iespuertodelacruz.routinefights.badge.domain.Badge; + +public interface IBadgeRepository { + + Badge save(Badge badge); + + Badge findById(String id); + + List findByCommunityEvent(String communityEventId); + + List findByUserEmail(String name); + + Boolean addBadgeToUser(String userEmail, String badgeId); + + List addBadgeToUser(List userEmail, String badgeId); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/badge/domain/services/BadgeService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/domain/services/BadgeService.java new file mode 100644 index 000000000..8178b7611 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/domain/services/BadgeService.java @@ -0,0 +1,64 @@ +package es.iespuertodelacruz.routinefights.badge.domain.services; + +import java.util.List; + +import org.springframework.stereotype.Service; + +import es.iespuertodelacruz.routinefights.badge.domain.Badge; +import es.iespuertodelacruz.routinefights.badge.domain.ports.primary.IBadgeService; +import es.iespuertodelacruz.routinefights.badge.domain.ports.secondary.IBadgeRepository; +import es.iespuertodelacruz.routinefights.community_event.domain.CommunityEvent; +import es.iespuertodelacruz.routinefights.community_event.domain.ports.secondary.ICommunityEventRepository; + +@Service +public class BadgeService implements IBadgeService { + private IBadgeRepository badgeRepository; + private ICommunityEventRepository communityEventRepository; + + public BadgeService(IBadgeRepository badgeRepository, + ICommunityEventRepository communityEventRepository) { + this.badgeRepository = badgeRepository; + this.communityEventRepository = communityEventRepository; + } + + @Override + public Badge createBadge(String image, Integer level, String communityEventId) { + Badge badge = new Badge(); + badge.setImage(image); + badge.setLevel(level); + CommunityEvent communityEvent = communityEventRepository.findById(communityEventId); + if (communityEvent == null) { + throw new IllegalArgumentException("Community event not found"); + } + badge.setCommunityEvent(communityEvent); + return badgeRepository.save(badge); + } + + @Override + public Badge findById(String id) { + return badgeRepository.findById(id); + } + + @Override + public List findByCommunityEvent(String communityEventId) { + return badgeRepository.findByCommunityEvent(communityEventId); + } + + @Override + public List findByUserEmail(String name) { + return badgeRepository.findByUserEmail(name); + } + + @Override + public Boolean addBadgeToUser(String userId, String badgeId) { + + return badgeRepository.addBadgeToUser(userId, badgeId); + } + + @Override + public List addBadgeToUser(List userId, String badgeId) { + + return badgeRepository.addBadgeToUser(userId, badgeId); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v2/controllers/BadgeControllerV2.java b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v2/controllers/BadgeControllerV2.java new file mode 100644 index 000000000..e2edd1f8a --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v2/controllers/BadgeControllerV2.java @@ -0,0 +1,45 @@ +package es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.primary.v2.controllers; + +import java.util.List; + +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.security.access.annotation.Secured; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.CrossOrigin; + +import es.iespuertodelacruz.routinefights.badge.domain.ports.primary.IBadgeService; +import es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.primary.v2.dtos.BadgeV2Output; +import es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.primary.v2.mappers.BadgeV2OutputMapper; + +@Controller +@CrossOrigin +public class BadgeControllerV2 { + private IBadgeService badgeService; + private BadgeV2OutputMapper badgeV2OutputMapper; + + public BadgeControllerV2(IBadgeService badgeService, BadgeV2OutputMapper badgeV2OutputMapper) { + this.badgeService = badgeService; + this.badgeV2OutputMapper = badgeV2OutputMapper; + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("getOwnBadges") + public List getOwnBadges() { + return badgeV2OutputMapper.toDTO(badgeService.findByUserEmail(SecurityContextHolder.getContext() + .getAuthentication().getName())); + } + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("getBadgesByEmail") + public List getBadgesByUserEmail(@Argument String email) { + return badgeV2OutputMapper.toDTO(badgeService.findByUserEmail(email)); + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("findBadgeByCommunityEvent") + public List getBadgesCommunityEvent(@Argument String communityEventId) { + return badgeV2OutputMapper.toDTO(badgeService.findByCommunityEvent(communityEventId)); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v2/dtos/BadgeV2Output.java b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v2/dtos/BadgeV2Output.java new file mode 100644 index 000000000..d734b8195 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v2/dtos/BadgeV2Output.java @@ -0,0 +1,7 @@ +package es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.primary.v2.dtos; + +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.primary.v2.dtos.CommunityEventOutputV2; + +public record BadgeV2Output(String id,String image, Integer level, CommunityEventOutputV2 communityEvent) { + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v2/mappers/BadgeV2OutputMapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v2/mappers/BadgeV2OutputMapper.java new file mode 100644 index 000000000..4058b39cf --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v2/mappers/BadgeV2OutputMapper.java @@ -0,0 +1,18 @@ +package es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.primary.v2.mappers; + +import java.util.List; + +import org.mapstruct.Mapper; + +import es.iespuertodelacruz.routinefights.badge.domain.Badge; +import es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.primary.v2.dtos.BadgeV2Output; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.primary.v2.mappers.CommunityEventOutputV2Mapper; + +@Mapper(componentModel = "spring", uses = { CommunityEventOutputV2Mapper.class }) +public interface BadgeV2OutputMapper { + + public BadgeV2Output toDTO(Badge badge); + + public List toDTO(List badge); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v3/controllers/BadgeControllerV3.java b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v3/controllers/BadgeControllerV3.java new file mode 100644 index 000000000..f6095ade1 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v3/controllers/BadgeControllerV3.java @@ -0,0 +1,53 @@ +package es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.primary.v3.controllers; + +import java.util.List; + +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.MutationMapping; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.security.access.annotation.Secured; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.CrossOrigin; + +import es.iespuertodelacruz.routinefights.badge.domain.ports.primary.IBadgeService; +import es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.primary.v3.dtos.BadgeV3Output; +import es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.primary.v3.mappers.BadgeV3OutputMapper; + +@Controller +@CrossOrigin +public class BadgeControllerV3 { + private IBadgeService badgeService; + private BadgeV3OutputMapper badgeV3OutputMapper; + + public BadgeControllerV3(IBadgeService badgeService, BadgeV3OutputMapper badgeV3OutputMapper) { + this.badgeService = badgeService; + this.badgeV3OutputMapper = badgeV3OutputMapper; + } + + @Secured("ROLE_ADMIN") + @MutationMapping("createBadge") + public BadgeV3Output createBadge(@Argument String image, @Argument Integer level, + @Argument String communityEventId) { + return badgeV3OutputMapper.toDTO( + badgeService.createBadge(image, level, communityEventId)); + } + + @Secured("ROLE_ADMIN") + @QueryMapping("findBadgeById") + public BadgeV3Output findById(@Argument String id) { + return badgeV3OutputMapper.toDTO(badgeService.findById(id)); + } + + + @Secured("ROLE_ADMIN" ) + @MutationMapping("addBadgeToUser") + public Boolean addBadgeToUser(@Argument String userEmail, @Argument String badgeId) { + return badgeService.addBadgeToUser(userEmail, badgeId); + } + @Secured("ROLE_ADMIN") + @MutationMapping("addBadgeToUsers") + public List addBadgeToUsers(@Argument List userEmail, @Argument String badgeId) { + return badgeService.addBadgeToUser(userEmail, badgeId); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v3/dtos/BadgeV3Output.java b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v3/dtos/BadgeV3Output.java new file mode 100644 index 000000000..d980c075f --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v3/dtos/BadgeV3Output.java @@ -0,0 +1,7 @@ +package es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.primary.v3.dtos; + +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.primary.v3.dtos.CommunityEventOutputV3; + +public record BadgeV3Output(String id, String image, Integer level, CommunityEventOutputV3 communityEvent) { + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v3/mappers/BadgeV3OutputMapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v3/mappers/BadgeV3OutputMapper.java new file mode 100644 index 000000000..165d33133 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/primary/v3/mappers/BadgeV3OutputMapper.java @@ -0,0 +1,17 @@ +package es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.primary.v3.mappers; + +import java.util.List; + +import org.mapstruct.Mapper; + +import es.iespuertodelacruz.routinefights.badge.domain.Badge; +import es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.primary.v3.dtos.BadgeV3Output; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.primary.v3.mappers.ICommunityEventOutputV3Mapper; + +@Mapper(componentModel = "spring", uses = { ICommunityEventOutputV3Mapper.class }) +public interface BadgeV3OutputMapper { + + public BadgeV3Output toDTO(Badge badge); + public List toDTO(List badges); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/secondary/entities/BadgeEntity.java b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/secondary/entities/BadgeEntity.java new file mode 100644 index 000000000..90329b94a --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/secondary/entities/BadgeEntity.java @@ -0,0 +1,115 @@ +package es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.secondary.entities; + +import org.springframework.data.neo4j.core.schema.GeneratedValue; +import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.Relationship; + +import es.iespuertodelacruz.routinefights.badge.commons.BadgeCommons; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.entities.CommunityEventEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; + +import java.util.List; +import java.util.Objects; + +@Node("Badge") +/** + * BadgeEntity + */ +public class BadgeEntity extends BadgeCommons { + @Id + @GeneratedValue + private String id; + @Relationship(type = "Has_Badge", direction = Relationship.Direction.INCOMING) + private List users; + + @Relationship(type = "Associated_With", direction = Relationship.Direction.OUTGOING) + private CommunityEventEntity communityEvent; + + public BadgeEntity() { + } + + public BadgeEntity(String id, String image, Integer level, List users, + CommunityEventEntity communityEvent) { + super(image, level); + this.id = id; + this.users = users; + this.communityEvent = communityEvent; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public List getUsers() { + return this.users; + } + + public void setUsers(List users) { + this.users = users; + } + + public CommunityEventEntity getCommunityEvent() { + return this.communityEvent; + } + + public void setCommunityEvent(CommunityEventEntity communityEvent) { + this.communityEvent = communityEvent; + } + + public BadgeEntity id(String id) { + setId(id); + return this; + } + + + public BadgeEntity users(List user) { + setUsers(user); + return this; + } + + public BadgeEntity communityEvent(CommunityEventEntity communityEvent) { + setCommunityEvent(communityEvent); + return this; + } + public BadgeEntity image(String image) { + setImage(image); + return this; + } + public BadgeEntity level(Integer level) { + setLevel(level); + return this; + } + + @Override + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof BadgeEntity)) { + return false; + } + BadgeEntity badgeEntity = (BadgeEntity) o; + return Objects.equals(id, badgeEntity.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "{" + + " id='" + getId() + "'" + + ", image='" + getImage() + "'" + + ", level='" + getLevel() + "'" + + ", user='" + getUsers() + "'" + + ", communityEvent='" + getCommunityEvent() + "'" + + "}"; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/secondary/mappers/BadgeEntityMapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/secondary/mappers/BadgeEntityMapper.java new file mode 100644 index 000000000..b194b9d28 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/secondary/mappers/BadgeEntityMapper.java @@ -0,0 +1,21 @@ +package es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.secondary.mappers; + +import java.util.List; + +import org.mapstruct.Mapper; + +import es.iespuertodelacruz.routinefights.badge.domain.Badge; +import es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.secondary.entities.BadgeEntity; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.mappers.CommunityEventEntityMapper; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.mappers.IUserEntityMapper; + +@Mapper(componentModel = "spring", uses = { CommunityEventEntityMapper.class,IUserEntityMapper.class }) +public interface BadgeEntityMapper { + + public BadgeEntity toEntity(Badge badge); + public Badge toDomain(BadgeEntity badgeEntity); + + public List toEntity(List badges); + public List toDomain(List badgeEntities); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/secondary/repositories/IBadgeEntityRepository.java b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/secondary/repositories/IBadgeEntityRepository.java new file mode 100644 index 000000000..580d9e8e5 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/secondary/repositories/IBadgeEntityRepository.java @@ -0,0 +1,30 @@ +package es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.secondary.repositories; + +import java.util.List; + +import org.springframework.data.neo4j.repository.Neo4jRepository; +import org.springframework.data.neo4j.repository.query.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.secondary.entities.BadgeEntity; + +@Repository +public interface IBadgeEntityRepository extends Neo4jRepository { + + @Query("MATCH (b:Badge)-[r:Associated_With]->(c:CommunityEvent) WHERE elementId(c) = $communityEventId RETURN b,r,c") + List findByCommunityEventId(@Param("communityEventId") String communityEventId); + + @Query("MATCH (u:User {email:$email})-[r:Has_Badge]->(b:Badge)-[a:Associated_With]->(c:CommunityEvent) RETURN b,r,u,a,c") + List findByUserEmail(@Param("email") String email); + + @Query("MATCH (u:User {email:$userEmail}) MATCH (b:Badge) WHERE elementId(b) = $badgeId MERGE (u)-[r:Has_Badge]->(b) RETURN exists((u)-[:Has_Badge]->(b))") + Boolean addBadgeToUser(@Param("userEmail") String userEmail, @Param("badgeId") String badgeId); + + @Query("UNWIND $userEmails AS userEmail MATCH (u:User{email:userEmail}) MATCH (b:Badge) WHERE elementId(b) = $badgeId MERGE (u)-[r:Has_Badge]->(b) RETURN exists((u)-[:Has_Badge]->(b))") + List addBadgeToUser(@Param("userEmails") List userEmail, @Param("badgeId") String badgeId); + + @Query("MATCH (c:CommunityEvent) WHERE elementId(c) = $communityEventId CREATE (b:Badge {image: $image, level: $level})-[r:Associated_With]->(c) RETURN b,r,c") + BadgeEntity create(@Param("image") String image, @Param("level") Integer level, @Param("communityEventId") String communityEventId); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/secondary/services/BadgeEntityService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/secondary/services/BadgeEntityService.java new file mode 100644 index 000000000..fa060ad41 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/secondary/services/BadgeEntityService.java @@ -0,0 +1,54 @@ +package es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.secondary.services; + +import java.util.List; + +import org.springframework.stereotype.Service; + +import es.iespuertodelacruz.routinefights.badge.domain.Badge; +import es.iespuertodelacruz.routinefights.badge.domain.ports.secondary.IBadgeRepository; +import es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.secondary.mappers.BadgeEntityMapper; +import es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.secondary.repositories.IBadgeEntityRepository; + +@Service +public class BadgeEntityService implements IBadgeRepository { + private IBadgeEntityRepository badgeEntityRepository; + private BadgeEntityMapper badgeEntityMapper; + + public BadgeEntityService(IBadgeEntityRepository badgeEntityRepository, + BadgeEntityMapper badgeEntityMapper) { + this.badgeEntityRepository = badgeEntityRepository; + this.badgeEntityMapper = badgeEntityMapper; + } + + @Override + public Badge save(Badge badge) { + + return badgeEntityMapper.toDomain(badgeEntityRepository.create(badge.getImage(), badge.getLevel(),badge.getCommunityEvent().getId())); + } + + @Override + public Badge findById(String id) { + return badgeEntityMapper.toDomain(badgeEntityRepository.findById(id).orElse(null)); + } + + @Override + public List findByCommunityEvent(String communityEventId) { + return badgeEntityMapper.toDomain(badgeEntityRepository.findByCommunityEventId(communityEventId)); + + } + + @Override + public List findByUserEmail(String name) { + return badgeEntityMapper.toDomain(badgeEntityRepository.findByUserEmail(name)); + } + + @Override + public Boolean addBadgeToUser(String userEmail, String badgeId) { + return badgeEntityRepository.addBadgeToUser(userEmail, badgeId); + } + @Override + public List addBadgeToUser(List userEmail, String badgeId) { + return badgeEntityRepository.addBadgeToUser(userEmail, badgeId); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/category/infrastructure/adapters/secondary/entities/CategoryEntity.java b/API/src/main/java/es/iespuertodelacruz/routinefights/category/infrastructure/adapters/secondary/entities/CategoryEntity.java new file mode 100644 index 000000000..91dd7906d --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/category/infrastructure/adapters/secondary/entities/CategoryEntity.java @@ -0,0 +1,99 @@ +package es.iespuertodelacruz.routinefights.category.infrastructure.adapters.secondary.entities; + +import org.springframework.data.neo4j.core.schema.GeneratedValue; +import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.Relationship; + +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities.ActivityEntity; + +import java.util.List; +import java.util.Objects; + +@Node("Category") +/** + * CategoryEntity + */ +public class CategoryEntity { + @Id + @GeneratedValue + private String id; + private String name; + + @Relationship(type = "Belongs_To", direction = Relationship.Direction.INCOMING) + private List activities; + + public CategoryEntity() { + } + + public CategoryEntity(String id, String name, List activities) { + this.id = id; + this.name = name; + this.activities = activities; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public List getActivities() { + return this.activities; + } + + public void setActivity(List activity) { + this.activities = activity; + } + + public CategoryEntity id(String id) { + setId(id); + return this; + } + + public CategoryEntity name(String name) { + setName(name); + return this; + } + + public CategoryEntity activity(List activity) { + setActivity(activity); + return this; + } + + @Override + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof CategoryEntity)) { + return false; + } + CategoryEntity categoryEntity = (CategoryEntity) o; + return Objects.equals(id, categoryEntity.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "{" + + " id='" + getId() + "'" + + ", name='" + getName() + "'" + + ", activity='" + getActivities() + "'" + + "}"; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/class_creator_slicer.sh b/API/src/main/java/es/iespuertodelacruz/routinefights/class_creator_slicer.sh new file mode 100755 index 000000000..93f291144 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/class_creator_slicer.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# Author: JonayKB +if [ "$#" -lt 1 ]; then + echo "Use: $0 [ ...]" + exit 1 +fi + +# Shared + +if [ ! -d "shared" ]; then + mkdir -p shared/config + mkdir -p shared/controllers + mkdir -p shared/dto + mkdir -p shared/security + mkdir -p shared/tasks + mkdir -p shared/utils + echo "Shared created." +else + echo "Shared already exists" +fi +for CLASS_NAME in "$@" +do + + # Infrastructure + + mkdir -p "$CLASS_NAME/infrastructure/adapters/primary/v2/controllers" + mkdir -p "$CLASS_NAME/infrastructure/adapters/primary/v3/controllers" + mkdir -p "$CLASS_NAME/infrastructure/adapters/primary/v2/dtos" + mkdir -p "$CLASS_NAME/infrastructure/adapters/primary/v3/dtos" + mkdir -p "$CLASS_NAME/infrastructure/adapters/secondary/repositories" + mkdir -p "$CLASS_NAME/infrastructure/adapters/secondary/mappers" + mkdir -p "$CLASS_NAME/infrastructure/adapters/secondary/services" + mkdir -p "$CLASS_NAME/infrastructure/adapters/secondary/entities" + + # Domain + + mkdir -p "$CLASS_NAME/domain/ports/primary" + mkdir -p "$CLASS_NAME/domain/ports/secondary" + mkdir -p "$CLASS_NAME/domain/services" + + echo "Class structure created: $CLASS_NAME" +done diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/comment/domain/Comment.java b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/domain/Comment.java new file mode 100644 index 000000000..43d457397 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/domain/Comment.java @@ -0,0 +1,102 @@ +package es.iespuertodelacruz.routinefights.comment.domain; + +import java.time.LocalDateTime; +import java.util.Objects; + +import es.iespuertodelacruz.routinefights.post.domain.Post; +import es.iespuertodelacruz.routinefights.shared.utils.EntitiesTimestamps; +import es.iespuertodelacruz.routinefights.user.domain.User; + +public class Comment extends EntitiesTimestamps { + private String id; + private String message; + private Post post; + private User user; + private Comment replingComment; + + public Comment() { + } + + public Comment(String id) { + this.id = id; + } + + public Comment(String id, String message, LocalDateTime createdAt, LocalDateTime updatedAt, + LocalDateTime deletedAt, Post post, User user, Comment comment) { + super(createdAt, updatedAt, deletedAt); + this.id = id; + this.message = message; + this.post = post; + this.user = user; + this.replingComment = comment; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Post getPost() { + return post; + } + + public void setPost(Post post) { + this.post = post; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public Comment getReplingComment() { + return replingComment; + } + + public void setReplingComment(Comment comment) { + this.replingComment = comment; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof Comment)) + return false; + Comment comment1 = (Comment) o; + return Objects.equals(id, comment1.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "Comment{" + + "id='" + id + '\'' + + ", message='" + message + '\'' + + ", createdAt=" + getCreatedAt() + + ", updatedAt=" + getUpdatedAt() + + ", deletedAt=" + getDeletedAt() + + ", post=" + post + + ", user=" + user + + ", comment=" + replingComment + + '}'; + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/comment/domain/ports/primary/ICommentService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/domain/ports/primary/ICommentService.java new file mode 100644 index 000000000..d4989d386 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/domain/ports/primary/ICommentService.java @@ -0,0 +1,14 @@ +package es.iespuertodelacruz.routinefights.comment.domain.ports.primary; + + +import java.util.List; + +import es.iespuertodelacruz.routinefights.comment.domain.Comment; +import es.iespuertodelacruz.routinefights.user.domain.User; + +public interface ICommentService { + + Comment save(String message, User user, String postID, String replingID); + List findByPostID(String postID); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/comment/domain/ports/secondary/ICommentRepository.java b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/domain/ports/secondary/ICommentRepository.java new file mode 100644 index 000000000..f3aa49aa1 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/domain/ports/secondary/ICommentRepository.java @@ -0,0 +1,15 @@ +package es.iespuertodelacruz.routinefights.comment.domain.ports.secondary; + +import java.time.LocalDateTime; +import java.util.List; + +import es.iespuertodelacruz.routinefights.comment.domain.Comment; + +public interface ICommentRepository { + List findByPostID(String postID); + + Comment findById(String commentID); + + Comment comment(String message, LocalDateTime createdAt, String userID, String postID); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/comment/domain/services/CommentService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/domain/services/CommentService.java new file mode 100644 index 000000000..05972a818 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/domain/services/CommentService.java @@ -0,0 +1,52 @@ +package es.iespuertodelacruz.routinefights.comment.domain.services; + +import java.time.LocalDateTime; +import java.util.List; + +import org.springframework.stereotype.Service; + +import es.iespuertodelacruz.routinefights.comment.domain.Comment; +import es.iespuertodelacruz.routinefights.comment.domain.ports.primary.ICommentService; +import es.iespuertodelacruz.routinefights.comment.domain.ports.secondary.ICommentRepository; +import es.iespuertodelacruz.routinefights.post.domain.Post; +import es.iespuertodelacruz.routinefights.post.domain.ports.secondary.IPostRepository; +import es.iespuertodelacruz.routinefights.user.domain.User; + +@Service +public class CommentService implements ICommentService { + + private ICommentRepository commentRepository; + private IPostRepository postRepository; + + public CommentService(ICommentRepository commentRepository, IPostRepository postRepository) { + this.commentRepository = commentRepository; + this.postRepository = postRepository; + } + + @Override + public Comment save(String message, User user, String postID, String replingID) { + Comment comment = new Comment(); + comment.setMessage(message); + comment.setCreatedAt(LocalDateTime.now()); + comment.setUser(user); + Post post = postRepository.findById(postID); + if (post == null) { + throw new IllegalArgumentException("Post not found"); + } + comment.setPost(post); + if (replingID != null) { + Comment replingComment = commentRepository.findById(replingID); + if (replingComment == null) { + throw new IllegalArgumentException("Repling comment not found"); + } + comment.setReplingComment(replingComment); + } + + return commentRepository.comment(comment.getMessage(),comment.getCreatedAt(),user.getId(),post.getId()); + } + + @Override + public List findByPostID(String postID) { + return commentRepository.findByPostID(postID); + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/primary/v2/controllers/CommentControllerV2.java b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/primary/v2/controllers/CommentControllerV2.java new file mode 100644 index 000000000..1218d0bd1 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/primary/v2/controllers/CommentControllerV2.java @@ -0,0 +1,49 @@ +package es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.primary.v2.controllers; + +import java.util.List; + +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.MutationMapping; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.security.access.annotation.Secured; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.CrossOrigin; + +import es.iespuertodelacruz.routinefights.comment.domain.ports.primary.ICommentService; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.primary.v2.dtos.CommentInputV2; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.primary.v2.dtos.CommentOutputV2; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.primary.v2.mapper.CommentOutputV2Mapper; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.ports.primary.IUserService; + +@Controller +@CrossOrigin +public class CommentControllerV2 { + + private ICommentService commentService; + private CommentOutputV2Mapper commentOutputV2Mapper; + private IUserService userService; + + public CommentControllerV2(ICommentService commentService, + CommentOutputV2Mapper commentOutputV2Mapper, IUserService userService) { + this.commentService = commentService; + this.commentOutputV2Mapper = commentOutputV2Mapper; + this.userService = userService; + } + + @Secured({ "ROLE_USER","ROLE_ADMIN" }) + @MutationMapping("postComment") + public CommentOutputV2 postComment(@Argument("commentInput") CommentInputV2 commentInput) { + User user = userService.findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + return commentOutputV2Mapper.toDTO(commentService.save(commentInput.message(), user, + commentInput.postID(), commentInput.replingID())); + } + + @Secured({ "ROLE_USER","ROLE_ADMIN" }) + @QueryMapping("getComments") + public List getComments(@Argument("postID") String postID) { + return commentOutputV2Mapper.toDTO(commentService.findByPostID(postID)); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/primary/v2/dtos/CommentInputV2.java b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/primary/v2/dtos/CommentInputV2.java new file mode 100644 index 000000000..8215eef5d --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/primary/v2/dtos/CommentInputV2.java @@ -0,0 +1,5 @@ +package es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.primary.v2.dtos; + +public record CommentInputV2(String message, String postID, String replingID) { + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/primary/v2/dtos/CommentOutputV2.java b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/primary/v2/dtos/CommentOutputV2.java new file mode 100644 index 000000000..1fcfa52b4 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/primary/v2/dtos/CommentOutputV2.java @@ -0,0 +1,9 @@ +package es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.primary.v2.dtos; + +import java.time.LocalDateTime; + +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos.UserOutputDTOV2; + +public record CommentOutputV2(String id, String message, LocalDateTime createdAt, UserOutputDTOV2 user) { + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/primary/v2/mapper/CommentOutputV2Mapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/primary/v2/mapper/CommentOutputV2Mapper.java new file mode 100644 index 000000000..7645ae8ec --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/primary/v2/mapper/CommentOutputV2Mapper.java @@ -0,0 +1,18 @@ +package es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.primary.v2.mapper; + +import java.util.List; + +import org.mapstruct.Mapper; + +import es.iespuertodelacruz.routinefights.comment.domain.Comment; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.primary.v2.dtos.CommentOutputV2; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.mappers.UserOutputV2Mapper; + +@Mapper(componentModel = "spring",uses = UserOutputV2Mapper.class) +public interface CommentOutputV2Mapper { + + CommentOutputV2 toDTO(Comment comment); + + List toDTO(List comment); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/entities/CommentEntity.java b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/entities/CommentEntity.java new file mode 100644 index 000000000..4d00ecc40 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/entities/CommentEntity.java @@ -0,0 +1,119 @@ +package es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.entities; + +import java.time.LocalDateTime; + +import org.springframework.data.neo4j.core.schema.GeneratedValue; +import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.Relationship; +import org.springframework.data.neo4j.core.schema.TargetNode; + +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.entities.PostEntity; +import es.iespuertodelacruz.routinefights.shared.utils.EntitiesTimestamps; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; +import java.util.Objects; + +@Node("Comment") +/** + * CommentEntity + */ +public class CommentEntity extends EntitiesTimestamps { + @Id + @GeneratedValue + private String id; + private String message; + + @Relationship(type = "On", direction = Relationship.Direction.OUTGOING) + private PostEntity post; + + @Relationship(type = "Commented", direction = Relationship.Direction.INCOMING) + private UserEntity user; + + @Relationship(type = "Replied_To", direction = Relationship.Direction.OUTGOING) + @TargetNode() + private CommentEntity replingComment; + + public CommentEntity() { + } + + public CommentEntity(String id, String message, LocalDateTime createdAt, LocalDateTime updatedAt, + LocalDateTime deletedAt, PostEntity post, UserEntity user, CommentEntity comment) { + super(createdAt, updatedAt, deletedAt); + this.id = id; + this.message = message; + this.post = post; + this.user = user; + this.replingComment = comment; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } + + public PostEntity getPost() { + return this.post; + } + + public void setPost(PostEntity post) { + this.post = post; + } + + public UserEntity getUser() { + return this.user; + } + + public void setUser(UserEntity user) { + this.user = user; + } + + public CommentEntity getReplingComment() { + return this.replingComment; + } + + public void setReplingComment(CommentEntity comment) { + this.replingComment = comment; + } + + @Override + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof CommentEntity)) { + return false; + } + CommentEntity commentEntity = (CommentEntity) o; + return Objects.equals(id, commentEntity.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "{" + + " id='" + getId() + "'" + + ", message='" + getMessage() + "'" + + ", createdAt='" + getCreatedAt() + "'" + + ", updatedAt='" + getUpdatedAt() + "'" + + ", deletedAt='" + getDeletedAt() + "'" + + ", post='" + getPost() + "'" + + ", user='" + getUser() + "'" + + ", comment='" + getReplingComment() + "'" + + "}"; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/mappers/CommentEntityMapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/mappers/CommentEntityMapper.java new file mode 100644 index 000000000..9a2cea397 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/mappers/CommentEntityMapper.java @@ -0,0 +1,24 @@ +package es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.mappers; + +import java.util.List; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +import es.iespuertodelacruz.routinefights.comment.domain.Comment; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.entities.CommentEntity; +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.mappers.PostEntityMapper; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.mappers.IUserEntityMapper; + +@Mapper(componentModel = "spring", uses = { IUserEntityMapper.class, PostEntityMapper.class }) +public interface CommentEntityMapper { + @Mapping(target = "post.comments", ignore = true) + CommentEntity toEntity(Comment comment); + + List toEntity(List comments); + + @Mapping(target = "post.comments", ignore = true) + Comment toDomain(CommentEntity commentEntity); + + List toDomain(List commentEntities); +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/repositories/ICommentEntityRepository.java b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/repositories/ICommentEntityRepository.java new file mode 100644 index 000000000..c9220001a --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/repositories/ICommentEntityRepository.java @@ -0,0 +1,33 @@ +package es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.repositories; + +import java.time.LocalDateTime; +import java.util.List; + +import org.springframework.data.neo4j.repository.Neo4jRepository; +import org.springframework.data.neo4j.repository.query.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.entities.CommentEntity; + +@Repository +public interface ICommentEntityRepository extends Neo4jRepository { + @Query("MATCH (u:User)-[r:Commented]->(c:Comment)-[r2:On]->(p:Post) WHERE elementId(p) =$postID RETURN c,r2,p,u,r") + List findByPostId(@Param("postID") String postID); + + @Query(""" + MATCH (u:User) + WHERE elementId(u) = $userID + MATCH (p:Post) + WHERE elementId(p) = $postID + CREATE (c:Comment {message: $message, createdAt: $createdAt}) + MERGE (u)-[cc:Commented]->(c) + MERGE (c)-[o:On]->(p) + RETURN c, cc, p, o, u + + """) + CommentEntity comment(@Param("message") String message, + @Param("createdAt") LocalDateTime createdAt, + @Param("userID") String userID, + @Param("postID") String postID); +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/services/CommentEntityService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/services/CommentEntityService.java new file mode 100644 index 000000000..500df5a9c --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/services/CommentEntityService.java @@ -0,0 +1,40 @@ +package es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.services; + +import java.time.LocalDateTime; +import java.util.List; + +import org.springframework.stereotype.Service; + +import es.iespuertodelacruz.routinefights.comment.domain.Comment; +import es.iespuertodelacruz.routinefights.comment.domain.ports.secondary.ICommentRepository; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.mappers.CommentEntityMapper; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.repositories.ICommentEntityRepository; + +@Service +public class CommentEntityService implements ICommentRepository { + + private ICommentEntityRepository commentRepository; + private CommentEntityMapper commentEntityMapper; + + public CommentEntityService(ICommentEntityRepository commentRepository, CommentEntityMapper commentEntityMapper) { + this.commentEntityMapper = commentEntityMapper; + this.commentRepository = commentRepository; + } + + + @Override + public List findByPostID(String postID) { + return commentEntityMapper.toDomain(commentRepository.findByPostId(postID)); + } + + @Override + public Comment findById(String id) { + return commentEntityMapper.toDomain(commentRepository.findById(id).orElse(null)); + } + + @Override + public Comment comment(String message, LocalDateTime createdAt, String userID, String postID) { + return commentEntityMapper.toDomain(commentRepository.comment(message, createdAt, userID, postID)); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/commons/CommunityEventCommons.java b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/commons/CommunityEventCommons.java new file mode 100644 index 000000000..be0c65929 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/commons/CommunityEventCommons.java @@ -0,0 +1,103 @@ +package es.iespuertodelacruz.routinefights.community_event.commons; + +import java.time.LocalDateTime; + +import es.iespuertodelacruz.routinefights.shared.utils.EntitiesTimestamps; + +public class CommunityEventCommons extends EntitiesTimestamps { + private String name; + private Integer totalRequired; + private LocalDateTime startDate; + private LocalDateTime finishDate; + private String image; + + public CommunityEventCommons() { + } + public CommunityEventCommons(String name, Integer totalRequired, LocalDateTime startDate, LocalDateTime finishDate, + LocalDateTime createdAt, LocalDateTime updatedAt, LocalDateTime deletedAt, String image) { + super(createdAt, updatedAt, deletedAt); + this.name = name; + this.totalRequired = totalRequired; + this.startDate = startDate; + this.finishDate = finishDate; + this.image = image; + } + + + public CommunityEventCommons(String name, Integer totalRequired, LocalDateTime startDate, LocalDateTime finishDate) { + this.name = name; + this.totalRequired = totalRequired; + this.startDate = startDate; + this.finishDate = finishDate; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getTotalRequired() { + return this.totalRequired; + } + + public void setTotalRequired(Integer totalRequired) { + this.totalRequired = totalRequired; + } + + public LocalDateTime getStartDate() { + return this.startDate; + } + + public void setStartDate(LocalDateTime startDate) { + this.startDate = startDate; + } + + public LocalDateTime getFinishDate() { + return this.finishDate; + } + + public void setFinishDate(LocalDateTime finishDate) { + this.finishDate = finishDate; + } + public String getImage() { + return this.image; + } + public void setImage(String image) { + this.image = image; + } + + public CommunityEventCommons name(String name) { + setName(name); + return this; + } + + public CommunityEventCommons totalRequired(Integer totalRequired) { + setTotalRequired(totalRequired); + return this; + } + + public CommunityEventCommons startDate(LocalDateTime startDate) { + setStartDate(startDate); + return this; + } + + public CommunityEventCommons finishDate(LocalDateTime finishDate) { + setFinishDate(finishDate); + return this; + } + + + @Override + public String toString() { + return "{" + + " name='" + getName() + "'" + + ", totalRequired='" + getTotalRequired() + "'" + + ", startDate='" + getStartDate() + "'" + + ", finishDate='" + getFinishDate() + "'" + + "}"; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/domain/CommunityEvent.java b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/domain/CommunityEvent.java new file mode 100644 index 000000000..315178722 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/domain/CommunityEvent.java @@ -0,0 +1,43 @@ +package es.iespuertodelacruz.routinefights.community_event.domain; + +import java.time.LocalDateTime; +import java.util.List; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.community_event.commons.CommunityEventCommons; + +public class CommunityEvent extends CommunityEventCommons { + private String id; + private List activities; + // private List badges; + // private List meetings; + + public CommunityEvent() { + super(); + } + + public CommunityEvent(String id, String name, Integer totalRequired, LocalDateTime startDate, + LocalDateTime finishDate, + LocalDateTime createdAt, LocalDateTime updatedAt, LocalDateTime deletedAt,List activities,String image) { + super(name, totalRequired, startDate, finishDate, createdAt, updatedAt, deletedAt, image); + this.id = id; + this.activities = activities; + } + + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public List getActivities() { + return this.activities; + } + public void setActivities(List activities) { + this.activities = activities; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/domain/ports/primary/ICommunityEventService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/domain/ports/primary/ICommunityEventService.java new file mode 100644 index 000000000..567b045e8 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/domain/ports/primary/ICommunityEventService.java @@ -0,0 +1,32 @@ +package es.iespuertodelacruz.routinefights.community_event.domain.ports.primary; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +import es.iespuertodelacruz.routinefights.community_event.domain.CommunityEvent; + +public interface ICommunityEventService { + + CommunityEvent createCommunityEvent(String name, Integer totalRequired, LocalDateTime startDate, + LocalDateTime finishDate, String image, List activityIDs); + + CommunityEvent getCommunityEventById(String id); + + List getActiveCommunityEvent(); + + CommunityEvent getNearestCommunityEvent(); + + Integer getCommunityEventPointsById(String id); + + List getUsersParticipatingInCommunityEvent(String id); + + List getUsersParticipatingInCommunityEventEndsToday(); + + Set findAllImages(); + + CommunityEvent getCommunityEventEndsToday(); + + List findAll(); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/domain/ports/secondary/ICommunityEventRepository.java b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/domain/ports/secondary/ICommunityEventRepository.java new file mode 100644 index 000000000..dd073e578 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/domain/ports/secondary/ICommunityEventRepository.java @@ -0,0 +1,23 @@ +package es.iespuertodelacruz.routinefights.community_event.domain.ports.secondary; + +import java.util.List; +import java.util.Set; + +import es.iespuertodelacruz.routinefights.community_event.domain.CommunityEvent; + +public interface ICommunityEventRepository { + + CommunityEvent save(CommunityEvent entity); + CommunityEvent findById(String id); + List getActiveCommunityEvents(); + CommunityEvent getNearestCommunityEvent(); + Integer getActualCommunityEventPoints(String id); + List getUsersParticipatingInCommunityEvent(String id); + CommunityEvent findByIdOnlyBase(String id); + Set getAllImages(); + List getUsersParticipatingInCommunityEventEndsToday(); + CommunityEvent getCommunityEventEndsToday(); + List findAll(); + + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/domain/services/CommunityEventService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/domain/services/CommunityEventService.java new file mode 100644 index 000000000..0a435bc58 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/domain/services/CommunityEventService.java @@ -0,0 +1,85 @@ +package es.iespuertodelacruz.routinefights.community_event.domain.services; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +import org.springframework.stereotype.Service; + +import es.iespuertodelacruz.routinefights.activity.domain.ports.secondary.IActivityRepository; +import es.iespuertodelacruz.routinefights.community_event.domain.CommunityEvent; +import es.iespuertodelacruz.routinefights.community_event.domain.ports.primary.ICommunityEventService; +import es.iespuertodelacruz.routinefights.community_event.domain.ports.secondary.ICommunityEventRepository; +@Service +public class CommunityEventService implements ICommunityEventService { + private ICommunityEventRepository communityEventRepository; + private IActivityRepository activityRepository; + + public CommunityEventService(ICommunityEventRepository communityEventRepository, + IActivityRepository activityRepository) { + this.communityEventRepository = communityEventRepository; + this.activityRepository = activityRepository; + } + + @Override + public CommunityEvent createCommunityEvent(String name, Integer totalRequired, LocalDateTime startDate, + LocalDateTime finishDate,String image,List activityIDs) { + CommunityEvent communityEvent = new CommunityEvent(); + communityEvent.setName(name); + communityEvent.setTotalRequired(totalRequired); + communityEvent.setStartDate(startDate); + communityEvent.setFinishDate(finishDate); + communityEvent.setCreatedAt(LocalDateTime.now()); + communityEvent.setImage(image); + communityEvent.setActivities(activityIDs.stream() + .map(activityID -> activityRepository.findById(activityID)) + .toList()); + return communityEventRepository.save(communityEvent); + } + + @Override + public CommunityEvent getCommunityEventById(String id) { + return communityEventRepository.findByIdOnlyBase(id); + } + + @Override + public List getActiveCommunityEvent() { + return communityEventRepository.getActiveCommunityEvents(); + } + + @Override + public CommunityEvent getNearestCommunityEvent() { + return communityEventRepository.getNearestCommunityEvent(); + } + + @Override + public Integer getCommunityEventPointsById(String id) { + return communityEventRepository.getActualCommunityEventPoints(id); + } + + @Override + public List getUsersParticipatingInCommunityEvent(String id) { + return communityEventRepository.getUsersParticipatingInCommunityEvent(id); + } + + @Override + public Set findAllImages() { + return communityEventRepository.getAllImages(); + } + + @Override + public List getUsersParticipatingInCommunityEventEndsToday() { + return communityEventRepository.getUsersParticipatingInCommunityEventEndsToday(); + } + + @Override + public CommunityEvent getCommunityEventEndsToday() { + return communityEventRepository.getCommunityEventEndsToday(); + } + + @Override + public List findAll() { + return communityEventRepository.findAll(); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v2/controllers/CommunityEventV2Controller.java b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v2/controllers/CommunityEventV2Controller.java new file mode 100644 index 000000000..97d096a6c --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v2/controllers/CommunityEventV2Controller.java @@ -0,0 +1,44 @@ +package es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.primary.v2.controllers; + +import java.util.List; + +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.security.access.annotation.Secured; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.CrossOrigin; + +import es.iespuertodelacruz.routinefights.community_event.domain.ports.primary.ICommunityEventService; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.primary.v2.dtos.CommunityEventOutputV2; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.primary.v2.mappers.CommunityEventOutputV2Mapper; + +@Controller +@CrossOrigin +public class CommunityEventV2Controller { + private ICommunityEventService communityEventService; + private CommunityEventOutputV2Mapper communityEventOutputV2Mapper; + + public CommunityEventV2Controller(ICommunityEventService communityEventService, + CommunityEventOutputV2Mapper communityEventOutputV2Mapper) { + this.communityEventService = communityEventService; + this.communityEventOutputV2Mapper = communityEventOutputV2Mapper; + } + + @Secured({ "ROLE_USER","ROLE_ADMIN" }) + @QueryMapping("getActiveCommunityEvents") + public List getActiveCommunityEvents() { + return communityEventOutputV2Mapper.toDto(communityEventService.getActiveCommunityEvent()); + } + + @Secured({ "ROLE_USER","ROLE_ADMIN" }) + @QueryMapping("getNearestCommunityEvent") + public CommunityEventOutputV2 getNearestCommunityEvent() { + return communityEventOutputV2Mapper.toDto(communityEventService.getNearestCommunityEvent()); + } + + @Secured({ "ROLE_USER","ROLE_ADMIN" }) + @QueryMapping("getCommunityEventPointsById") + public Integer getCommunityEventPointsById(@Argument String id) { + return communityEventService.getCommunityEventPointsById(id); + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v2/dtos/CommunityEventOutputV2.java b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v2/dtos/CommunityEventOutputV2.java new file mode 100644 index 000000000..f56f6ca1c --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v2/dtos/CommunityEventOutputV2.java @@ -0,0 +1,9 @@ +package es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.primary.v2.dtos; + +import java.time.LocalDateTime; + +public record CommunityEventOutputV2(String id, String name, + Integer totalRequired, LocalDateTime startDate, + LocalDateTime finishDate,String image) { + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v2/mappers/CommunityEventOutputV2Mapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v2/mappers/CommunityEventOutputV2Mapper.java new file mode 100644 index 000000000..a3c0322e3 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v2/mappers/CommunityEventOutputV2Mapper.java @@ -0,0 +1,17 @@ +package es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.primary.v2.mappers; + +import java.util.List; + +import org.mapstruct.Mapper; + +import es.iespuertodelacruz.routinefights.community_event.domain.CommunityEvent; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.primary.v2.dtos.CommunityEventOutputV2; + +@Mapper(componentModel = "spring") +public interface CommunityEventOutputV2Mapper { + + CommunityEventOutputV2 toDto(CommunityEvent communityEvent); + + List toDto(List communityEvents); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v3/controllers/CommunityEventV3Controller.java b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v3/controllers/CommunityEventV3Controller.java new file mode 100644 index 000000000..74eda92ac --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v3/controllers/CommunityEventV3Controller.java @@ -0,0 +1,80 @@ +package es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.primary.v3.controllers; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.MutationMapping; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.security.access.annotation.Secured; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.CrossOrigin; + +import es.iespuertodelacruz.routinefights.community_event.domain.ports.primary.ICommunityEventService; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.primary.v3.dtos.CommunityEventOutputV3; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.primary.v3.mappers.ICommunityEventOutputV3Mapper; +import es.iespuertodelacruz.routinefights.shared.services.NotificationsService; + +@Controller +@CrossOrigin +public class CommunityEventV3Controller { + private ICommunityEventService communityEventService; + private ICommunityEventOutputV3Mapper communityEventOutputV3Mapper; + private NotificationsService notificationsService; + + public CommunityEventV3Controller(ICommunityEventService communityEventService, + ICommunityEventOutputV3Mapper communityEventOutputV3Mapper, + NotificationsService notificationsService) { + this.communityEventService = communityEventService; + this.communityEventOutputV3Mapper = communityEventOutputV3Mapper; + this.notificationsService = notificationsService; + } + + @Secured("ROLE_ADMIN") + @MutationMapping("createCommunityEvent") + public CommunityEventOutputV3 createCommunityEvent( + @Argument String name, + @Argument Integer totalRequired, + @Argument String startDate, + @Argument String finishDate, + @Argument String image, + @Argument("activitiesIDs") List activitiesIDs) { + + CommunityEventOutputV3 communityEventOutputV3 = communityEventOutputV3Mapper + .toDto(communityEventService.createCommunityEvent( + name, + totalRequired, + LocalDateTime.parse(startDate), + LocalDateTime.parse(finishDate), + image, + activitiesIDs)); + notificationsService.sendToAllUsers( + "newEventTitle", + "newEventBody", + Map.of("eventName", name)); + + return communityEventOutputV3; + } + + @Secured("ROLE_ADMIN") + @QueryMapping("getCommunityEventById") + public CommunityEventOutputV3 getCommunityEventById( + @Argument String id) { + return communityEventOutputV3Mapper.toDto(communityEventService.getCommunityEventById(id)); + } + + @Secured("ROLE_ADMIN") + @QueryMapping("getUsersParticipatingInCommunityEvent") + public List getUsersParticipatingInCommunityEvent( + @Argument String id) { + return communityEventService.getUsersParticipatingInCommunityEvent(id); + } + + @Secured("ROLE_ADMIN") + @QueryMapping("getAllCommunityEvents") + public List getAllCommunityEvents() { + return communityEventOutputV3Mapper.toDto(communityEventService.findAll()); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v3/dtos/CommunityEventOutputV3.java b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v3/dtos/CommunityEventOutputV3.java new file mode 100644 index 000000000..31cdd5bb7 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v3/dtos/CommunityEventOutputV3.java @@ -0,0 +1,9 @@ +package es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.primary.v3.dtos; + +import java.time.LocalDateTime; + +public record CommunityEventOutputV3(String id, String name, + Integer totalRequired, LocalDateTime startDate, + LocalDateTime finishDate, LocalDateTime createdAt, + LocalDateTime updatedAt, LocalDateTime deletedAt, String image) { +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v3/mappers/ICommunityEventOutputV3Mapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v3/mappers/ICommunityEventOutputV3Mapper.java new file mode 100644 index 000000000..c874f8361 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/primary/v3/mappers/ICommunityEventOutputV3Mapper.java @@ -0,0 +1,17 @@ +package es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.primary.v3.mappers; + +import java.util.List; + +import org.mapstruct.Mapper; + +import es.iespuertodelacruz.routinefights.community_event.domain.CommunityEvent; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.primary.v3.dtos.CommunityEventOutputV3; + +@Mapper(componentModel = "spring") +public interface ICommunityEventOutputV3Mapper { + CommunityEventOutputV3 toDto(CommunityEvent communityEvent); + + List toDto(List communityEvents); + + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/secondary/entities/CommunityEventEntity.java b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/secondary/entities/CommunityEventEntity.java new file mode 100644 index 000000000..e62c878c1 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/secondary/entities/CommunityEventEntity.java @@ -0,0 +1,108 @@ +package es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.entities; + +import java.time.LocalDateTime; + +import org.springframework.data.neo4j.core.schema.GeneratedValue; +import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.Relationship; + +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities.ActivityEntity; +import es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.secondary.entities.BadgeEntity; +import es.iespuertodelacruz.routinefights.community_event.commons.CommunityEventCommons; +import es.iespuertodelacruz.routinefights.meeting.infrastructure.adapters.secondary.entities.MeetingEntity; + +import java.util.List; +import java.util.Objects; + +@Node("CommunityEvent") +/** + * CommunityEventEntity + */ +public class CommunityEventEntity extends CommunityEventCommons { + @Id + @GeneratedValue + private String id; + @Relationship(type = "Related", direction = Relationship.Direction.OUTGOING) + private List activities; + @Relationship(type = "Associated_With", direction = Relationship.Direction.INCOMING) + private List badges; + @Relationship(type = "Part_Of", direction = Relationship.Direction.INCOMING) + private List meetings; + + public CommunityEventEntity() { + } + + public CommunityEventEntity(String id, String name, Integer totalRequired, LocalDateTime createdAt, + LocalDateTime finishDate, List activities, List badges, + List meetings, LocalDateTime startDate, LocalDateTime updatedAt, LocalDateTime deletedAt,String image) { + super(name, totalRequired, startDate, finishDate, createdAt, updatedAt, deletedAt,image); + this.id = id; + this.activities = activities; + this.badges = badges; + this.meetings = meetings; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public List getActivities() { + return this.activities; + } + + public void setActivities(List activities) { + this.activities = activities; + } + + public List getBadges() { + return this.badges; + } + + public void setBadges(List badges) { + this.badges = badges; + } + + public List getMeetings() { + return this.meetings; + } + + public void setMeetings(List meetings) { + this.meetings = meetings; + } + + @Override + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof CommunityEventEntity)) { + return false; + } + CommunityEventEntity communityEventEntity = (CommunityEventEntity) o; + return Objects.equals(id, communityEventEntity.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "{" + + " id='" + getId() + "'" + + ", name='" + getName() + "'" + + ", totalRequired='" + getTotalRequired() + "'" + + ", createdAt='" + getCreatedAt() + "'" + + ", finishDate='" + getFinishDate() + "'" + + ", activities='" + getActivities() + "'" + + ", badges='" + getBadges() + "'" + + ", meetings='" + getMeetings() + "'" + + "}"; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/secondary/mappers/CommunityEventEntityMapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/secondary/mappers/CommunityEventEntityMapper.java new file mode 100644 index 000000000..05ad426e5 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/secondary/mappers/CommunityEventEntityMapper.java @@ -0,0 +1,24 @@ +package es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.mappers; + +import java.util.List; + +import org.mapstruct.Mapper; + +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.mappers.ActivityEntityMapper; +import es.iespuertodelacruz.routinefights.community_event.domain.CommunityEvent; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.entities.CommunityEventEntity; + +@Mapper(componentModel = "spring", uses = { ActivityEntityMapper.class/* + * , BadgeEntityMapper.class, + * MeetingEntityMapper.class + */ }) +public interface CommunityEventEntityMapper { + + public CommunityEvent toDomain(CommunityEventEntity entity); + + public CommunityEventEntity toEntity(CommunityEvent domain); + + public List toDomain(List entities); + public List toEntity(List domains); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/secondary/repositories/ICommunityEventEntityRepository.java b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/secondary/repositories/ICommunityEventEntityRepository.java new file mode 100644 index 000000000..b802e3759 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/secondary/repositories/ICommunityEventEntityRepository.java @@ -0,0 +1,53 @@ +package es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.repositories; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +import org.springframework.data.neo4j.repository.Neo4jRepository; +import org.springframework.data.neo4j.repository.query.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.entities.CommunityEventEntity; + +@Repository +public interface ICommunityEventEntityRepository extends Neo4jRepository { + + @Query("MATCH (ce:CommunityEvent) WHERE ce.finishDate > $currentDate AND ce.startDate < $currentDate RETURN ce") + List getActiveCommunityEvents(@Param("currentDate") LocalDateTime currentDate); + + @Query("MATCH (ce:CommunityEvent) WHERE ce.finishDate > $currentDate RETURN ce ORDER BY ce.startDate ASC LIMIT 1") + CommunityEventEntity getNearestCommunityEvent(@Param("currentDate") LocalDateTime currentDate); + + @Query("MATCH (ce:CommunityEvent)-[:Related]->(a:Activity)<-[:`Related-To`]-(p:Post) WHERE elementId(ce) = $id AND p.createdAt >= ce.startDate AND p.createdAt <= ce.finishDate RETURN SUM(p.pointsToAdd)") + Integer getActualCommunityEventPoints(@Param("id") String id); + + @Query("MATCH (ce:CommunityEvent)-[r:Related]->(a:Activity)<-[rr:`Related-To`]-(p:Post)<-[:`Posted`]-(u:User) WHERE elementId(ce) = $id AND p.createdAt >= ce.startDate AND p.createdAt <= ce.finishDate RETURN DISTINCT elementId(u)") + List getUsersParticipatingInCommunityEvent(@Param("id") String id); + + @Query("MATCH (ce:CommunityEvent) WHERE elementId(ce) = $id RETURN ce") + CommunityEventEntity findByIdOnlyBase(@Param("id") String id); + + @Query("MATCH (ce:CommunityEvent) RETURN ce.image") + Set getAllImages(); + + @Query("MATCH (ce:CommunityEvent)-[:Related]->(a:Activity)<-[:`Related-To`]-(p:Post)<-[:`Posted`]-(u:User) WHERE p.createdAt >= ce.startDate AND p.createdAt <= ce.finishDate AND date(ce.finishDate)=date($currentDay) RETURN DISTINCT elementId(u)") + List getUsersParticipatingInCommunityEventEndsToday(@Param("currentDay") LocalDateTime currentDate); + + @Query("MATCH (ce:CommunityEvent) WHERE date(ce.finishDate)=date($currentDay) RETURN ce") + CommunityEventEntity getCommunityEventEndsToday(@Param("currentDay") LocalDateTime now); + + @Query(""" + CREATE (ce:CommunityEvent {name: $name, createdAt: $createdAt, startDate: $startDate, finishDate: $finishDate, totalRequired: $totalRequired, image: $image}) + WITH ce + UNWIND $activitiesIDs AS activityID + MATCH (a:Activity) WHERE elementId(a) = activityID + CREATE (ce)-[r:Related]->(a) + RETURN ce, r, a + """) + CommunityEventEntity create(@Param("name") String name, @Param("createdAt") LocalDateTime createdAt, + @Param("startDate") LocalDateTime startDate, @Param("finishDate") LocalDateTime finishDate, + @Param("totalRequired") Integer totalRequired, @Param("image") String image, + @Param("activitiesIDs") List activitiesIDs); +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/secondary/services/CommunityEventEntityService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/secondary/services/CommunityEventEntityService.java new file mode 100644 index 000000000..01e838cff --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/community_event/infrastructure/adapters/secondary/services/CommunityEventEntityService.java @@ -0,0 +1,89 @@ +package es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.services; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +import org.springframework.stereotype.Service; + +import es.iespuertodelacruz.routinefights.community_event.domain.CommunityEvent; +import es.iespuertodelacruz.routinefights.community_event.domain.ports.secondary.ICommunityEventRepository; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.mappers.CommunityEventEntityMapper; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.repositories.ICommunityEventEntityRepository; + +@Service +public class CommunityEventEntityService implements ICommunityEventRepository { + private ICommunityEventEntityRepository communityEventEntityRepository; + private CommunityEventEntityMapper communityEventEntityMapper; + + public CommunityEventEntityService(ICommunityEventEntityRepository communityEventEntityRepository, + CommunityEventEntityMapper communityEventEntityMapper) { + this.communityEventEntityRepository = communityEventEntityRepository; + this.communityEventEntityMapper = communityEventEntityMapper; + } + + @Override + public CommunityEvent save(CommunityEvent entity) { + return communityEventEntityMapper + .toDomain(communityEventEntityRepository.create(entity.getName(), entity.getCreatedAt(), + entity.getStartDate(), entity.getFinishDate(), entity.getTotalRequired(), entity.getImage(), + entity.getActivities().stream().map(a -> a.getId()).toList())); + } + + @Override + public CommunityEvent findById(String id) { + return communityEventEntityMapper.toDomain(communityEventEntityRepository.findById(id).orElse(null)); + } + + @Override + public List getActiveCommunityEvents() { + return communityEventEntityMapper + .toDomain(communityEventEntityRepository.getActiveCommunityEvents(LocalDateTime.now())); + } + + @Override + public CommunityEvent getNearestCommunityEvent() { + return communityEventEntityMapper + .toDomain(communityEventEntityRepository.getNearestCommunityEvent(LocalDateTime.now())); + } + + @Override + public Integer getActualCommunityEventPoints(String id) { + return communityEventEntityRepository.getActualCommunityEventPoints(id); + } + + @Override + public List getUsersParticipatingInCommunityEvent(String id) { + return communityEventEntityRepository.getUsersParticipatingInCommunityEvent(id); + + } + + @Override + public CommunityEvent findByIdOnlyBase(String id) { + return communityEventEntityMapper + .toDomain(communityEventEntityRepository.findByIdOnlyBase(id)); + } + + @Override + public Set getAllImages() { + return communityEventEntityRepository.getAllImages(); + } + + @Override + public List getUsersParticipatingInCommunityEventEndsToday() { + return communityEventEntityRepository.getUsersParticipatingInCommunityEventEndsToday(LocalDateTime.now()); + } + + @Override + public CommunityEvent getCommunityEventEndsToday() { + return communityEventEntityMapper + .toDomain(communityEventEntityRepository.getCommunityEventEndsToday(LocalDateTime.now())); + } + + @Override + public List findAll() { + return communityEventEntityMapper + .toDomain(communityEventEntityRepository.findAll()); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/domain/DeviceToken.java b/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/domain/DeviceToken.java new file mode 100644 index 000000000..22c07c2e6 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/domain/DeviceToken.java @@ -0,0 +1,43 @@ +package es.iespuertodelacruz.routinefights.device_token.domain; + +import es.iespuertodelacruz.routinefights.user.domain.User; + +public class DeviceToken { + private String token; + private String language; + private User user; + + public DeviceToken() { + } + + public DeviceToken(String token, User user, String language) { + this.token = token; + this.user = user; + this.language = language; + } + + public String getToken() { + return token; + } + + public String getLanguage() { + return language; + } + + public void setLanguage(String language) { + this.language = language; + } + + public void setToken(String token) { + this.token = token; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/domain/ports/primary/IDeviceTokenService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/domain/ports/primary/IDeviceTokenService.java new file mode 100644 index 000000000..66a92bbce --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/domain/ports/primary/IDeviceTokenService.java @@ -0,0 +1,9 @@ +package es.iespuertodelacruz.routinefights.device_token.domain.ports.primary; + +import es.iespuertodelacruz.routinefights.device_token.domain.DeviceToken; + +public interface IDeviceTokenService { + + DeviceToken save(String email, String deviceToken, String language); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/domain/ports/secondary/IDeviceTokenRepository.java b/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/domain/ports/secondary/IDeviceTokenRepository.java new file mode 100644 index 000000000..0431e5a1a --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/domain/ports/secondary/IDeviceTokenRepository.java @@ -0,0 +1,7 @@ +package es.iespuertodelacruz.routinefights.device_token.domain.ports.secondary; + +import es.iespuertodelacruz.routinefights.device_token.domain.DeviceToken; + +public interface IDeviceTokenRepository { + DeviceToken save(DeviceToken deviceToken); +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/domain/services/DeviceTokenService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/domain/services/DeviceTokenService.java new file mode 100644 index 000000000..8e92c4aab --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/domain/services/DeviceTokenService.java @@ -0,0 +1,36 @@ +package es.iespuertodelacruz.routinefights.device_token.domain.services; + +import org.springframework.stereotype.Service; + +import es.iespuertodelacruz.routinefights.device_token.domain.DeviceToken; +import es.iespuertodelacruz.routinefights.device_token.domain.ports.primary.IDeviceTokenService; +import es.iespuertodelacruz.routinefights.device_token.domain.ports.secondary.IDeviceTokenRepository; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.ports.primary.IUserService; + +@Service +public class DeviceTokenService implements IDeviceTokenService { + + private IDeviceTokenRepository deviceTokenRepository; + private IUserService userService; + + public DeviceTokenService(IDeviceTokenRepository deviceTokenRepository, IUserService userService) { + this.deviceTokenRepository = deviceTokenRepository; + this.userService = userService; + } + + @Override + public DeviceToken save(String email, String deviceToken, String language) { + User user = userService.findByEmail(email); + if (user == null) { + throw new IllegalArgumentException("User not found"); + } + + DeviceToken token = new DeviceToken(); + token.setUser(user); + token.setToken(deviceToken); + token.setLanguage(language); + + return deviceTokenRepository.save(token); + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/infrastructure/adapters/secondary/entities/DeviceTokenEntity.java b/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/infrastructure/adapters/secondary/entities/DeviceTokenEntity.java new file mode 100644 index 000000000..6cc1e0e62 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/infrastructure/adapters/secondary/entities/DeviceTokenEntity.java @@ -0,0 +1,50 @@ +package es.iespuertodelacruz.routinefights.device_token.infrastructure.adapters.secondary.entities; + +import org.springframework.data.annotation.Id; +import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.Relationship; + +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; + +@Node("DeviceToken") +public class DeviceTokenEntity { + @Id + private String token; + private String language; + @Relationship(type = "Has_Device", direction = Relationship.Direction.INCOMING) + private UserEntity user; + + public DeviceTokenEntity() { + } + + public DeviceTokenEntity(String token, String language, UserEntity user) { + this.token = token; + this.language = language; + this.user = user; + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public String getLanguage() { + return language; + } + + public void setLanguage(String language) { + this.language = language; + } + + public UserEntity getUser() { + return user; + } + + public void setUser(UserEntity user) { + this.user = user; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/infrastructure/adapters/secondary/mappers/IDeviceTokenEntityMapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/infrastructure/adapters/secondary/mappers/IDeviceTokenEntityMapper.java new file mode 100644 index 000000000..12f1385d8 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/infrastructure/adapters/secondary/mappers/IDeviceTokenEntityMapper.java @@ -0,0 +1,15 @@ +package es.iespuertodelacruz.routinefights.device_token.infrastructure.adapters.secondary.mappers; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +import es.iespuertodelacruz.routinefights.device_token.domain.DeviceToken; +import es.iespuertodelacruz.routinefights.device_token.infrastructure.adapters.secondary.entities.DeviceTokenEntity; + +@Mapper(componentModel = "spring") +public interface IDeviceTokenEntityMapper { + DeviceToken toDomain(DeviceTokenEntity deviceTokenEntity); + + @Mapping(target = "user", ignore = true) + DeviceTokenEntity toEntity(DeviceToken deviceToken); +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/infrastructure/adapters/secondary/repositories/IDeviceTokenEntityRepository.java b/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/infrastructure/adapters/secondary/repositories/IDeviceTokenEntityRepository.java new file mode 100644 index 000000000..0643b035b --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/infrastructure/adapters/secondary/repositories/IDeviceTokenEntityRepository.java @@ -0,0 +1,11 @@ +package es.iespuertodelacruz.routinefights.device_token.infrastructure.adapters.secondary.repositories; + +import org.springframework.data.neo4j.repository.Neo4jRepository; +import org.springframework.stereotype.Repository; + +import es.iespuertodelacruz.routinefights.device_token.infrastructure.adapters.secondary.entities.DeviceTokenEntity; + +@Repository +public interface IDeviceTokenEntityRepository extends Neo4jRepository { + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/infrastructure/adapters/secondary/services/DeviceTokenEntityService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/infrastructure/adapters/secondary/services/DeviceTokenEntityService.java new file mode 100644 index 000000000..c13b68a5d --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/device_token/infrastructure/adapters/secondary/services/DeviceTokenEntityService.java @@ -0,0 +1,29 @@ +package es.iespuertodelacruz.routinefights.device_token.infrastructure.adapters.secondary.services; + +import org.springframework.stereotype.Service; + +import es.iespuertodelacruz.routinefights.device_token.domain.DeviceToken; +import es.iespuertodelacruz.routinefights.device_token.domain.ports.secondary.IDeviceTokenRepository; +import es.iespuertodelacruz.routinefights.device_token.infrastructure.adapters.secondary.entities.DeviceTokenEntity; +import es.iespuertodelacruz.routinefights.device_token.infrastructure.adapters.secondary.mappers.IDeviceTokenEntityMapper; +import es.iespuertodelacruz.routinefights.device_token.infrastructure.adapters.secondary.repositories.IDeviceTokenEntityRepository; + +@Service +public class DeviceTokenEntityService implements IDeviceTokenRepository { + private IDeviceTokenEntityRepository deviceTokenEntityRepository; + private IDeviceTokenEntityMapper deviceTokenEntityMapper; + + public DeviceTokenEntityService(IDeviceTokenEntityRepository deviceTokenEntityRepository, + IDeviceTokenEntityMapper deviceTokenEntityMapper) { + this.deviceTokenEntityRepository = deviceTokenEntityRepository; + this.deviceTokenEntityMapper = deviceTokenEntityMapper; + } + + @Override + public DeviceToken save(DeviceToken deviceToken) { + DeviceTokenEntity entity = deviceTokenEntityMapper.toEntity(deviceToken); + DeviceTokenEntity savedEntity = deviceTokenEntityRepository.save(entity); + return deviceTokenEntityMapper.toDomain(savedEntity); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/meeting/infrastructure/adapters/secondary/entities/MeetingEntity.java b/API/src/main/java/es/iespuertodelacruz/routinefights/meeting/infrastructure/adapters/secondary/entities/MeetingEntity.java new file mode 100644 index 000000000..0fb713a86 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/meeting/infrastructure/adapters/secondary/entities/MeetingEntity.java @@ -0,0 +1,126 @@ +package es.iespuertodelacruz.routinefights.meeting.infrastructure.adapters.secondary.entities; + +import java.time.LocalDateTime; +import java.util.List; + +import org.springframework.data.neo4j.core.schema.GeneratedValue; +import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.Relationship; + +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.entities.CommunityEventEntity; +import es.iespuertodelacruz.routinefights.team.infrastructure.adapters.secondary.entities.TeamEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; +import java.util.Objects; + +@Node("Meeting") +/** + * MeetingEntity + */ +public class MeetingEntity { + @Id + @GeneratedValue + private String id; + private LocalDateTime date; + // CSV coords + private String location; + + @Relationship(type = "Attended", direction = Relationship.Direction.INCOMING) + private List users; + + @Relationship(type = "Has_Meeting", direction = Relationship.Direction.INCOMING) + private TeamEntity team; + + @Relationship(type = "Part_Of", direction = Relationship.Direction.OUTGOING) + private CommunityEventEntity communityEvent; + + public MeetingEntity() { + } + + public MeetingEntity(String id, LocalDateTime date, String location, List users, TeamEntity team, + CommunityEventEntity communityEvent) { + this.id = id; + this.date = date; + this.location = location; + this.users = users; + this.team = team; + this.communityEvent = communityEvent; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public LocalDateTime getDate() { + return this.date; + } + + public void setDate(LocalDateTime date) { + this.date = date; + } + + public String getLocation() { + return this.location; + } + + public void setLocation(String location) { + this.location = location; + } + + public List getUsers() { + return this.users; + } + + public void setUsers(List users) { + this.users = users; + } + + public TeamEntity getTeam() { + return this.team; + } + + public void setTeam(TeamEntity team) { + this.team = team; + } + + public CommunityEventEntity getCommunityEvent() { + return this.communityEvent; + } + + public void setCommunityEvent(CommunityEventEntity communityEvent) { + this.communityEvent = communityEvent; + } + + @Override + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof MeetingEntity)) { + return false; + } + MeetingEntity meetingEntity = (MeetingEntity) o; + return Objects.equals(id, meetingEntity.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "{" + + " id='" + getId() + "'" + + ", date='" + getDate() + "'" + + ", location='" + getLocation() + "'" + + ", users='" + getUsers() + "'" + + ", team='" + getTeam() + "'" + + ", communityEvent='" + getCommunityEvent() + "'" + + "}"; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/post/commons/PostCommons.java b/API/src/main/java/es/iespuertodelacruz/routinefights/post/commons/PostCommons.java new file mode 100644 index 000000000..80a91a2f4 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/post/commons/PostCommons.java @@ -0,0 +1,61 @@ +package es.iespuertodelacruz.routinefights.post.commons; + +import java.time.LocalDateTime; + + +import es.iespuertodelacruz.routinefights.shared.utils.EntitiesTimestamps; + + +public abstract class PostCommons extends EntitiesTimestamps { + private String image; + + private Integer streak; + private Integer pointsToAdd; + private LocalDateTime filedAt; + + public String getImage() { + return this.image; + } + + public void setImage(String image) { + this.image = image; + } + + public Integer getStreak() { + return this.streak; + } + + public void setStreak(Integer streak) { + this.streak = streak; + } + + public Integer getPointsToAdd() { + return this.pointsToAdd; + } + + public void setPointsToAdd(Integer pointsToAdd) { + this.pointsToAdd = pointsToAdd; + } + + public LocalDateTime getFiledAt() { + return this.filedAt; + } + + public void setFiledAt(LocalDateTime filedAt) { + this.filedAt = filedAt; + } + + protected PostCommons() { + } + + protected PostCommons(String image, Integer streak, Integer pointsToAdd, LocalDateTime createdAt, + LocalDateTime updatedAt, + LocalDateTime deletedAt, LocalDateTime filedAt) { + super(createdAt, updatedAt, deletedAt); + this.image = image; + this.streak = streak; + this.pointsToAdd = pointsToAdd; + this.filedAt = filedAt; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/post/domain/Post.java b/API/src/main/java/es/iespuertodelacruz/routinefights/post/domain/Post.java new file mode 100644 index 000000000..91f769b67 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/post/domain/Post.java @@ -0,0 +1,122 @@ +package es.iespuertodelacruz.routinefights.post.domain; + +import java.time.LocalDateTime; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.comment.domain.Comment; +import es.iespuertodelacruz.routinefights.post.commons.PostCommons; +import es.iespuertodelacruz.routinefights.user.domain.User; + +import java.util.List; +import java.util.Objects; + +public class Post extends PostCommons { + private String id; + private User user; + private Activity activity; + private List likedBy; + private List comments; + + public Post(String id, String image, Integer streak, Integer pointsToAdd, LocalDateTime createdAt, + LocalDateTime updatedAt, + LocalDateTime deletedAt, LocalDateTime filedAt, User user, Activity activity) { + super(image, streak, pointsToAdd, createdAt, updatedAt, deletedAt, filedAt); + this.id = id; + this.user = user; + this.activity = activity; + } + + public Post() { + } + + public Post(String id) { + this.id = id; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public Post id(String id) { + setId(id); + return this; + } + + public Post(String id, User user) { + this.id = id; + this.user = user; + } + + public User getUser() { + return this.user; + } + + public void setUser(User user) { + this.user = user; + } + + public Post user(User user) { + setUser(user); + return this; + } + + public Activity getActivity() { + return this.activity; + } + + public void setActivity(Activity activity) { + this.activity = activity; + } + public Post activity(Activity activity) { + setActivity(activity); + return this; + } + public List getLikedBy() { + return this.likedBy; + } + public void setLikedBy(List likedBy) { + this.likedBy = likedBy; + } + public Post likedBy(List likedBy) { + setLikedBy(likedBy); + return this; + } + public List getComments() { + return this.comments; + } + public void setComments(List comments) { + this.comments = comments; + } + public Post comments(List comments) { + setComments(comments); + return this; + } + + @Override + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof Post)) { + return false; + } + Post post = (Post) o; + return Objects.equals(id, post.id); + } + + @Override + public int hashCode() { + return Objects.hashCode(id); + } + + @Override + public String toString() { + return "{" + + " id='" + getId() + "'" + + "}"; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/post/domain/ports/primary/IPostService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/post/domain/ports/primary/IPostService.java new file mode 100644 index 000000000..3a5c8f7b9 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/post/domain/ports/primary/IPostService.java @@ -0,0 +1,26 @@ +package es.iespuertodelacruz.routinefights.post.domain.ports.primary; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +import es.iespuertodelacruz.routinefights.post.domain.Post; +import es.iespuertodelacruz.routinefights.user.domain.User; + +public interface IPostService { + + List getPagination(LocalDateTime lastDate, int limit); + + Post uploadPost(String image, User user, String activityID); + + List getPaginationByUser(LocalDateTime lastDate, int limit, String userEmail); + + List getPaginationByActivity(LocalDateTime lastDate, int limit, String activityID); + + List getPaginationFollowing(LocalDateTime lastDate, int limit, String userID); + + List getPaginationSubscribedActivities(LocalDateTime lastDate, int limit, String userID); + + Set findAllImages(); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/post/domain/ports/secondary/IPostRepository.java b/API/src/main/java/es/iespuertodelacruz/routinefights/post/domain/ports/secondary/IPostRepository.java new file mode 100644 index 000000000..bc09ba326 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/post/domain/ports/secondary/IPostRepository.java @@ -0,0 +1,20 @@ +package es.iespuertodelacruz.routinefights.post.domain.ports.secondary; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +import es.iespuertodelacruz.routinefights.post.domain.Post; + +public interface IPostRepository { + List getPagination(LocalDateTime lastDate, int limit); + Post save(Post post); + List getRangeByActivity(String activityID, String userID, LocalDateTime startDate, LocalDateTime endDate); + Integer getRangeCountByActivity(String activityID, String userID, LocalDateTime startDate, LocalDateTime endDate); + List getPaginationByUser(LocalDateTime lastDate, int limit, String userEmail); + List getPaginationByActivity(LocalDateTime lastDate, int limit, String activityID); + List getPaginationFollowing(LocalDateTime lastDate, int limit, String userID); + List getPaginationSubscribedActivities(LocalDateTime lastDate, int limit, String userID); + Set findAllImages(); + Post findById(String postID); +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/post/domain/services/PostService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/post/domain/services/PostService.java new file mode 100644 index 000000000..ce26e5fd8 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/post/domain/services/PostService.java @@ -0,0 +1,130 @@ +package es.iespuertodelacruz.routinefights.post.domain.services; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +import org.springframework.stereotype.Service; + +import es.iespuertodelacruz.routinefights.activity.commons.TimeRates; +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.activity.domain.ports.secondary.IActivityRepository; +import es.iespuertodelacruz.routinefights.post.domain.Post; +import es.iespuertodelacruz.routinefights.post.domain.ports.primary.IPostService; +import es.iespuertodelacruz.routinefights.post.domain.ports.secondary.IPostRepository; +import es.iespuertodelacruz.routinefights.post.exceptions.UploadPostException; +import es.iespuertodelacruz.routinefights.shared.utils.TimeRatesDate; +import es.iespuertodelacruz.routinefights.user.domain.User; + +@Service +public class PostService implements IPostService { + private IPostRepository postRepository; + private IActivityRepository activityRepository; + private TimeRatesDate timeRatesDate; + + public PostService(IPostRepository postRepository, IActivityRepository activityRepository) { + this.postRepository = postRepository; + this.activityRepository = activityRepository; + timeRatesDate = new TimeRatesDate(); + + } + + @Override + public List getPagination(LocalDateTime lastDate, int limit) { + return postRepository.getPagination(lastDate, limit); + } + + @Override + public Post uploadPost(String image, User user, String activityID) { + Post post = new Post(); + post.setImage(image); + post.setUser(user); + post.setCreatedAt(LocalDateTime.now()); + Activity activity = activityRepository.findById(activityID); + if (activity == null) { + throw new UploadPostException("Activity not found"); + } + if (!activityRepository.userIsOnActivity(user.getId(), activityID)) { + throw new UploadPostException("User is not on activity"); + } + + calculateStreak(user, activityID, post, activity); + + post.setActivity(activity); + post.setPointsToAdd(getPointsToAdd(activity)); + + return postRepository.save(post); + } + + private void calculateStreak(User user, String activityID, Post post, Activity activity) { + LocalDateTime[] dates = timeRatesDate.getActualIterationDates(activity.getTimeRate()); + List actualPeriodPosts = postRepository.getRangeByActivity(activityID, user.getId(), dates[0], + dates[1]); + if (actualPeriodPosts.size() >= activity.getTimesRequiered()) { + throw new UploadPostException("You have already completed this activity"); + } + + if (actualPeriodPosts.isEmpty()) { + LocalDateTime[] lastDates = timeRatesDate.getLastIterationDates(activity.getTimeRate()); + + List lastPeriodPosts = postRepository.getRangeByActivity(activityID, user.getId(), lastDates[0], + lastDates[1]); + if (lastPeriodPosts.size() >= activity.getTimesRequiered()) { + post.setStreak(lastPeriodPosts.get(lastPeriodPosts.size() - 1).getStreak() + 1); + } else { + post.setStreak(1); + } + } else { + post.setStreak(actualPeriodPosts.get(actualPeriodPosts.size() - 1).getStreak()); + } + } + + private Integer getPointsToAdd(Activity activity) { + Integer points; + switch (activity.getTimeRate()) { + case TimeRates.DAILY: + points = 100 / activity.getTimesRequiered(); + break; + case TimeRates.WEEKLY: + points = 700 / activity.getTimesRequiered(); + break; + case TimeRates.MONTHLY: + points = 3000 / activity.getTimesRequiered(); + break; + case TimeRates.YEARLY: + points = 36500 / activity.getTimesRequiered(); + break; + default: + points = 0; + break; + } + return points; + + } + + @Override + public List getPaginationByUser(LocalDateTime lastDate, int limit, String userEmail) { + return postRepository.getPaginationByUser(lastDate, limit, userEmail); + } + + @Override + public List getPaginationByActivity(LocalDateTime lastDate, int limit, String activityID) { + return postRepository.getPaginationByActivity(lastDate, limit, activityID); + } + + @Override + public List getPaginationFollowing(LocalDateTime lastDate, int limit, String userID) { + return postRepository.getPaginationFollowing(lastDate, limit, userID); + } + + @Override + public List getPaginationSubscribedActivities(LocalDateTime lastDate, int limit, String userID) { + return postRepository.getPaginationSubscribedActivities(lastDate, limit, userID); + } + + @Override + public Set findAllImages() { + return postRepository.findAllImages(); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/post/exceptions/UploadPostException.java b/API/src/main/java/es/iespuertodelacruz/routinefights/post/exceptions/UploadPostException.java new file mode 100644 index 000000000..740f53873 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/post/exceptions/UploadPostException.java @@ -0,0 +1,8 @@ +package es.iespuertodelacruz.routinefights.post.exceptions; + +public class UploadPostException extends RuntimeException{ + public UploadPostException(String message) { + super(message); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/v2/controllers/PostControllerV2.java b/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/v2/controllers/PostControllerV2.java new file mode 100644 index 000000000..cae8b3153 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/v2/controllers/PostControllerV2.java @@ -0,0 +1,97 @@ +package es.iespuertodelacruz.routinefights.post.infrastructure.adapters.primary.v2.controllers; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.logging.Logger; + +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.MutationMapping; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.security.access.annotation.Secured; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.CrossOrigin; + +import es.iespuertodelacruz.routinefights.post.domain.Post; +import es.iespuertodelacruz.routinefights.post.domain.ports.primary.IPostService; +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.primary.v2.dtos.PostOutputDTOV2; +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.primary.v2.mappers.PostOutputV2Mapper; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.ports.primary.IUserService; + +/** + * PostControllerV2 + */ +@Controller +@CrossOrigin +public class PostControllerV2 { + Logger logger = Logger.getLogger(PostControllerV2.class.getName()); + + private IPostService postService; + private PostOutputV2Mapper postOutputV2Mapper; + private IUserService userService; + + public PostControllerV2(IPostService postService, PostOutputV2Mapper postOutputV2Mapper, IUserService userService) { + this.postService = postService; + this.postOutputV2Mapper = postOutputV2Mapper; + this.userService = userService; + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("postsV2") + public List getPagination(@Argument String lastDate, @Argument int limit) { + LocalDateTime date = LocalDateTime.parse(lastDate); + List posts = postService.getPagination(date, limit); + User user = userService.findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + return postOutputV2Mapper.toDto(posts, user); + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @MutationMapping("uploadPost") + public PostOutputDTOV2 uploadPost(@Argument String image, @Argument String activityID) { + + User user = userService.findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + + Post post = postService.uploadPost(image, user, activityID); + return postOutputV2Mapper.toDto(post); + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("postsByUserV2") + public List getPaginationByUser(@Argument String lastDate, @Argument int limit, + @Argument String userEmail) { + LocalDateTime date = LocalDateTime.parse(lastDate); + List posts = postService.getPaginationByUser(date, limit, userEmail); + User user = userService.findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + return postOutputV2Mapper.toDto(posts, user); + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("postsByActivityV2") + public List getPaginationByActivity(@Argument String lastDate, @Argument int limit, + @Argument String activityID) { + LocalDateTime date = LocalDateTime.parse(lastDate); + List posts = postService.getPaginationByActivity(date, limit, activityID); + User user = userService.findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + return postOutputV2Mapper.toDto(posts, user); + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("postsFollowingV2") + public List getPaginationFollowing(@Argument String lastDate, @Argument int limit) { + User user = userService.findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + LocalDateTime date = LocalDateTime.parse(lastDate); + List posts = postService.getPaginationFollowing(date, limit, user.getId()); + return postOutputV2Mapper.toDto(posts, user); + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("postsSubscribedActivitiesV2") + public List getPaginationSubscribedActivities(@Argument String lastDate, @Argument int limit) { + User user = userService.findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + LocalDateTime date = LocalDateTime.parse(lastDate); + List posts = postService.getPaginationSubscribedActivities(date, limit, user.getId()); + return postOutputV2Mapper.toDto(posts, user); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/v2/dtos/PostInputDTOV2.java b/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/v2/dtos/PostInputDTOV2.java new file mode 100644 index 000000000..76315f7fd --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/v2/dtos/PostInputDTOV2.java @@ -0,0 +1,4 @@ +package es.iespuertodelacruz.routinefights.post.infrastructure.adapters.primary.v2.dtos; + +public record PostInputDTOV2(String image) { +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/v2/dtos/PostOutputDTOV2.java b/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/v2/dtos/PostOutputDTOV2.java new file mode 100644 index 000000000..2f94e6709 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/v2/dtos/PostOutputDTOV2.java @@ -0,0 +1,11 @@ +package es.iespuertodelacruz.routinefights.post.infrastructure.adapters.primary.v2.dtos; + +import java.time.LocalDateTime; + +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.dtos.ActivityOutputV2; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos.UserOutputDTOV2; + +public record PostOutputDTOV2(String id, String image, Integer streak, LocalDateTime filedAt, LocalDateTime createdAt, + UserOutputDTOV2 user, Integer likes, Integer comments, Boolean isLiked, ActivityOutputV2 activity) { + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/v2/mappers/PostOutputV2Mapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/v2/mappers/PostOutputV2Mapper.java new file mode 100644 index 000000000..44b855697 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/v2/mappers/PostOutputV2Mapper.java @@ -0,0 +1,50 @@ +package es.iespuertodelacruz.routinefights.post.infrastructure.adapters.primary.v2.mappers; + +import java.util.List; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Named; + +import es.iespuertodelacruz.routinefights.comment.domain.Comment; +import es.iespuertodelacruz.routinefights.post.domain.Post; +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.primary.v2.dtos.PostOutputDTOV2; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.mappers.UserOutputV2Mapper; + +@Mapper(componentModel = "spring", uses = { UserOutputV2Mapper.class }) +public interface PostOutputV2Mapper { + + @Named("mapLikedByToLikes") + default Integer mapLikedByToLikes(List likedBy) { + return likedBy == null ? 0 : likedBy.size(); + } + + @Named("mapCommentsToComments") + default Integer mapCommentsToComments(List comments) { + return comments == null ? 0 : comments.size(); + } + + @Mapping(target = "comments", source = "post.comments", qualifiedByName = "mapCommentsToComments") + PostOutputDTOV2 toDto(Post post); + + @Mapping(target = "user", source = "post.user") + @Mapping(target = "likes", source = "post.likedBy", qualifiedByName = "mapLikedByToLikes") + @Mapping(target = "id", source = "post.id") + @Mapping(target = "comments", source = "post.comments", qualifiedByName = "mapCommentsToComments") + @Mapping(target = "isLiked", expression = "java(post.getLikedBy() != null && post.getLikedBy().contains(user))") + @Mapping(target = "image", source = "post.image") + @Mapping(target = "createdAt", source = "post.createdAt") + @Mapping(target = "activity", source = "post.activity") + @Mapping(target = "streak", source = "post.streak") + PostOutputDTOV2 toDto(Post post, User user); + + List toDto(List posts); + + default List toDto(List posts, User user) { + return posts.stream() + .map(post -> toDto(post, user)) + .toList(); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/entities/PostEntity.java b/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/entities/PostEntity.java new file mode 100644 index 000000000..8658b26b6 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/entities/PostEntity.java @@ -0,0 +1,138 @@ +package es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.entities; + +import java.time.LocalDateTime; +import java.util.List; + +import org.springframework.data.neo4j.core.schema.GeneratedValue; +import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.Relationship; + +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities.ActivityEntity; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.entities.CommentEntity; +import es.iespuertodelacruz.routinefights.post.commons.PostCommons; +import es.iespuertodelacruz.routinefights.report.infrastructure.adapters.secondary.entities.ReportEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; +import java.util.Objects; + +@Node("Post") +/** + * PostEntity + */ +public class PostEntity extends PostCommons { + @Id + @GeneratedValue + private String id; + + @Relationship(type = "On", direction = Relationship.Direction.INCOMING) + private List comments; + + @Relationship(type = "To_Report", direction = Relationship.Direction.INCOMING) + private List reports; + @Relationship(type = "Posted", direction = Relationship.Direction.INCOMING) + private UserEntity user; + + @Relationship(type = "Related-To", direction = Relationship.Direction.OUTGOING) + private ActivityEntity activity; + + @Relationship(type = "Liked", direction = Relationship.Direction.INCOMING) + private List likedBy; + + public PostEntity() { + } + + public PostEntity(String id, String image, Integer streak, Integer pointsToAdd, LocalDateTime createdAt, + LocalDateTime updatedAt, LocalDateTime deletedAt, LocalDateTime filedAt, List comments, + List reports, UserEntity user, ActivityEntity activity, List likedBy) { + super(image, streak, pointsToAdd, createdAt, updatedAt, deletedAt, filedAt); + this.id = id; + this.comments = comments; + this.reports = reports; + this.user = user; + this.activity = activity; + this.likedBy = likedBy; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public List getComments() { + return this.comments; + } + + public void setComments(List comments) { + this.comments = comments; + } + + public List getReports() { + return this.reports; + } + + public void setReports(List reports) { + this.reports = reports; + } + + public UserEntity getUser() { + return this.user; + } + + public void setUser(UserEntity user) { + this.user = user; + } + + public ActivityEntity getActivity() { + return this.activity; + } + + public void setActivity(ActivityEntity activity) { + this.activity = activity; + } + + public List getLikedBy() { + return this.likedBy; + } + + public void setLikedBy(List likedBy) { + this.likedBy = likedBy; + } + + @Override + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof PostEntity)) { + return false; + } + PostEntity postEntity = (PostEntity) o; + return Objects.equals(id, postEntity.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "{" + + " id='" + getId() + "'" + + ", image='" + getImage() + "'" + + ", streak='" + getStreak() + "'" + + ", pointsToAdd='" + getPointsToAdd() + "'" + + ", createdAt='" + getCreatedAt() + "'" + + ", updatedAt='" + getUpdatedAt() + "'" + + ", deletedAt='" + getDeletedAt() + "'" + + ", filedAt='" + getFiledAt() + "'" + + ", comments='" + getComments() + "'" + + ", reports='" + getReports() + "'" + + ", user='" + getUser() + "'" + + ", activity='" + getActivity() + "'" + + "}"; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/mappers/PostEntityMapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/mappers/PostEntityMapper.java new file mode 100644 index 000000000..3e9c6b540 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/mappers/PostEntityMapper.java @@ -0,0 +1,47 @@ +package es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.mappers; + +import java.util.List; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Named; + +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.mappers.ActivityEntityMapper; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.mappers.CommentEntityMapper; +import es.iespuertodelacruz.routinefights.comment.domain.Comment; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.entities.CommentEntity; +import es.iespuertodelacruz.routinefights.post.domain.Post; +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.entities.PostEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.mappers.IUserEntityMapper; + +@Mapper(componentModel = "spring", + uses = { IUserEntityMapper.class, CommentEntityMapper.class, ActivityEntityMapper.class }) +public interface PostEntityMapper { + List toEntity(List posts); + + List toDomain(List postEntities); + + PostEntity toEntity(Post post); + + @Mapping(target = "comments", source = "postEntity.comments", qualifiedByName = "mapCommentsToComments") + Post toDomain(PostEntity postEntity); + + @Named("mapCommentsToComments") + default List mapCommentsToComments(List commentsEntities) { + if (commentsEntities == null) { + return List.of(); + } + return commentsEntities.stream() + .map(commentEntity -> { + Comment comment = new Comment(); + comment.setId(commentEntity.getId()); + comment.setMessage(commentEntity.getMessage()); + comment.setCreatedAt(commentEntity.getCreatedAt()); + comment.setDeletedAt(commentEntity.getDeletedAt()); + + return comment; + }) + .toList(); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/repositories/IPostEntityRepository.java b/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/repositories/IPostEntityRepository.java new file mode 100644 index 000000000..a9248c771 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/repositories/IPostEntityRepository.java @@ -0,0 +1,129 @@ +package es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.repositories; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +import org.springframework.data.neo4j.repository.Neo4jRepository; +import org.springframework.data.neo4j.repository.query.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.entities.PostEntity; + +@Repository +public interface IPostEntityRepository extends Neo4jRepository { + @Query(""" + MATCH (u2:User)-[pp:`Posted`]->(p:Post) + WHERE datetime(p.createdAt) < datetime($lastDate) + OPTIONAL MATCH (p)-[r1:`Related-To`]->(a:Activity) + OPTIONAL MATCH (p)<-[r2:`To_Report`]-(rep:Report) + OPTIONAL MATCH (p)<-[r3:`Liked`]-(u3:User) + OPTIONAL MATCH (p)<-[r4:`On`]-(c:Comment) + RETURN p, collect(r1), collect(a), collect(r2), collect(rep), collect(r3), collect(u3), collect(r4), collect(c), u2, pp + ORDER BY p.createdAt DESC + LIMIT $limit + """) + List getPagination(@Param("lastDate") LocalDateTime lastDate, @Param("limit") int limit); + + @Query(""" + MATCH (u:User {email:$userEmail})-[pp:`Posted`]->(p:Post) + OPTIONAL MATCH (p)-[r1:`Related-To`]->(a:Activity) + OPTIONAL MATCH (p)<-[r2:`To_Report`]-(rep:Report) + OPTIONAL MATCH (p)<-[r3:`Liked`]-(u2:User) + OPTIONAL MATCH (p)<-[r4:`On`]-(c:Comment) + WHERE p.createdAt < $lastDate + RETURN p, collect(r1), collect(a), collect(r2), collect(rep), collect(r3), collect(u2), collect(r4), collect(c), u, pp + ORDER BY p.createdAt DESC + LIMIT $limit + """) + List getPaginationByUser(@Param("lastDate") LocalDateTime lastDate, @Param("limit") int limit, + @Param("userEmail") String userEmail); + + List getPaginationByActivity(@Param("lastDate") LocalDateTime lastDate, @Param("limit") int limit, + @Param("activityID") String activityID); + + @Query(""" + MATCH (u:User)-[:`FOLLOWS`]->(u2:User)-[pp:`Posted`]->(p:Post) + WHERE elementId(u) = $userID + AND datetime(p.createdAt) < datetime($lastDate) + OPTIONAL MATCH (p)-[r1:`Related-To`]->(a:Activity) + OPTIONAL MATCH (p)<-[r2:`To_Report`]-(rep:Report) + OPTIONAL MATCH (p)<-[r3:`Liked`]-(u3:User) + OPTIONAL MATCH (p)<-[r4:`On`]-(c:Comment) + RETURN p, collect(r1), collect(a), collect(r2), collect(rep), collect(r3), collect(u3), collect(r4), collect(c), u2, pp + ORDER BY p.createdAt DESC + LIMIT $limit + """) + List getPaginationFollowing(@Param("lastDate") LocalDateTime lastDate, @Param("limit") int limit, + @Param("userID") String userID); + + @Query(""" + MATCH (u:User)-[pp:`Participated`]->(a:Activity)<-[:`Related-To`]-(p:Post)<-[r:Posted]-(u2:User) + WHERE elementId(u) = $userID + AND p.createdAt < $lastDate + OPTIONAL MATCH (p)-[r1:`Related-To`]->(a2:Activity) + OPTIONAL MATCH (p)<-[r2:`To_Report`]-(rep:Report) + OPTIONAL MATCH (p)<-[r3:`Liked`]-(u3:User) + OPTIONAL MATCH (p)<-[r4:`On`]-(c:Comment) + RETURN p, collect(r1), collect(a2), collect(r2), collect(rep), collect(r3), collect(u3), collect(r4), collect(c), u2, r + ORDER BY p.createdAt DESC + LIMIT $limit + """) + List getPaginationSubscribedActivities(@Param("lastDate") LocalDateTime lastDate, + @Param("limit") int limit, + @Param("userID") String userID); + + @Query(""" + MATCH (a:Activity)<-[rr:`Related-To`]-(p:Post)<-[r:Posted]-(u:User) + WHERE elementId(a) = $activityID + AND p.createdAt >= $startDate + AND p.createdAt < $endDate + AND elementId(u) = $userID + RETURN p, u, r + """) + List getRangeByActivity(@Param("activityID") String activityID, @Param("userID") String userID, + @Param("startDate") LocalDateTime startDate, + @Param("endDate") LocalDateTime endDate); + + @Query(""" + MATCH (p:Post) + RETURN p.image + """) + Set findAllImages(); + + @Query(""" + MATCH (a:Activity)<-[rr:`Related-To`]-(p:Post)<-[r:Posted]-(u:User) + WHERE elementId(a)= $activityID + AND p.createdAt >= $startDate + AND p.createdAt < $endDate + AND elementId(u) = $userID + RETURN count(p) + """) + Integer getRangeCountByActivity(@Param("activityID") String activityID, @Param("userID") String userID, + @Param("startDate") LocalDateTime startDate, + @Param("endDate") LocalDateTime endDate); + + @Query(""" + MATCH (u:User)-[:Posted]->(p:Post)-[:`Related-To`]->(a:Activity) + WHERE elementId(u) = $userID AND elementId(a) = $activityID + RETURN p.streak + ORDER BY p.createdAt DESC + """) + Integer getStreakByActivity(@Param("activityID") String activityID, @Param("userID") String userID); + + @Query(""" + MATCH (u:User) + WHERE elementId(u) = $userID + MATCH (a:Activity) + WHERE elementId(a) = $activityID + CREATE (p:Post {image: $image, pointsToAdd: $pointsToAdd, createdAt: $createdAt, streak: $streak}) + CREATE (u)-[:Posted]->(p) + CREATE (p)-[:`Related-To`]->(a) + RETURN p + """) + PostEntity create(@Param("image") String image, @Param("pointsToAdd") Integer pointsToAdd, + @Param("createdAt") LocalDateTime createdAt, @Param("streak") Integer streak, + @Param("activityID") String activityID, @Param("userID") String userID); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/services/PostEntityService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/services/PostEntityService.java new file mode 100644 index 000000000..c5f8f9b6e --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/services/PostEntityService.java @@ -0,0 +1,79 @@ +package es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.services; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +import org.springframework.stereotype.Service; + +import es.iespuertodelacruz.routinefights.post.domain.Post; +import es.iespuertodelacruz.routinefights.post.domain.ports.secondary.IPostRepository; +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.mappers.PostEntityMapper; +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.repositories.IPostEntityRepository; + +@Service +public class PostEntityService implements IPostRepository { + private IPostEntityRepository postEntityRepository; + private PostEntityMapper postEntityMapper; + + public PostEntityService(IPostEntityRepository postEntityRepository, PostEntityMapper postEntityMapper) { + this.postEntityRepository = postEntityRepository; + this.postEntityMapper = postEntityMapper; + } + + @Override + public List getPagination(LocalDateTime lastDate, int limit) { + return postEntityMapper.toDomain(postEntityRepository.getPagination(lastDate, limit)); + } + + @Override + public Post save(Post post) { + return postEntityMapper.toDomain(postEntityRepository.create(post.getImage(), post.getPointsToAdd(), + post.getCreatedAt(), post.getStreak(), post.getActivity().getId(), post.getUser().getId())); + } + + @Override + public List getRangeByActivity(String activityID, String userID, LocalDateTime startDate, + LocalDateTime endDate) { + return postEntityMapper + .toDomain(postEntityRepository.getRangeByActivity(activityID, userID, startDate, endDate)); + } + + @Override + public Integer getRangeCountByActivity(String activityID, String userID, LocalDateTime startDate, + LocalDateTime endDate) { + return postEntityRepository.getRangeCountByActivity(activityID, userID, startDate, endDate); + } + + @Override + public List getPaginationByUser(LocalDateTime lastDate, int limit, String userEmail) { + return postEntityMapper.toDomain(postEntityRepository.getPaginationByUser(lastDate, limit, userEmail)); + } + + @Override + public List getPaginationByActivity(LocalDateTime lastDate, int limit, String activityID) { + return postEntityMapper.toDomain(postEntityRepository.getPaginationByActivity(lastDate, limit, activityID)); + } + + @Override + public List getPaginationFollowing(LocalDateTime lastDate, int limit, String userID) { + return postEntityMapper.toDomain(postEntityRepository.getPaginationFollowing(lastDate, limit, userID)); + } + + @Override + public List getPaginationSubscribedActivities(LocalDateTime lastDate, int limit, String userID) { + return postEntityMapper + .toDomain(postEntityRepository.getPaginationSubscribedActivities(lastDate, limit, userID)); + } + + @Override + public Set findAllImages() { + return postEntityRepository.findAllImages(); + } + + @Override + public Post findById(String id) { + return postEntityMapper.toDomain(postEntityRepository.findById(id).orElse(null)); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/report/infrastructure/adapters/secondary/entities/ReportEntity.java b/API/src/main/java/es/iespuertodelacruz/routinefights/report/infrastructure/adapters/secondary/entities/ReportEntity.java new file mode 100644 index 000000000..1054e94fd --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/report/infrastructure/adapters/secondary/entities/ReportEntity.java @@ -0,0 +1,109 @@ +package es.iespuertodelacruz.routinefights.report.infrastructure.adapters.secondary.entities; + +import java.time.LocalDateTime; + +import org.springframework.data.neo4j.core.schema.GeneratedValue; +import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.Relationship; + +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.entities.PostEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; +import java.util.Objects; + +@Node("Report") +/** + * ReportEntity + */ +public class ReportEntity { + @Id + @GeneratedValue + private String id; + private String message; + private LocalDateTime createdAt; + + @Relationship(type = "Reported", direction = Relationship.Direction.INCOMING) + private UserEntity user; + + @Relationship(type = "To_Report", direction = Relationship.Direction.OUTGOING) + private PostEntity post; + + public ReportEntity() { + } + + public ReportEntity(String id, String message, LocalDateTime createdAt, UserEntity user, PostEntity post) { + this.id = id; + this.message = message; + this.createdAt = createdAt; + this.user = user; + this.post = post; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } + + public LocalDateTime getCreatedAt() { + return this.createdAt; + } + + public void setCreatedAt(LocalDateTime createdAt) { + this.createdAt = createdAt; + } + + public UserEntity getUser() { + return this.user; + } + + public void setUser(UserEntity user) { + this.user = user; + } + + public PostEntity getPost() { + return this.post; + } + + public void setPost(PostEntity post) { + this.post = post; + } + + @Override + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof ReportEntity)) { + return false; + } + ReportEntity reportEntity = (ReportEntity) o; + return Objects.equals(id, reportEntity.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "{" + + " id='" + getId() + "'" + + ", message='" + getMessage() + "'" + + ", createdAt='" + getCreatedAt() + "'" + + ", user='" + getUser() + "'" + + ", post='" + getPost() + "'" + + "}"; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/CacheConfig.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/CacheConfig.java new file mode 100644 index 000000000..93d4c4198 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/CacheConfig.java @@ -0,0 +1,8 @@ +package es.iespuertodelacruz.routinefights.shared.config; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Configuration; +@Configuration +@EnableCaching +public class CacheConfig { + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/ConditionalSslConfig.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/ConditionalSslConfig.java new file mode 100644 index 000000000..85371fac0 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/ConditionalSslConfig.java @@ -0,0 +1,43 @@ +package es.iespuertodelacruz.routinefights.shared.config; + +import java.io.File; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; +import org.springframework.boot.web.server.WebServerFactoryCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import lombok.extern.java.Log; + +@Configuration +@Log +public class ConditionalSslConfig { + + @Value("${server.ssl.enabled:false}") + private boolean sslEnabled; + + @Value("${server.ssl.certificate:}") + private String certPath; + + @Value("${server.ssl.certificate-private-key:}") + private String keyPath; + + @Bean + public WebServerFactoryCustomizer sslCustomizer() { + return factory -> { + if (!sslEnabled) { + factory.setSsl(null); + return; + } + + File certFile = new File(certPath); + File keyFile = new File(keyPath); + + if (!certFile.exists() || !keyFile.exists()) { + log.warning("SSL is enabled but certificate or key file not found. Disabling SSL."); + factory.setSsl(null); // Desactiva SSL si no existen los archivos + } + }; + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/CustomExceptionResolver.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/CustomExceptionResolver.java new file mode 100644 index 000000000..0bb87be48 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/CustomExceptionResolver.java @@ -0,0 +1,26 @@ +package es.iespuertodelacruz.routinefights.shared.config; + +import org.springframework.graphql.execution.DataFetcherExceptionResolverAdapter; +import org.springframework.lang.NonNull; +import org.springframework.stereotype.Component; + +import graphql.GraphQLError; +import graphql.GraphqlErrorBuilder; +import graphql.schema.DataFetchingEnvironment; + +@Component +public class CustomExceptionResolver extends DataFetcherExceptionResolverAdapter { + + @Override + protected GraphQLError resolveToSingleError(@NonNull Throwable ex, @NonNull DataFetchingEnvironment env) { + if (ex instanceof RuntimeException) { + return GraphqlErrorBuilder.newError() + .message(ex.getMessage()) + .path(env.getExecutionStepInfo().getPath()) + .location(env.getField().getSourceLocation()) + .build(); + } else { + return null; + } + } +} \ No newline at end of file diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/EnableSOAP.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/EnableSOAP.java new file mode 100644 index 000000000..c09da7ced --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/EnableSOAP.java @@ -0,0 +1,10 @@ +package es.iespuertodelacruz.routinefights.shared.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.ImportResource; + +@Configuration +@ImportResource("classpath:cxf-service.xml") +public class EnableSOAP { + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/FirebaseConfig.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/FirebaseConfig.java new file mode 100644 index 000000000..bc5342299 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/FirebaseConfig.java @@ -0,0 +1,47 @@ +package es.iespuertodelacruz.routinefights.shared.config; + +import java.io.IOException; +import java.io.InputStream; + +import java.util.List; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.google.auth.oauth2.GoogleCredentials; +import com.google.firebase.FirebaseApp; +import com.google.firebase.FirebaseOptions; +import com.google.firebase.messaging.FirebaseMessaging; + +@Configuration +public class FirebaseConfig { + + @Bean + FirebaseMessaging firebaseMessaging(FirebaseApp firebaseApp) { + return FirebaseMessaging.getInstance(firebaseApp); + } + + @Bean + FirebaseApp firebaseApp(GoogleCredentials credentials) { + FirebaseOptions options = FirebaseOptions.builder() + .setCredentials(credentials) + .build(); + List firebaseApps = FirebaseApp.getApps(); + if (firebaseApps != null && !firebaseApps.isEmpty()) { + return firebaseApps.get(0); + } + + return FirebaseApp.initializeApp(options); +} + + @Bean + GoogleCredentials googleCredentials(FirebaseCredentialsConfig firebaseProperties) throws IOException { + if (firebaseProperties.getServiceAccount() != null) { + try (InputStream is = firebaseProperties.getServiceAccount().getInputStream()) { + return GoogleCredentials.fromStream(is); + } + } else { + return GoogleCredentials.getApplicationDefault(); + } + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/FirebaseCredentialsConfig.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/FirebaseCredentialsConfig.java new file mode 100644 index 000000000..bf636a387 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/FirebaseCredentialsConfig.java @@ -0,0 +1,20 @@ +package es.iespuertodelacruz.routinefights.shared.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.core.io.Resource; +import org.springframework.stereotype.Component; + +@Component +@ConfigurationProperties(prefix = "firebase") +public class FirebaseCredentialsConfig { + + private Resource serviceAccount; + + public Resource getServiceAccount() { + return serviceAccount; + } + + public void setServiceAccount(Resource serviceAccount) { + this.serviceAccount = serviceAccount; + } +} \ No newline at end of file diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/Neo4jConfig.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/Neo4jConfig.java new file mode 100644 index 000000000..2f11c953a --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/Neo4jConfig.java @@ -0,0 +1,27 @@ +package es.iespuertodelacruz.routinefights.shared.config; + +import org.neo4j.cypherdsl.core.renderer.Configuration; +import org.neo4j.cypherdsl.core.renderer.Dialect; +import org.springframework.context.annotation.Bean; +import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * Neo4jConfig + */ +@org.springframework.context.annotation.Configuration +@EnableNeo4jRepositories(basePackages = "es.iespuertodelacruz.routinefights") +@EnableTransactionManagement +public class Neo4jConfig { + /** + * Method to configure the cypher dsl + * + * @return Configuration + */ + @Bean + Configuration cypherDslConfiguration() { + return Configuration.newConfig() + .withDialect(Dialect.NEO4J_5) + .build(); + } +} \ No newline at end of file diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/SendGridConfiguration.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/SendGridConfiguration.java new file mode 100644 index 000000000..8c166e2e8 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/SendGridConfiguration.java @@ -0,0 +1,31 @@ +package es.iespuertodelacruz.routinefights.shared.config; + +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.sendgrid.SendGrid; +import com.sendgrid.helpers.mail.objects.Email; + +@Configuration +@EnableConfigurationProperties(SendGridConfigurationProperties.class) +class SendGridConfiguration { + private final SendGridConfigurationProperties sendGridConfigurationProperties; + + public SendGridConfiguration(SendGridConfigurationProperties sendGridConfigurationProperties) { + this.sendGridConfigurationProperties = sendGridConfigurationProperties; + } + + @Bean + public SendGrid sendGrid() { + String apiKey = sendGridConfigurationProperties.getApiKey(); + return new SendGrid(apiKey); + } + + @Bean + public Email fromEmail() { + String fromEmail = sendGridConfigurationProperties.getFromEmail(); + String fromName = sendGridConfigurationProperties.getFromName(); + return new Email(fromEmail, fromName); + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/SendGridConfigurationProperties.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/SendGridConfigurationProperties.java new file mode 100644 index 000000000..0b05be5ee --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/SendGridConfigurationProperties.java @@ -0,0 +1,48 @@ +package es.iespuertodelacruz.routinefights.shared.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; + +@ConfigurationProperties(prefix = "sendgrid") +class SendGridConfigurationProperties { + @NotBlank + @Pattern(regexp = "^SG[0-9a-zA-Z._]{67}$") + private String apiKey; + + @Email + @NotBlank + private String fromEmail; + + @NotBlank + private String fromName; + + public String getApiKey() { + return this.apiKey; + } + + public void setApiKey(String apiKey) { + this.apiKey = apiKey; + } + + public String getFromEmail() { + return this.fromEmail; + } + + public void setFromEmail(String fromEmail) { + this.fromEmail = fromEmail; + } + + public String getFromName() { + return this.fromName; + } + + public void setFromName(String fromName) { + this.fromName = fromName; + } + + + +} \ No newline at end of file diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/SwaggerConfig.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/SwaggerConfig.java new file mode 100644 index 000000000..d28dbc992 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/SwaggerConfig.java @@ -0,0 +1,34 @@ +package es.iespuertodelacruz.routinefights.shared.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import io.swagger.v3.oas.annotations.OpenAPIDefinition; +import io.swagger.v3.oas.annotations.info.Info; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; + +@Configuration +@OpenAPIDefinition(info = @Info(title = "API Routine Fights", version = "0.0.1"), tags = { + @Tag(name = "AUTH", description = "Get access token"), +}) +public class SwaggerConfig { + @Bean + public OpenAPI customizeOpenAPI() { + final String securitySchemeName = "bearerAuth"; + return new OpenAPI() + .addSecurityItem(new SecurityRequirement() + .addList(securitySchemeName)) + .components(new Components() + .addSecuritySchemes(securitySchemeName, + new SecurityScheme() + .name(securitySchemeName) + .type(SecurityScheme.Type.HTTP) + .scheme("bearer") + .bearerFormat("JWT"))); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/TasksConfig.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/TasksConfig.java new file mode 100644 index 000000000..d32401f20 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/config/TasksConfig.java @@ -0,0 +1,10 @@ +package es.iespuertodelacruz.routinefights.shared.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; + +@EnableScheduling +@Configuration +public class TasksConfig { + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/controllers/AuthController.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/controllers/AuthController.java new file mode 100644 index 000000000..9ec3c2078 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/controllers/AuthController.java @@ -0,0 +1,99 @@ +package es.iespuertodelacruz.routinefights.shared.controllers; + +import java.util.logging.Logger; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import es.iespuertodelacruz.routinefights.device_token.domain.ports.primary.IDeviceTokenService; +import es.iespuertodelacruz.routinefights.shared.dto.UserDTOAuth; +import es.iespuertodelacruz.routinefights.shared.mappers.UserDTOAuthMapper; +import es.iespuertodelacruz.routinefights.shared.services.AuthService; +import es.iespuertodelacruz.routinefights.shared.services.MailService; +import es.iespuertodelacruz.routinefights.shared.utils.HTMLTemplates; +import es.iespuertodelacruz.routinefights.user.domain.User; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.java.Log; + +@RestController +@RequestMapping("/auth") +@CrossOrigin +@Tag(name = "AUTH", description = "Get access token") +@Log +public class AuthController { + + private final MailService mailService; + private final AuthService authService; + private final UserDTOAuthMapper userDTOAuthMapper; + Logger logger = Logger.getLogger(AuthController.class.getName()); + private final IDeviceTokenService deviceTokenService; + + public AuthController(MailService mailService, AuthService authService, UserDTOAuthMapper userDTOAuthMapper, IDeviceTokenService deviceTokenService) { + this.mailService = mailService; + this.authService = authService; + this.userDTOAuthMapper = userDTOAuthMapper; + this.deviceTokenService = deviceTokenService; + } + + @PostMapping("/register") + public ResponseEntity register(@RequestBody UserDTOAuth userDTOAuth) { + try { + User user = authService.register(userDTOAuth.username(), userDTOAuth.email(), + userDTOAuth.password(), + userDTOAuth.nationality(), userDTOAuth.phoneNumber(), userDTOAuth.image()); + mailService.sentVerifyToken(user.getEmail(), "Verify your email: " + user.getUsername(), + user.getVerificationToken()); + return ResponseEntity.ok(userDTOAuthMapper.toDTO(user)); + } catch (Exception e) { + return ResponseEntity.badRequest().body(e.getMessage()); + } + } + + @PostMapping("/login") + public ResponseEntity login(@RequestParam String email, @RequestParam String password,@RequestParam(required = false) String deviceToken, @RequestParam(required = false) String language) { + try { + log.warning("Login attempt for email: " + email); + log.info("Token: " + deviceToken + " Language: " + language); + + String token = authService.login(email, password); + if (deviceToken != null && language != null) { + deviceTokenService.save(email, deviceToken, language); + } + return ResponseEntity.ok(token); + } catch (Exception e) { + return ResponseEntity.badRequest().body(e.getMessage()); + } + } + + @GetMapping("/verify/{email}/{token}") + public String verify(@PathVariable String email, @PathVariable String token) { + if (email == null || token == null) { + return HTMLTemplates.NEED_EMAIL_TOKEN; + } + + boolean isVerified; + try { + isVerified = authService.verify(email, token); + } catch (Exception e) { + logger.warning("Verify /api/verify ERROR: " + e.getMessage()); + return HTMLTemplates.ERROR.formatted(e.getMessage()); + } + if (isVerified) { + logger.info("Verify /api/verify OK"); + return HTMLTemplates.VERIFIED; + } + + return HTMLTemplates.BAD_REQUEST; + } + + + + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/controllers/DeeplController.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/controllers/DeeplController.java new file mode 100644 index 000000000..149274b31 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/controllers/DeeplController.java @@ -0,0 +1,28 @@ +package es.iespuertodelacruz.routinefights.shared.controllers; + + +import es.iespuertodelacruz.routinefights.shared.services.DeeplService; +import io.swagger.v3.oas.annotations.tags.Tag; + +import org.springframework.security.access.annotation.Secured; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + + +@RequestMapping("/deepl") +@RestController() +@Tag(name = "DEEPL", description = "DeepL Translations") +public class DeeplController { + private final DeeplService deeplService; + public DeeplController(DeeplService deeplService) { + this.deeplService = deeplService; + } + @GetMapping("/translate") + @Secured({"ROLE_ADMIN", "ROLE_USER"}) + public String translate(@RequestParam String text, @RequestParam String targetLang) { + return deeplService.translateText(text, targetLang); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/controllers/GraphController.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/controllers/GraphController.java new file mode 100644 index 000000000..f193b4e5a --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/controllers/GraphController.java @@ -0,0 +1,84 @@ +package es.iespuertodelacruz.routinefights.shared.controllers; + + +import org.springframework.cache.annotation.Cacheable; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.annotation.Secured; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import es.iespuertodelacruz.routinefights.shared.services.GraphService; +import io.swagger.v3.oas.annotations.tags.Tag; + +@RestController +@RequestMapping("/graphs") +@CrossOrigin +@Tag(name = "GRAPH", description = "Get graphs") +public class GraphController { + + private final GraphService graphService; + + public GraphController(GraphService graphService) { + this.graphService = graphService; + } + + @GetMapping("/users/creation") + @Secured("ROLE_ADMIN") + @Cacheable(value = "userCreationChart") + public ResponseEntity getUserCreationChart() { + try { + return ResponseEntity.ok(graphService.findUserRegistrationsByDate()); + } catch (Exception e) { + return ResponseEntity.badRequest().body(e.getMessage()); + } + } + + @GetMapping("/posts/creation") + @Secured("ROLE_ADMIN") + @Cacheable(value = "postCreationChart") + public ResponseEntity getPostCreationChart() { + try { + return ResponseEntity.ok(graphService.findPostsCreatedByDate()); + } catch (Exception e) { + return ResponseEntity.badRequest().body(e.getMessage()); + } + } + + @GetMapping("/posts/points") + @Secured("ROLE_ADMIN") + @Cacheable(value = "postPointsChart") + public ResponseEntity getPostPointsChart() { + try { + return ResponseEntity.ok(graphService.findPointsAddedSumByDate()); + } catch (Exception e) { + return ResponseEntity.badRequest().body(e.getMessage()); + } + } + + @GetMapping("/users/points") + @Secured("ROLE_ADMIN") + @Cacheable(value = "userPointsChart") + public ResponseEntity getUsersTotalPoints() { + try { + return ResponseEntity.ok(graphService.findTotalPointsByUser()); + } catch (Exception e) { + return ResponseEntity.badRequest().body(e.getMessage()); + } + } + + @GetMapping("/activities/timerate") + @Secured("ROLE_ADMIN") + @Cacheable(value = "activityTimeRateChart") + public ResponseEntity getActivityTimeRate() { + try { + return ResponseEntity.ok(graphService.findActivitiesByTimeRate()); + } catch (Exception e) { + return ResponseEntity.badRequest().body(e.getMessage()); + } + } + + + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/controllers/ImageController.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/controllers/ImageController.java new file mode 100644 index 000000000..1a0d02c99 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/controllers/ImageController.java @@ -0,0 +1,72 @@ +package es.iespuertodelacruz.routinefights.shared.controllers; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.springframework.core.io.UrlResource; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import es.iespuertodelacruz.routinefights.shared.exceptions.ImageNotFoundException; +import es.iespuertodelacruz.routinefights.shared.exceptions.ImageUploadException; +import es.iespuertodelacruz.routinefights.shared.services.ImageService; +import io.swagger.v3.oas.annotations.tags.Tag; + +@RestController +@RequestMapping("/images") +@CrossOrigin +@Tag(name = "IMAGES", description = "Images management") +public class ImageController { + + private final ImageService imageService; + + Logger logger = Logger.getLogger(ImageController.class.getName()); + + public ImageController(ImageService imageService) { + this.imageService = imageService; + } + + @PostMapping(value = "/", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public ResponseEntity uploadFile(@RequestPart("file") MultipartFile file) { + try { + if (file == null || file.isEmpty()) { + throw new ImageUploadException("File is empty"); + } + String contentType = file.getContentType(); + if (contentType != null) { + if (!contentType.startsWith("image/")) { + throw new ImageUploadException("File is not an image"); + } + String filename = imageService.save(file); + logger.log(Level.INFO, "Image uploaded: {0}", filename); + return ResponseEntity.ok(filename); + } + logger.warning("Error uploading image: Content type is null"); + throw new ImageUploadException("File is empty"); + } catch (RuntimeException e) { + logger.warning("Error uploading image: " + e.getMessage()); + return ResponseEntity.badRequest().body(e.getMessage()); + } + } + + @GetMapping(value = "/{imageName}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) + public ResponseEntity getImage(@PathVariable("imageName") String imageName) { + try { + UrlResource uri = imageService.findImage(imageName); + logger.log(Level.INFO, "GetImage /images/{0} OK", imageName); + return ResponseEntity.ok(uri); + } catch (ImageNotFoundException e) { + logger.warning("Error getting image: " + e.getMessage()); + return ResponseEntity.notFound().build(); + } + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/controllers/NotificationController.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/controllers/NotificationController.java new file mode 100644 index 000000000..437f48ba7 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/controllers/NotificationController.java @@ -0,0 +1,35 @@ +package es.iespuertodelacruz.routinefights.shared.controllers; + +import java.util.Map; + +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import es.iespuertodelacruz.routinefights.device_token.domain.DeviceToken; +import es.iespuertodelacruz.routinefights.shared.services.NotificationsService; +import io.swagger.v3.oas.annotations.tags.Tag; + +@RequestMapping("/notifications") +@RestController() +@Tag(name = "NOTIFICATIONS", description = "Notifications") +// @Secured("ROLE_ADMIN") +public class NotificationController { + private NotificationsService notificationService; + + public NotificationController(NotificationsService notificationService){ + this.notificationService = notificationService; + } + + @PostMapping("/") + public String postMethodName(@RequestParam String titleKey, @RequestParam String bodyKey, @RequestBody Map args) { + return notificationService.sendToAllUsers(titleKey, bodyKey, args); + } + + @PostMapping("/user") + public String sendToUser(@RequestParam String titleKey, @RequestParam String bodyKey,@RequestBody DeviceToken userToken, @RequestBody Map args) { + return notificationService.sendTo(titleKey, bodyKey, userToken, args); + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/dto/ChartData.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/dto/ChartData.java new file mode 100644 index 000000000..0827fd254 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/dto/ChartData.java @@ -0,0 +1,61 @@ +package es.iespuertodelacruz.routinefights.shared.dto; + +import java.util.ArrayList; +import java.util.List; + +public class ChartData { + private List labels; + private List data; + + public ChartData() { + this.labels = new ArrayList<>(); + this.data = new ArrayList<>(); + } + + public ChartData(List labels, List data) { + this.labels = labels; + this.data = data; + } + + public List getLabels() { + return this.labels; + } + + public void setLabels(List labels) { + this.labels = labels; + } + + public List getData() { + return this.data; + } + + public void setData(List data) { + this.data = data; + } + + public void addLabel(String label) { + this.labels.add(label); + } + public void addData(Long data) { + this.data.add(data); + } + + @Override + public String toString() { + return "ChartData [labels=" + labels + ", data=" + data + "]"; + } + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null || getClass() != obj.getClass()) + return false; + ChartData other = (ChartData) obj; + return labels.equals(other.labels) && data.equals(other.data); + } + @Override + public int hashCode() { + return 31 * labels.hashCode() + data.hashCode(); + } + +} \ No newline at end of file diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/dto/UserDTOAuth.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/dto/UserDTOAuth.java new file mode 100644 index 000000000..7e95ac316 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/dto/UserDTOAuth.java @@ -0,0 +1,5 @@ +package es.iespuertodelacruz.routinefights.shared.dto; + +public record UserDTOAuth(String username, String email,String password, String nationality, String phoneNumber, String image) { + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/AuthException.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/AuthException.java new file mode 100644 index 000000000..d58fe867d --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/AuthException.java @@ -0,0 +1,8 @@ +package es.iespuertodelacruz.routinefights.shared.exceptions; + +public class AuthException extends RuntimeException { + public AuthException(String message) { + super(message); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/DeeplException.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/DeeplException.java new file mode 100644 index 000000000..9aa5a3bc3 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/DeeplException.java @@ -0,0 +1,11 @@ +package es.iespuertodelacruz.routinefights.shared.exceptions; + +public class DeeplException extends RuntimeException { + public DeeplException(String message) { + super(message); + } + + public DeeplException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageNotFoundException.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageNotFoundException.java new file mode 100644 index 000000000..029c76535 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageNotFoundException.java @@ -0,0 +1,8 @@ +package es.iespuertodelacruz.routinefights.shared.exceptions; + +public class ImageNotFoundException extends RuntimeException { + public ImageNotFoundException(String message) { + super(message); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageSaveException.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageSaveException.java new file mode 100644 index 000000000..41e090e19 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageSaveException.java @@ -0,0 +1,8 @@ +package es.iespuertodelacruz.routinefights.shared.exceptions; + +public class ImageSaveException extends RuntimeException { + public ImageSaveException(String message) { + super(message); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageUploadException.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageUploadException.java new file mode 100644 index 000000000..d44788876 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageUploadException.java @@ -0,0 +1,8 @@ +package es.iespuertodelacruz.routinefights.shared.exceptions; + +public class ImageUploadException extends RuntimeException { + public ImageUploadException(String message) { + super(message); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/MailException.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/MailException.java new file mode 100644 index 000000000..e39fb3726 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/exceptions/MailException.java @@ -0,0 +1,8 @@ +package es.iespuertodelacruz.routinefights.shared.exceptions; + +public class MailException extends RuntimeException { + public MailException(String message) { + super(message); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/mappers/UserDTOAuthMapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/mappers/UserDTOAuthMapper.java new file mode 100644 index 000000000..c6b08a095 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/mappers/UserDTOAuthMapper.java @@ -0,0 +1,11 @@ +package es.iespuertodelacruz.routinefights.shared.mappers; + +import org.mapstruct.Mapper; + +import es.iespuertodelacruz.routinefights.shared.dto.UserDTOAuth; +import es.iespuertodelacruz.routinefights.user.domain.User; + +@Mapper(componentModel = "spring") +public interface UserDTOAuthMapper { + UserDTOAuth toDTO(User user); +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/security/CxfAuthInterceptor.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/security/CxfAuthInterceptor.java new file mode 100644 index 000000000..dfb5838aa --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/security/CxfAuthInterceptor.java @@ -0,0 +1,61 @@ +package es.iespuertodelacruz.routinefights.shared.security; + +import java.io.IOException; + +import java.util.List; +import java.util.Map; + +import org.apache.cxf.interceptor.Fault; +import org.apache.cxf.message.Message; +import org.apache.cxf.phase.AbstractPhaseInterceptor; +import org.apache.cxf.phase.Phase; + +import org.springframework.security.core.userdetails.UserDetails; +import es.iespuertodelacruz.routinefights.shared.utils.JwtAuthenticationHelper; +import jakarta.servlet.ServletException; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class CxfAuthInterceptor extends AbstractPhaseInterceptor { + + private final JwtService jwtTokenManager; + private final JwtAuthenticationHelper jwtAuthenticationHelper; + + public CxfAuthInterceptor(JwtService jwtTokenManager, + JwtAuthenticationHelper jwtAuthenticationHelper) { + super(Phase.PRE_INVOKE); + this.jwtTokenManager = jwtTokenManager; + this.jwtAuthenticationHelper = jwtAuthenticationHelper; + } + + public static final String AUTH_PREFIX = "Bearer "; + + @Override + public void handleMessage(Message message) throws Fault { + log.info("Mensaje de entrada:" + message); + Map> protocolHeaders = (Map>) message.get(Message.PROTOCOL_HEADERS); + + if (protocolHeaders != null && protocolHeaders.containsKey("Authorization")) { + try { + List authorizationHeaders = protocolHeaders.get("Authorization"); + + if (authorizationHeaders != null && !authorizationHeaders.isEmpty()) { + String header = authorizationHeaders.get(0); + String token = jwtAuthenticationHelper.extractTokenFromHeader(header, AUTH_PREFIX); + Map mapInfoToken = jwtTokenManager.validateAndGetClaims(token); + final String correo = mapInfoToken.get("mail"); + final String rol = mapInfoToken.get("role"); + + UserDetails userDetails = jwtAuthenticationHelper.buildUserDetails(correo, rol); + jwtAuthenticationHelper.setAuthentication(userDetails, null, null, null); + } + } catch (IOException | ServletException e) { + log.error("Error in JWT validation: " + e.getMessage()); + throw new Fault(e); + + } + } else { + log.info("Authorization Header not found"); + } + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/security/JwtFilter.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/security/JwtFilter.java new file mode 100644 index 000000000..65378b2b5 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/security/JwtFilter.java @@ -0,0 +1,89 @@ +package es.iespuertodelacruz.routinefights.shared.security; + +import java.io.IOException; + +import java.util.Map; +import org.springframework.lang.NonNull; + +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; + +import com.auth0.jwt.exceptions.JWTVerificationException; +import es.iespuertodelacruz.routinefights.shared.utils.JwtAuthenticationHelper; + +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +@Component +public class JwtFilter extends OncePerRequestFilter { + + public static final String AUTH_HEADER = "Authorization"; + public static final String AUTH_PREFIX = "Bearer "; + + private final JwtService jwtTokenManager; + + private final JwtAuthenticationHelper jwtAuthenticationHelper; + + public JwtFilter(JwtService jwtTokenManager, JwtAuthenticationHelper jwtAuthenticationHelper) { + this.jwtTokenManager = jwtTokenManager; + this.jwtAuthenticationHelper = jwtAuthenticationHelper; + } + + @Override + protected void doFilterInternal(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response, + @NonNull FilterChain filterChain) + throws ServletException, IOException { + + String header = request.getHeader(AUTH_HEADER); + + String[] allowedRoutes = { "/swagger-ui.html", + "/swagger-ui/", "/v2/", + "configuration/", "/swagger", + "/graphiql", + "/webjars/", "/auth/", + "/api/register", "/v3/", + "/graphiql", "/graphql/schema", + "/websocket", "/index.html", "/h2-console", "/services", "/notifications" + }; + String path = request.getRequestURI(); + + for (String ruta : allowedRoutes) { + if (path.startsWith(ruta)) { + filterChain.doFilter(request, response); + return; + } + } + if (header == null && path.startsWith("/graphql")) { + filterChain.doFilter(request, response); + return; + } + + if (header != null && header.startsWith(AUTH_PREFIX)) { + + String token = jwtAuthenticationHelper.extractTokenFromHeader(header, AUTH_PREFIX); + try { + Map mapInfoToken = jwtTokenManager.validateAndGetClaims(token); + final String correo = mapInfoToken.get("mail"); + final String rol = mapInfoToken.get("role"); + + UserDetails userDetails = jwtAuthenticationHelper.buildUserDetails(correo, rol); + + jwtAuthenticationHelper.setAuthentication(userDetails, request, filterChain, response); + } catch (JWTVerificationException e) { + response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + response.setContentType("application/json"); + response.getWriter().write("{\"error\": \"Invalid token.\"}"); + + } + + } else { + response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + response.setContentType("application/json"); + response.getWriter().write("{\"error\": \"You are not authenticated. Login on host/api/login.\"}"); + } + + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/security/JwtService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/security/JwtService.java new file mode 100644 index 000000000..3b9870e43 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/security/JwtService.java @@ -0,0 +1,43 @@ +package es.iespuertodelacruz.routinefights.shared.security; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import com.auth0.jwt.JWT; +import com.auth0.jwt.algorithms.Algorithm; +import com.auth0.jwt.interfaces.Claim; + +@Service +public class JwtService { + + @Value("${jwt.secret}") + private String secret = "secret"; + + @Value("${jwt.expiration}") + private long expiration = 9876543210L; + + public String generateToken(String mail, String rol) { + return JWT.create() + .withSubject(mail) + .withClaim("role", rol) + .withExpiresAt(new Date(System.currentTimeMillis() + expiration)) + .sign(Algorithm.HMAC256(secret)); + } + + public Map validateAndGetClaims(String token) { + Map claims = JWT.require(Algorithm.HMAC256(secret)) + .build() + .verify(token) + .getClaims(); + + Map infoToken = new HashMap<>(); + infoToken.put("mail", claims.get("sub").asString()); + infoToken.put("role", claims.get("role").asString()); + + return infoToken; + } +} \ No newline at end of file diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/security/SecurityConfiguration.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/security/SecurityConfiguration.java new file mode 100644 index 000000000..9914265d1 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/security/SecurityConfiguration.java @@ -0,0 +1,61 @@ +package es.iespuertodelacruz.routinefights.shared.security; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer.FrameOptionsConfig; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; + +@Configuration +@EnableWebSecurity +@EnableMethodSecurity(prePostEnabled = true, securedEnabled = true) +public class SecurityConfiguration { + private JwtFilter jwtAuthFilter; + + @Autowired + void setJwtAuthFilter(JwtFilter jwtAuthFilter) { + this.jwtAuthFilter = jwtAuthFilter; + } + + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } + + @Bean + public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + http + .cors(cors -> cors.configurationSource(corsConfigurationSource())) + .csrf(csrf -> csrf.disable()) + .authorizeHttpRequests(auth -> auth + .requestMatchers("/h2-console/**").permitAll() + .requestMatchers("/graphiql/**","/graphql/schema", "/graphql").permitAll() + .requestMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll() + .requestMatchers("/auth/**","/services/**", "/notifications/**").permitAll() + .anyRequest().authenticated()) + .addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter.class) + .headers(headers -> headers.frameOptions(FrameOptionsConfig::sameOrigin)); + + return http.build(); + } + + @Bean + public UrlBasedCorsConfigurationSource corsConfigurationSource() { + CorsConfiguration configuration = new CorsConfiguration(); + configuration.addAllowedOrigin("*"); + configuration.addAllowedMethod("*"); + configuration.addAllowedHeader("*"); + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + source.registerCorsConfiguration("/**", configuration); + source.registerCorsConfiguration("/**", configuration); + return source; + } +} \ No newline at end of file diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/AuthService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/AuthService.java new file mode 100644 index 000000000..c32a59899 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/AuthService.java @@ -0,0 +1,69 @@ +package es.iespuertodelacruz.routinefights.shared.services; + +import java.time.LocalDateTime; +import java.util.UUID; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +import es.iespuertodelacruz.routinefights.shared.exceptions.AuthException; +import es.iespuertodelacruz.routinefights.shared.security.JwtService; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.ports.primary.IUserService; + +@Service +public class AuthService { + + private final JwtService jwtService; + private final IUserService userService; + private final PasswordEncoder passwordEncoder; + + public AuthService(JwtService jwtService, IUserService userService, PasswordEncoder passwordEncoder) { + this.jwtService = jwtService; + this.userService = userService; + this.passwordEncoder = passwordEncoder; + } + + public String login(String mail, String password) { + User user = userService.findByEmailOnlyBase(mail); + + if (user != null && passwordEncoder.matches(password, user.getPassword())) { + if (user.getVerified()) { + return jwtService.generateToken(user.getEmail(), user.getRole()); + } else { + throw new AuthException("User not verified"); + } + } + throw new AuthException("User not found or Invalid Credentials"); + } + + public User register(String username, String email, String password, String nationality, String phoneNumber, + String image) { + User user; + user = userService.post(username, email, password, nationality, phoneNumber, image, "ROLE_USER", false, + UUID.randomUUID().toString(), LocalDateTime.now(), LocalDateTime.now(), null); + if (user == null) { + throw new AuthException("Something happened"); + } + user.setPassword("HIDDEN"); + + return user; + } + + public boolean verify(String email, String token) { + User user = userService.findByEmail(email); + if(user != null){ + if(user.getVerified()){ + return true; + } + if (user.getVerificationToken().equals(token)) { + userService.put(user.getId(), user.getUsername(), user.getEmail(), user.getPassword(), + user.getNationality(), user.getPhoneNumber(), user.getImage(), user.getRole(), true, null, + user.getCreatedAt(), + LocalDateTime.now(), null); + return true; + } + } + return false; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/DeeplService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/DeeplService.java new file mode 100644 index 000000000..3b182bcd3 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/DeeplService.java @@ -0,0 +1,55 @@ +package es.iespuertodelacruz.routinefights.shared.services; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.deepl.api.DeepLClient; +import com.deepl.api.DeepLException; + +import es.iespuertodelacruz.routinefights.shared.exceptions.DeeplException; +import lombok.extern.java.Log; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; + +@Service +@Log +public class DeeplService { + private final DeepLClient deeplClient; + + @Autowired + public DeeplService() { + InputStream is = getClass().getClassLoader().getResourceAsStream("keystore/deeplKey"); + if (is == null) { + throw new IllegalStateException("deeplKey resource not found in classpath"); + } + String key; + try (BufferedReader br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))) { + key = br.readLine(); + } catch (IOException e) { + throw new DeeplException("Failed to read deeplKey resource", e); + } + deeplClient = new DeepLClient(key); + } + + + protected DeeplService(DeepLClient deeplClient) { + this.deeplClient = deeplClient; + } + + public String translateText(String text, String targetLang) { + try { + return deeplClient.translateText(text, null, targetLang).getText(); + } catch (DeepLException e) { + log.severe("Translation failed: " + e.getMessage()); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + log.severe("Translation interrupted: " + e.getMessage()); + } + return null; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/GraphService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/GraphService.java new file mode 100644 index 000000000..783b0e9e2 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/GraphService.java @@ -0,0 +1,95 @@ +package es.iespuertodelacruz.routinefights.shared.services; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +import org.springframework.data.neo4j.core.Neo4jClient; +import org.springframework.stereotype.Service; + +import es.iespuertodelacruz.routinefights.shared.dto.ChartData; + +@Service +public class GraphService { + + private static final String TOTAL = "total"; + private final Neo4jClient neo4jClient; + + public GraphService(Neo4jClient neo4jClient) { + this.neo4jClient = neo4jClient; + } + + public ChartData findPostsCreatedByDate() { + String cypher = """ + MATCH (p:Post) + RETURN date(p.createdAt) AS createdAt, count(p) AS total + ORDER BY createdAt + """; + + return executeQuerry(cypher, "createdAt", TOTAL); + } + + public ChartData findPointsAddedSumByDate() { + String cypher = """ + MATCH (p:Post) + RETURN date(p.createdAt) AS createdAt, + sum(p.pointsToAdd) AS totalPoints + ORDER BY createdAt + """; + + return executeQuerry(cypher, "createdAt", "totalPoints"); + } + + public ChartData findActivitiesByTimeRate() { + String cypher = """ + MATCH (a:Activity) + RETURN a.timeRate AS rate, count(a) AS total + ORDER BY rate + """; + + return executeQuerry(cypher, "rate", TOTAL); + } + + public ChartData findTotalPointsByUser() { + String cypher = """ + MATCH (u:User)-[:Posted]->(p:Post) + RETURN u.username AS user, + sum(p.pointsToAdd) AS totalPoints + ORDER BY totalPoints DESC + """; + + return executeQuerry(cypher, "user", "totalPoints"); + } + + public ChartData findUserRegistrationsByDate() { + String cypher = """ + MATCH (u:User) + RETURN date(u.createdAt) AS registeredAt, count(u) AS total + ORDER BY registeredAt + """; + + return executeQuerry(cypher, "registeredAt", TOTAL); + } + + ChartData executeQuerry(String cypher, String label, String data) { + List labels = new ArrayList<>(); + List dataList = new ArrayList<>(); + + Collection> rows = neo4jClient + .query(cypher) + .fetch() + .all(); + + for (Map row : rows) { + String labelValue = String.valueOf(row.get(label)); + Number dataValue = (Number) row.get(data); + + labels.add(labelValue); + dataList.add(dataValue.longValue()); + } + + return new ChartData(labels, dataList); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/ICRUD.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/ICRUD.java new file mode 100644 index 000000000..fe1d5428e --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/ICRUD.java @@ -0,0 +1,31 @@ +package es.iespuertodelacruz.routinefights.shared.services; + +import java.util.List; + +/** + * IGeneric + */ +public interface ICRUD { + /** + * Method to find all T + * + * @return List list of T + */ + public List findAll(); + + /** + * Method to find T by id + * + * @param id + * @return T + */ + public T findById(String id); + + /** + * Method to delete T + * + * @param id id + * @return boolean + */ + public boolean delete(String id); +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/ImageService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/ImageService.java new file mode 100644 index 000000000..8a1d9eaf2 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/ImageService.java @@ -0,0 +1,84 @@ +package es.iespuertodelacruz.routinefights.shared.services; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; + +import org.springframework.core.io.UrlResource; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import es.iespuertodelacruz.routinefights.shared.exceptions.ImageNotFoundException; +import es.iespuertodelacruz.routinefights.shared.exceptions.ImageSaveException; + +@Service +public class ImageService { + private static final String ERROR = "Error: "; + private final Path uploads = Paths.get("uploads"); + + private Path getFreePath(String filename, Path filePath) { + int counter = 1; + while (Files.exists(filePath)) { + String newFilename = filename.replaceFirst("(\\.[^.]+$|$)", "_" + counter + "$1"); + filePath = this.uploads.resolve(newFilename); + counter++; + } + return filePath; + } + + public UrlResource findImage(String imageName) { + try { + Path pathForFilename = uploads.resolve(imageName); + UrlResource resource = new UrlResource(pathForFilename.toUri()); + if (resource.exists()) { + return resource; + } else { + throw new ImageNotFoundException(ERROR + imageName + " not found"); + } + } catch (MalformedURLException e) { + throw new ImageNotFoundException(ERROR + e.getMessage()); + } + } + + public String save(MultipartFile file) { + try { + Files.createDirectories(uploads); + } catch (IOException e) { + throw new ImageSaveException("Could not initialize folder for upload"); + } + String filename = file.getOriginalFilename(); + if (filename == null) { + throw new ImageSaveException("Filename is null"); + } + Path filePath = this.uploads.resolve(filename); + filePath = getFreePath(filename, filePath); + try { + Files.copy(file.getInputStream(), filePath); + return filePath.getFileName().toString(); + } catch (IOException e) { + throw new ImageSaveException("Could not store the file. Error: " + e.getMessage()); + } + } + + public void delete(String imageName) { + Path pathForFilename = uploads.resolve(imageName); + try { + Files.delete(pathForFilename); + } catch (IOException e) { + throw new ImageNotFoundException(ERROR + e.getMessage()); + } + } + + public List getAll() { + try (var stream = Files.list(uploads)) { + return stream.map(path -> path.getFileName().toString()).toList(); + } catch (IOException e) { + throw new ImageNotFoundException(ERROR + e.getMessage()); + } + + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/MailService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/MailService.java new file mode 100644 index 000000000..c5a058419 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/MailService.java @@ -0,0 +1,56 @@ +package es.iespuertodelacruz.routinefights.shared.services; + + +import org.springframework.stereotype.Service; + +import com.sendgrid.helpers.mail.Mail; +import com.sendgrid.helpers.mail.objects.Content; +import com.sendgrid.helpers.mail.objects.Email; +import com.sendgrid.Method; +import com.sendgrid.Request; +import com.sendgrid.Response; +import com.sendgrid.SendGrid; +import es.iespuertodelacruz.routinefights.shared.exceptions.MailException; +import es.iespuertodelacruz.routinefights.shared.utils.HTMLTemplates; + +@Service +public class MailService { + private static final String EMAIL_ENDPOINT = "mail/send"; + + private final SendGrid sendGrid; + private final Email fromEmail; + + public MailService(SendGrid sendGrid, Email fromEmail) { + this.sendGrid = sendGrid; + this.fromEmail = fromEmail; + } + + public void dispatchEmail(String emailId, String subject, String body) { + Email toEmail = new Email(emailId); + Content content = new Content("text/html", body); + Mail mail = new Mail(fromEmail, subject, toEmail, content); + + + Request request = new Request(); + request.setMethod(Method.POST); + request.setEndpoint(EMAIL_ENDPOINT); + try { + request.setBody(mail.build()); + + Response response = sendGrid.api(request); + if (response.getStatusCode() != 202) { + throw new MailException("Error sending email: " + response.getBody()); + } + } catch (Exception e) { + throw new MailException("Error sending email: " + e); + } + } + + public void sentVerifyToken(String destinatario, String asunto, String token) { + + String html = String.format(HTMLTemplates.VERIFICATION_EMAIL, destinatario, token); + + dispatchEmail(destinatario, asunto, html); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/NotificationsService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/NotificationsService.java new file mode 100644 index 000000000..2d205542b --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/NotificationsService.java @@ -0,0 +1,122 @@ +package es.iespuertodelacruz.routinefights.shared.services; + +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.stream.Collectors; + +import org.springframework.stereotype.Service; + +import com.google.firebase.messaging.BatchResponse; +import com.google.firebase.messaging.FirebaseMessaging; +import com.google.firebase.messaging.FirebaseMessagingException; +import com.google.firebase.messaging.Message; +import com.google.firebase.messaging.MulticastMessage; +import com.google.firebase.messaging.Notification; + +import es.iespuertodelacruz.routinefights.device_token.domain.DeviceToken; +import lombok.extern.java.Log; + +@Service +@Log +public class NotificationsService { + private static final String USERS = " users: "; + private FirebaseMessaging fcm; + private TranslationService translationService; + + public NotificationsService(FirebaseMessaging fcm, TranslationService translationService) { + this.fcm = fcm; + this.translationService = translationService; + } + + public String sendToAllUsers(String titleKey, String bodyKey, Map args) { + List languages = translationService.getSupportedLanguages(); + StringBuilder results = new StringBuilder(); + + for (String lang : languages) { + String title = translationService.translate(titleKey, lang, args); + String body = translationService.translate(bodyKey, lang, args); + + log.info("Preparing to send to language: general-" + lang); + + Message message = Message.builder() + .setTopic("general-" + lang) + .setNotification(Notification.builder().setTitle(title).setBody(body).build()) + .build(); + + try { + String sent = fcm.send(message); + log.info("Sent message to all " + lang + USERS + sent); + log.info("Notification Title: " + title); + log.info("Notification Body: " + body); + if (!results.isEmpty()) { + results.append("; "); + } + results.append(lang).append("=").append(sent); + } catch (FirebaseMessagingException e) { + log.severe("Failed to send message to " + lang + USERS + e.getMessage()); + } + } + + return !results.isEmpty() ? results.toString() : null; + } + + public String sendTo(String titleKey, String bodyKey, DeviceToken userToken, Map args) { + String title = translationService.translate(titleKey, userToken.getLanguage(), args); + String body = translationService.translate(bodyKey, userToken.getLanguage(), args); + + Message message = Message.builder() + .setToken(userToken.getToken()) + .setNotification(Notification.builder().setTitle(title).setBody(body).build()) + .build(); + + try { + String sent = fcm.send(message); + log.info("Sent message to user: " + sent); + } catch (FirebaseMessagingException e) { + log.severe("Failed to send message to user: " + e.getMessage()); + } + return null; + } + + + + public String sendTo(String titleKey, String bodyKey, List usersTokens, Map args) { + if (usersTokens == null || usersTokens.isEmpty()) { + log.info("No user tokens provided for multicast message."); + return null; + } + String title = null; + String body = null; + + Map> grouped = usersTokens.stream() + .collect(Collectors.groupingBy(DeviceToken::getLanguage)); + + if (grouped.size() > 1) { + for (Entry> entry : grouped.entrySet()) { + String lang = entry.getKey(); + List tokensForLang = entry.getValue(); + if (tokensForLang == null || tokensForLang.isEmpty()) { + continue; + } + + title = translationService.translate(titleKey, lang, args); + body = translationService.translate(bodyKey, lang, args); + + MulticastMessage messageLang = MulticastMessage.builder() + .setNotification(Notification.builder().setTitle(title).setBody(body).build()) + .addAllTokens(tokensForLang.stream().map(DeviceToken::getToken).toList()) + .build(); + try { + BatchResponse sent = fcm.sendMulticast(messageLang); + log.info("Sent message to " + lang + " users: Success:" + sent.getSuccessCount() + " Failures:" + + sent.getFailureCount()); + } catch (FirebaseMessagingException e) { + log.severe("Failed to send multicast to " + lang + USERS + e.getMessage()); + } + } + return null; + } + return null; + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/TranslationService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/TranslationService.java new file mode 100644 index 000000000..379c4d636 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/services/TranslationService.java @@ -0,0 +1,110 @@ +package es.iespuertodelacruz.routinefights.shared.services; + +import java.io.File; +import java.io.InputStream; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.springframework.core.io.Resource; +import org.springframework.core.io.support.PathMatchingResourcePatternResolver; +import org.springframework.stereotype.Service; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + +import lombok.extern.java.Log; + +@Service +@Log +public class TranslationService { + + private final ObjectMapper objectMapper = new ObjectMapper(); + private File translationsDirectory; + private final Map> translations = new ConcurrentHashMap<>(); + private static final Pattern PLACEHOLDER = Pattern.compile("\\{([^}]+)\\}"); + + public TranslationService() { + try { + Resource[] resources = new PathMatchingResourcePatternResolver() + .getResources("classpath:translations/*.json"); + + for (Resource res : resources) { + loadTranslationResource(res); + } + + log.info("Loaded " + translations.size() + " translation files from classpath"); + } catch (Exception e) { + log.warning("Could not load translations from classpath: " + e.getMessage()); + } + } + + public File getTranslationsDirectory() { + return translationsDirectory; + } + + + /** + * Translate a key to targetLanguage and replace named placeholders with values + * from args map. Placeholders must be in the form {name}. + * + * @param key translation key (the JSON top-level key) + * @param targetLanguage language code matching the filename (e.g. "en", "es") + * @param args named arguments used to format placeholders + * @return translated and formatted string (if not found returns the key) + */ + public String translate(String key, String targetLanguage, Map args) { + if (key == null) { + return null; + } + Map langMap = translations.get(targetLanguage); + if (langMap == null) { + langMap = translations.getOrDefault("en-US", translations.values().stream().findFirst().orElse(null)); + } + String template = (langMap == null) ? null : langMap.get(key); + if (template == null) { + return key; + } + if (args == null || args.isEmpty()) { + return template; + } + Matcher m = PLACEHOLDER.matcher(template); + StringBuffer sb = new StringBuffer(); + while (m.find()) { + String name = m.group(1); + Object replacement = args.get(name); + String rep = replacement == null ? "" : replacement.toString(); + rep = rep.replace("$", "\\$"); + m.appendReplacement(sb, rep); + } + m.appendTail(sb); + return sb.toString(); + } + + public String translate(String key, String targetLanguage) { + return translate(key, targetLanguage, null); + } + + private void loadTranslationResource(Resource res) { + try (InputStream in = res.getInputStream()) { + String filename = res.getFilename(); + if (filename == null || !filename.endsWith(".json")) + return; + + String lang = filename.substring(0, filename.lastIndexOf('.')); + + Map map = objectMapper.readValue(in, + new TypeReference>() { + }); + translations.put(lang, map); + } catch (Exception e) { + log.warning("Failed to load translation file " + res.getFilename() + ": " + e.getMessage()); + } + } + + public List getSupportedLanguages() { + return translations.keySet().stream().toList(); + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/AuthSOAPImpl.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/AuthSOAPImpl.java new file mode 100644 index 000000000..c7abbb736 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/AuthSOAPImpl.java @@ -0,0 +1,63 @@ +package es.iespuertodelacruz.routinefights.shared.soap; + +import java.util.logging.Logger; + + +import es.iespuertodelacruz.routinefights.shared.dto.UserDTOAuth; +import es.iespuertodelacruz.routinefights.shared.mappers.UserDTOAuthMapper; +import es.iespuertodelacruz.routinefights.shared.services.AuthService; +import es.iespuertodelacruz.routinefights.shared.services.MailService; +import es.iespuertodelacruz.routinefights.shared.utils.HTMLTemplates; +import es.iespuertodelacruz.routinefights.user.domain.User; +import jakarta.jws.WebService; + +@WebService(endpointInterface = "es.iespuertodelacruz.routinefights.shared.soap.AuthSOAPInterface") +public class AuthSOAPImpl implements AuthSOAPInterface { + private final MailService mailService; + private final AuthService authService; + private final UserDTOAuthMapper userDTOAuthMapper; + Logger logger = Logger.getLogger(AuthSOAPImpl.class.getName()); + + public AuthSOAPImpl(MailService mailService, AuthService authService, UserDTOAuthMapper userDTOAuthMapper) { + this.mailService = mailService; + this.authService = authService; + this.userDTOAuthMapper = userDTOAuthMapper; + } + + @Override + public String login(String email, String password) { + return authService.login(email, password); + } + + @Override + public String verify(String email, String token) { + if (email == null || token == null) { + return HTMLTemplates.NEED_EMAIL_TOKEN; + } + + boolean isVerified; + try { + isVerified = authService.verify(email, token); + } catch (Exception e) { + logger.warning("Verify /api/verify ERROR: " + e.getMessage()); + return HTMLTemplates.ERROR.formatted(e.getMessage()); + } + if (isVerified) { + logger.info("Verify /api/verify OK"); + return HTMLTemplates.VERIFIED; + } + + return HTMLTemplates.BAD_REQUEST; + } + + @Override + public UserDTOAuth register(UserDTOAuth userDTOAuth) { + User user = authService.register(userDTOAuth.username(), userDTOAuth.email(), + userDTOAuth.password(), + userDTOAuth.nationality(), userDTOAuth.phoneNumber(), userDTOAuth.image()); + mailService.sentVerifyToken(user.getEmail(), "Verify your email: " + user.getUsername(), + user.getVerificationToken()); + return userDTOAuthMapper.toDTO(user); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/AuthSOAPInterface.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/AuthSOAPInterface.java new file mode 100644 index 000000000..5c48659bc --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/AuthSOAPInterface.java @@ -0,0 +1,21 @@ +package es.iespuertodelacruz.routinefights.shared.soap; + +import es.iespuertodelacruz.routinefights.shared.dto.UserDTOAuth; +import jakarta.jws.WebMethod; +import jakarta.jws.WebParam; +import jakarta.jws.WebResult; +import jakarta.jws.WebService; + +@WebService(targetNamespace = "es.iespuertodelacruz.routinefights.shared.soap") +public interface AuthSOAPInterface { + @WebMethod + @WebResult(name = "user") + public UserDTOAuth register(@WebParam(name = "user") UserDTOAuth userDTOAuth); + + @WebMethod + @WebResult(name = "token") + public String login(@WebParam(name = "email") String email, @WebParam(name = "password") String password); + + @WebMethod + public String verify(@WebParam(name = "email") String email, @WebParam(name = "token") String token); +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/GraphSOAPImpl.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/GraphSOAPImpl.java new file mode 100644 index 000000000..8db26e3e7 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/GraphSOAPImpl.java @@ -0,0 +1,41 @@ +package es.iespuertodelacruz.routinefights.shared.soap; + +import org.springframework.cache.annotation.Cacheable; + +import es.iespuertodelacruz.routinefights.shared.dto.ChartData; +import es.iespuertodelacruz.routinefights.shared.services.GraphService; +import jakarta.jws.WebService; + +@WebService(endpointInterface = "es.iespuertodelacruz.routinefights.shared.soap.GraphSOAPInterface") +public class GraphSOAPImpl implements GraphSOAPInterface { + private GraphService graphService; + + public GraphSOAPImpl(GraphService graphService) { + this.graphService = graphService; + } + + @Cacheable("userCreationChartSOAP") + @Override + public ChartData getUserCreationChart() { + return graphService.findUserRegistrationsByDate(); + } + + @Cacheable("postCreationChartSOAP") + @Override + public ChartData getPostCreationChart() { + return graphService.findPostsCreatedByDate(); + } + + @Cacheable("postPointsChartSOAP") + @Override + public ChartData getPostPointsChart() { + return graphService.findPointsAddedSumByDate(); + } + + @Cacheable("userPointsChartSOAP") + @Override + public ChartData getUserPointsChart() { + return graphService.findTotalPointsByUser(); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/GraphSOAPInterface.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/GraphSOAPInterface.java new file mode 100644 index 000000000..ec70eaaab --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/GraphSOAPInterface.java @@ -0,0 +1,27 @@ +package es.iespuertodelacruz.routinefights.shared.soap; + +import org.springframework.security.access.annotation.Secured; + +import es.iespuertodelacruz.routinefights.shared.dto.ChartData; +import jakarta.jws.WebMethod; +import jakarta.jws.WebService; + +@WebService(targetNamespace = "es.iespuertodelacruz.routinefights.shared.soap") +public interface GraphSOAPInterface { + @WebMethod + @Secured("ROLE_ADMIN") + public ChartData getUserCreationChart(); + + @WebMethod + @Secured("ROLE_ADMIN") + public ChartData getPostCreationChart(); + + @WebMethod + @Secured("ROLE_ADMIN") + public ChartData getPostPointsChart(); + + @WebMethod + @Secured("ROLE_ADMIN") + public ChartData getUserPointsChart(); + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/ImageSOAPImpl.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/ImageSOAPImpl.java new file mode 100644 index 000000000..4bdbf249f --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/ImageSOAPImpl.java @@ -0,0 +1,97 @@ +package es.iespuertodelacruz.routinefights.shared.soap; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.springframework.core.io.UrlResource; +import org.springframework.lang.NonNull; +import org.springframework.web.multipart.MultipartFile; + +import es.iespuertodelacruz.routinefights.shared.exceptions.ImageUploadException; +import es.iespuertodelacruz.routinefights.shared.services.ImageService; +import jakarta.jws.WebService; + +@WebService(endpointInterface = "es.iespuertodelacruz.routinefights.shared.soap.ImageSOAPInterface") +public class ImageSOAPImpl implements ImageSOAPInterface { + private static final Logger logger = java.util.logging.Logger.getLogger(ImageSOAPImpl.class.getName()); + + private final ImageService imageService; + + public ImageSOAPImpl(ImageService imageService) { + this.imageService = imageService; + } + + @Override + public UrlResource getImage(String imageName) { + return imageService.findImage(imageName); + } + + @Override + public String uploadFile(byte[] bytes, String fileName, String contentType) { + MultipartFile file = new MultipartFile() { + @Override + @NonNull + public String getName() { + return fileName; + } + + @Override + public String getOriginalFilename() { + return fileName; + } + + @Override + public String getContentType() { + return contentType; + } + + @Override + public boolean isEmpty() { + return bytes.length == 0; + } + + @Override + public long getSize() { + return bytes.length; + } + + @Override + @NonNull + public byte[] getBytes() { + return bytes; + } + + @Override + @NonNull + public InputStream getInputStream() throws IOException { + return new ByteArrayInputStream(bytes); + } + + @Override + public void transferTo(@NonNull File dest) throws IOException, IllegalStateException { + try (InputStream inputStream = getInputStream()) { + Files.copy(inputStream, dest.toPath()); + } + } + + }; + if (file.isEmpty()) { + throw new ImageUploadException("File is empty"); + } + if (contentType != null) { + if (!contentType.startsWith("image/")) { + throw new ImageUploadException("File is not an image"); + } + String filename = imageService.save(file); + logger.log(Level.INFO, "Image uploaded: {0}", filename); + return filename; + } + logger.warning("Error uploading image: Content type is null"); + throw new ImageUploadException("File is empty"); + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/ImageSOAPInterface.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/ImageSOAPInterface.java new file mode 100644 index 000000000..7d6852647 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/soap/ImageSOAPInterface.java @@ -0,0 +1,35 @@ +package es.iespuertodelacruz.routinefights.shared.soap; + +import org.springframework.core.io.UrlResource; +import org.springframework.security.access.annotation.Secured; + +import jakarta.jws.WebMethod; +import jakarta.jws.WebParam; +import jakarta.jws.WebResult; +import jakarta.jws.WebService; + +@WebService(targetNamespace = "es.iespuertodelacruz.routinefights.shared.soap") +public interface ImageSOAPInterface { + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @WebMethod + @WebResult(name = "image") + /** + * Retrieves an image from the server. + * + * @param imageName The name of the image to retrieve. + * @return The image as a Base64 encoded string. + */ + UrlResource getImage(@WebParam(name = "imageName") String imageName); + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @WebMethod + @WebResult(name = "uploadResponse") + /** + * Uploads an image to the server. + * + * @param file The image file to upload. + * @return A response message indicating the result of the upload. + */ + String uploadFile(@WebParam(name = "bytes") byte[] file, @WebParam(name = "filename") String fileName, + @WebParam(name = "contentType") String contentType); +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/tasks/CacheResetTask.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/tasks/CacheResetTask.java new file mode 100644 index 000000000..d1f3def57 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/tasks/CacheResetTask.java @@ -0,0 +1,34 @@ +package es.iespuertodelacruz.routinefights.shared.tasks; + +import java.time.LocalDateTime; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.springframework.cache.Cache; +import org.springframework.cache.CacheManager; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +@Component +public class CacheResetTask { + Logger logger = Logger.getLogger(CacheResetTask.class.getName()); + + private final CacheManager cacheManager; + + public CacheResetTask(CacheManager cacheManager) { + this.cacheManager = cacheManager; + } + + @Scheduled(cron = "0 0 0 * * *") + public void clearAllCaches() { + cacheManager.getCacheNames() + .forEach(name -> { + Cache cache = cacheManager.getCache(name); + if (cache != null) { + cache.clear(); + } + }); + logger.log(Level.INFO, "All caches cleared at {0}", LocalDateTime.now()); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/tasks/EventsTask.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/tasks/EventsTask.java new file mode 100644 index 000000000..91549d881 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/tasks/EventsTask.java @@ -0,0 +1,52 @@ +package es.iespuertodelacruz.routinefights.shared.tasks; + +import java.util.List; +import java.util.logging.Logger; + +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import es.iespuertodelacruz.routinefights.badge.domain.Badge; +import es.iespuertodelacruz.routinefights.badge.domain.ports.primary.IBadgeService; +import es.iespuertodelacruz.routinefights.community_event.domain.CommunityEvent; +import es.iespuertodelacruz.routinefights.community_event.domain.ports.primary.ICommunityEventService; + +@Component +public class EventsTask { + private ICommunityEventService communityEventService; + private IBadgeService badgeService; + Logger logger = Logger.getLogger(EventsTask.class.getName()); + + public EventsTask(ICommunityEventService communityEventService, IBadgeService badgeService) { + this.badgeService = badgeService; + this.communityEventService = communityEventService; + } + + @Scheduled(cron = "0 0 3 * * *") + protected List giveTodayBadges() { + CommunityEvent communityEvent = communityEventService.getCommunityEventEndsToday(); + List usersParticipated = communityEventService.getUsersParticipatingInCommunityEventEndsToday(); + + List badges = badgeService.findByCommunityEvent(communityEvent.getId()) + .stream() + .sorted((b1, b2) -> Integer.compare(b1.getLevel(), b2.getLevel())) + .toList(); + + Integer points = communityEventService.getCommunityEventPointsById(communityEvent.getId()); + + for (int i = 0; i < badges.size(); i++) { + int threshold = (communityEvent.getTotalRequired() / badges.size()) * (i + 1); + if (points >= threshold) { + badgeService.addBadgeToUser( + usersParticipated, + badges.get(i).getId()); + logger.info("Badge " + badges.get(i).getId() + " given to users"); + } + } + + logger.info("Badges given to users for community event " + communityEvent.getId()); + return usersParticipated; + + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/tasks/ImagesTasks.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/tasks/ImagesTasks.java new file mode 100644 index 000000000..3d69f1bcc --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/tasks/ImagesTasks.java @@ -0,0 +1,57 @@ +package es.iespuertodelacruz.routinefights.shared.tasks; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import es.iespuertodelacruz.routinefights.activity.domain.ports.primary.IActivityService; +import es.iespuertodelacruz.routinefights.community_event.domain.ports.primary.ICommunityEventService; +import es.iespuertodelacruz.routinefights.post.domain.ports.primary.IPostService; +import es.iespuertodelacruz.routinefights.shared.services.ImageService; +import es.iespuertodelacruz.routinefights.user.domain.ports.primary.IUserService; + +@Component +public class ImagesTasks { + Logger logger = Logger.getLogger(ImagesTasks.class.getName()); + private ImageService imageService; + private IUserService userService; + private IPostService postService; + private ICommunityEventService communityEventService; + private IActivityService activityService; + + public ImagesTasks(ImageService imageService, IUserService userService, IPostService postService, + ICommunityEventService communityEventService, IActivityService activityService) { + this.communityEventService = communityEventService; + this.imageService = imageService; + this.userService = userService; + this.postService = postService; + this.activityService = activityService; + } + + @Scheduled(cron = "0 0 3 * * MON") + /** + * Delete not used images + * + * @return List of images deleted + */ + List deleteNotUsedImages() { + List images = new ArrayList<>(imageService.getAll()); + userService.findAllImages().forEach(images::remove); + postService.findAllImages().forEach(images::remove); + communityEventService.findAllImages().forEach(images::remove); + activityService.findAllImages().forEach(images::remove); + + // ADD ACTIVITY IMAGES + // CHANGE TO SET + logger.log(Level.INFO, "Deleted not used images: {0} images going to be deleted", images.size()); + images.forEach(image -> imageService.delete(image)); + logger.log(Level.INFO, "Deleted images executed successfully at {0}", LocalDateTime.now()); + return images; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/utils/EntitiesTimestamps.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/utils/EntitiesTimestamps.java new file mode 100644 index 000000000..28db0db2f --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/utils/EntitiesTimestamps.java @@ -0,0 +1,45 @@ +package es.iespuertodelacruz.routinefights.shared.utils; + +import java.time.LocalDateTime; + +public abstract class EntitiesTimestamps { + private LocalDateTime createdAt; + private LocalDateTime updatedAt; + private LocalDateTime deletedAt; + + protected EntitiesTimestamps() { + } + + protected EntitiesTimestamps(LocalDateTime createdAt, LocalDateTime updatedAt, LocalDateTime deletedAt) { + this.createdAt = createdAt; + this.updatedAt = updatedAt; + this.deletedAt = deletedAt; + } + + + public LocalDateTime getCreatedAt() { + return this.createdAt; + } + + public void setCreatedAt(LocalDateTime createdAt) { + this.createdAt = createdAt; + } + + public LocalDateTime getUpdatedAt() { + return this.updatedAt; + } + + public void setUpdatedAt(LocalDateTime updatedAt) { + this.updatedAt = updatedAt; + } + + public LocalDateTime getDeletedAt() { + return this.deletedAt; + } + + public void setDeletedAt(LocalDateTime deletedAt) { + this.deletedAt = deletedAt; + } + + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/utils/HTMLTemplates.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/utils/HTMLTemplates.java new file mode 100644 index 000000000..2a290f878 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/utils/HTMLTemplates.java @@ -0,0 +1,141 @@ +package es.iespuertodelacruz.routinefights.shared.utils; + +public class HTMLTemplates { + private HTMLTemplates() { + } + + private static final String COMMON_STYLES = """ + + """; + + public static final String VERIFICATION_EMAIL = """ + + %s + +
+
+

Verificación de Cuenta

+
+
+

Gracias por registrarte. Para activar tu cuenta, haz clic en el botón de abajo:

+ Verificar Cuenta +
+ +
+ + + """.formatted(COMMON_STYLES, "%s", "%s"); + + public static final String NEED_EMAIL_TOKEN = """ + + Error%s + +
+
+

Faltan datos

+
+
+

Necesitas proporcionar correo y token para verificar tu cuenta.

+
+
+ + + """.formatted(COMMON_STYLES); + + public static final String ERROR = """ + + Error%s + +
+
+

Error al verificar

+
+
+

Ha ocurrido un error al verificar tu cuenta.

+

%s

+
+
+ + + """.formatted(COMMON_STYLES, "%s"); + + public static final String VERIFIED = """ + + Verificado%s + +
+
+

Cuenta verificada

+
+
+

Tu cuenta ha sido verificada correctamente.

+
+
+ + + """.formatted(COMMON_STYLES); + + public static final String BAD_REQUEST = """ + + Error%s + +
+
+

Error al verificar

+
+
+

Ha ocurrido un error al verificar tu cuenta.

+
+
+ + + """.formatted(COMMON_STYLES); +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/utils/JwtAuthenticationHelper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/utils/JwtAuthenticationHelper.java new file mode 100644 index 000000000..993fe321f --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/utils/JwtAuthenticationHelper.java @@ -0,0 +1,110 @@ +package es.iespuertodelacruz.routinefights.shared.utils; + +import com.auth0.jwt.exceptions.JWTVerificationException; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; +import org.springframework.stereotype.Component; +import es.iespuertodelacruz.routinefights.shared.security.JwtService; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +@Component +public class JwtAuthenticationHelper { + + /** + * Extracts the token from the Authorization header (removing "Bearer " if + * present). + */ + public String extractTokenFromHeader(String header, String prefix) { + if (header != null && header.startsWith(prefix)) { + return header.substring(prefix.length()).trim(); + } + return null; + } + + /** + * Validates the token and returns the claims as a map. + */ + public Map validateAndGetClaims(String token, JwtService jwtTokenManager) + throws JWTVerificationException { + return jwtTokenManager.validateAndGetClaims(token); + } + + /** + * Builds a UserDetails object from claims. + * + */ + public UserDetails buildUserDetails(String correo, String rol) { + return new UserDetails() { + String username = correo; + + @Override + public Collection getAuthorities() { + List authorities = new ArrayList<>(); + authorities.add(new SimpleGrantedAuthority(rol)); + return authorities; + } + + @Override + public String getPassword() { + return null; + } + + @Override + public String getUsername() { + return username; + } + + @Override + public boolean isAccountNonExpired() { + return true; + } + + @Override + public boolean isAccountNonLocked() { + return true; + } + + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @Override + public boolean isEnabled() { + return true; + } + }; + } + + /** + * Sets the authentication in the SecurityContext. + */ + public void setAuthentication(UserDetails userDetails, HttpServletRequest request, + FilterChain filterChain, HttpServletResponse response) throws IOException, ServletException { + UsernamePasswordAuthenticationToken authToken = new UsernamePasswordAuthenticationToken( + userDetails, + null, + userDetails.getAuthorities()); + SecurityContextHolder.getContext().setAuthentication(authToken); + + if (request != null) { + authToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); + filterChain.doFilter(request, response); + + } + } +} \ No newline at end of file diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/shared/utils/TimeRatesDate.java b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/utils/TimeRatesDate.java new file mode 100644 index 000000000..fb4d22e8b --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/shared/utils/TimeRatesDate.java @@ -0,0 +1,80 @@ +package es.iespuertodelacruz.routinefights.shared.utils; + +import java.time.LocalDateTime; + +import es.iespuertodelacruz.routinefights.activity.commons.TimeRates; +import es.iespuertodelacruz.routinefights.post.exceptions.UploadPostException; + +public class TimeRatesDate { + public LocalDateTime[] getLastIterationDates(String timerate) { + LocalDateTime start; + LocalDateTime end; + + switch (timerate) { + case TimeRates.DAILY: + start = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0) + .minusDays(1); + end = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(999999999) + .minusDays(1); + break; + case TimeRates.WEEKLY: + start = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0) + .minusWeeks(1).with(java.time.DayOfWeek.MONDAY); + end = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(999999999) + .minusWeeks(1).with(java.time.DayOfWeek.SUNDAY); + break; + case TimeRates.MONTHLY: + start = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0) + .minusMonths(1).withDayOfMonth(1); + end = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(999999999) + .minusMonths(1) + .withDayOfMonth(LocalDateTime.now().minusMonths(1).toLocalDate().lengthOfMonth()); + break; + case TimeRates.YEARLY: + start = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0) + .minusYears(1).withDayOfYear(1); + end = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(999999999) + .minusYears(1) + .withDayOfYear(LocalDateTime.now().minusYears(1).toLocalDate().lengthOfYear()); + break; + default: + throw new UploadPostException("Invalid time rate"); + } + + return new LocalDateTime[] { start, end }; + } + + public LocalDateTime[] getActualIterationDates(String timerate) { + LocalDateTime start; + LocalDateTime end; + + switch (timerate) { + case TimeRates.DAILY: + start = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0); + end = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(999999999); + break; + case TimeRates.WEEKLY: + start = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0) + .with(java.time.DayOfWeek.MONDAY); + end = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(999999999) + .with(java.time.DayOfWeek.SUNDAY); + break; + case TimeRates.MONTHLY: + start = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0) + .withDayOfMonth(1); + end = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(999999999) + .withDayOfMonth(LocalDateTime.now().toLocalDate().lengthOfMonth()); + break; + case TimeRates.YEARLY: + start = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0) + .withDayOfYear(1); + end = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(999999999) + .withDayOfYear(LocalDateTime.now().toLocalDate().lengthOfYear()); + break; + default: + throw new UploadPostException("Invalid time rate"); + } + + return new LocalDateTime[] { start, end }; + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/team/infrastructure/adapters/secondary/entities/TeamEntity.java b/API/src/main/java/es/iespuertodelacruz/routinefights/team/infrastructure/adapters/secondary/entities/TeamEntity.java new file mode 100644 index 000000000..ba70d6dae --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/team/infrastructure/adapters/secondary/entities/TeamEntity.java @@ -0,0 +1,135 @@ +package es.iespuertodelacruz.routinefights.team.infrastructure.adapters.secondary.entities; + +import java.time.LocalDateTime; + +import org.springframework.data.neo4j.core.schema.GeneratedValue; +import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.Relationship; + +import es.iespuertodelacruz.routinefights.meeting.infrastructure.adapters.secondary.entities.MeetingEntity; +import es.iespuertodelacruz.routinefights.shared.utils.EntitiesTimestamps; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; + +import java.util.List; +import java.util.Objects; + +@Node("Team") +/** + * TeamEntity + */ +public class TeamEntity extends EntitiesTimestamps { + @Id + @GeneratedValue + private String id; + private String name; + + @Relationship(type = "Has_Meeting", direction = Relationship.Direction.OUTGOING) + private List meetings; + + @Relationship(type = "Owns", direction = Relationship.Direction.OUTGOING) + private UserEntity creator; + + public TeamEntity() { + } + + public TeamEntity(String id, String name, LocalDateTime createdAt, LocalDateTime updatedAt, LocalDateTime deletedAt, + List meetings, UserEntity creator) { + super(createdAt, updatedAt, deletedAt); + this.id = id; + this.name = name; + this.meetings = meetings; + this.creator = creator; + } + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return this.name; + } + + public void setName(String name) { + this.name = name; + } + + public List getMeetings() { + return this.meetings; + } + + public void setMeetings(List meetings) { + this.meetings = meetings; + } + + public UserEntity getCreator() { + return this.creator; + } + + public void setCreator(UserEntity creator) { + this.creator = creator; + } + + public TeamEntity id(String id) { + setId(id); + return this; + } + + public TeamEntity name(String name) { + setName(name); + return this; + } + + public TeamEntity createdAt(LocalDateTime createdAt) { + setCreatedAt(createdAt); + return this; + } + + public TeamEntity deletedAt(LocalDateTime deletedAt) { + setDeletedAt(deletedAt); + return this; + } + + public TeamEntity meetings(List meetings) { + setMeetings(meetings); + return this; + } + + public TeamEntity creator(UserEntity creator) { + setCreator(creator); + return this; + } + + @Override + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof TeamEntity)) { + return false; + } + TeamEntity teamEntity = (TeamEntity) o; + return Objects.equals(id, teamEntity.id); + } + + @Override + public int hashCode() { + return Objects.hash(id); + } + + @Override + public String toString() { + return "{" + + " id='" + getId() + "'" + + ", name='" + getName() + "'" + + ", createdAt='" + getCreatedAt() + "'" + + ", deletedAt='" + getDeletedAt() + "'" + + ", meetings='" + getMeetings() + "'" + + ", creator='" + getCreator() + "'" + + "}"; + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/common/IUserCommon.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/common/IUserCommon.java new file mode 100644 index 000000000..48cd4fa65 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/common/IUserCommon.java @@ -0,0 +1,106 @@ +package es.iespuertodelacruz.routinefights.user.common; + +import java.util.List; +import java.util.Set; + +import es.iespuertodelacruz.routinefights.shared.services.ICRUD; +import es.iespuertodelacruz.routinefights.user.domain.User; + +/** + * IUserCommon + */ +public interface IUserCommon extends ICRUD { + /** + * Method to find a user by email + * + * @param email email + * @return User + */ + public T findByEmail(String email); + + /** + * Method to check if a user exists by email + * + * @param email email + * @return Boolean + */ + public Boolean existsByEmail(String email); + + /** + * Method to find the followed users by user's email + * + * @return List + */ + public List findFollowedUsersByEmail(String email, String usernameFilter); + + /** + * Method to find the followers by user's email + * + * @return List + */ + public List findFollowersByEmail(String email, String usernameFilter); + + /** + * Method to follow a user + * + * @param frEmail follower's email + * @param fdEmail followed's email + * @return Boolean + */ + public boolean followUser(String frEmail, String fdEmail); + + /** + * Method to unfollow a user + * + * @param frEmail follower's email + * @param fdEmail followed's email + * @return Boolean + */ + public boolean unfollowUser(String frEmail, String fdEmail); + + /** + * Method to find user's images + * + * @return List + */ + public Set findAllImages(); + + /** + * Method to restore a user + * + * @param id user's id + * @return Boolean + */ + public boolean restore(String id); + + /** + * Method to soft delete a user + * + * @param id user's id + * @return Boolean + */ + public boolean softDelete(String id); + + /** + * Method to find the users that match the username given + * + * @param regex username + * @return List + */ + public List findByUsername(String regex); + + public boolean subscribeActivity(String email, String activityID); + + public boolean unSubscribeActivity(String email, String activityID); + + public T findByEmailOnlyBase(String email); + + public List getPaginationByName(int page, int perPage, String userName, String userID); + + public Boolean likePost(String id, String postId); + + public Boolean unLikePost(String id, String postId); + + + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/common/UserCommon.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/common/UserCommon.java new file mode 100644 index 000000000..3779459e8 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/common/UserCommon.java @@ -0,0 +1,282 @@ +package es.iespuertodelacruz.routinefights.user.common; + +import java.time.LocalDateTime; +import java.util.Objects; + +import es.iespuertodelacruz.routinefights.shared.utils.EntitiesTimestamps; + +/** + * UserCommon + */ +public abstract class UserCommon extends EntitiesTimestamps { + private String username; + private String email; + private String password; + private String nationality; + private String phoneNumber; + private String image; + private String role; + private boolean verified; + private String verificationToken; + + /** + * Default constructor + */ + protected UserCommon() { + } + + /** + * Constructor with all the attributes + * + * @param username The username of the user + * @param email The email of the user + * @param password The password of the user + * @param nationality The nationality of the user + * @param phoneNumber The phone number of the user + * @param image The image of the user + * @param role The role of the user + * @param verified The verification status of the user + * @param verificationToken The verification token of the user + * @param createdAt The date when the user was created + * @param updatedAt The date when the user was updated + * @param deletedAt The date when the user was deleted + */ + protected UserCommon(String username, String email, String password, String nationality, String phoneNumber, + String image, String role, boolean verified, String verificationToken, LocalDateTime createdAt, + LocalDateTime updatedAt, LocalDateTime deletedAt) { + super(createdAt, updatedAt, deletedAt); + this.username = username; + this.email = email; + this.password = password; + this.nationality = nationality; + this.phoneNumber = phoneNumber; + this.image = image; + this.role = role; + this.verified = verified; + this.verificationToken = verificationToken; + } + + /** + * Constructor for V2 + * + * @param username The username of the user + * @param email The email of the user + * @param password The password of the user + * @param nationality The nationality of the user + * @param phoneNumber The phone number of the user + * @param image The image of the user + */ + protected UserCommon(String username, String email, String password, String nationality, String phoneNumber, + String image) { + this.username = username; + this.email = email; + this.password = password; + this.nationality = nationality; + this.phoneNumber = phoneNumber; + this.image = image; + } + + /** + * Get the username of the user + * + * @return The username of the user + */ + public String getUsername() { + return this.username; + } + + /** + * Set the username of the user + * + * @param username The username of the user + */ + public void setUsername(String username) { + this.username = username; + } + + /** + * Get the email of the user + * + * @return The email of the user + */ + public String getEmail() { + return this.email; + } + + /** + * Set the email of the user + * + * @param email The email of the user + */ + public void setEmail(String email) { + this.email = email; + } + + /** + * Get the password of the user + * + * @return The password of the user + */ + public String getPassword() { + return this.password; + } + + /** + * Set the password of the user + * + * @param password The password of the user + */ + public void setPassword(String password) { + this.password = password; + } + + /** + * Get the nationality of the user + * + * @return The nationality of the user + */ + public String getNationality() { + return this.nationality; + } + + /** + * Set the nationality of the user + * + * @param nationality The nationality of the user + */ + public void setNationality(String nationality) { + this.nationality = nationality; + } + + /** + * Get the phone number of the user + * + * @return The phone number of the user + */ + public String getPhoneNumber() { + return this.phoneNumber; + } + + /** + * Set the phone number of the user + * + * @param phoneNumber The phone number of the user + */ + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + /** + * Get the image of the user + * + * @return The image of the user + */ + public String getImage() { + return this.image; + } + + /** + * Set the image of the user + * + * @param image The image of the user + */ + public void setImage(String image) { + this.image = image; + } + + /** + * Get the role of the user + * + * @return The role of the user + */ + public String getRole() { + return this.role; + + } + + /** + * Set the role of the user + * + * @param role The role of the user + */ + public void setRole(String role) { + this.role = role; + } + + /** + * Get the verification status of the user + * + * @return The verification status of the user + */ + public boolean getVerified() { + return this.verified; + } + + /** + * Set the verification status of the user + * + * @param verified The verification status of the user + */ + public void setVerified(boolean verified) { + this.verified = verified; + } + + /** + * Get the verification token of the user + * + * @return The verification token of the user + */ + public String getVerificationToken() { + return this.verificationToken; + } + + /** + * Set the verification token of the user + * + * @param verificationToken The verification token of the user + */ + public void setVerificationToken(String verificationToken) { + this.verificationToken = verificationToken; + } + + /** + * Equals method to compare two UserEntity objects + * + * @param o The object to compare + * @return True if the objects are equals, false otherwise + */ + @Override + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof UserCommon)) { + return false; + } + UserCommon user = (UserCommon) o; + return Objects.equals(email, user.email); + } + + /** + * Hash code method + * + * @return The hash code of the object + */ + @Override + public int hashCode() { + return Objects.hash(email); + } + + /** + * To string method + * + * @return The string representation of the object + */ + @Override + public String toString() { + return "{" + + "username='" + getUsername() + "'" + + ", email='" + getEmail() + "'" + + ", verified='" + getVerified() + "'" + + "}"; + } +} \ No newline at end of file diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/domain/User.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/domain/User.java new file mode 100644 index 000000000..be4d7c113 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/domain/User.java @@ -0,0 +1,220 @@ +package es.iespuertodelacruz.routinefights.user.domain; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Objects; + +import es.iespuertodelacruz.routinefights.device_token.domain.DeviceToken; +import es.iespuertodelacruz.routinefights.user.common.UserCommon; + +/** + * User + */ +public class User extends UserCommon { + private String id; + private List followers; + private List following; + private List deviceTokens; + + /** + * Default constructor + */ + public User() { + } + + /** + * Constructor with id + * + * @param id The id of the user + */ + public User(String id) { + this.id = id; + } + + /** + * Constructor with values + * + * @param username The username of the user + * @param email The email of the user + * @param password The password of the user + * @param nationality The nationality of the user + * @param phoneNumber The phone number of the user + * @param image The image of the user + * @param role The role of the user + * @param verified The verification status of the user + * @param verificationToken The verification token of the user + * @param createdAt The date when the user was created + * @param updatedAt The date when the user was updated + * @param deletedAt The date when the user was deleted + */ + public User(String username, String email, String password, String nationality, String phoneNumber, String image, + String role, boolean verified, String verificationToken, LocalDateTime createdAt, LocalDateTime updatedAt, + LocalDateTime deletedAt) { + super(username, email, password, nationality, phoneNumber, image, role, verified, verificationToken, createdAt, + updatedAt, deletedAt); + } + + /** + * Constructor with all the attributes + * + * @param id The id of the user + * @param username The username of the user + * @param email The email of the user + * @param password The password of the user + * @param nationality The nationality of the user + * @param phoneNumber The phone number of the user + * @param image The image of the user + * @param role The role of the user + * @param verified The verification status of the user + * @param verificationToken The verification token of the user + * @param createdAt The date when the user was created + * @param updatedAt The date when the user was updated + * @param deletedAt The date when the user was deleted + * @param followers The number of followers of the user + * @param following The number of following of the user + */ + public User(String id, String username, String email, String password, String nationality, String phoneNumber, + String image, String role, boolean verified, String verificationToken, LocalDateTime createdAt, + LocalDateTime updatedAt, LocalDateTime deletedAt, List followers, List following, + List deviceTokens) { + super(username, email, password, nationality, phoneNumber, image, role, verified, verificationToken, createdAt, + updatedAt, deletedAt); + this.id = id; + this.followers = followers; + this.following = following; + this.deviceTokens = deviceTokens; + } + + /** + * Constructor for V2 + * + * @param id The id of the user + * @param username The username of the user + * @param email The email of the user + * @param password The password of the + * @param nationality The nationality of the user + * @param phoneNumber The phone number of the user + * @param image The image of the user + */ + public User(String id, String username, String email, String password, String nationality, + String phoneNumber, String image) { + super(username, email, password, nationality, phoneNumber, image); + this.id = id; + } + + /** + * Get the id of the user + * + * @return The id of the user + */ + public String getId() { + return this.id; + } + + /** + * Set the id of the user + * + * @param id The id of the user + */ + public void setId(String id) { + this.id = id; + } + + /** + * Get the number of followers of the user + * + * @return The number of followers of the user + */ + public List getFollowers() { + return this.followers; + } + + /** + * Set the number of followers of the user + * + * @param followers The number of followers of the user + */ + public void setFollowers(List followers) { + this.followers = followers; + } + + /** + * Get the number of following of the user + * + * @return The number of following of the user + */ + public List getFollowing() { + return this.following; + } + + /** + * Set the number of following of the user + * + * @param following The number of following of the user + */ + public void setFollowing(List following) { + this.following = following; + } + + /** + * Get the device tokens of the user + * + * @return The device tokens of the user + */ + public List getDeviceTokens() { + return this.deviceTokens; + } + + /** + * Set the device tokens of the user + * + * @param deviceTokens The device tokens of the user + */ + public void setDeviceTokens(List deviceTokens) { + this.deviceTokens = deviceTokens; + } + + /** + * Equals method to compare two UserEntity objects + * + * @param o The object to compare + * @return True if the objects are equals, false otherwise + */ + @Override + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof User)) { + return false; + } + User user = (User) o; + return Objects.equals(id, user.id); + } + + /** + * Hash code method + * + * @return The hash code of the object + */ + @Override + public int hashCode() { + return Objects.hash(id); + } + + /** + * To string method + * + * @return The string representation of the object + */ + @Override + public String toString() { + return "{" + + " id='" + getId() + "'" + + ", username='" + getUsername() + "'" + + ", email='" + getEmail() + "'" + + ", verified='" + getVerified() + "'" + + ", followers='" + getFollowers().size() + "'" + + ", following='" + getFollowing().size() + "'" + + "}"; + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/domain/ports/primary/IUserService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/domain/ports/primary/IUserService.java new file mode 100644 index 000000000..2d73a11e3 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/domain/ports/primary/IUserService.java @@ -0,0 +1,72 @@ +package es.iespuertodelacruz.routinefights.user.domain.ports.primary; + +import java.time.LocalDateTime; + +import es.iespuertodelacruz.routinefights.user.common.IUserCommon; +import es.iespuertodelacruz.routinefights.user.domain.User; + +/** + * IUserService + */ +public interface IUserService extends IUserCommon { + /** + * Method to save a user + * + * @param username username + * @param email email + * @param password password + * @param nationality nationality + * @param phoneNumber phoneNumber + * @param image image + * @param role role + * @param verified verified + * @param verificationToken verificationToken + * @param createdAt createdAt + * @param updatedAt updatedAt + * @param deletedAt deletedAt + * @return User + */ + public User post(String username, String email, String password, String nationality, String phoneNumber, + String image, String role, boolean verified, String verificationToken, LocalDateTime createdAt, + LocalDateTime updatedAt, LocalDateTime deletedAt); + + /** + * Method to update a user + * + * @param id id + * @param username username + * @param email email + * @param password password + * @param nationality nationality + * @param phoneNumber phoneNumber + * @param image image + * @param role role + * @param verified verified + * @param verificationToken verificationToken + * @param createdAt createdAt + * @param updatedAt updatedAt + * @param deletedAt deletedAt + * @return User + */ + public User put(String id, String username, String email, String password, String nationality, + String phoneNumber, String image, String role, boolean verified, String verificationToken, + LocalDateTime createdAt, + LocalDateTime updatedAt, LocalDateTime deletedAt); + + /** + * Method to update a user (for v2) + * + * @param id id + * @param username username + * @param email email + * @param password password + * @param nationality nationality + * @param phoneNumber phoneNumber + * @param image image + * @return User + */ + public User update(String id, String username, String email, String password, String nationality, + String phoneNumber, String image); + + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/domain/ports/secondary/IUserRepository.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/domain/ports/secondary/IUserRepository.java new file mode 100644 index 000000000..d90ee552c --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/domain/ports/secondary/IUserRepository.java @@ -0,0 +1,35 @@ +package es.iespuertodelacruz.routinefights.user.domain.ports.secondary; + +import es.iespuertodelacruz.routinefights.user.common.IUserCommon; +import es.iespuertodelacruz.routinefights.user.domain.User; + +/** + * IUserRepository + */ +public interface IUserRepository extends IUserCommon { + /** + * Method to save a user + * + * @param username username + * @return User + */ + public User post(User user); + + /** + * Method to update a user + * + * @param user user + * @return User + */ + public User put(User user); + + /** + * Method to update a user (for v2) + * + * @param user user + * @return User + */ + public User update(User user); + + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/domain/services/UserService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/domain/services/UserService.java new file mode 100644 index 000000000..7089fef81 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/domain/services/UserService.java @@ -0,0 +1,161 @@ +package es.iespuertodelacruz.routinefights.user.domain.services; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.ports.primary.IUserService; +import es.iespuertodelacruz.routinefights.user.domain.ports.secondary.IUserRepository; + +/** + * UserService + */ +@Service +public class UserService implements IUserService { + private IUserRepository userRepository; + + /** + * Getter for userRepository + * + * @return IUserRepository + */ + public IUserRepository getUserRepository() { + return this.userRepository; + } + + /** + * Setter for userRepository + * + * @param userRepository + */ + @Autowired + public void setUserRepository(IUserRepository userRepository) { + this.userRepository = userRepository; + } + + @Override + public List findAll() { + return userRepository.findAll(); + } + + @Override + public User findById(String id) { + return userRepository.findById(id); + } + + @Override + public User findByEmail(String email) { + return userRepository.findByEmail(email); + } + + @Override + public Boolean existsByEmail(String email) { + return userRepository.existsByEmail(email); + } + + @Override + public User post(String username, String email, String password, String nationality, String phoneNumber, + String image, String role, boolean verified, String verificationToken, LocalDateTime createdAt, + LocalDateTime updatedAt, LocalDateTime deletedAt) { + User user = new User(username, email, password, nationality, phoneNumber, image, role, verified, + verificationToken, createdAt, updatedAt, deletedAt); + return userRepository.post(user); + } + + @Override + public User put(String id, String username, String email, String password, String nationality, String phoneNumber, + String image, String role, boolean verified, String verificationToken, LocalDateTime createdAt, + LocalDateTime updatedAt, LocalDateTime deletedAt) { + User user = new User(id, username, email, password, nationality, phoneNumber, image, role, verified, + verificationToken, createdAt, updatedAt, deletedAt, null, null, null); + return userRepository.put(user); + } + + @Override + public boolean delete(String id) { + return userRepository.delete(id); + } + + @Override + public List findFollowedUsersByEmail(String email, String usernameFilter) { + return userRepository.findFollowedUsersByEmail(email, usernameFilter); + } + + @Override + public List findFollowersByEmail(String email, String usernameFilter) { + return userRepository.findFollowersByEmail(email, usernameFilter); + } + + @Override + public boolean followUser(String frEmail, String fdEmail) { + return userRepository.followUser(frEmail, fdEmail); + } + + @Override + public boolean unfollowUser(String frEmail, String fdEmail) { + return userRepository.unfollowUser(frEmail, fdEmail); + } + + @Override + public Set findAllImages() { + return userRepository.findAllImages(); + } + + @Override + public boolean restore(String id) { + return userRepository.restore(id); + } + + @Override + public User update(String id, String username, String email, String password, String nationality, + String phoneNumber, String image) { + User user = new User(id, username, email, password, nationality, phoneNumber, image); + return userRepository.update(user); + } + + @Override + public boolean softDelete(String id) { + return userRepository.softDelete(id); + } + + @Override + public List findByUsername(String regex) { + return userRepository.findByUsername(regex); + } + + @Override + public boolean subscribeActivity(String userEmail, String activityID) { + return userRepository.subscribeActivity(userEmail, activityID); + } + + @Override + public boolean unSubscribeActivity(String userEmail, String activityID) { + return userRepository.unSubscribeActivity(userEmail, activityID); + } + + @Override + public User findByEmailOnlyBase(String email) { + return userRepository.findByEmailOnlyBase(email); + } + + @Override + public List getPaginationByName(int page, int perPage, String userName, String userID) { + int offset = (page - 1) * perPage; + return userRepository.getPaginationByName(offset, perPage, userName, userID); + } + + @Override + public Boolean likePost(String userId, String postId) { + return userRepository.likePost(userId, postId); + } + + @Override + public Boolean unLikePost(String userId, String postId) { + return userRepository.unLikePost(userId, postId); + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserDeleteException.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserDeleteException.java new file mode 100644 index 000000000..28de0c6cd --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserDeleteException.java @@ -0,0 +1,7 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions; + +public class UserDeleteException extends RuntimeException { + public UserDeleteException(String message) { + super(message); + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserNotFoundException.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserNotFoundException.java new file mode 100644 index 000000000..0a6f17639 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserNotFoundException.java @@ -0,0 +1,7 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions; + +public class UserNotFoundException extends RuntimeException { + public UserNotFoundException(String message) { + super(message); + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserSaveException.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserSaveException.java new file mode 100644 index 000000000..e44453509 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserSaveException.java @@ -0,0 +1,7 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions; + +public class UserSaveException extends RuntimeException { + public UserSaveException(String message) { + super(message); + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserUpdateException.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserUpdateException.java new file mode 100644 index 000000000..b765aa7ea --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserUpdateException.java @@ -0,0 +1,7 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions; + +public class UserUpdateException extends RuntimeException { + public UserUpdateException(String message) { + super(message); + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/controllers/UserControllerV2.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/controllers/UserControllerV2.java new file mode 100644 index 000000000..973628e83 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/controllers/UserControllerV2.java @@ -0,0 +1,279 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.controllers; + +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.MutationMapping; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.security.access.annotation.Secured; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.CrossOrigin; + +import es.iespuertodelacruz.routinefights.shared.services.MailService; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.ports.primary.IUserService; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserDeleteException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserNotFoundException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserUpdateException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos.Follower; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos.UserInputDTOV2; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos.UserOutputDTOV2; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.mappers.FollowerMapper; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.mappers.UserOutputV2Mapper; + +/** + * UserControllerV2 + */ +@Controller +@CrossOrigin +public class UserControllerV2 { + private static final String ERROR_FINDING_USER = "Error finding user"; + + Logger logger = Logger.getLogger(UserControllerV2.class.getName()); + + private IUserService userService; + private UserOutputV2Mapper userOutputMapper; + private FollowerMapper followerMapper; + private MailService mailService; + + public MailService getMailService() { + return this.mailService; + } + + @Autowired + public void setMailService(MailService mailService) { + this.mailService = mailService; + } + + public FollowerMapper getFollowerMapper() { + return this.followerMapper; + } + + @Autowired + public void setFollowerMapper(FollowerMapper followerMapper) { + this.followerMapper = followerMapper; + } + + public UserOutputV2Mapper getUserOutputMapper() { + return this.userOutputMapper; + } + + @Autowired + public void setUserOutputMapper(UserOutputV2Mapper userOutputMapper) { + this.userOutputMapper = userOutputMapper; + } + + public IUserService getUserService() { + return this.userService; + } + + @Autowired + public void setUserService(IUserService userService) { + this.userService = userService; + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("getUserV2") + public UserOutputDTOV2 findByEmail(@Argument String email) { + User user; + try { + user = userService.findByEmail(email); + } catch (Exception e) { + logger.log(Level.WARNING, "(findById) Error finding user: {0}", e.getMessage()); + throw new UserNotFoundException(ERROR_FINDING_USER); + } + return userOutputMapper.toOutputDTOV2(user); + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("getUserV2IsFollowing") + public UserOutputDTOV2 findByIdIsFollowing(@Argument String email) { + User user; + User searchingUser; + try { + user = userService.findByEmail(email); + searchingUser = userService + .findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + } catch (Exception e) { + logger.log(Level.WARNING, "(findById) Error finding user: {0}", e.getMessage()); + throw new UserNotFoundException(ERROR_FINDING_USER); + } + return userOutputMapper.toOutputDTOV2(user, searchingUser); + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("followedByEmail") + public List findFollowedUsersByEmail(@Argument String email, @Argument String usernameFilter) { + List following; + User self; + try { + following = userService.findFollowedUsersByEmail(email, usernameFilter); + self = userService.findByEmail(email); + } catch (Exception e) { + logger.log(Level.WARNING, "(findFollowedUsersByEmail) Error finding followed users: {0}", e.getMessage()); + throw new UserNotFoundException("Error finding followed users"); + } + return followerMapper.toFollower(following, self); + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("followersByEmail") + public List findFollowersByEmail(@Argument String email, @Argument String usernameFilter) { + List followers; + User self; + try { + followers = userService.findFollowersByEmail(email, usernameFilter); + self = userService.findByEmailOnlyBase(email); + } catch (Exception e) { + logger.log(Level.WARNING, "(findFollowersByEmail) Error finding followers: {0}", e.getMessage()); + throw new UserNotFoundException("Error finding followers"); + } + return followerMapper.toFollower(followers, self); + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @MutationMapping("followUser") + public boolean followUser(@Argument String followingEmail) { + String followerEmail = SecurityContextHolder.getContext().getAuthentication().getName(); + try { + return userService.followUser(followerEmail, followingEmail); + } catch (Exception e) { + logger.log(Level.WARNING, "(followUser) Error following user: {0}", e.getMessage()); + throw new UserUpdateException("Error following user"); + } + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @MutationMapping("unfollowUser") + public boolean unfollowUser(@Argument String followingEmail) { + String followerEmail = SecurityContextHolder.getContext().getAuthentication().getName(); + try { + return userService.unfollowUser(followerEmail, followingEmail); + } catch (Exception e) { + logger.log(Level.WARNING, "(unfollowUser) Error unfollowing user: {0}", e.getMessage()); + throw new UserUpdateException("Error unfollowing user"); + } + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @MutationMapping("updateUserV2") + public UserOutputDTOV2 update(@Argument UserInputDTOV2 user) { + User userDomain; + + try { + User previousUser = userService + .findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + + userDomain = userService.update(previousUser.getId(), user.username(), user.email(), user.password(), + user.nationality(), user.phoneNumber(), user.image()); + + if (userDomain != null && (!userDomain.getVerified() && userDomain.getVerificationToken() != null)) { + mailService.sentVerifyToken(userDomain.getEmail(), "Verify your new email: " + userDomain.getUsername(), + userDomain.getVerificationToken()); + } + } catch (Exception e) { + logger.log(Level.WARNING, "(update) Unable to update the user: {0}", e.getMessage()); + throw new UserUpdateException("Unable to update the user"); + } + return userOutputMapper.toOutputDTOV2(userDomain); + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @MutationMapping("deleteUserV2") + public boolean softDelete(@Argument String id) { + try { + return userService.softDelete(id); + } catch (Exception e) { + logger.log(Level.WARNING, "(delete) Unable to delete the user: {0}", e.getMessage()); + throw new UserDeleteException("Unable to delete the user"); + } + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @MutationMapping("subscribeActivity") + public boolean subscribeActivity(@Argument String activityID) { + try { + return userService.subscribeActivity(SecurityContextHolder.getContext().getAuthentication().getName(), + activityID); + } catch (Exception e) { + logger.log(Level.WARNING, "(subscribeActivity) Unable to subscribe the user to the activity: {0}", + e.getMessage()); + throw new UserUpdateException("Unable to subscribe the user to the activity"); + } + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @MutationMapping("unSubscribeActivity") + public boolean unSubscribeActivity(@Argument String activityID) { + try { + return userService.unSubscribeActivity(SecurityContextHolder.getContext().getAuthentication().getName(), + activityID); + } catch (Exception e) { + logger.log(Level.WARNING, "(unSubscribeActivity) Unable to unsubscribe the user to the activity: {0}", + e.getMessage()); + throw new UserUpdateException("Unable to unsubscribe the user to the activity"); + } + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("getOwnUser") + public UserOutputDTOV2 getOwnUser() { + User user; + try { + user = userService.findByEmail(SecurityContextHolder.getContext().getAuthentication().getName()); + } catch (Exception e) { + logger.log(Level.WARNING, "(getOwnUser) Error finding user: {0}", e.getMessage()); + throw new UserNotFoundException(ERROR_FINDING_USER); + } + return userOutputMapper.toOutputDTOV2(user); + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @QueryMapping("getUserPaginationByName") + public List getUserPaginationByName(@Argument int page, @Argument int perPage, + @Argument String userName) { + try { + if (page < 0 || perPage <= 0) { + throw new IllegalArgumentException("Page and perPage must be greater than 0"); + } + User self = userService + .findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + return userOutputMapper + .toOutputDTOV2(userService.getPaginationByName(page, perPage, userName, self.getId()),self); + } catch (Exception e) { + logger.log(Level.WARNING, "(getUserPaginationByName) Error finding users: {0}", e.getMessage()); + throw new UserNotFoundException("Error finding users"); + } + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @MutationMapping("likePost") + public Boolean likePost(@Argument String postID) { + try { + User user = userService + .findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + return userService.likePost(user.getId(), postID); + } catch (Exception e) { + logger.log(Level.WARNING, "(likePost) Error liking post: {0}", e.getMessage()); + throw new UserUpdateException("Error liking post"); + } + } + + @Secured({ "ROLE_USER", "ROLE_ADMIN" }) + @MutationMapping("unLikePost") + public boolean unLikePost(@Argument String postID) { + try { + User user = userService + .findByEmailOnlyBase(SecurityContextHolder.getContext().getAuthentication().getName()); + return userService.unLikePost(user.getId(), postID); + } catch (Exception e) { + logger.log(Level.WARNING, "(unLikePost) Error unliking post: {0}", e.getMessage()); + throw new UserUpdateException("Error unliking post"); + } + } + +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/dtos/Follower.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/dtos/Follower.java new file mode 100644 index 000000000..f873590ed --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/dtos/Follower.java @@ -0,0 +1,7 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos; + +import java.time.LocalDateTime; + +public record Follower(String id, String username, String nationality, String image, LocalDateTime createdAt, int followers, + int following,boolean isFollowing, String email) { +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/dtos/UserInputDTOV2.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/dtos/UserInputDTOV2.java new file mode 100644 index 000000000..2c9efea04 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/dtos/UserInputDTOV2.java @@ -0,0 +1,5 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos; + +public record UserInputDTOV2(String id, String username, String email, String password, String nationality, + String phoneNumber, String image) { +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/dtos/UserOutputDTOV2.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/dtos/UserOutputDTOV2.java new file mode 100644 index 000000000..00d102b59 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/dtos/UserOutputDTOV2.java @@ -0,0 +1,7 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos; + +import java.time.LocalDateTime; + +public record UserOutputDTOV2(String id, String username, String email, String nationality, String phoneNumber, + String image, LocalDateTime createdAt, int followers, int following, boolean isFollowing) { +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/mappers/FollowerMapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/mappers/FollowerMapper.java new file mode 100644 index 000000000..3e90408b8 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/mappers/FollowerMapper.java @@ -0,0 +1,39 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.mappers; + +import java.util.List; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos.Follower; + +/** + * FollowerMapper + */ +@Mapper(componentModel = "spring") +public interface FollowerMapper { + @Mapping(target = "followers", expression = "java(user.getFollowers() == null ? 0 : user.getFollowers().size())") + @Mapping(target = "following", expression = "java(user.getFollowing() == null ? 0 : user.getFollowing().size())") + public Follower toFollower(User user); + + @Mapping(target = "id", source = "user.id") + @Mapping(target = "username", source = "user.username") + @Mapping(target = "nationality", source = "user.nationality") + @Mapping(target = "image", source = "user.image") + @Mapping(target = "createdAt", source = "user.createdAt") + @Mapping(target = "followers", expression = "java(user.getFollowers() == null ? 0 : user.getFollowers().size())") + @Mapping(target = "following", expression = "java(user.getFollowing() == null ? 0 : user.getFollowing().size())") + @Mapping(target = "isFollowing", expression = "java(searchingUser != null && searchingUser.getFollowing() != null && searchingUser.getFollowing().contains(user))") + @Mapping(target = "email", source = "user.email") + public Follower toFollower(User user, User searchingUser); + + public List toFollower(List users); + + + default List toFollower(List users, User searchingUser) { + return users.stream() + .map(user -> toFollower(user, searchingUser)) + .toList(); + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/mappers/UserOutputV2Mapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/mappers/UserOutputV2Mapper.java new file mode 100644 index 000000000..6df3a5eb5 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/mappers/UserOutputV2Mapper.java @@ -0,0 +1,38 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.mappers; + +import java.util.List; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos.UserOutputDTOV2; + +/** + * UserOutputV2Mapper + */ +@Mapper(componentModel = "spring") +public interface UserOutputV2Mapper { + @Mapping(target = "followers", expression = "java(user.getFollowers() == null ? 0 : user.getFollowers().size())") + @Mapping(target = "following", expression = "java(user.getFollowing() == null ? 0 : user.getFollowing().size())") + public UserOutputDTOV2 toOutputDTOV2(User user); + + @Mapping(target = "followers", expression = "java(user.getFollowers() == null ? 0 : user.getFollowers().size())") + @Mapping(target = "following", expression = "java(user.getFollowing() == null ? 0 : user.getFollowing().size())") + @Mapping(target = "isFollowing", expression = "java(searchingUser != null && user.getFollowers() != null && user.getFollowers().contains(searchingUser))") + @Mapping(target = "image", source = "user.image") + @Mapping(target = "createdAt", source = "user.createdAt") + @Mapping(target = "id", source = "user.id") + @Mapping(target = "username", source = "user.username") + @Mapping(target = "email", source = "user.email") + @Mapping(target = "phoneNumber", source = "user.phoneNumber") + @Mapping(target = "nationality", source = "user.nationality") + public UserOutputDTOV2 toOutputDTOV2(User user, User searchingUser); + + public List toOutputDTOV2(List users); + + default List toOutputDTOV2(List users, User searchingUser) { + return users.stream() + .map(user -> toOutputDTOV2(user, searchingUser)).toList(); + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/controllers/UserControllerV3.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/controllers/UserControllerV3.java new file mode 100644 index 000000000..f05d29cc9 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/controllers/UserControllerV3.java @@ -0,0 +1,135 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v3.controllers; + +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.MutationMapping; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.security.access.annotation.Secured; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.CrossOrigin; + +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.ports.primary.IUserService; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserDeleteException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserNotFoundException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserSaveException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserUpdateException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v3.dtos.UserInputDTOV3; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v3.dtos.UserOutputDTOV3; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v3.mappers.UserOutputV3Mapper; + +/** + * UserControllerV3 + */ +@Controller +@CrossOrigin +public class UserControllerV3 { + Logger logger = Logger.getLogger(UserControllerV3.class.getName()); + + private IUserService userService; + private UserOutputV3Mapper userOutputMapper; + + public UserOutputV3Mapper getUserOutputMapper() { + return this.userOutputMapper; + } + + @Autowired + public void setUserOutputMapper(UserOutputV3Mapper userOutputMapper) { + this.userOutputMapper = userOutputMapper; + } + + public IUserService getUserService() { + return this.userService; + } + + @Autowired + public void setUserService(IUserService userService) { + this.userService = userService; + } + + @Secured("ROLE_ADMIN") + @QueryMapping("usersV3") + public List findAll() { + List users; + try { + users = userService.findAll(); + } catch (Exception e) { + logger.log(Level.WARNING, "(findAll) Error finding users: {0}", e.getMessage()); + throw new UserNotFoundException("Error finding users"); + } + return userOutputMapper.toDTO(users); + } + + @Secured("ROLE_ADMIN") + @QueryMapping("userV3") + public UserOutputDTOV3 findById(@Argument String id) { + User user; + try { + user = userService.findById(id); + } catch (Exception e) { + logger.log(Level.WARNING, "(findById) Error finding user: {0}", e.getMessage()); + throw new UserNotFoundException("Error finding user"); + } + return userOutputMapper.toDTO(user); + } + + @Secured("ROLE_ADMIN") + @MutationMapping("saveUserV3") + public UserOutputDTOV3 post(@Argument UserInputDTOV3 user) { + User userDomain; + try { + userDomain = userService.post(user.username(), user.email(), + user.password(), user.nationality(), user.phoneNumber(), + user.image(), user.role(), user.verified(), + user.verificationToken(), user.createdAt(), user.updatedAt(), + user.deletedAt()); + } catch (Exception e) { + logger.log(Level.WARNING, "(post) Unable to create the user: {0}", e.getMessage()); + throw new UserSaveException("Unable to create the user"); + } + return userOutputMapper.toDTO(userDomain); + } + + @Secured("ROLE_ADMIN") + @MutationMapping("updateUserV3") + public UserOutputDTOV3 put(@Argument UserInputDTOV3 user) { + User userDomain; + try { + userDomain = userService.put(user.id(), user.username(), user.email(), + user.password(), user.nationality(), user.phoneNumber(), + user.image(), user.role(), user.verified(), + user.verificationToken(), user.createdAt(), user.updatedAt(), + user.deletedAt()); + } catch (Exception e) { + logger.log(Level.WARNING, "(put) Unable to update the user: {0}", e.getMessage()); + throw new UserUpdateException("Unable to update the user"); + } + return userOutputMapper.toDTO(userDomain); + } + + @Secured("ROLE_ADMIN") + @MutationMapping("deleteUserV3") + public boolean delete(@Argument String id) { + try { + return userService.delete(id); + } catch (Exception e) { + logger.log(Level.WARNING, "(delete) Unable to delete the user: {0}", e.getMessage()); + throw new UserDeleteException("Unable to delete the user"); + } + } + + @Secured("ROLE_ADMIN") + @MutationMapping("restoreUserV3") + public boolean restoreUser(@Argument String id) { + try { + return userService.restore(id); + } catch (Exception e) { + logger.log(Level.WARNING, "(restoreUser) Unable to restore the user: {0}", e.getMessage()); + throw new UserUpdateException("Unable to restore the user"); + } + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/dtos/UserInputDTOV3.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/dtos/UserInputDTOV3.java new file mode 100644 index 000000000..d6ec4716d --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/dtos/UserInputDTOV3.java @@ -0,0 +1,11 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v3.dtos; + +import java.time.LocalDateTime; + +/** + * UserInputDTOV3 + */ +public record UserInputDTOV3(String id, String username, String email, String password, String nationality, + String phoneNumber, String image, String role, boolean verified, String verificationToken, + LocalDateTime createdAt, LocalDateTime updatedAt, LocalDateTime deletedAt) { +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/dtos/UserOutputDTOV3.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/dtos/UserOutputDTOV3.java new file mode 100644 index 000000000..cadfedb8e --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/dtos/UserOutputDTOV3.java @@ -0,0 +1,13 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v3.dtos; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * UserOutputDTOV3 + */ +public record UserOutputDTOV3(String id, String username, String email, String nationality, String phoneNumber, + String image, String role, boolean verified, String verificationToken, LocalDateTime createdAt, + LocalDateTime updatedAt, LocalDateTime deletedAt, List followers, + List following) { +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/mappers/UserOutputV3Mapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/mappers/UserOutputV3Mapper.java new file mode 100644 index 000000000..46306597c --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/mappers/UserOutputV3Mapper.java @@ -0,0 +1,18 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v3.mappers; + +import java.util.List; + +import org.mapstruct.Mapper; + +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v3.dtos.UserOutputDTOV3; + +/** + * UserOutputV3Mapper + */ +@Mapper(componentModel = "spring") +public interface UserOutputV3Mapper { + public UserOutputDTOV3 toDTO(User user); + + public List toDTO(List users); +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/entities/UserEntity.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/entities/UserEntity.java new file mode 100644 index 000000000..d83767e47 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/entities/UserEntity.java @@ -0,0 +1,364 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities; + +import java.time.LocalDateTime; +import java.util.List; + +import org.springframework.data.neo4j.core.schema.GeneratedValue; +import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.Node; +import org.springframework.data.neo4j.core.schema.Relationship; + +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities.ActivityEntity; +import es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.secondary.entities.BadgeEntity; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.entities.CommentEntity; +import es.iespuertodelacruz.routinefights.device_token.infrastructure.adapters.secondary.entities.DeviceTokenEntity; +import es.iespuertodelacruz.routinefights.meeting.infrastructure.adapters.secondary.entities.MeetingEntity; +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.entities.PostEntity; +import es.iespuertodelacruz.routinefights.report.infrastructure.adapters.secondary.entities.ReportEntity; +import es.iespuertodelacruz.routinefights.team.infrastructure.adapters.secondary.entities.TeamEntity; +import es.iespuertodelacruz.routinefights.user.common.UserCommon; + +import java.util.Objects; + +/** + * UserEntity + */ +@Node("User") +public class UserEntity extends UserCommon { + @Id + @GeneratedValue + private String id; + + @Relationship(type = "FOLLOWS", direction = Relationship.Direction.INCOMING) + private List followers; + + @Relationship(type = "FOLLOWS", direction = Relationship.Direction.OUTGOING) + private List following; + + @Relationship(type = "Reported", direction = Relationship.Direction.OUTGOING) + private List reports; + + @Relationship(type = "Posted", direction = Relationship.Direction.OUTGOING) + private List posts; + + @Relationship(type = "Commented", direction = Relationship.Direction.OUTGOING) + private List comments; + + @Relationship(type = "Liked", direction = Relationship.Direction.OUTGOING) + private List likedPosts; + + @Relationship(type = "Attended", direction = Relationship.Direction.OUTGOING) + private List meetings; + + @Relationship(type = "Created", direction = Relationship.Direction.OUTGOING) + private List createdActivities; + + @Relationship(type = "Belongs_To", direction = Relationship.Direction.OUTGOING) + private TeamEntity team; + + @Relationship(type = "Has_Badge", direction = Relationship.Direction.OUTGOING) + private List badges; + + @Relationship(type = "Participated", direction = Relationship.Direction.OUTGOING) + private List activities; + + @Relationship(type = "Has_Device", direction = Relationship.Direction.OUTGOING) + private List deviceTokens; + + /** + * Default constructor + */ + public UserEntity() { + } + + /** + * Constructor with all the attributes + * + * @param id The id of the user + * @param username The username of the user + * @param email The email of the user + * @param password The password of the user + * @param nationality The nationality of the user + * @param phoneNumber The phone number of the user + * @param image The image of the user + * @param role The role of the user + * @param verified The verification status of the user + * @param verificationToken The verification token of the user + * @param createdAt The date when the user was created + * @param updatedAt The date when the user was updated + * @param deletedAt The date when the user was deleted + * @param followers The list of followers of the user + * @param following The list of users that the user is following + * @param deviceTokens The list of device tokens of the user + */ + public UserEntity(String id, String username, String email, String password, String nationality, String phoneNumber, + String image, String role, boolean verified, String verificationToken, LocalDateTime createdAt, + LocalDateTime updatedAt, LocalDateTime deletedAt, List followers, + List following, List deviceTokens) { + super(username, email, password, nationality, phoneNumber, image, role, verified, verificationToken, createdAt, + updatedAt, deletedAt); + this.id = id; + this.followers = followers; + this.following = following; + this.deviceTokens = deviceTokens; + } + + public UserEntity(String id, List followers, List following, List reports, + List posts, List comments, List likedPosts, + List meetings, List createdActivities, TeamEntity team, + List badges, List activities) { + this.id = id; + this.followers = followers; + this.following = following; + this.reports = reports; + this.posts = posts; + this.comments = comments; + this.likedPosts = likedPosts; + this.meetings = meetings; + this.createdActivities = createdActivities; + this.team = team; + this.badges = badges; + this.activities = activities; + } + + public List getReports() { + return this.reports; + } + + public void setReports(List reports) { + this.reports = reports; + } + + public List getPosts() { + return this.posts; + } + + public void setPosts(List posts) { + this.posts = posts; + } + + public List getComments() { + return this.comments; + } + + public void setComments(List comments) { + this.comments = comments; + } + + public List getLikedPosts() { + return this.likedPosts; + } + + public void setLikedPosts(List likedPosts) { + this.likedPosts = likedPosts; + } + + public List getMeetings() { + return this.meetings; + } + + public void setMeetings(List meetings) { + this.meetings = meetings; + } + + public List getCreatedActivities() { + return this.createdActivities; + } + + public void setCreatedActivities(List createdActivities) { + this.createdActivities = createdActivities; + } + + public TeamEntity getTeam() { + return this.team; + } + + public void setTeam(TeamEntity team) { + this.team = team; + } + + public List getBadges() { + return this.badges; + } + + public void setBadges(List badges) { + this.badges = badges; + } + + public List getDeviceTokens() { + return this.deviceTokens; + } + + public void setDeviceTokens(List deviceTokens) { + this.deviceTokens = deviceTokens; + } + + public UserEntity id(String id) { + setId(id); + return this; + } + + public List getActivities() { + return this.activities; + } + + public void setActivities(List activities) { + this.activities = activities; + } + + public UserEntity activities(List activities) { + setActivities(activities); + return this; + } + + public UserEntity followers(List followers) { + setFollowers(followers); + return this; + } + + public UserEntity following(List following) { + setFollowing(following); + return this; + } + + public UserEntity reports(List reports) { + setReports(reports); + return this; + } + + public UserEntity posts(List posts) { + setPosts(posts); + return this; + } + + public UserEntity comments(List comments) { + setComments(comments); + return this; + } + + public UserEntity likedPosts(List likedPosts) { + setLikedPosts(likedPosts); + return this; + } + + public UserEntity meetings(List meetings) { + setMeetings(meetings); + return this; + } + + public UserEntity createdActivities(List createdActivities) { + setCreatedActivities(createdActivities); + return this; + } + + public UserEntity team(TeamEntity team) { + setTeam(team); + return this; + } + + public UserEntity badges(List badges) { + setBadges(badges); + return this; + } + + public UserEntity deviceTokens(List deviceTokens) { + setDeviceTokens(deviceTokens); + return this; + } + + /** + * Get the id of the user + * + * @return The id of the user + */ + public String getId() { + return this.id; + } + + /** + * Set the id of the user + * + * @param id The id of the user + */ + public void setId(String id) { + this.id = id; + } + + /** + * Get the list of followers of the user + * + * @return The list of followers of the user + */ + public List getFollowers() { + return this.followers; + } + + /** + * Set the list of followers of the user + * + * @param followers The list of followers of the user + */ + public void setFollowers(List followers) { + this.followers = followers; + } + + /** + * Get the list of users that the user is following + * + * @return The list of users that the user is following + */ + public List getFollowing() { + return this.following; + } + + /** + * Set the list of users that the user is following + * + * @param following The list of users that the user is following + */ + public void setFollowing(List following) { + this.following = following; + } + + /** + * Equals method to compare two UserEntity objects + * + * @param o The object to compare + * @return True if the objects are equals, false otherwise + */ + @Override + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof UserEntity)) { + return false; + } + UserEntity userEntity = (UserEntity) o; + return Objects.equals(id, userEntity.id); + } + + /** + * Hash code method + * + * @return The hash code of the object + */ + @Override + public int hashCode() { + return Objects.hash(id); + } + + /** + * To string method + * + * @return The string representation of the object + */ + @Override + public String toString() { + return "{" + + " id='" + getId() + "'" + + ", username='" + getUsername() + "'" + + ", email='" + getEmail() + "'" + + ", verified='" + getVerified() + "'" + + "}"; + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/mappers/IUserEntityMapper.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/mappers/IUserEntityMapper.java new file mode 100644 index 000000000..965ae0e04 --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/mappers/IUserEntityMapper.java @@ -0,0 +1,81 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.mappers; + +import java.util.ArrayList; +import java.util.List; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Named; + +import es.iespuertodelacruz.routinefights.device_token.infrastructure.adapters.secondary.mappers.IDeviceTokenEntityMapper; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; + +/** + * IUserEntityMapper interface for UserEntityMapper + */ +@Mapper(componentModel = "spring", uses = { IDeviceTokenEntityMapper.class }) +public interface IUserEntityMapper { + + /** + * Method to map User to UserEntity + * + * @param user User + * @return UserEntity + */ + UserEntity toEntity(User user); + + /** + * Method to map UserEntity to User + * + * @param userEntity UserEntity + * @return User + */ + @Mapping(target = "followers", source = "followers", qualifiedByName = "setFollows") + @Mapping(target = "following", source = "following", qualifiedByName = "setFollows") + public User toDomain(UserEntity userEntity); + + /** + * Method to map List to List + * + * @param users List + * @return List + */ + public List toEntity(List users); + + /** + * Method to map List to List + * + * @param userEntities List + * @return List + */ + public List toDomain(List userEntities); + + @Named("setFollows") + public static List setFollows(List users) { + List userList = new ArrayList<>(); + + if (users == null) { + return userList; + } + + for (UserEntity userEntity : users) { + User user = new User(); + user.setCreatedAt(userEntity.getCreatedAt()); + user.setDeletedAt(userEntity.getDeletedAt()); + user.setEmail(userEntity.getEmail()); + user.setImage(userEntity.getImage()); + user.setNationality(userEntity.getNationality()); + user.setPassword(userEntity.getPassword()); + user.setPhoneNumber(userEntity.getPhoneNumber()); + user.setRole(userEntity.getRole()); + user.setUpdatedAt(userEntity.getUpdatedAt()); + user.setUsername(userEntity.getUsername()); + user.setVerificationToken(userEntity.getVerificationToken()); + user.setVerified(userEntity.getVerified()); + user.setId(userEntity.getId()); + userList.add(user); + } + return userList; + } +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/repositories/IUserEntityRepository.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/repositories/IUserEntityRepository.java new file mode 100644 index 000000000..0af00314b --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/repositories/IUserEntityRepository.java @@ -0,0 +1,72 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.repositories; + +import java.util.List; +import java.util.Set; + +import org.springframework.data.neo4j.repository.Neo4jRepository; +import org.springframework.data.neo4j.repository.query.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; + +@Repository +public interface IUserEntityRepository extends Neo4jRepository { + public UserEntity findByEmail(String email); + + @Query("MATCH (u:User {email: $email}) RETURN u") + public UserEntity findByEmailOnlyBase(String email); + + public boolean existsByEmail(String email); + + @Query("MATCH (fr:User {email: $email})-[:FOLLOWS]->(fd: User) WHERE lower(fd.username) CONTAINS lower($usernameFilter) RETURN DISTINCT fd") + public List findFollowedUsersByEmail(@Param("email") String email, + @Param("usernameFilter") String usernameFilter); + + @Query("MATCH (fr:User)-[:FOLLOWS]->(fd: User {email: $email}) WHERE lower(fr.username) CONTAINS lower($usernameFilter) RETURN DISTINCT fr") + public List findFollowersByEmail(@Param("email") String email, + @Param("usernameFilter") String usernameFilter); + + @Query("MATCH (fr: User {email: $frEmail}) MATCH (fd: User {email: $fdEmail}) MERGE (fr)-[:FOLLOWS]->(fd) RETURN COUNT(*) > 0") + public boolean followUser(@Param("frEmail") String frEmail, @Param("fdEmail") String fdEmail); + + @Query("MATCH (fr: User {email: $frEmail})-[r:FOLLOWS]->(fd: User {email: $fdEmail}) DELETE r RETURN COUNT(*) > 0") + public boolean unfollowUser(@Param("frEmail") String frEmail, @Param("fdEmail") String fdEmail); + + @Query("MATCH (u: User) WHERE u.image IS NOT NULL RETURN u.image") + public Set findAllImages(); + + @Query("MATCH (u: User) WHERE u.username CONTAINS $regex RETURN u") + public List findByUsername(@Param("regex") String regex); + + @Query("MATCH (u: User {email:$userMail}) MATCH (a: Activity ) Where elementId(a)=$activityID MERGE (u)-[:Participated]->(a) RETURN exists((u)-[:Participated]->(a)) AS relationshipExists") + public boolean susbcribeActivity(@Param("userMail") String userEmail, @Param("activityID") String activityID); + + @Query("MATCH (u: User {email:$userMail}) MATCH (a: Activity) WHERE elementId(a) = $activityID MATCH (u)-[r:Participated]->(a) DELETE r RETURN COUNT(*) > 0") + public boolean unSusbcribeActivity(@Param("userMail") String userEmail, @Param("activityID") String activityID); + + @Query(""" + MATCH (u:User) + WHERE lower(u.username) CONTAINS lower($userName) AND elementId(u) <> $userID + CALL { + WITH u + OPTIONAL MATCH (follower:User)-[ff:FOLLOWS]->(u) + RETURN collect(DISTINCT follower) AS followers, collect(DISTINCT ff) AS followerRels + } + CALL { + WITH u + OPTIONAL MATCH (u)-[f:FOLLOWS]->(following:User) + RETURN collect(DISTINCT following) AS following, collect(DISTINCT f) AS followingRels + } + RETURN u AS user, followers, following, followerRels AS ff, followingRels AS f + + """) + public List getPaginationByName(@Param("offset") int offset, @Param("limit") int limit, + @Param("userName") String userName, @Param("userID") String userID); + + @Query("MATCH (u: User) MATCH (p: Post) WHERE elementId(p) = $postID AND elementId(u) = $userID MERGE (u)-[:Liked]->(p) RETURN exists((u)-[:Liked]->(p))") + public Boolean likePost(@Param("userID") String userID, @Param("postID") String postID); + + @Query("MATCH (u: User) MATCH (p: Post) WHERE elementId(p) = $postID AND elementId(u) = $userID MATCH (u)-[r:Liked]->(p) DELETE r RETURN COUNT(*) > 0") + public Boolean unLikePost(@Param("userID") String userID, @Param("postID") String postID); +} diff --git a/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/services/UserEntityService.java b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/services/UserEntityService.java new file mode 100644 index 000000000..bd03bd7ab --- /dev/null +++ b/API/src/main/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/services/UserEntityService.java @@ -0,0 +1,397 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.services; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.UUID; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.ports.secondary.IUserRepository; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserDeleteException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserNotFoundException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserSaveException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserUpdateException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.mappers.IUserEntityMapper; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.repositories.IUserEntityRepository; + +/** + * UserEntityService + */ +@Service +public class UserEntityService implements IUserRepository { + private static final String INVALID_PHONENUMBER = "Invalid phone number, should be: +[country code][phone number], example: +34612345678"; + private static final String INVALID_EMAIL = "Invalid email, should be: [email]@[domain].[tld], example: jonaykb@gmail.com"; + private static final String DATA_REQUIRED = "Data required"; + private static final String ERROR_UPDATING_USER = "Error updating user"; + private static final String USER_NOT_FOUND = "User not found"; + + private IUserEntityRepository userRepository; + private IUserEntityMapper userEntityMapper; + private PasswordEncoder passwordEncoder; + + /** + * Getter for userRepository + * + * @return IUserEntityRepository + */ + public IUserEntityRepository getUserRepository() { + return this.userRepository; + } + + /** + * Setter for userRepository + * + * @param userRepository + */ + @Autowired + public void setUserRepository(IUserEntityRepository userRepository) { + this.userRepository = userRepository; + } + + public IUserEntityMapper getUserEntityMapper() { + return this.userEntityMapper; + } + + @Autowired + public void setUserEntityMapper(IUserEntityMapper userEntityMapper) { + this.userEntityMapper = userEntityMapper; + } + + public PasswordEncoder getPasswordEncoder() { + return this.passwordEncoder; + } + + @Autowired + public void setPasswordEncoder(PasswordEncoder passwordEncoder) { + this.passwordEncoder = passwordEncoder; + } + + @Override + public List findAll() { + try { + return userEntityMapper.toDomain(userRepository.findAll()); + } catch (Exception e) { + throw new UserNotFoundException("Users not found"); + } + } + + @Override + public User findById(String id) { + try { + return userEntityMapper.toDomain(userRepository.findById(id).orElse(null)); + } catch (Exception e) { + throw new UserNotFoundException(USER_NOT_FOUND); + } + } + + @Override + public User findByEmail(String email) { + try { + return userEntityMapper.toDomain(userRepository.findByEmail(email)); + } catch (Exception e) { + throw new UserNotFoundException(USER_NOT_FOUND); + } + } + + @Override + public Boolean existsByEmail(String email) { + return userRepository.existsByEmail(email); + } + + @Override + public List findByUsername(String regex) { + try { + return userEntityMapper.toDomain(userRepository.findByUsername(regex)); + } catch (Exception e) { + throw new UserNotFoundException(USER_NOT_FOUND); + } + } + + @Override + @Transactional + public User post(User user) { + if (user == null || user.getPassword() == null || user.getEmail() == null || user.getCreatedAt() == null) { + throw new UserSaveException(DATA_REQUIRED); + } + + if (userRepository.existsByEmail(user.getEmail())) { + throw new UserSaveException("Email already exists"); + } + if (!checkIfEmailIsValid(user.getEmail())) { + throw new UserUpdateException( + INVALID_EMAIL); + } + if (!checkIfPhoneNumberIsValid(user.getPhoneNumber())) { + throw new UserUpdateException( + INVALID_PHONENUMBER); + } + + UserEntity userEntity = userEntityMapper.toEntity(user); + userEntity.setFollowers(new ArrayList<>()); + userEntity.setFollowing(new ArrayList<>()); + userEntity.setPassword(passwordEncoder.encode(user.getPassword())); + try { + return userEntityMapper.toDomain(userRepository.save(userEntity)); + } catch (Exception e) { + throw new UserSaveException("Error saving user"); + } + } + + @Override + @Transactional + public User put(User user) { + if (user == null || user.getId() == null) { + throw new UserUpdateException(DATA_REQUIRED); + } + + UserEntity userEntity = userRepository.findById(user.getId()).orElse(null); + if (userEntity == null) { + throw new UserNotFoundException(USER_NOT_FOUND); + } + + if (user.getPassword() != null && !user.getPassword().equals(userEntity.getPassword())) { + userEntity.setPassword(passwordEncoder.encode(user.getPassword())); + } + if (!checkIfEmailIsValid(user.getEmail())) { + throw new UserUpdateException( + INVALID_EMAIL); + } + if (!checkIfPhoneNumberIsValid(user.getPhoneNumber())) { + throw new UserUpdateException( + INVALID_PHONENUMBER); + } + + userEntity.setUsername(user.getUsername()); + userEntity.setEmail(user.getEmail()); + userEntity.setNationality(user.getNationality()); + userEntity.setPhoneNumber(user.getPhoneNumber()); + userEntity.setImage(user.getImage()); + userEntity.setCreatedAt(user.getCreatedAt()); + userEntity.setUpdatedAt(user.getUpdatedAt()); + userEntity.setDeletedAt(user.getDeletedAt()); + userEntity.setRole(user.getRole()); + userEntity.setVerified(user.getVerified()); + userEntity.setVerificationToken(user.getVerificationToken()); + try { + return userEntityMapper.toDomain(userRepository.save(userEntity)); + } catch (Exception e) { + throw new UserUpdateException(ERROR_UPDATING_USER); + } + } + + @Override + @Transactional + public User update(User user) { + if (user == null || user.getId() == null) { + throw new UserUpdateException(DATA_REQUIRED); + } + + UserEntity userEntity = userRepository.findById(user.getId()).orElse(null); + if (userEntity == null) { + throw new UserNotFoundException(USER_NOT_FOUND); + } + + if (!user.getEmail().equals(userEntity.getEmail())) { + if (userRepository.existsByEmail(user.getEmail())) { + throw new UserUpdateException("Email already exists"); + } + if (!checkIfEmailIsValid(user.getEmail())) { + throw new UserUpdateException( + INVALID_EMAIL); + } + userEntity.setEmail(user.getEmail()); + userEntity.setVerified(false); + userEntity.setVerificationToken(UUID.randomUUID().toString()); + } + + if (user.getPassword() != null && !user.getPassword().equals(userEntity.getPassword())) { + userEntity.setPassword(passwordEncoder.encode(user.getPassword())); + } + + if (!checkIfPhoneNumberIsValid(user.getPhoneNumber())) { + throw new UserUpdateException( + INVALID_PHONENUMBER); + } + + userEntity.setUsername(user.getUsername()); + userEntity.setNationality(user.getNationality()); + userEntity.setPhoneNumber(user.getPhoneNumber()); + userEntity.setImage(user.getImage()); + userEntity.setUpdatedAt(LocalDateTime.now()); + try { + return userEntityMapper.toDomain(userRepository.save(userEntity)); + } catch (Exception e) { + throw new UserUpdateException(ERROR_UPDATING_USER); + } + } + + @Override + @Transactional + public boolean delete(String id) { + try { + userRepository.deleteById(id); + return !userRepository.existsById(id); + } catch (Exception e) { + throw new UserDeleteException("Error deleting user"); + } + } + + @Override + @Transactional + public boolean softDelete(String id) { + UserEntity userEntity = userRepository.findById(id).orElse(null); + if (userEntity == null) { + throw new UserNotFoundException(USER_NOT_FOUND); + } + + userEntity.setUpdatedAt(LocalDateTime.now()); + userEntity.setDeletedAt(LocalDateTime.now()); + try { + return userRepository.save(userEntity).getDeletedAt() != null; + } catch (Exception e) { + throw new UserDeleteException("Error deleting user"); + } + } + + @Override + @Transactional + public boolean restore(String id) { + UserEntity userEntity = userRepository.findById(id).orElse(null); + if (userEntity == null) { + throw new UserNotFoundException(USER_NOT_FOUND); + } + + userEntity.setUpdatedAt(LocalDateTime.now()); + userEntity.setDeletedAt(null); + try { + return userRepository.save(userEntity).getDeletedAt() == null; + } catch (Exception e) { + throw new UserUpdateException(ERROR_UPDATING_USER); + } + } + + @Override + public List findFollowedUsersByEmail(String email, String usernameFilter) { + try { + return userEntityMapper.toDomain(userRepository.findFollowedUsersByEmail(email, usernameFilter)); + } catch (Exception e) { + throw new UserNotFoundException("Followed users not found"); + } + } + + @Override + public List findFollowersByEmail(String email, String usernameFilter) { + try { + return userEntityMapper.toDomain(userRepository.findFollowersByEmail(email, usernameFilter)); + } catch (Exception e) { + throw new UserNotFoundException("Followers not found"); + } + } + + @Override + @Transactional + public boolean followUser(String frEmail, String fdEmail) { + if (!userRepository.existsByEmail(frEmail) || !userRepository.existsByEmail(fdEmail)) { + throw new UserNotFoundException(USER_NOT_FOUND); + } + + try { + return userRepository.followUser(frEmail, fdEmail); + } catch (Exception e) { + throw new UserNotFoundException("Error following user"); + } + } + + @Override + @Transactional + public boolean unfollowUser(String frEmail, String fdEmail) { + if (!userRepository.existsByEmail(frEmail) || !userRepository.existsByEmail(fdEmail)) { + throw new UserNotFoundException(USER_NOT_FOUND); + } + + try { + return userRepository.unfollowUser(frEmail, fdEmail); + } catch (Exception e) { + throw new UserNotFoundException("Error unfollowing user"); + } + } + + @Override + public Set findAllImages() { + try { + return userRepository.findAllImages(); + } catch (Exception e) { + throw new UserNotFoundException("Error finding images"); + } + } + + @Override + public boolean subscribeActivity(String userEmail,String activityID){ + try { + return userRepository.susbcribeActivity(userEmail,activityID); + } catch (Exception e) { + throw new UserNotFoundException("Error subscribing activity: "+e.getMessage()); + } + } + + @Override + public boolean unSubscribeActivity(String userEmail,String activityID){ + try { + return userRepository.unSusbcribeActivity(userEmail,activityID); + } catch (Exception e) { + throw new UserNotFoundException("Error unsuscribing activity: "+e.getMessage()); + } + } + + + boolean checkIfPhoneNumberIsValid(String phoneNumber) { + return phoneNumber.matches("^\\+\\d{1,3}\\d{9}$"); + } + + boolean checkIfEmailIsValid(String email) { + return email.matches("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"); + } + + @Override + public User findByEmailOnlyBase(String email) { + try { + return userEntityMapper.toDomain(userRepository.findByEmailOnlyBase(email)); + } catch (Exception e) { + throw new UserNotFoundException(USER_NOT_FOUND); + } + } + + @Override + public List getPaginationByName(int offset, int limit, String userName, String userID) { + try { + return userEntityMapper.toDomain(userRepository.getPaginationByName(offset, limit, userName,userID)); + } catch (Exception e) { + throw new UserNotFoundException(e.getMessage()); + } + } + + @Override + public Boolean likePost(String userId, String postId) { + try { + return userRepository.likePost(userId, postId); + } catch (Exception e) { + throw new UserNotFoundException("Error liking post"); + } + } + + @Override + public Boolean unLikePost(String userId, String postId) { + try { + return userRepository.unLikePost(userId, postId); + } catch (Exception e) { + throw new UserNotFoundException("Error unliking post"); + } + } +} diff --git a/API/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/API/src/main/resources/META-INF/additional-spring-configuration-metadata.json new file mode 100644 index 000000000..cbad6613e --- /dev/null +++ b/API/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -0,0 +1,12 @@ +{"properties": [ + { + "name": "jwt.secret", + "type": "java.lang.String", + "description": "A description for 'jwt.secret'" + }, + { + "name": "jwt.expiration", + "type": "java.lang.String", + "description": "A description for 'jwt.expiration'" + } +]} \ No newline at end of file diff --git a/API/src/main/resources/application.properties b/API/src/main/resources/application.properties new file mode 100644 index 000000000..1dd488dfc --- /dev/null +++ b/API/src/main/resources/application.properties @@ -0,0 +1,30 @@ +spring.application.name=RoutineFights +spring.neo4j.uri=bolt://localhost:7687 +spring.neo4j.authentication.username=neo4j +spring.neo4j.authentication.password=1q2w3e4r +spring.graphql.graphiql.enabled=true +spring.graphql.cors.allowed-origins=http://localhost/ +spring.graphql.cors.allowed-methods=GET,POST +spring.graphql.cors.max-age=1800s +spring.security.user.name=admin +spring.security.user.password=admin +spring.graphql.schema.printer.enabled=true +jwt.secret = secret +jwt.expiration = 2592000000 +spring.sendgrid.api-key=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 +sendgrid.api-key=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 +sendgrid.from-email=routinefights@gmail.com +sendgrid.from-name=Routine Fights + +server.ssl.enabled=true +server.ssl.certificate=/etc/letsencrypt/live/routinefights.ddns.net/fullchain.pem +server.ssl.certificate-private-key=/etc/letsencrypt/live/routinefights.ddns.net/privkey.pem + +logging.level.org.springframework.data.neo4j.cypher.unrecognized=ERROR +spring.servlet.multipart.max-file-size=300MB +spring.servlet.multipart.max-request-size=300MB +server.tomcat.max-swallow-size=-1 + +cxf.path=/services + +firebase.service-account=classpath:keystore/routinefights-1-firebase-adminsdk-fbsvc-a9082c7c49.json diff --git a/API/src/main/resources/cxf-service.xml b/API/src/main/resources/cxf-service.xml new file mode 100644 index 000000000..a78d0f0ee --- /dev/null +++ b/API/src/main/resources/cxf-service.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/API/src/main/resources/graphql/schema.graphqls b/API/src/main/resources/graphql/schema.graphqls new file mode 100644 index 000000000..fa77aebbd --- /dev/null +++ b/API/src/main/resources/graphql/schema.graphqls @@ -0,0 +1,252 @@ +type Query { + getUserPaginationByName( + page: Int! + perPage: Int! + userName: String! + ): [UserOutputV2] + + getUserV2(email: String!): UserOutputV2 + getUserV2IsFollowing(email: String!): UserOutputV2 + + followersByEmail(email: String!, usernameFilter: String!): [Followers] + followedByEmail(email: String!, usernameFilter: String!): [Followers] + images: [String] + + postsV2(lastDate: String!, limit: Int): [PostOutputV2] + postsByUserV2(userEmail: String!, lastDate: String!, limit: Int): [PostOutputV2] + postsByActivityV2( + activityID: String! + lastDate: String! + limit: Int + ): [PostOutputV2] + postsFollowingV2(lastDate: String!, limit: Int): [PostOutputV2] + postsSubscribedActivitiesV2(lastDate: String!, limit: Int): [PostOutputV2] + + paginationActivitiesNotSubscribed( + page: Int! + perPage: Int + activityName: String + ): [ActivityOutputV2] + getOwnUser: UserOutputV2 + getSubscribedActivitiesWithStreakByName( + activityName: String! + ): [ActivityOutputV2Streak] + getComments(postID: String!): [CommentOutputV2] + + getCommunityEventById(id: String!): CommunityEventOutputV3 + getUsersParticipatingInCommunityEvent(id: String!): [String] + + getActiveCommunityEvents: [CommunityEventOutputV2] + getNearestCommunityEvent: CommunityEventOutputV2 + getCommunityEventPointsById(id: String!): Int + getAllCommunityEvents:[CommunityEventOutputV3] + + + getBadgesByEmail(email: String!): [BadgeOutputV2] + getOwnBadges: [BadgeOutputV2] + findBadgeById(id: String!): BadgeOutputV3 + findBadgeByCommunityEvent(communityEventId: String!): [BadgeOutputV2] + + findAllActivities:[ActivityOutputV2] +} + +type Mutation { + saveUserV3(user: UserInputV3): UserOutputV3 + updateUserV3(user: UserInputV3): UserOutputV3 + deleteUserV3(id: ID!): Boolean + restoreUserV3(id: ID!): Boolean + + updateUserV2(user: UserInputV2): UserOutputV2 + deleteUserV2(id: ID!): Boolean + + likePost(postID: String!): Boolean + unLikePost(postID: String!): Boolean + followUser(followingEmail: String!): Boolean + unfollowUser(followingEmail: String!): Boolean + subscribeActivity(activityID: String!): Boolean + unSubscribeActivity(activityID: String!): Boolean + + uploadPost(image: String!, activityID: String!): PostOutputV2 + + createActivity(activityInput: ActivityInputV2!): ActivityOutputV2 + + postComment(commentInput: CommentInputV2!): CommentOutputV2 + + createCommunityEvent( + name: String! + totalRequired: Int! + startDate: String! + finishDate: String! + image: String! + activitiesIDs: [String!]! + ): CommunityEventOutputV3 + + createBadge( + image: String! + level: Int! + communityEventId: String! + ): BadgeOutputV3 + + addBadgeToUser(userEmail: String!, badgeId: String!): Boolean + addBadgeToUsers(userEmail: [String!]!, badgeId: String!): [Boolean] +} +type BadgeOutputV3 { + id: ID + image: String + level: Int + communityEvent: CommunityEventOutputV3 +} +type BadgeOutputV2 { + id:ID + image: String + level: Int + communityEvent: CommunityEventOutputV2 +} +type CommunityEventOutputV3 { + id: ID + name: String + totalRequired: Int + image: String + startDate: String + finishDate: String + createdAt: String + updatedAt: String + deletedAt: String +} + +type CommunityEventOutputV2 { + id: ID + name: String + totalRequired: Int + image: String + startDate: String + finishDate: String +} + +input CommentInputV2 { + message: String! + postID: String! + replingID: String +} + +type CommentOutputV2 { + id: ID + message: String + postID: String + user: UserOutputV2 + createdAt: String +} +type ActivityOutputV2 { + id: ID + name: String + description: String + image: String + createdAt: String + updatedAt: String + deletedAt: String + creator: UserOutputV2 + timeRate: String + timesRequiered: String +} +type ActivityOutputV2Streak { + id: ID + name: String + description: String + image: String + createdAt: String + updatedAt: String + deletedAt: String + timeRate: String + timesRequiered: String + streak: Int + creator: UserOutputV2 + timesRemaining: Int +} +input ActivityInputV2 { + name: String! + description: String! + image: String! + timeRate: String! + timesRequiered: String! +} +type PostOutputV2 { + id: ID + image: String + createdAt: String + updatedAt: String + deletedAt: String + user: UserOutputV2 + streak: Int + activity: ActivityOutputV2 + comments: Int + likes: Int + isLiked: Boolean +} + +input UserInputV3 { + id: ID + username: String! + email: String! + password: String + nationality: String! + phoneNumber: String! + image: String + role: String! + verified: Boolean! + verificationToken: String + createdAt: String + updatedAt: String! + deletedAt: String +} + +type UserOutputV3 { + id: ID + username: String + email: String + nationality: String + phoneNumber: String + image: String + role: String + verified: Boolean + verificationToken: String + createdAt: String + updatedAt: String + deletedAt: String + followers: [UserOutputV3] + following: [UserOutputV3] +} + +input UserInputV2 { + id: ID! + username: String! + email: String! + password: String + nationality: String! + phoneNumber: String! + image: String! +} + +type UserOutputV2 { + id: ID + username: String + email: String + nationality: String + phoneNumber: String + image: String + createdAt: String + followers: Int + following: Int + isFollowing: Boolean +} + +type Followers { + id: ID + email: String + username: String + nationality: String + image: String + createdAt: String + followers: Int + following: Int + isFollowing: Boolean +} diff --git a/API/src/main/resources/keystore/deeplKey b/API/src/main/resources/keystore/deeplKey new file mode 100644 index 000000000..1a440d9a0 --- /dev/null +++ b/API/src/main/resources/keystore/deeplKey @@ -0,0 +1 @@ +bf631b40-ce86-47ac-b2cc-73223231ebf2:fx \ No newline at end of file diff --git a/API/src/main/resources/keystore/routinefights-1-firebase-adminsdk-fbsvc-a9082c7c49.json b/API/src/main/resources/keystore/routinefights-1-firebase-adminsdk-fbsvc-a9082c7c49.json new file mode 100644 index 000000000..722cd8ca8 --- /dev/null +++ b/API/src/main/resources/keystore/routinefights-1-firebase-adminsdk-fbsvc-a9082c7c49.json @@ -0,0 +1,13 @@ +{ + "type": "service_account", + "project_id": "routinefights-1", + "private_key_id": "a9082c7c494f9eeb067ec1d83ee8781cd4a895b9", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDLDCIVu2bDDqit\nDxUhm0akI5vgm6hDEfgB2rP9osnmHtyY4cg4UXajgVFhSLxilVi5TtEtiuRFPCWv\nNfMS0rvSoiegdR/gK7iIhZoQJYGAJzriMij0a/Y6rzEd0/qCDwTENt6W7sNSYLvS\nqra+LYIKOXpISCNfsAYG9FFysK9cXn2dI5M7ag5NzgVy276Y1m3flxXxvbdWW6Cs\nTGavO9D+iR9ScboK+GiWkYY6f73ahH5XT/q5x0frDOy2n/0tUUE/BWqaq2OtMl7X\ny5DxeYy7hNh0kvtP/YfdjnrijwRmw55ewL9lG5tvb+yCqI3RHvWSltXBBPHRtVWu\ndgFJeaVVAgMBAAECggEAExiwIfjolS+aDjPgPTNneIUZO9qLGWSL8M/nyrlJoZ94\nbtZ/tRap5xgz/HrRrbhPFzD1Ymhw+wP8ciPLf/ma2Zh1/25uK4nhIDhOGsOndmz6\nHQ9lPUVKhXVrOkHXPYeTeRX4Z4IxxsJU5KwFzBG0OVyNICKZiEsIhHuFwRjvigSP\nVVY3KFTubeGT8dVeGCMLigSgr52rAdZ3j7EjUL6eEOF873jO4mLOsy6LCt3Zdidi\nKPid2JeaLaTYwo95D7g5etKWmfe/IXs3l+bMIzaL4lVuSfoRnhm4rqQ7Po+NfFnZ\nBWayTZ6yGzg3sDNmyuj/VqP/0sGkLgl9trD4xGG+twKBgQDpN5ppfCw4P4DUCMQo\nycwK+XC1sNXIwaSboMiN6ePz6jKdaed5DNDEMVmRj9Qkf6oqvjxsFb4d8rCC+u0D\nUn4rnwo7m8bnCSWrk2GQ3n9lQrM+XrkrjuOWUgw+q6VFDLgO/XJNl7su5qs3gZ0r\n7G09/m3pm4if3jamy2A8IHvFewKBgQDe4gfJVmhFxare6WzNbiMbqYy9QOdbmyl4\nLXKrD1ExYDrWUHvvWLPOS3ltmW8qqOFEJ03+fXc9y9xoGLMWVJjhJCig5zIXnzRu\nqEPe9HNh3E2mJ5h/BuSB29it8RyshTJy9Optc/jBWWLP8SM270xRwf+xktYjklQV\nlFAvQVV/bwKBgEvwixsmD9AQ/YYNhLIzY3l/V7AR8Mr6Ivt6E1QCgPN/oxOW1ISa\nI7B+0UeQqedomqRoZYxcWBewWsGLq3mVdvgFRXO7ebzpQZbo2rAtgxYZ7fu1JF6G\nnJzqAoq1oY8mYRigdoPFkHHpMn9UeTVAOyIgovGab5Z+6RTOzHtHqIXZAoGAQhzq\nEl7/LzMjLFwxWf6Bi4MPrFPETPgJpQxWJ0ez3eGdklTtbmHxdBAPRONuhkjyCTVf\nfU3aQQpnprks5kLR1nbTVmc+BKPE+c4P0+LPFwgyQEcehQ+WWK7N50rOJp6cCF19\n7FmqQDAzj1sIBxOUn+vb3OChhIuzRXNpFZtbsSECgYEApSiClPSwfJjQ+hMAyI8K\nbPeCCDxYdIUP9QoQBDhAvLXS896NMcVkln8aFiK8SKCdi96HeRPjz/BP0VUbQTbe\nBvp7viMW7wDP+vMVaf3MrFnoF/sjBZSz7jmTxpsN8y8P1RHxsIdGYtRoDZ6LYUFF\nf+zHK7v5+GzBNegRoMXzbCM=\n-----END PRIVATE KEY-----\n", + "client_email": "firebase-adminsdk-fbsvc@routinefights-1.iam.gserviceaccount.com", + "client_id": "112836913910435501532", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-fbsvc%40routinefights-1.iam.gserviceaccount.com", + "universe_domain": "googleapis.com" +} diff --git a/API/src/main/resources/keystore/routinefights.p12 b/API/src/main/resources/keystore/routinefights.p12 new file mode 100644 index 000000000..a232745d6 Binary files /dev/null and b/API/src/main/resources/keystore/routinefights.p12 differ diff --git a/API/src/main/resources/translations/en-US.json b/API/src/main/resources/translations/en-US.json new file mode 100644 index 000000000..a385f2c99 --- /dev/null +++ b/API/src/main/resources/translations/en-US.json @@ -0,0 +1,6 @@ +{ + "newEventTitle": "New Event Activated!", + "newEventBody": "The new event \"{eventName}\" has just started.\nDon't miss out on exclusive rewards and challenges!", + "greeting": "Hello", + "test": "Test {testArg}" +} \ No newline at end of file diff --git a/API/src/main/resources/translations/es-ES.json b/API/src/main/resources/translations/es-ES.json new file mode 100644 index 000000000..098c4e796 --- /dev/null +++ b/API/src/main/resources/translations/es-ES.json @@ -0,0 +1,6 @@ +{ + "newEventTitle": "¡Nuevo evento activado!", + "newEventBody": "El nuevo evento \"{eventName}\" ha comenzado.\n¡No te pierdas las recompensas y desafíos exclusivos!", + "greeting":"Hola", + "test": "Prueba {testArg}" +} \ No newline at end of file diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/RoutineFightsApplicationTests.java b/API/src/test/java/es/iespuertodelacruz/routinefights/RoutineFightsApplicationTests.java new file mode 100644 index 000000000..a1a22fef2 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/RoutineFightsApplicationTests.java @@ -0,0 +1,16 @@ +package es.iespuertodelacruz.routinefights; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class RoutineFightsApplicationTests { + + @Test + void testMain() { + assertDoesNotThrow(() -> RoutineFightsApplication.main(new String[] {})); + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/activity/domain/ActivityTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/activity/domain/ActivityTest.java new file mode 100644 index 000000000..bc5c6d6d8 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/activity/domain/ActivityTest.java @@ -0,0 +1,90 @@ +package es.iespuertodelacruz.routinefights.activity.domain; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.junit.jupiter.api.Test; + +import es.iespuertodelacruz.routinefights.user.domain.User; + + class ActivityTest { + + private static final String CONSTANT_ID = "A1"; + private static final String CONSTANT_ID_2 = "A2"; + + + @Test + void testSettersAndGetters() { + User dummyUser = new User(); + List initialParticipants = new ArrayList<>(); + Activity activity = new Activity(); + activity.setId(CONSTANT_ID); + assertEquals(CONSTANT_ID, activity.getId()); + activity.id(CONSTANT_ID_2); + assertEquals(CONSTANT_ID_2, activity.getId()); + activity.setCreator(dummyUser); + assertEquals(dummyUser, activity.getCreator()); + User anotherUser = new User(); + activity.creator(anotherUser); + assertEquals(anotherUser, activity.getCreator()); + activity.setParticipants(initialParticipants); + assertEquals(initialParticipants, activity.getParticipants()); + List updatedParticipants = new ArrayList<>(); + updatedParticipants.add(dummyUser); + activity.participants(updatedParticipants); + assertEquals(updatedParticipants, activity.getParticipants()); + } + + @Test + void testEqualsSameInstance() { + User dummyUser = new User(); + List participants = Collections.emptyList(); + Activity activity = new Activity(CONSTANT_ID, dummyUser, participants); + assertEquals(activity, activity); + } + + @Test + void testEqualsSameIdDifferentInstances() { + User dummyUser1 = new User(); + User dummyUser2 = new User(); + List participants = Collections.emptyList(); + Activity activity1 = new Activity(CONSTANT_ID, dummyUser1, participants); + Activity activity2 = new Activity(CONSTANT_ID, dummyUser2, participants); + assertEquals(activity1, activity2); + assertEquals(activity2, activity1); + assertEquals(activity1.hashCode(), activity2.hashCode()); + } + + @Test + void testEqualsDifferentId() { + User dummyUser = new User(); + List participants = Collections.emptyList(); + Activity activity1 = new Activity(CONSTANT_ID, dummyUser, participants); + Activity activity2 = new Activity(CONSTANT_ID_2, dummyUser, participants); + assertNotEquals(activity1, activity2); + assertNotEquals(activity2, activity1); + } + + + @Test + void testEqualsDifferentType() { + User dummyUser = new User(); + List participants = Collections.emptyList(); + Activity activity = new Activity(CONSTANT_ID, dummyUser, participants); + String nonActivity = "Not an Activity"; + assertNotEquals(activity, nonActivity); + } + + @Test + void testToString() { + User dummyUser = new User(); + List participants = Collections.emptyList(); + Activity activity = new Activity(CONSTANT_ID, dummyUser, participants); + String expected = "{ id='" + CONSTANT_ID + "'}"; + assertEquals(expected, activity.toString()); + } +} + diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/activity/domain/services/ActivityServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/activity/domain/services/ActivityServiceTest.java new file mode 100644 index 000000000..708070e37 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/activity/domain/services/ActivityServiceTest.java @@ -0,0 +1,162 @@ +package es.iespuertodelacruz.routinefights.activity.domain.services; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.*; +import static org.junit.jupiter.api.Assertions.*; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +import org.junit.jupiter.api.*; +import org.mockito.*; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.activity.domain.ports.secondary.IActivityRepository; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.ports.secondary.IUserRepository; + +class ActivityServiceTest { + + private static final String VALID_TIME_RATE_DAILY = "daily"; + private static final String INVALID_TIME_RATE = "hourly"; + private static final String INVALID_TIME_RATE_EXCEPTION = "Time rate not valid, valid options: daily, weekly, monthly, yearly"; + + @Mock + private IActivityRepository activityRepository; + + @Mock + private IUserRepository userRepository; + + @InjectMocks + private ActivityService activityService; + + private AutoCloseable closeable; + + @BeforeEach + void setUp() { + closeable = MockitoAnnotations.openMocks(this); + } + + @AfterEach + void tearDown() throws Exception { + closeable.close(); + } + + @Test + void testSaveWithValidTimeRate() { + String name = "Morning Run"; + String description = "Daily running activity"; + String image = "run.png"; + String timeRate = VALID_TIME_RATE_DAILY; + Integer timesRequired = 1; + String userId = "user123"; + String categoryId = "cat456"; + + User dummyUser = new User(); + when(userRepository.findById(userId)).thenReturn(dummyUser); + + Activity expectedActivity = new Activity(); + expectedActivity.setName(name); + expectedActivity.setDescription(description); + expectedActivity.setImage(image); + expectedActivity.setTimeRate(timeRate); + expectedActivity.setTimesRequiered(timesRequired); + expectedActivity.setCreator(dummyUser); + expectedActivity.setCreatedAt(LocalDateTime.now()); + when(activityRepository.save(any(Activity.class))).thenReturn(expectedActivity); + + Activity result = activityService.save(name, description, image, timeRate, timesRequired, userId, categoryId); + + assertNotNull(result); + assertEquals(name, result.getName()); + assertEquals(description, result.getDescription()); + assertEquals(image, result.getImage()); + assertEquals(timeRate, result.getTimeRate()); + assertEquals(timesRequired, result.getTimesRequiered()); + verify(userRepository, times(1)).findById(userId); + verify(activityRepository, times(1)).save(any(Activity.class)); + } + + @Test + void testSaveWithInvalidTimeRate() { + String name = "Evening Yoga"; + String description = "Evening session"; + String image = "yoga.png"; + String timeRate = INVALID_TIME_RATE; + Integer timesRequired = 1; + String userId = "user123"; + String categoryId = "cat456"; + + IllegalArgumentException thrown = assertThrows(IllegalArgumentException.class, + () -> activityService.save(name, description, image, timeRate, timesRequired, userId, categoryId)); + assertEquals(INVALID_TIME_RATE_EXCEPTION, thrown.getMessage()); + verify(userRepository, never()).findById(anyString()); + verify(activityRepository, never()).save(any(Activity.class)); + } + + @Test + void testGetPagination() { + int page = 1; + int perPage = 10; + List activities = new ArrayList<>(); + activities.add(new Activity()); + activities.add(new Activity()); + + when(activityRepository.getPagination(page, perPage)).thenReturn(activities); + + List result = activityService.getPagination(page, perPage); + + assertNotNull(result); + assertEquals(2, result.size()); + verify(activityRepository, times(1)).getPagination(page, perPage); + } + + @Test + void testGetSubscribedActivities() { + String userId = "user123"; + List activities = new ArrayList<>(); + activities.add(new Activity()); + activities.add(new Activity()); + + when(activityRepository.getSubscribedActivities(userId)).thenReturn(activities); + + List result = activityService.getSubscribedActivities(userId); + + assertNotNull(result); + assertEquals(2, result.size()); + verify(activityRepository, times(1)).getSubscribedActivities(userId); + } + + @Test + void testGetSubscribedActivitiesWithStreak() { + String userId = "user123"; + List activities = new ArrayList<>(); + activities.add(new Activity()); + activities.add(new Activity()); + + when(activityRepository.getSubscribedActivitiesWithStreak(userId)).thenReturn(activities); + + List result = activityService.getSubscribedActivitiesWithStreak(userId); + + assertNotNull(result); + assertEquals(2, result.size()); + verify(activityRepository, times(1)).getSubscribedActivitiesWithStreak(userId); + } + + @Test + void findAllActivities() { + List activities = new ArrayList<>(); + activities.add(new Activity()); + activities.add(new Activity()); + + when(activityRepository.findAll()).thenReturn(activities); + + List result = activityService.findAll(); + + assertNotNull(result); + assertEquals(2, result.size()); + verify(activityRepository, times(1)).findAll(); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/controllers/ActivityV2ControllerTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/controllers/ActivityV2ControllerTest.java new file mode 100644 index 000000000..42b8982b3 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/controllers/ActivityV2ControllerTest.java @@ -0,0 +1,234 @@ +package es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.controllers; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.*; + +import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.MockitoAnnotations; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.activity.domain.ports.primary.IActivityService; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.dtos.ActivityInputV2; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.dtos.ActivityOutputV2; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.dtos.ActivityOutputV2Streak; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.mappers.ActivityOutputV2Mapper; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.mappers.ActivityOutputV2StreakMapper; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.ports.primary.IUserService; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserNotFoundException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos.UserOutputDTOV2; + +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class ActivityControllerV2Test { + + private ActivityControllerV2 activityControllerV2; + + private IActivityService activityService; + private ActivityOutputV2Mapper activityOutputV2Mapper; + private ActivityOutputV2StreakMapper activityOutputV2StreakMapper; + private IUserService userService; + + private ActivityInputV2 activityInputV2; + private Activity testActivity; + private ActivityOutputV2 activityOutputV2; + private User testUser; + + @BeforeEach + void setUp() { + activityService = mock(IActivityService.class); + activityOutputV2Mapper = mock(ActivityOutputV2Mapper.class); + activityOutputV2StreakMapper = mock(ActivityOutputV2StreakMapper.class); + userService = mock(IUserService.class); + + activityControllerV2 = new ActivityControllerV2(activityService, activityOutputV2Mapper, userService, + activityOutputV2StreakMapper); + + activityInputV2 = new ActivityInputV2("Test Activity", "Test Description", "test-image.png", "weekly", 3, + "100L"); + testUser = new User(); + testUser.setId("1L"); + testUser.setEmail("testUser"); + + testActivity = new Activity(); + + activityOutputV2 = new ActivityOutputV2( + "1L", + "Test Activity", + "Test Description", + "test-image.png", + new UserOutputDTOV2( + "testUser.getId()", + "testUser.getUsername()", + "testUser.getEmail()", + "testUser.getNationality()", + "testUser.getPhoneNumber()", + "testUser.getImage()", + LocalDateTime.now(), + 0, + 0, + false), + "weekly", + 3, + LocalDateTime.now()); + + MockitoAnnotations.openMocks(this); + } + + @Test + void createActivitySuccessTest() { + SecurityContext securityContext = mock(SecurityContext.class); + Authentication authentication = mock(Authentication.class); + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + SecurityContextHolder.setContext(securityContext); + + when(userService.findByEmailOnlyBase("testUser")).thenReturn(testUser); + when(activityService.save( + activityInputV2.name(), + activityInputV2.description(), + activityInputV2.image(), + activityInputV2.timeRate(), + activityInputV2.timesRequiered(), + testUser.getId(), + activityInputV2.categoryID())) + .thenReturn(testActivity); + when(activityOutputV2Mapper.toDTO(testActivity)).thenReturn(activityOutputV2); + + ActivityOutputV2 result = activityControllerV2.createActivity(activityInputV2); + assertEquals(activityOutputV2, result); + } + + @Test + void createActivityUserNotFoundExceptionTest() { + SecurityContext securityContext = mock(SecurityContext.class); + Authentication authentication = mock(Authentication.class); + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + SecurityContextHolder.setContext(securityContext); + + when(userService.findByEmailOnlyBase(anyString())).thenThrow(new UserNotFoundException("Test Exception")); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + activityControllerV2.createActivity(activityInputV2); + }); + assertEquals("Test Exception", exception.getMessage()); + } + + @Test + void paginationActivitiesTest() { + int page = 0; + int perPage = 10; + List activityList = Arrays.asList(testActivity); + List outputList = Arrays.asList(activityOutputV2); + + when(activityService.getPagination(page, perPage)).thenReturn(activityList); + when(activityOutputV2Mapper.toDTO(activityList)).thenReturn(outputList); + + List result = activityControllerV2.paginationActivities(page, perPage); + assertEquals(outputList, result); + } + + @Test + void getSubscribedActivitiesTest() { + SecurityContext securityContext = mock(SecurityContext.class); + Authentication authentication = mock(Authentication.class); + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + SecurityContextHolder.setContext(securityContext); + + List activityList = Arrays.asList(testActivity); + List outputList = Arrays.asList(activityOutputV2); + + when(userService.findByEmailOnlyBase("testUser")).thenReturn(testUser); + when(activityService.getSubscribedActivities(testUser.getId())).thenReturn(activityList); + when(activityOutputV2Mapper.toDTO(activityList)).thenReturn(outputList); + + List result = activityControllerV2.getSubscribedActivities(); + assertEquals(outputList, result); + } + + @Test + void getSubscribedActivitiesWithStreakTest() { + SecurityContext securityContext = mock(SecurityContext.class); + Authentication authentication = mock(Authentication.class); + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + SecurityContextHolder.setContext(securityContext); + + List activityList = Arrays.asList(testActivity); + List outputList = Arrays + .asList(new ActivityOutputV2Streak(null, null, null, null, null, null, null, null,null,null)); + + when(userService.findByEmailOnlyBase("testUser")).thenReturn(testUser); + when(activityService.getSubscribedActivitiesWithStreak(testUser.getId())).thenReturn(activityList); + when(activityOutputV2StreakMapper.toDTO(activityList)).thenReturn(outputList); + + List result = activityControllerV2.getSubscribedActivitiesWithStreaks(); + assertEquals(outputList, result); + } + + @Test + void paginationActivitiesNotSubscribedTest() { + SecurityContext securityContext = mock(SecurityContext.class); + Authentication authentication = mock(Authentication.class); + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + SecurityContextHolder.setContext(securityContext); + + int page = 0; + int perPage = 10; + List activityList = Arrays.asList(testActivity); + List outputList = Arrays.asList(activityOutputV2); + + when(userService.findByEmailOnlyBase("testUser")).thenReturn(testUser); + when(activityService.getPaginationNotSubscribed(page, perPage, testUser.getId(),"")).thenReturn(activityList); + when(activityOutputV2Mapper.toDTO(activityList)).thenReturn(outputList); + + List result = activityControllerV2.paginationActivitiesNotSubscribed(page, perPage,""); + assertEquals(outputList, result); + } + @Test + void getSubscribedActivitiesWithStreakByNameTest() { + SecurityContext securityContext = mock(SecurityContext.class); + Authentication authentication = mock(Authentication.class); + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + SecurityContextHolder.setContext(securityContext); + + String activityName = "Test Activity"; + List activityList = Arrays.asList(testActivity); + List outputList = Arrays + .asList(new ActivityOutputV2Streak(null, null, null, null, null, null, null, null,null,null)); + + when(userService.findByEmailOnlyBase("testUser")).thenReturn(testUser); + when(activityService.getSubscribedActivitiesWithStreak(testUser.getId(), activityName)).thenReturn(activityList); + when(activityOutputV2StreakMapper.toDTO(activityList)).thenReturn(outputList); + + List result = activityControllerV2.getSubscribedActivitiesWithStreak(activityName); + assertEquals(outputList, result); + } + + @Test + void findAllActivitiesTest() { + List activityList = Arrays.asList(testActivity); + List outputList = Arrays.asList(activityOutputV2); + + when(activityService.findAll()).thenReturn(activityList); + when(activityOutputV2Mapper.toDTO(activityList)).thenReturn(outputList); + + List result = activityControllerV2.findAllActivities(); + assertEquals(outputList, result); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/mappers/ActivityOutputV2MapperTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/mappers/ActivityOutputV2MapperTest.java new file mode 100644 index 000000000..76e6ef9da --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/primary/v2/mappers/ActivityOutputV2MapperTest.java @@ -0,0 +1,67 @@ +package es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.mappers; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.time.LocalDateTime; +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.dtos.ActivityOutputV2; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos.UserOutputDTOV2; + +@SpringBootTest() +class ActivityOutputV2MapperTest { + private static final User USER = new User(); + private static final List LIST = List.of(USER); + private static final LocalDateTime NOW = LocalDateTime.now(); + private static final int TIMES_REQUIRED = 1; + private static final String TIME_RATE = "timeRate"; + private static final String IMAGE = "image"; + private static final String DESCRIPTION = "description"; + private static final String NAME = "name"; + private static final String ID = "1"; + Activity activity; + ActivityOutputV2 activityOutputV2; + @Autowired + private ActivityOutputV2Mapper activityOutputV2Mapper; + + @BeforeEach + void setUp() { + activity = new Activity(ID, NAME, DESCRIPTION, IMAGE, TIME_RATE, TIMES_REQUIRED, NOW, + NOW, NOW, USER, LIST); + activityOutputV2 = new ActivityOutputV2(ID,NAME,DESCRIPTION,IMAGE,null,TIME_RATE,TIMES_REQUIRED,NOW); + } + + @Test + void testToActivityOutputV2() { + ActivityOutputV2 activityOutputV2Test = activityOutputV2Mapper.toDTO(activity); + assertEquals(activity.getId(), activityOutputV2Test.id()); + assertEquals(activity.getName(), activityOutputV2Test.name()); + assertEquals(activity.getDescription(), activityOutputV2Test.description()); + assertEquals(activity.getImage(), activityOutputV2Test.image()); + assertEquals(activity.getTimeRate(), activityOutputV2Test.timeRate()); + assertEquals(activity.getTimesRequiered(), activityOutputV2Test.timesRequiered()); + assertEquals(activity.getCreatedAt(), activityOutputV2Test.createdAt()); + assertTrue(activityOutputV2Test.creator() instanceof UserOutputDTOV2); + } + + @Test + void testToActivityOutputV2List() { + List activityOutputV2List = activityOutputV2Mapper.toDTO(List.of(activity)); + assertEquals(activity.getId(), activityOutputV2List.get(0).id()); + assertEquals(activity.getName(), activityOutputV2List.get(0).name()); + assertEquals(activity.getDescription(), activityOutputV2List.get(0).description()); + assertEquals(activity.getImage(), activityOutputV2List.get(0).image()); + assertEquals(activity.getTimeRate(), activityOutputV2List.get(0).timeRate()); + assertEquals(activity.getTimesRequiered(), activityOutputV2List.get(0).timesRequiered()); + assertEquals(activity.getCreatedAt(), activityOutputV2List.get(0).createdAt()); + assertTrue(activityOutputV2List.get(0).creator() instanceof UserOutputDTOV2); + } +} \ No newline at end of file diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/entities/ActivityEntityTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/entities/ActivityEntityTest.java new file mode 100644 index 000000000..49193a9ba --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/entities/ActivityEntityTest.java @@ -0,0 +1,113 @@ +package es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities; + +import org.junit.jupiter.api.Test; + +import es.iespuertodelacruz.routinefights.category.infrastructure.adapters.secondary.entities.CategoryEntity; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.entities.CommunityEventEntity; +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.entities.PostEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import static org.junit.jupiter.api.Assertions.*; + +class ActivityEntityTest { + + private static final String ID_1 = "A1"; + private static final String ID_2 = "A2"; + private static final String NAME = "Test Activity"; + private static final String DESCRIPTION = "Activity Description"; + private static final String IMAGE = "http://example.com/activity.png"; + private static final String TIME_RATE = "Hourly"; + private static final Integer TIMES_REQUIRED = 5; + private static final LocalDateTime CREATED_AT = LocalDateTime.of(2023, 1, 2, 12, 0); + private static final LocalDateTime UPDATED_AT = LocalDateTime.of(2023, 1, 3, 12, 0); + private static final LocalDateTime DELETED_AT = LocalDateTime.of(2023, 1, 4, 12, 0); + + @Test + void testSettersAndGetters() { + ActivityEntity activity = new ActivityEntity(); + activity.setId(ID_1); + activity.setName(NAME); + activity.setDescription(DESCRIPTION); + activity.setImage(IMAGE); + activity.setTimeRate(TIME_RATE); + activity.setTimesRequiered(TIMES_REQUIRED); + CategoryEntity category = new CategoryEntity(); + activity.setCategory(category); + List communityEvents = new ArrayList<>(); + activity.setCommunityEvent(communityEvents); + UserEntity user = new UserEntity(); + activity.setCreator(user); + List posts = new ArrayList<>(); + activity.setPost(posts); + assertEquals(ID_1, activity.getId()); + assertEquals(NAME, activity.getName()); + assertEquals(DESCRIPTION, activity.getDescription()); + assertEquals(IMAGE, activity.getImage()); + assertEquals(TIME_RATE, activity.getTimeRate()); + assertEquals(TIMES_REQUIRED, activity.getTimesRequiered()); + assertEquals(category, activity.getCategory()); + assertEquals(communityEvents, activity.getCommunityEvent()); + assertEquals(user, activity.getCreator()); + assertEquals(posts, activity.getPost()); + } + + @Test + void testConstructorAndGetters() { + CategoryEntity category = new CategoryEntity(); + List communityEvents = new ArrayList<>(); + UserEntity user = new UserEntity(); + List posts = new ArrayList<>(); + ActivityEntity activity = new ActivityEntity(ID_1, NAME, DESCRIPTION, IMAGE, TIME_RATE, TIMES_REQUIRED, + category, communityEvents, user, posts, CREATED_AT, UPDATED_AT, DELETED_AT, null); + assertEquals(ID_1, activity.getId()); + assertEquals(NAME, activity.getName()); + assertEquals(DESCRIPTION, activity.getDescription()); + assertEquals(IMAGE, activity.getImage()); + assertEquals(TIME_RATE, activity.getTimeRate()); + assertEquals(TIMES_REQUIRED, activity.getTimesRequiered()); + assertEquals(category, activity.getCategory()); + assertEquals(communityEvents, activity.getCommunityEvent()); + assertEquals(user, activity.getCreator()); + assertEquals(posts, activity.getPost()); + assertEquals(CREATED_AT, activity.getCreatedAt()); + assertEquals(UPDATED_AT, activity.getUpdatedAt()); + assertEquals(DELETED_AT, activity.getDeletedAt()); + } + + @Test + void testEqualsAndHashCode() { + ActivityEntity activity1 = new ActivityEntity(); + ActivityEntity activity2 = new ActivityEntity(); + assertEquals(activity1, activity2); + activity1.setId(ID_1); + activity2.setId(ID_1); + assertEquals(activity1, activity2); + assertEquals(activity1.hashCode(), activity2.hashCode()); + activity2.setId(ID_2); + assertNotEquals(activity1, activity2); + assertNotEquals(activity1.hashCode(), activity2.hashCode()); + assertNotEquals(activity1, new Object()); + assertEquals(activity1, activity1); + } + + @Test + void testToString() { + ActivityEntity activity = new ActivityEntity(); + activity.setId(ID_1); + activity.setName(NAME); + activity.setDescription(DESCRIPTION); + activity.setImage(IMAGE); + activity.setTimeRate(TIME_RATE); + activity.setTimesRequiered(TIMES_REQUIRED); + String str = activity.toString(); + assertTrue(str.contains(ID_1)); + assertTrue(str.contains(NAME)); + assertTrue(str.contains(DESCRIPTION)); + assertTrue(str.contains(IMAGE)); + assertTrue(str.contains(TIME_RATE)); + assertTrue(str.contains(TIMES_REQUIRED.toString())); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/mappers/ActivityEntityMapperTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/mappers/ActivityEntityMapperTest.java new file mode 100644 index 000000000..b3ae818b7 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/mappers/ActivityEntityMapperTest.java @@ -0,0 +1,244 @@ +package es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.mappers; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.junit.jupiter.api.Test; +import org.springframework.test.util.ReflectionTestUtils; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities.ActivityEntity; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.mappers.IUserEntityMapper; + +class ActivityEntityMapperTest { + + private static final String MAIN_USER_ID = "1L"; + private static final String MAIN_USERNAME = "testUser"; + private static final String MAIN_EMAIL = "test@example.com"; + private static final String MAIN_PASSWORD = "password"; + private static final String MAIN_NATIONALITY = "Testland"; + private static final String MAIN_PHONE_NUMBER = "1234567890"; + private static final String MAIN_USER_IMAGE = "userImage"; + private static final String MAIN_ROLE = "USER"; + private static final boolean MAIN_VERIFIED = true; + private static final String MAIN_VERIFICATION_TOKEN = "token123"; + + private static final String ACTIVITY_ID = "10L"; + private static final String ACTIVITY_NAME = "Test Activity"; + private static final String ACTIVITY_DESCRIPTION = "Activity Description"; + private static final String ACTIVITY_IMAGE = "activityImage"; + private static final String ACTIVITY_TIME_RATE = "daily"; + private static final int ACTIVITY_TIMES_REQUIRED = 3; + + private final LocalDateTime now = LocalDateTime.now(); + + private final ActivityEntityMapperImpl mapper = new ActivityEntityMapperImpl(); + + // Inject dummy IUserEntityMapper using ReflectionTestUtils + { + ReflectionTestUtils.setField(mapper, "iUserEntityMapper", new DummyUserEntityMapper()); + } + + // Dummy implementation for IUserEntityMapper + static class DummyUserEntityMapper implements IUserEntityMapper { + + @Override + public User toDomain(UserEntity userEntity) { + if (userEntity == null) { + return null; + } + User user = new User(); + user.setId(userEntity.getId()); + user.setUsername(userEntity.getUsername()); + return user; + } + + @Override + public List toDomain(List userEntities) { + if (userEntities == null) { + return null; + } + List users = new ArrayList<>(); + for (UserEntity ue : userEntities) { + users.add(toDomain(ue)); + } + return users; + } + + @Override + public UserEntity toEntity(User user) { + if (user == null) { + return null; + } + UserEntity ue = new UserEntity(); + ue.setId(user.getId()); + ue.setUsername(user.getUsername()); + return ue; + } + + @Override + public List toEntity(List users) { + if (users == null) { + return null; + } + List list = new ArrayList<>(); + for (User u : users) { + list.add(toEntity(u)); + } + return list; + } + } + + private User createUser() { + User user = new User(); + user.setId(MAIN_USER_ID); + user.setUsername(MAIN_USERNAME); + user.setEmail(MAIN_EMAIL); + user.setPassword(MAIN_PASSWORD); + user.setNationality(MAIN_NATIONALITY); + user.setPhoneNumber(MAIN_PHONE_NUMBER); + user.setImage(MAIN_USER_IMAGE); + user.setRole(MAIN_ROLE); + user.setVerified(MAIN_VERIFIED); + user.setVerificationToken(MAIN_VERIFICATION_TOKEN); + user.setCreatedAt(now); + user.setUpdatedAt(now); + user.setDeletedAt(null); + user.setFollowers(new ArrayList<>()); + user.setFollowing(new ArrayList<>()); + return user; + } + + private UserEntity createUserEntity() { + UserEntity ue = new UserEntity(); + ue.setId(MAIN_USER_ID); + ue.setUsername(MAIN_USERNAME); + ue.setEmail(MAIN_EMAIL); + ue.setPassword(MAIN_PASSWORD); + ue.setNationality(MAIN_NATIONALITY); + ue.setPhoneNumber(MAIN_PHONE_NUMBER); + ue.setImage(MAIN_USER_IMAGE); + ue.setRole(MAIN_ROLE); + ue.setVerified(MAIN_VERIFIED); + ue.setVerificationToken(MAIN_VERIFICATION_TOKEN); + ue.setCreatedAt(now); + ue.setUpdatedAt(now); + ue.setDeletedAt(null); + ue.setFollowers(new ArrayList<>()); + ue.setFollowing(new ArrayList<>()); + return ue; + } + + private Activity createActivity() { + Activity activity = new Activity(); + activity.setId(ACTIVITY_ID); + activity.setName(ACTIVITY_NAME); + activity.setDescription(ACTIVITY_DESCRIPTION); + activity.setImage(ACTIVITY_IMAGE); + activity.setTimeRate(ACTIVITY_TIME_RATE); + activity.setTimesRequiered(ACTIVITY_TIMES_REQUIRED); + activity.setCreatedAt(now); + activity.setUpdatedAt(now); + activity.setDeletedAt(null); + activity.participants(new ArrayList<>()); + activity.setCreator(createUser()); + return activity; + } + + private ActivityEntity createActivityEntity() { + ActivityEntity entity = new ActivityEntity(); + entity.setId(ACTIVITY_ID); + entity.setName(ACTIVITY_NAME); + entity.setDescription(ACTIVITY_DESCRIPTION); + entity.setImage(ACTIVITY_IMAGE); + entity.setTimeRate(ACTIVITY_TIME_RATE); + entity.setTimesRequiered(ACTIVITY_TIMES_REQUIRED); + entity.setCreatedAt(now); + entity.setUpdatedAt(now); + entity.setDeletedAt(null); + entity.setParticipants(new ArrayList<>()); + entity.setCreator(createUserEntity()); + return entity; + } + + @Test + void testToDomain_NullInputs() { + assertNull(mapper.toDomain((ActivityEntity) null)); + assertNull(mapper.toDomain((List) null)); + } + + @Test + void testToEntity_NullInputs() { + assertNull(mapper.toEntity((Activity) null)); + assertNull(mapper.toEntity((List) null)); + } + + @Test + void testActivityMapping() { + Activity activity = createActivity(); + ActivityEntity entity = mapper.toEntity(activity); + assertNotNull(entity); + assertEquals(activity.getId(), entity.getId()); + assertEquals(activity.getName(), entity.getName()); + assertEquals(activity.getDescription(), entity.getDescription()); + assertEquals(activity.getImage(), entity.getImage()); + assertEquals(activity.getTimeRate(), entity.getTimeRate()); + assertEquals(activity.getTimesRequiered(), entity.getTimesRequiered()); + assertEquals(activity.getCreatedAt(), entity.getCreatedAt()); + assertEquals(activity.getUpdatedAt(), entity.getUpdatedAt()); + assertEquals(activity.getDeletedAt(), entity.getDeletedAt()); + // Check nested mapping via dummy mapper + assertNotNull(entity.getCreator()); + assertEquals(activity.getCreator().getId(), entity.getCreator().getId()); + // participants list (even if empty) + assertNotNull(entity.getParticipants()); + } + + @Test + void testActivityEntityMapping() { + ActivityEntity entity = createActivityEntity(); + Activity activity = mapper.toDomain(entity); + assertNotNull(activity); + assertEquals(entity.getId(), activity.getId()); + assertEquals(entity.getName(), activity.getName()); + assertEquals(entity.getDescription(), activity.getDescription()); + assertEquals(entity.getImage(), activity.getImage()); + assertEquals(entity.getTimeRate(), activity.getTimeRate()); + assertEquals(entity.getTimesRequiered(), activity.getTimesRequiered()); + assertEquals(entity.getCreatedAt(), activity.getCreatedAt()); + assertEquals(entity.getUpdatedAt(), activity.getUpdatedAt()); + assertEquals(entity.getDeletedAt(), activity.getDeletedAt()); + // Check nested mapping via dummy mapper + assertNotNull(activity.getCreator()); + assertEquals(entity.getCreator().getId(), activity.getCreator().getId()); + // participants list (even if empty) + assertNotNull(activity.getParticipants()); + } + + @Test + void testListMapping() { + Activity activity1 = createActivity(); + Activity activity2 = createActivity(); + activity2.setId("20L"); + List activities = Arrays.asList(activity1, activity2); + List entities = mapper.toEntity(activities); + assertNotNull(entities); + assertEquals(2, entities.size()); + assertEquals(activity1.getId(), entities.get(0).getId()); + assertEquals(activity2.getId(), entities.get(1).getId()); + + List activitiesMappedBack = mapper.toDomain(entities); + assertNotNull(activitiesMappedBack); + assertEquals(2, activitiesMappedBack.size()); + assertEquals(entities.get(0).getId(), activitiesMappedBack.get(0).getId()); + assertEquals(entities.get(1).getId(), activitiesMappedBack.get(1).getId()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/service/ActivityEntityServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/service/ActivityEntityServiceTest.java new file mode 100644 index 000000000..0fd9e25b4 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/activity/infrastructure/adapters/secondary/service/ActivityEntityServiceTest.java @@ -0,0 +1,165 @@ +package es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.service; + +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.springframework.boot.test.context.SpringBootTest; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities.ActivityEntity; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.mappers.ActivityEntityMapper; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.repositories.IActivityEntityRepository; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.services.ActivityEntityService; +import es.iespuertodelacruz.routinefights.activity.infrastructure.exceptions.ActivityNotFoundExcetion; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; + +@SpringBootTest +class ActivityEntityServiceTest { + @Mock + private IActivityEntityRepository activityEntityRepository; + + @Mock + private ActivityEntityMapper activityEntityMapper; + + @InjectMocks + private ActivityEntityService activityEntityService; + + @Test + void userIsOnActivityTestOK() { + String userId = "1L"; + String activityId = "2L"; + when(activityEntityRepository.userIsOnActivity(userId, activityId)).thenReturn(true); + + boolean result = activityEntityService.userIsOnActivity(userId, activityId); + + assertTrue(result); + } + + @Test + void findByIdTestOK() { + String activityId = "1L"; + ActivityEntity activityEntity = new ActivityEntity(); + activityEntity.setId(activityId); + when(activityEntityRepository.findById(activityId)).thenReturn(Optional.of(activityEntity)); + when(activityEntityMapper.toDomain(activityEntity)).thenReturn(new Activity()); + + Activity activity = activityEntityService.findById(activityId); + + assertNotNull(activity); + } + + @Test + void findByIdTestException() { + String activityId = "1L"; + when(activityEntityRepository.findById(activityId)).thenReturn(Optional.empty()); + + assertThrows(ActivityNotFoundExcetion.class, () -> activityEntityService.findById(activityId)); + } + + @Test + void saveTestOK() { + Activity activity = new Activity(); + activity.setCreator(new User()); + ActivityEntity activityEntity = new ActivityEntity(); + activityEntity.setCreator(new UserEntity()); + when(activityEntityMapper.toEntity(activity)).thenReturn(activityEntity); + when(activityEntityRepository.create(any(), any(), any(), any(), any(), any(), any())) + .thenReturn(activityEntity); + when(activityEntityMapper.toDomain(activityEntity)).thenReturn(activity); + + Activity result = activityEntityService.save(activity); + + assertNotNull(result); + } + + @Test + void getPaginationTestOK() { + int page = 1; + int perPage = 10; + when(activityEntityRepository.getPagination(0, perPage)).thenReturn(new ArrayList<>()); + + List list = activityEntityService.getPagination(page, perPage); + + assertNotNull(list); + + } + + @Test + void getSubscribedActivities() { + String userId = "1L"; + ActivityEntity activityEntity = new ActivityEntity(); + + when(activityEntityRepository.getSubscribedActivities(userId)).thenReturn(List.of(activityEntity)); + when(activityEntityRepository.getTimesRemaining(any(), any(), any(), any())).thenReturn(1); + + List list = activityEntityService.getSubscribedActivities(userId); + + assertNotNull(list); + } + + @Test + void getSubscribedActivitiesWithStreak() { + String userId = "1L"; + ActivityEntity activityEntity = new ActivityEntity(); + when(activityEntityRepository.getSubscribedActivitiesWithStreak(userId)).thenReturn(List.of(activityEntity)); + when(activityEntityMapper.toDomain(activityEntity)).thenReturn(new Activity()); + + List list = activityEntityService.getSubscribedActivitiesWithStreak(userId); + + assertNotNull(list); + } + + @Test + void getPaginationNotSubscribed() { + int page = 1; + int perPage = 10; + String userId = "1L"; + when(activityEntityRepository.getPaginationNotSubscribed(0, perPage, userId, "")).thenReturn(new ArrayList<>()); + + List list = activityEntityService.getPaginationNotSubscribed(page, perPage, userId, ""); + + assertNotNull(list); + } + + @Test + void getSubscribedActivitiesWithStreakByName() { + String userId = "1L"; + String activityName = "activityName"; + ActivityEntity activityEntity = new ActivityEntity(); + activityEntity.setTimeRate("daily"); + + when(activityEntityRepository.getSubscribedActivitiesWithStreak(userId, activityName)) + .thenReturn(List.of(activityEntity)); + when(activityEntityRepository.getTimesRemaining(any(), any(), any(), any())).thenReturn(1); + when(activityEntityMapper.toDomain(activityEntity)).thenReturn(new Activity()); + + List list = activityEntityService.getSubscribedActivities(userId, activityName); + + assertNotNull(list); + } + + @Test + void findAllActivities() { + ActivityEntity activityEntity = new ActivityEntity(); + List activityEntities = new ArrayList<>(); + activityEntities.add(activityEntity); + when(activityEntityRepository.findAll()).thenReturn(activityEntities); + when(activityEntityMapper.toDomain(activityEntity)).thenReturn(new Activity()); + + List list = activityEntityService.findAll(); + + assertNotNull(list); + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/badge/domain/BadgeTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/badge/domain/BadgeTest.java new file mode 100644 index 000000000..f2c0dc848 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/badge/domain/BadgeTest.java @@ -0,0 +1,84 @@ +package es.iespuertodelacruz.routinefights.badge.domain; + + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertTrue; + +import java.util.Collections; +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import es.iespuertodelacruz.routinefights.community_event.domain.CommunityEvent; +import es.iespuertodelacruz.routinefights.user.domain.User; + +class BadgeTests { + + private static final String ID = "badge1"; + private static final String IMAGE = "icon.png"; + private static final Integer LEVEL = 2; + + private Badge badge; + private List users; + private CommunityEvent event; + + @BeforeEach + void setUp() { + User user = new User(); + users = Collections.singletonList(user); + + event = new CommunityEvent("evt1", "EventName", 1, + null, null, null, null, null, + Collections.emptyList(), "img.jpg"); + + badge = new Badge(ID, IMAGE, LEVEL, users, event); + } + + @Test + void testGettersAndSetters() { + assertEquals(ID, badge.getId()); + badge.setId("other"); + assertEquals("other", badge.getId()); + + assertEquals(IMAGE, badge.getImage()); + badge.setImage("new.png"); + assertEquals("new.png", badge.getImage()); + + assertEquals(LEVEL, badge.getLevel()); + badge.setLevel(5); + assertEquals(Integer.valueOf(5), badge.getLevel()); + + assertEquals(users, badge.getUsers()); + badge.setUsers(Collections.emptyList()); + assertTrue(badge.getUsers().isEmpty()); + + assertEquals(event, badge.getCommunityEvent()); + CommunityEvent another = new CommunityEvent("e2", "Other", 3, + null, null, null, null, null, + Collections.emptyList(), "img2.jpg"); + badge.setCommunityEvent(another); + assertEquals(another, badge.getCommunityEvent()); + } + + @Test + void testToString() { + String str = badge.toString(); + assertTrue(str.contains("Badge{")); + assertTrue(str.contains(ID)); + assertTrue(str.contains(IMAGE)); + assertTrue(str.contains(LEVEL.toString())); + } + + @Test + void testEqualsAndHashCode() { + Badge same = new Badge(ID, IMAGE, LEVEL, users, event); + assertEquals(badge, same); + assertEquals(badge.hashCode(), same.hashCode()); + + Badge diffId = new Badge("other", IMAGE, LEVEL, users, event); + assertNotEquals(badge, diffId); + } +} + diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/badge/domain/services/BadgeServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/badge/domain/services/BadgeServiceTest.java new file mode 100644 index 000000000..05494d95d --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/badge/domain/services/BadgeServiceTest.java @@ -0,0 +1,128 @@ +package es.iespuertodelacruz.routinefights.badge.domain.services; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import es.iespuertodelacruz.routinefights.badge.domain.Badge; +import es.iespuertodelacruz.routinefights.badge.domain.ports.secondary.IBadgeRepository; +import es.iespuertodelacruz.routinefights.community_event.domain.CommunityEvent; +import es.iespuertodelacruz.routinefights.community_event.domain.ports.secondary.ICommunityEventRepository; + +class BadgeServiceTest { + private static final String USER_MAIL = "user@example.com"; + private static final String BADGE_ID = "badge123"; + private BadgeService badgeService; + @Mock + private IBadgeRepository badgeRepository; + @Mock + private ICommunityEventRepository communityEventRepository; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + badgeService = new BadgeService(badgeRepository, communityEventRepository); + } + + private static final String VALID_IMAGE = "badgeImage.png"; + private static final Integer VALID_LEVEL = 1; + private static final String VALID_COMMUNITY_EVENT_ID = "event123"; + private static final String INVALID_COMMUNITY_EVENT_ID = "invalidEvent"; + + @Test + void createBadge_withValidData_returnsSavedBadge() { + CommunityEvent communityEvent = new CommunityEvent(); + Badge badge = new Badge(); + badge.setImage(VALID_IMAGE); + badge.setLevel(VALID_LEVEL); + badge.setCommunityEvent(communityEvent); + + when(communityEventRepository.findById(VALID_COMMUNITY_EVENT_ID)).thenReturn(communityEvent); + when(badgeRepository.save(any(Badge.class))).thenReturn(badge); + + Badge result = badgeService.createBadge(VALID_IMAGE, VALID_LEVEL, VALID_COMMUNITY_EVENT_ID); + + assertNotNull(result); + assertEquals(VALID_IMAGE, result.getImage()); + assertEquals(VALID_LEVEL, result.getLevel()); + assertEquals(communityEvent, result.getCommunityEvent()); + } + + @Test + void createBadge_withInvalidCommunityEvent_throwsException() { + when(communityEventRepository.findById(INVALID_COMMUNITY_EVENT_ID)).thenReturn(null); + + assertThrows(IllegalArgumentException.class, () -> { + badgeService.createBadge(VALID_IMAGE, VALID_LEVEL, INVALID_COMMUNITY_EVENT_ID); + }); + } + + @Test + void findById_withValidId_returnsBadge() { + Badge badge = new Badge(); + when(badgeRepository.findById(BADGE_ID)).thenReturn(badge); + + Badge result = badgeService.findById(BADGE_ID); + + assertNotNull(result); + assertEquals(badge, result); + } + + @Test + void findByCommunityEvent_withValidCommunityEventId_returnsBadges() { + List badges = List.of(new Badge(), new Badge()); + when(badgeRepository.findByCommunityEvent(VALID_COMMUNITY_EVENT_ID)).thenReturn(badges); + + List result = badgeService.findByCommunityEvent(VALID_COMMUNITY_EVENT_ID); + + assertNotNull(result); + assertEquals(badges.size(), result.size()); + assertEquals(badges, result); + } + + @Test + void findByUserEmail_withValidEmail_returnsBadges() { + List badges = List.of(new Badge(), new Badge()); + when(badgeRepository.findByUserEmail(USER_MAIL)).thenReturn(badges); + + List result = badgeService.findByUserEmail(USER_MAIL); + + assertNotNull(result); + assertEquals(badges.size(), result.size()); + assertEquals(badges, result); + } + + @Test + void addBadgeToUser_withValidData_returnsTrue() { + when(badgeRepository.addBadgeToUser(USER_MAIL, BADGE_ID)).thenReturn(true); + + Boolean result = badgeService.addBadgeToUser(USER_MAIL, BADGE_ID); + + assertNotNull(result); + assertEquals(true, result); + } + + @Test + void addBadgeToUser_withValidDataForMultipleUsers_returnsListOfBooleans() { + List userEmails = List.of("user1@example.com", "user2@example.com"); + List expectedResults = List.of(true, true); + when(badgeRepository.addBadgeToUser(userEmails, BADGE_ID)).thenReturn(expectedResults); + + List result = badgeService.addBadgeToUser(userEmails, BADGE_ID); + + assertNotNull(result); + assertEquals(expectedResults.size(), result.size()); + assertEquals(expectedResults, result); + } + + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/secondary/entities/BadgeEntityTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/secondary/entities/BadgeEntityTest.java new file mode 100644 index 000000000..ce96a34bd --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/badge/infrastructure/adapters/secondary/entities/BadgeEntityTest.java @@ -0,0 +1,105 @@ +package es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.secondary.entities; + +import org.junit.jupiter.api.Test; + +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities.ActivityEntity; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.entities.CommunityEventEntity; +import es.iespuertodelacruz.routinefights.meeting.infrastructure.adapters.secondary.entities.MeetingEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; + + class BadgeEntityTest { + + private static final String BADGE_ID_1 = "B1"; + private static final String BADGE_ID_2 = "B2"; + private static final String IMAGE = "http://example.com/badge.png"; + private static final Integer LEVEL = 3; + private static final List USERS = new ArrayList<>(); + + private static final String CE_ID = "CE1"; + private static final String CE_NAME = "Event"; + private static final Integer CE_TOTAL_REQUIRED = 100; + private static final LocalDateTime CE_CREATED_AT = LocalDateTime.of(2023, 2, 1, 12, 0); + private static final LocalDateTime CE_FINISH_DATE = LocalDateTime.of(2023, 2, 10, 12, 0); + private static final List CE_ACTIVITIES = new ArrayList<>(); + private static final List CE_BADGES = new ArrayList<>(); + private static final List CE_MEETINGS = new ArrayList<>(); + + @Test + void testSettersAndGetters() { + BadgeEntity badge = new BadgeEntity(); + badge.setId(BADGE_ID_1); + badge.setImage(IMAGE); + badge.setLevel(LEVEL); + badge.setUsers(USERS); + CommunityEventEntity communityEvent = new CommunityEventEntity(CE_ID, CE_NAME, CE_TOTAL_REQUIRED, CE_CREATED_AT, CE_FINISH_DATE, CE_ACTIVITIES, CE_BADGES, CE_MEETINGS, CE_CREATED_AT, CE_FINISH_DATE, CE_CREATED_AT, IMAGE); + badge.setCommunityEvent(communityEvent); + assertEquals(BADGE_ID_1, badge.getId()); + assertEquals(IMAGE, badge.getImage()); + assertEquals(LEVEL, badge.getLevel()); + assertEquals(USERS, badge.getUsers()); + assertEquals(communityEvent, badge.getCommunityEvent()); + } + + @Test + void testConstructorAndGetters() { + CommunityEventEntity communityEvent = new CommunityEventEntity(CE_ID, CE_NAME, CE_TOTAL_REQUIRED, CE_CREATED_AT, CE_FINISH_DATE, CE_ACTIVITIES, CE_BADGES, CE_MEETINGS, CE_CREATED_AT, CE_FINISH_DATE, CE_CREATED_AT, IMAGE); + BadgeEntity badge = new BadgeEntity(BADGE_ID_1, IMAGE, LEVEL, USERS, communityEvent); + assertEquals(BADGE_ID_1, badge.getId()); + assertEquals(IMAGE, badge.getImage()); + assertEquals(LEVEL, badge.getLevel()); + assertEquals(USERS, badge.getUsers()); + assertEquals(communityEvent, badge.getCommunityEvent()); + } + + @Test + void testFluentMethods() { + CommunityEventEntity communityEvent = new CommunityEventEntity(CE_ID, CE_NAME, CE_TOTAL_REQUIRED, CE_CREATED_AT, CE_FINISH_DATE, CE_ACTIVITIES, CE_BADGES, CE_MEETINGS, CE_CREATED_AT, CE_FINISH_DATE, CE_CREATED_AT, IMAGE); + BadgeEntity badge = new BadgeEntity(); + badge.id(BADGE_ID_1) + .image(IMAGE) + .level(LEVEL) + .users(USERS) + .communityEvent(communityEvent); + assertEquals(BADGE_ID_1, badge.getId()); + assertEquals(IMAGE, badge.getImage()); + assertEquals(LEVEL, badge.getLevel()); + assertEquals(USERS, badge.getUsers()); + assertEquals(communityEvent, badge.getCommunityEvent()); + } + + @Test + void testEqualsAndHashCode() { + BadgeEntity badge1 = new BadgeEntity(); + BadgeEntity badge2 = new BadgeEntity(); + assertEquals(badge1, badge2); + badge1.setId(BADGE_ID_1); + badge2.setId(BADGE_ID_1); + assertEquals(badge1, badge2); + assertEquals(badge1.hashCode(), badge2.hashCode()); + badge2.setId(BADGE_ID_2); + assertNotEquals(badge1, badge2); + assertNotEquals(badge1.hashCode(), badge2.hashCode()); + assertEquals(badge1, badge1); + assertNotEquals(badge1, new Object()); + } + + @Test + void testToString() { + CommunityEventEntity communityEvent = new CommunityEventEntity(CE_ID, CE_NAME, CE_TOTAL_REQUIRED, CE_CREATED_AT, CE_FINISH_DATE, CE_ACTIVITIES, CE_BADGES, CE_MEETINGS, CE_CREATED_AT, CE_FINISH_DATE, CE_CREATED_AT, IMAGE); + BadgeEntity badge = new BadgeEntity(BADGE_ID_1, IMAGE, LEVEL, USERS, communityEvent); + String expected = "{" + + " id='" + BADGE_ID_1 + "'" + + ", image='" + IMAGE + "'" + + ", level='" + LEVEL + "'" + + ", user='" + USERS + "'" + + ", communityEvent='" + communityEvent.toString() + "'" + + "}"; + assertEquals(expected, badge.toString()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/category/infrastructure/adapters/secondary/entities/CategoryEntityTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/category/infrastructure/adapters/secondary/entities/CategoryEntityTest.java new file mode 100644 index 000000000..c94dac8b5 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/category/infrastructure/adapters/secondary/entities/CategoryEntityTest.java @@ -0,0 +1,73 @@ +package es.iespuertodelacruz.routinefights.category.infrastructure.adapters.secondary.entities; + +import org.junit.jupiter.api.Test; + +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities.ActivityEntity; + +import java.util.ArrayList; +import java.util.List; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; + +class CategoryEntityTest { + + private static final String ID1 = "cat1"; + private static final String ID2 = "cat2"; + private static final String NAME = "Test Category"; + private static final List ACTIVITIES = new ArrayList<>(); + + @Test + void testSettersAndGetters() { + CategoryEntity category = new CategoryEntity(); + category.setId(ID1); + category.setName(NAME); + category.setActivity(ACTIVITIES); + assertEquals(ID1, category.getId()); + assertEquals(NAME, category.getName()); + assertEquals(ACTIVITIES, category.getActivities()); + } + + @Test + void testConstructorAndGetters() { + CategoryEntity category = new CategoryEntity(ID1, NAME, ACTIVITIES); + assertEquals(ID1, category.getId()); + assertEquals(NAME, category.getName()); + assertEquals(ACTIVITIES, category.getActivities()); + } + + @Test + void testFluentMethods() { + CategoryEntity category = new CategoryEntity(); + category.id(ID1).name(NAME).activity(ACTIVITIES); + assertEquals(ID1, category.getId()); + assertEquals(NAME, category.getName()); + assertEquals(ACTIVITIES, category.getActivities()); + } + + @Test + void testEqualsAndHashCode() { + CategoryEntity category1 = new CategoryEntity(); + CategoryEntity category2 = new CategoryEntity(); + assertEquals(category1, category2); + category1.setId(ID1); + category2.setId(ID1); + assertEquals(category1, category2); + assertEquals(category1.hashCode(), category2.hashCode()); + category2.setId(ID2); + assertNotEquals(category1, category2); + assertNotEquals(category1.hashCode(), category2.hashCode()); + assertNotEquals(category1, new Object()); + assertEquals(category1, category1); + } + + @Test + void testToString() { + CategoryEntity category = new CategoryEntity(ID1, NAME, ACTIVITIES); + String expected = "{" + + " id='" + ID1 + "'" + + ", name='" + NAME + "'" + + ", activity='" + ACTIVITIES + "'" + + "}"; + assertEquals(expected, category.toString()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/comment/domain/CommentTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/comment/domain/CommentTest.java new file mode 100644 index 000000000..6a2801bca --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/comment/domain/CommentTest.java @@ -0,0 +1,93 @@ +package es.iespuertodelacruz.routinefights.comment.domain; + +import static org.junit.jupiter.api.Assertions.*; +import java.time.LocalDateTime; +import java.util.ArrayList; + +import org.junit.jupiter.api.Test; +import es.iespuertodelacruz.routinefights.post.domain.Post; +import es.iespuertodelacruz.routinefights.user.domain.User; + +class CommentTest { + + @Test + void testConstructorAndGetters() { + LocalDateTime createdAt = LocalDateTime.now(); + LocalDateTime updatedAt = LocalDateTime.now(); + LocalDateTime deletedAt = LocalDateTime.now(); + Post post = new Post(); + User user = new User(); + Comment replyingComment = new Comment("replyId"); + + Comment comment = new Comment("id", "message", createdAt, updatedAt, deletedAt, post, user, replyingComment); + + assertEquals("id", comment.getId()); + assertEquals("message", comment.getMessage()); + assertEquals(createdAt, comment.getCreatedAt()); + assertEquals(updatedAt, comment.getUpdatedAt()); + assertEquals(deletedAt, comment.getDeletedAt()); + assertEquals(post, comment.getPost()); + assertEquals(user, comment.getUser()); + assertEquals(replyingComment, comment.getReplingComment()); + } + + @Test + void testSetters() { + Comment comment = new Comment(); + LocalDateTime createdAt = LocalDateTime.now(); + LocalDateTime updatedAt = LocalDateTime.now(); + LocalDateTime deletedAt = LocalDateTime.now(); + Post post = new Post(); + User user = new User(); + Comment replyingComment = new Comment("replyId"); + + comment.setId("id"); + comment.setMessage("message"); + comment.setCreatedAt(createdAt); + comment.setUpdatedAt(updatedAt); + comment.setDeletedAt(deletedAt); + comment.setPost(post); + comment.setUser(user); + comment.setReplingComment(replyingComment); + + assertEquals("id", comment.getId()); + assertEquals("message", comment.getMessage()); + assertEquals(createdAt, comment.getCreatedAt()); + assertEquals(updatedAt, comment.getUpdatedAt()); + assertEquals(deletedAt, comment.getDeletedAt()); + assertEquals(post, comment.getPost()); + assertEquals(user, comment.getUser()); + assertEquals(replyingComment, comment.getReplingComment()); + } + + @Test + void testEqualsAndHashCode() { + Comment comment1 = new Comment("id"); + Comment comment2 = new Comment("id"); + Comment comment3 = new Comment("differentId"); + + assertEquals(comment1, comment2); + assertNotEquals(comment1, comment3); + assertEquals(comment1.hashCode(), comment2.hashCode()); + assertNotEquals(comment1.hashCode(), comment3.hashCode()); + } + + @Test + void testToString() { + LocalDateTime createdAt = LocalDateTime.now(); + LocalDateTime updatedAt = LocalDateTime.now(); + LocalDateTime deletedAt = LocalDateTime.now(); + Post post = new Post(); + User user = new User(); + user.setFollowers(new ArrayList<>()); + user.setFollowing(new ArrayList<>()); + Comment replyingComment = new Comment("replyId"); + + Comment comment = new Comment("id", "message", createdAt, updatedAt, deletedAt, post, user, replyingComment); + + String expected = "Comment{id='id', message='message', createdAt=" + createdAt + + ", updatedAt=" + updatedAt + ", deletedAt=" + deletedAt + + ", post=" + post + ", user=" + user + ", comment=" + replyingComment + "}"; + assertEquals(expected, comment.toString()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/comment/domain/services/CommentServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/comment/domain/services/CommentServiceTest.java new file mode 100644 index 000000000..c55949937 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/comment/domain/services/CommentServiceTest.java @@ -0,0 +1,115 @@ +package es.iespuertodelacruz.routinefights.comment.domain.services; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +import java.time.LocalDateTime; +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import es.iespuertodelacruz.routinefights.comment.domain.Comment; +import es.iespuertodelacruz.routinefights.comment.domain.ports.secondary.ICommentRepository; +import es.iespuertodelacruz.routinefights.post.domain.Post; +import es.iespuertodelacruz.routinefights.post.domain.ports.secondary.IPostRepository; +import es.iespuertodelacruz.routinefights.user.domain.User; + +class CommentServiceTest { + + private static final String POST_ID = "postId"; + + private static final String MESSAGE = "message"; + + @Mock + private ICommentRepository commentRepository; + + @Mock + private IPostRepository postRepository; + + private CommentService commentService; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + commentService = new CommentService(commentRepository, postRepository); + } + + @Test + void saveTest() { + Post post = new Post(); + post.setId(POST_ID); + when(postRepository.findById(POST_ID)).thenReturn(post); + Comment expectedComment = new Comment(); + expectedComment.setMessage(MESSAGE); + expectedComment.setPost(post); + expectedComment.setUser(new User()); + expectedComment.setCreatedAt(LocalDateTime.now()); + expectedComment.setReplingComment(null); + when(commentRepository.comment(any(),any(),any(),any())).thenReturn(expectedComment); + + Comment comment = commentService.save(MESSAGE, new User(), POST_ID, null); + + assertNotNull(comment); + assertEquals(MESSAGE, comment.getMessage()); + assertEquals(post, comment.getPost()); + assertEquals(new User(), comment.getUser()); + assertNotNull(comment.getCreatedAt()); + } + + @Test + void saveTestWithNullPost() { + when(postRepository.findById(POST_ID)).thenReturn(null); + + try { + commentService.save(MESSAGE, new User(), POST_ID, null); + } catch (IllegalArgumentException e) { + assertEquals("Post not found", e.getMessage()); + } + } + + @Test + void saveTestWithReplingComment() { + Post post = new Post(); + post.setId(POST_ID); + when(postRepository.findById(POST_ID)).thenReturn(post); + Comment replingComment = new Comment(); + replingComment.setId("replingId"); + when(commentRepository.findById("replingId")).thenReturn(replingComment); + Comment expectedComment = new Comment(); + expectedComment.setMessage(MESSAGE); + expectedComment.setPost(post); + expectedComment.setUser(new User()); + expectedComment.setCreatedAt(LocalDateTime.now()); + expectedComment.setReplingComment(replingComment); + when(commentRepository.comment(any(),any(),any(),any())).thenReturn(expectedComment); + + Comment comment = commentService.save(MESSAGE, new User(), POST_ID, "replingId"); + + assertNotNull(comment); + assertEquals(MESSAGE, comment.getMessage()); + assertEquals(post, comment.getPost()); + assertEquals(new User(), comment.getUser()); + assertNotNull(comment.getCreatedAt()); + } + + @Test + void findByPostIDTest() { + Post post = new Post(); + post.setId(POST_ID); + Comment comment = new Comment(); + comment.setPost(post); + when(commentRepository.findByPostID(POST_ID)).thenReturn(List.of(comment)); + + List comments = commentService.findByPostID(POST_ID); + + assertNotNull(comments); + assertEquals(1, comments.size()); + assertEquals(post, comments.get(0).getPost()); + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/primary/contontrollers/CommentControllerV2Test.java b/API/src/test/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/primary/contontrollers/CommentControllerV2Test.java new file mode 100644 index 000000000..332f29990 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/primary/contontrollers/CommentControllerV2Test.java @@ -0,0 +1,74 @@ +package es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.primary.contontrollers; + +import static org.junit.Assert.assertNotNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyList; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.time.LocalDateTime; +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; + +import es.iespuertodelacruz.routinefights.comment.domain.Comment; +import es.iespuertodelacruz.routinefights.comment.domain.ports.primary.ICommentService; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.primary.v2.controllers.CommentControllerV2; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.primary.v2.dtos.CommentInputV2; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.primary.v2.dtos.CommentOutputV2; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.primary.v2.mapper.CommentOutputV2Mapper; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.ports.primary.IUserService; + +@SpringBootTest +class CommentControllerV2Test { + private CommentControllerV2 commentController; + @Mock + private ICommentService commentService; + @Mock + private CommentOutputV2Mapper commentOutputV2Mapper; + @Mock + private IUserService userService; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + commentController = new CommentControllerV2(commentService, commentOutputV2Mapper, userService); + } + + @Test + void postCommentTest(){ + SecurityContext securityContext = mock(SecurityContext.class); + Authentication authentication = mock(Authentication.class); + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + SecurityContextHolder.setContext(securityContext); + when(commentService.save(any(), any(), any(), any())).thenReturn(new Comment()); + when(userService.findByEmailOnlyBase(any())).thenReturn(new User()); + when(commentOutputV2Mapper.toDTO(any(Comment.class))).thenReturn(new CommentOutputV2("id","message",LocalDateTime.now(),null)); + CommentOutputV2 commentOutputV2 = commentController.postComment(new CommentInputV2("message", "postID", "replingID")); + assertNotNull(commentOutputV2); + } + + @Test + void getCommentsTest(){ + SecurityContext securityContext = mock(SecurityContext.class); + Authentication authentication = mock(Authentication.class); + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + SecurityContextHolder.setContext(securityContext); + when(commentService.findByPostID(any())).thenReturn(List.of(new Comment())); + when(commentOutputV2Mapper.toDTO(anyList())).thenReturn(List.of(new CommentOutputV2("id","message",LocalDateTime.now(),null))); + List commentOutputV2List = commentController.getComments("postID"); + assertNotNull(commentOutputV2List); + } + + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/entities/CommentEntityTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/entities/CommentEntityTest.java new file mode 100644 index 000000000..c27ecb9da --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/entities/CommentEntityTest.java @@ -0,0 +1,114 @@ +package es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.entities; +import org.junit.jupiter.api.Test; + +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.entities.PostEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; + +import java.time.LocalDateTime; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; + + class CommentEntityTest { + + private static final String COMMENT_ID_1 = "C1"; + private static final String COMMENT_ID_2 = "C2"; + private static final String MESSAGE = "Test comment"; + private static final LocalDateTime CREATED_AT = LocalDateTime.of(2023, 4, 1, 10, 0); + private static final LocalDateTime UPDATED_AT = LocalDateTime.of(2023, 4, 1, 11, 0); + private static final LocalDateTime DELETED_AT = LocalDateTime.of(2023, 4, 1, 12, 0); + + private PostEntity createDummyPost() { + PostEntity post = new PostEntity(); + post.setId("P1"); + return post; + } + + private UserEntity createDummyUser() { + UserEntity user = new UserEntity(); + user.setId("U1"); + return user; + } + + private CommentEntity createDummyNestedComment() { + CommentEntity comment = new CommentEntity(); + comment.setId("CN1"); + comment.setMessage("Nested comment"); + comment.setCreatedAt(CREATED_AT); + comment.setUpdatedAt(UPDATED_AT); + comment.setDeletedAt(DELETED_AT); + return comment; + } + + @Test + void testSettersAndGetters() { + CommentEntity comment = new CommentEntity(); + comment.setId(COMMENT_ID_1); + comment.setMessage(MESSAGE); + comment.setPost(createDummyPost()); + comment.setUser(createDummyUser()); + comment.setReplingComment(createDummyNestedComment()); + comment.setCreatedAt(CREATED_AT); + comment.setUpdatedAt(UPDATED_AT); + comment.setDeletedAt(DELETED_AT); + + assertEquals(COMMENT_ID_1, comment.getId()); + assertEquals(MESSAGE, comment.getMessage()); + assertEquals(createDummyPost().toString(), comment.getPost().toString()); + assertEquals(createDummyUser().toString(), comment.getUser().toString()); + assertEquals(createDummyNestedComment().toString(), comment.getReplingComment().toString()); + assertEquals(CREATED_AT, comment.getCreatedAt()); + assertEquals(UPDATED_AT, comment.getUpdatedAt()); + assertEquals(DELETED_AT, comment.getDeletedAt()); + } + + @Test + void testConstructorAndGetters() { + PostEntity post = createDummyPost(); + UserEntity user = createDummyUser(); + CommentEntity nestedComment = createDummyNestedComment(); + CommentEntity comment = new CommentEntity(COMMENT_ID_1, MESSAGE, CREATED_AT, UPDATED_AT, DELETED_AT, post, user, nestedComment); + + assertEquals(COMMENT_ID_1, comment.getId()); + assertEquals(MESSAGE, comment.getMessage()); + assertEquals(post.toString(), comment.getPost().toString()); + assertEquals(user.toString(), comment.getUser().toString()); + assertEquals(nestedComment.toString(), comment.getReplingComment().toString()); + assertEquals(CREATED_AT, comment.getCreatedAt()); + assertEquals(UPDATED_AT, comment.getUpdatedAt()); + assertEquals(DELETED_AT, comment.getDeletedAt()); + } + + @Test + void testEqualsAndHashCode() { + CommentEntity comment1 = new CommentEntity(); + CommentEntity comment2 = new CommentEntity(); + assertEquals(comment1, comment2); + comment1.setId(COMMENT_ID_1); + comment2.setId(COMMENT_ID_1); + assertEquals(comment1, comment2); + assertEquals(comment1.hashCode(), comment2.hashCode()); + comment2.setId(COMMENT_ID_2); + assertNotEquals(comment1, comment2); + assertNotEquals(comment1.hashCode(), comment2.hashCode()); + assertEquals(comment1, comment1); + } + + @Test + void testToString() { + PostEntity post = createDummyPost(); + UserEntity user = createDummyUser(); + CommentEntity nestedComment = createDummyNestedComment(); + CommentEntity comment = new CommentEntity(COMMENT_ID_1, MESSAGE, CREATED_AT, UPDATED_AT, DELETED_AT, post, user, nestedComment); + String expected = "{" + + " id='" + COMMENT_ID_1 + "'" + + ", message='" + MESSAGE + "'" + + ", createdAt='" + CREATED_AT.toString() + "'" + + ", updatedAt='" + UPDATED_AT.toString() + "'" + + ", deletedAt='" + DELETED_AT.toString() + "'" + + ", post='" + post.toString() + "'" + + ", user='" + user.toString() + "'" + + ", comment='" + nestedComment.toString() + "'" + + "}"; + assertEquals(expected, comment.toString()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/service/CommentEntityServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/service/CommentEntityServiceTest.java new file mode 100644 index 000000000..5d8560e79 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/comment/infrastructure/adapters/secondary/service/CommentEntityServiceTest.java @@ -0,0 +1,60 @@ +package es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.service; + +import static org.junit.Assert.assertNotNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.when; + +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import es.iespuertodelacruz.routinefights.comment.domain.Comment; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.entities.CommentEntity; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.mappers.CommentEntityMapper; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.repositories.ICommentEntityRepository; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.services.CommentEntityService; + +class CommentEntityServiceTest { + private CommentEntityService commentEntityService; + @Mock + private ICommentEntityRepository commentRepository; + @Mock + private CommentEntityMapper commentEntityMapper; + private Comment comment; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + commentEntityService = new CommentEntityService(commentRepository, commentEntityMapper); + comment = new Comment(); + } + + @Test + void commentTest() { + when(commentEntityMapper.toEntity(any(Comment.class))).thenReturn(new CommentEntity()); + when(commentRepository.comment(anyString(),any(),anyString(),anyString())).thenReturn(new CommentEntity()); + when(commentEntityMapper.toDomain(any(CommentEntity.class))).thenReturn(comment); + Comment savedComment = commentEntityService.comment("message", null, "userId", "postId"); + assertNotNull(savedComment); + } + + @Test + void findByPostIDTest() { + when(commentEntityMapper.toDomain(any(CommentEntity.class))).thenReturn(comment); + when(commentRepository.findByPostId(any())).thenReturn(List.of(new CommentEntity())); + List comments = commentEntityService.findByPostID("postId"); + assertNotNull(comments); + } + @Test + void findByIdTest() { + when(commentEntityMapper.toDomain(any(CommentEntity.class))).thenReturn(comment); + when(commentRepository.findById(any())).thenReturn(java.util.Optional.of(new CommentEntity())); + Comment foundComment = commentEntityService.findById("commentId"); + assertNotNull(foundComment); + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/communityEvent/domain/CommunityEventTests.java b/API/src/test/java/es/iespuertodelacruz/routinefights/communityEvent/domain/CommunityEventTests.java new file mode 100644 index 000000000..8840a89dc --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/communityEvent/domain/CommunityEventTests.java @@ -0,0 +1,105 @@ +package es.iespuertodelacruz.routinefights.communityEvent.domain; + +import static org.junit.jupiter.api.Assertions.*; + +import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.community_event.commons.CommunityEventCommons; +import es.iespuertodelacruz.routinefights.community_event.domain.CommunityEvent; + +class CommunityEventTests { + + private CommunityEvent event; + private CommunityEventCommons commons; + private LocalDateTime now; + private LocalDateTime later; + + @BeforeEach + void setUp() { + now = LocalDateTime.of(2025, 5, 16, 10, 0); + later = now.plusDays(1); + List activities = Arrays.asList( + new Activity("A1", "Activity One", null, null, null, null, later, later, later, null, null), + new Activity("A2", "Activity Two", null, null, null, null, later, later, later, null, null)); + event = new CommunityEvent( + "evt1", "Test Event", 5, + now, later, + now.minusDays(1), now, null, + activities, "image.png"); + commons = new CommunityEventCommons("Common Name", 3, now, later); + } + + @Test + void testCommunityEventGettersAndSetters() { + assertEquals("evt1", event.getId()); + event.setId("evt2"); + assertEquals("evt2", event.getId()); + + assertNotNull(event.getActivities()); + assertEquals(2, event.getActivities().size()); + List newActs = Arrays.asList(new Activity("B1", "New Act", null, null, null, null, later, later, later, null, null)); + event.setActivities(newActs); + assertEquals(1, event.getActivities().size()); + assertEquals("B1", event.getActivities().get(0).getId()); + } + + @Test + void testCommunityEventCommonsFluentSetters() { + CommunityEventCommons fluent = new CommunityEventCommons() + .name("Fluent Name") + .totalRequired(10) + .startDate(now) + .finishDate(later); + + assertEquals("Fluent Name", fluent.getName()); + assertEquals(10, fluent.getTotalRequired()); + assertEquals(now, fluent.getStartDate()); + assertEquals(later, fluent.getFinishDate()); + } + + @Test + void testToString() { + String str = commons.toString(); + assertTrue(str.contains("Common Name")); + assertTrue(str.contains("3")); + assertTrue(str.contains(now.toString())); + assertTrue(str.contains(later.toString())); + } + + @Test + void testCommonsGettersAndSetters() { + assertEquals("Common Name", commons.getName()); + commons.setName("Other Name"); + assertEquals("Other Name", commons.getName()); + + assertEquals(3, commons.getTotalRequired()); + commons.setTotalRequired(7); + assertEquals(7, commons.getTotalRequired()); + + assertEquals(now, commons.getStartDate()); + LocalDateTime newStart = now.plusHours(2); + commons.setStartDate(newStart); + assertEquals(newStart, commons.getStartDate()); + + assertEquals(later, commons.getFinishDate()); + LocalDateTime newFinish = later.plusHours(3); + commons.setFinishDate(newFinish); + assertEquals(newFinish, commons.getFinishDate()); + } + + @Test + void testImageProperty() { + CommunityEventCommons withImage = new CommunityEventCommons( + "Name", 1, now, later, + now, now, null, "pic.jpg"); + assertEquals("pic.jpg", withImage.getImage()); + withImage.setImage("newpic.png"); + assertEquals("newpic.png", withImage.getImage()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/communityEvent/domain/services/CommunityEventServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/communityEvent/domain/services/CommunityEventServiceTest.java new file mode 100644 index 000000000..4fbbc735d --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/communityEvent/domain/services/CommunityEventServiceTest.java @@ -0,0 +1,103 @@ +package es.iespuertodelacruz.routinefights.communityEvent.domain.services; + +import static org.junit.Assert.assertNotNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.when; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.BeforeEach; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.activity.domain.ports.secondary.IActivityRepository; +import es.iespuertodelacruz.routinefights.community_event.domain.CommunityEvent; +import es.iespuertodelacruz.routinefights.community_event.domain.ports.secondary.ICommunityEventRepository; +import es.iespuertodelacruz.routinefights.community_event.domain.services.CommunityEventService; + +class CommunityEventServiceTest { + private static final String ID = "evt1"; + private CommunityEventService service; + @Mock + private ICommunityEventRepository repository; + @Mock + private IActivityRepository activityRepository; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + service = new CommunityEventService(repository, activityRepository); + } + + @Test + void createCommunityEvent() { + CommunityEvent communityEvent = new CommunityEvent(); + when(repository.save(any(CommunityEvent.class))).thenReturn(communityEvent); + when(activityRepository.findById(anyString())).thenReturn(new Activity()); + + CommunityEvent createdEvent = service.createCommunityEvent( + "Event Name", + 10, + LocalDateTime.now(), + LocalDateTime.now().plusDays(1), + "image.png", + List.of("activity1", "activity2") + ); + assertNotNull(createdEvent); + } + + @Test + void getActiveCommunityEvent() { + when(repository.getActiveCommunityEvents()).thenReturn(List.of(new CommunityEvent())); + List activeEvents = service.getActiveCommunityEvent(); + assertNotNull(activeEvents); + } + + @Test + void getNearestCommunityEvent() { + when(repository.getNearestCommunityEvent()).thenReturn(new CommunityEvent()); + CommunityEvent nearestEvent = service.getNearestCommunityEvent(); + assertNotNull(nearestEvent); + } + + @Test + void getCommunityEventPointsById() { + when(repository.getActualCommunityEventPoints(ID)).thenReturn(100); + Integer points = service.getCommunityEventPointsById(ID); + assertNotNull(points); + } + + @Test + void getUsersParticipatingInCommunityEvent() { + when(repository.getUsersParticipatingInCommunityEvent(ID)).thenReturn(List.of(new String())); + List users = service.getUsersParticipatingInCommunityEvent(ID); + assertNotNull(users); + } + + @Test + void findAllImages() { + when(repository.getAllImages()).thenReturn(Set.of("image1.png", "image2.png")); + Set images = service.findAllImages(); + assertNotNull(images); + } + + @Test + void getUsersParticipatingInCommunityEventEndsToday() { + when(repository.getUsersParticipatingInCommunityEventEndsToday()).thenReturn(List.of(new String())); + List users = service.getUsersParticipatingInCommunityEventEndsToday(); + assertNotNull(users); + } + + @Test + void getCommunityEventEndsToday() { + when(repository.getCommunityEventEndsToday()).thenReturn(new CommunityEvent()); + CommunityEvent event = service.getCommunityEventEndsToday(); + assertNotNull(event); + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/communityEvent/infrastructure/adapters/secondary/entities/CommunityEventEntityTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/communityEvent/infrastructure/adapters/secondary/entities/CommunityEventEntityTest.java new file mode 100644 index 000000000..b6165cace --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/communityEvent/infrastructure/adapters/secondary/entities/CommunityEventEntityTest.java @@ -0,0 +1,93 @@ +package es.iespuertodelacruz.routinefights.communityEvent.infrastructure.adapters.secondary.entities; + +import org.junit.jupiter.api.Test; + +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities.ActivityEntity; +import es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.secondary.entities.BadgeEntity; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.entities.CommunityEventEntity; +import es.iespuertodelacruz.routinefights.meeting.infrastructure.adapters.secondary.entities.MeetingEntity; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import static org.junit.jupiter.api.Assertions.*; + +class CommunityEventEntityTest { + + private static final String ID_1 = "CE1"; + private static final String ID_2 = "CE2"; + private static final String NAME = "Community Event"; + private static final Integer TOTAL_REQUIRED = 10; + private static final LocalDateTime FINISH_DATE = LocalDateTime.of(2023, 5, 10, 12, 0); + private static final LocalDateTime CREATED_AT = LocalDateTime.of(2023, 1, 1, 12, 0); + private static final List ACTIVITIES = new ArrayList<>(); + private static final List BADGES = new ArrayList<>(); + private static final List MEETINGS = new ArrayList<>(); + private static final String IMAGE = "image"; + + @Test + void testSettersAndGetters() { + CommunityEventEntity event = new CommunityEventEntity(); + event.setId(ID_1); + event.setName(NAME); + event.setTotalRequired(TOTAL_REQUIRED); + event.setFinishDate(FINISH_DATE); + event.setActivities(ACTIVITIES); + event.setBadges(BADGES); + event.setMeetings(MEETINGS); + assertEquals(ID_1, event.getId()); + assertEquals(NAME, event.getName()); + assertEquals(TOTAL_REQUIRED, event.getTotalRequired()); + assertEquals(FINISH_DATE, event.getFinishDate()); + assertEquals(ACTIVITIES, event.getActivities()); + assertEquals(BADGES, event.getBadges()); + assertEquals(MEETINGS, event.getMeetings()); + } + + @Test + void testConstructorAndGetters() { + CommunityEventEntity event = new CommunityEventEntity(ID_1, NAME, TOTAL_REQUIRED, CREATED_AT, FINISH_DATE, + ACTIVITIES, BADGES, MEETINGS, CREATED_AT, FINISH_DATE, CREATED_AT, IMAGE); + assertEquals(ID_1, event.getId()); + assertEquals(NAME, event.getName()); + assertEquals(TOTAL_REQUIRED, event.getTotalRequired()); + assertEquals(FINISH_DATE, event.getFinishDate()); + assertEquals(ACTIVITIES, event.getActivities()); + assertEquals(BADGES, event.getBadges()); + assertEquals(MEETINGS, event.getMeetings()); + assertEquals(CREATED_AT, event.getCreatedAt()); + } + + @Test + void testEqualsAndHashCode() { + CommunityEventEntity event1 = new CommunityEventEntity(); + CommunityEventEntity event2 = new CommunityEventEntity(); + assertEquals(event1, event2); + event1.setId(ID_1); + event2.setId(ID_1); + assertEquals(event1, event2); + assertEquals(event1.hashCode(), event2.hashCode()); + event2.setId(ID_2); + assertNotEquals(event1, event2); + assertNotEquals(event1.hashCode(), event2.hashCode()); + assertNotEquals(event1, new Object()); + assertEquals(event1, event1); + } + + @Test + void testToString() { + CommunityEventEntity event = new CommunityEventEntity(); + event.setId(ID_1); + event.setName(NAME); + event.setTotalRequired(TOTAL_REQUIRED); + event.setFinishDate(FINISH_DATE); + event.setActivities(ACTIVITIES); + event.setBadges(BADGES); + event.setMeetings(MEETINGS); + String str = event.toString(); + assertTrue(str.contains(ID_1)); + assertTrue(str.contains(NAME)); + assertTrue(str.contains(TOTAL_REQUIRED.toString())); + assertTrue(str.contains(FINISH_DATE.toString())); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/communityEvent/infrastructure/adapters/secondary/service/CommunityEventEntityServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/communityEvent/infrastructure/adapters/secondary/service/CommunityEventEntityServiceTest.java new file mode 100644 index 000000000..44a517ca5 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/communityEvent/infrastructure/adapters/secondary/service/CommunityEventEntityServiceTest.java @@ -0,0 +1,151 @@ +package es.iespuertodelacruz.routinefights.communityEvent.infrastructure.adapters.secondary.service; + +import static org.junit.Assert.assertNotNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyList; +import static org.mockito.Mockito.when; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities.ActivityEntity; +import es.iespuertodelacruz.routinefights.community_event.domain.CommunityEvent; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.entities.CommunityEventEntity; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.mappers.CommunityEventEntityMapper; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.repositories.ICommunityEventEntityRepository; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.services.CommunityEventEntityService; + +class CommunityEventEntityServiceTest { + private CommunityEventEntityService communityEventEntityService; + + @Mock + private ICommunityEventEntityRepository communityEventEntityRepository; + @Mock + private CommunityEventEntityMapper communityEventEntityMapper; + + CommunityEventEntity communityEventEntity; + CommunityEvent communityEvent; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + communityEventEntityService = new CommunityEventEntityService(communityEventEntityRepository, + communityEventEntityMapper); + + communityEventEntity = new CommunityEventEntity(); + communityEventEntity.setId("evt1"); + + communityEvent = new CommunityEvent(); + communityEvent.setId("evt1"); + communityEvent.setName("Community Event"); + communityEvent.setCreatedAt(LocalDateTime.now()); + Activity activity = new Activity(); + activity.setId("activity1"); + + communityEvent.setActivities(List.of(activity)); + } + + @Test + void saveTest() { + CommunityEventEntity communityEventEntity2 = new CommunityEventEntity(); + ActivityEntity activityEntity = new ActivityEntity(); + activityEntity.setId("activity1"); + communityEventEntity.setActivities(List.of(activityEntity)); + when(communityEventEntityMapper.toEntity(any(CommunityEvent.class))).thenReturn(communityEventEntity2); + when(communityEventEntityRepository.create(any(), any(), any(), any(), any(), any(), anyList())) + .thenReturn(communityEventEntity2); + when(communityEventEntityMapper.toDomain(any(CommunityEventEntity.class))).thenReturn(new CommunityEvent()); + + CommunityEvent savedCommunityEvent = communityEventEntityService.save(communityEvent); + assertNotNull(savedCommunityEvent); + } + + @Test + void findByIdTest() { + when(communityEventEntityMapper.toDomain(any(CommunityEventEntity.class))).thenReturn(communityEvent); + when(communityEventEntityRepository.findById(any())) + .thenReturn(java.util.Optional.of(new CommunityEventEntity())); + + CommunityEvent foundCommunityEvent = communityEventEntityService.findById("evt1"); + assertNotNull(foundCommunityEvent); + } + + @Test + void getActiveCommunityEventsTest() { + when(communityEventEntityMapper.toDomain(anyList())).thenReturn(List.of(communityEvent)); + when(communityEventEntityRepository.getActiveCommunityEvents(any(LocalDateTime.class))) + .thenReturn(List.of(new CommunityEventEntity())); + + List activeCommunityEvents = communityEventEntityService.getActiveCommunityEvents(); + assertNotNull(activeCommunityEvents); + } + + @Test + void getNearestCommunityEventTest() { + when(communityEventEntityMapper.toDomain(any(CommunityEventEntity.class))).thenReturn(communityEvent); + when(communityEventEntityRepository.getNearestCommunityEvent(any(LocalDateTime.class))) + .thenReturn(new CommunityEventEntity()); + + CommunityEvent nearestCommunityEvent = communityEventEntityService.getNearestCommunityEvent(); + assertNotNull(nearestCommunityEvent); + } + + @Test + void getActualCommunityEventPointsTest() { + when(communityEventEntityRepository.getActualCommunityEventPoints(any())).thenReturn(100); + Integer points = communityEventEntityService.getActualCommunityEventPoints("evt1"); + assertNotNull(points); + } + + @Test + void getUsersParticipatingInCommunityEventTest() { + when(communityEventEntityRepository.getUsersParticipatingInCommunityEvent(any())) + .thenReturn(List.of("")); + + List users = communityEventEntityService.getUsersParticipatingInCommunityEvent("evt1"); + assertNotNull(users); + } + + @Test + void findByIdOnlyBaseTest() { + when(communityEventEntityMapper.toDomain(any(CommunityEventEntity.class))).thenReturn(communityEvent); + when(communityEventEntityRepository.findByIdOnlyBase(any())).thenReturn(new CommunityEventEntity()); + + CommunityEvent foundCommunityEvent = communityEventEntityService.findByIdOnlyBase("evt1"); + assertNotNull(foundCommunityEvent); + } + + @Test + void getAllImagesTest() { + when(communityEventEntityRepository.getAllImages()).thenReturn(Set.of("image1.png", "image2.png")); + Set images = communityEventEntityService.getAllImages(); + assertNotNull(images); + } + + @Test + void getUsersParticipatingInCommunityEventEndsTodayTest() { + when(communityEventEntityRepository.getUsersParticipatingInCommunityEventEndsToday(any(LocalDateTime.class))) + .thenReturn(List.of(new String())); + + List users = communityEventEntityService.getUsersParticipatingInCommunityEventEndsToday(); + assertNotNull(users); + } + + @Test + void getCommunityEventEndsTodayTest() { + when(communityEventEntityMapper.toDomain(any(CommunityEventEntity.class))).thenReturn(communityEvent); + when(communityEventEntityRepository.getCommunityEventEndsToday(any(LocalDateTime.class))) + .thenReturn(new CommunityEventEntity()); + + CommunityEvent foundCommunityEvent = communityEventEntityService.getCommunityEventEndsToday(); + assertNotNull(foundCommunityEvent); + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/device_token/domain/DeviceTokenTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/device_token/domain/DeviceTokenTest.java new file mode 100644 index 000000000..f15ac43c8 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/device_token/domain/DeviceTokenTest.java @@ -0,0 +1,32 @@ +package es.iespuertodelacruz.routinefights.device_token.domain; + +import static org.junit.Assert.assertEquals; + +import org.junit.jupiter.api.Test; + +import es.iespuertodelacruz.routinefights.user.domain.User; + +class DeviceTokenTest { + + private static final String LANGUAGE = "en-US"; + private static final String TOKEN = "sampleToken"; + private static final User USER = new User(); + + @Test + void testDeviceToken() { + DeviceToken deviceToken = new DeviceToken(); + deviceToken.setToken(TOKEN); + deviceToken.setLanguage(LANGUAGE); + deviceToken.setUser(USER); + + assertEquals(TOKEN, deviceToken.getToken()); + assertEquals(LANGUAGE, deviceToken.getLanguage()); + assertEquals(USER, deviceToken.getUser()); + + DeviceToken deviceToken2 = new DeviceToken(TOKEN, USER, LANGUAGE); + assertEquals(TOKEN, deviceToken2.getToken()); + assertEquals(LANGUAGE, deviceToken2.getLanguage()); + assertEquals(USER, deviceToken2.getUser()); + + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/device_token/infratruscture/adapters/secondary/entities/DeviceTokenEntityTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/device_token/infratruscture/adapters/secondary/entities/DeviceTokenEntityTest.java new file mode 100644 index 000000000..6798626a0 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/device_token/infratruscture/adapters/secondary/entities/DeviceTokenEntityTest.java @@ -0,0 +1,37 @@ +package es.iespuertodelacruz.routinefights.device_token.infratruscture.adapters.secondary.entities; + +import static org.junit.Assert.assertEquals; + +import org.junit.jupiter.api.Test; + +import es.iespuertodelacruz.routinefights.device_token.infrastructure.adapters.secondary.entities.DeviceTokenEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; + + +class DeviceTokenEntityTest { + + private static final String LANGUAGE = "en-US"; + private static final String TOKEN = "sampleToken"; + private static final UserEntity USER = new UserEntity(); + + + @Test + void testDeviceTokenEntity() { + DeviceTokenEntity entity = new DeviceTokenEntity(); + entity.setToken(TOKEN); + entity.setLanguage(LANGUAGE); + entity.setUser(USER); + + assertEquals(TOKEN, entity.getToken()); + assertEquals(LANGUAGE, entity.getLanguage()); + assertEquals(USER, entity.getUser()); + + DeviceTokenEntity entity2 = new DeviceTokenEntity(TOKEN, LANGUAGE, USER); + assertEquals(TOKEN, entity2.getToken()); + assertEquals(LANGUAGE, entity2.getLanguage()); + assertEquals(USER, entity2.getUser()); + + } + + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/integrationTests/ActivityV2ControllerIntegrationTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/integrationTests/ActivityV2ControllerIntegrationTest.java new file mode 100644 index 000000000..1069785c1 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/integrationTests/ActivityV2ControllerIntegrationTest.java @@ -0,0 +1,38 @@ +package es.iespuertodelacruz.routinefights.integrationTests; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; + + +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.controllers.ActivityControllerV2; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.dtos.ActivityInputV2; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.primary.v2.dtos.ActivityOutputV2; + +class ActivityV2ControllerIntegrationTest extends BaseDatabaseIntegration { + + private static final String CATEGORY_ID = "0"; + private static final int TIMES_REQUIERED = 3; + private static final String TIME_RATE = "daily"; + private static final String IMAGE = "image"; + private static final String DESCRIPTION = "description"; + private static final String NAME = "name"; + + + @Autowired + private ActivityControllerV2 activityControllerV2; + + @Test + void createActivity() { + ActivityInputV2 input = new ActivityInputV2(NAME, DESCRIPTION, IMAGE, TIME_RATE, TIMES_REQUIERED, CATEGORY_ID); + ActivityOutputV2 output = activityControllerV2.createActivity(input); + + assertNotNull(output); + assertEquals(NAME, output.name()); + assertEquals(DESCRIPTION, output.description()); + assertEquals(IMAGE, output.image()); + assertEquals(TIME_RATE, output.timeRate()); + assertEquals(TIMES_REQUIERED, output.timesRequiered()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/integrationTests/BaseDatabaseIntegration.java b/API/src/test/java/es/iespuertodelacruz/routinefights/integrationTests/BaseDatabaseIntegration.java new file mode 100644 index 000000000..a4c2efd56 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/integrationTests/BaseDatabaseIntegration.java @@ -0,0 +1,85 @@ +package es.iespuertodelacruz.routinefights.integrationTests; + +import org.junit.jupiter.api.*; +import org.neo4j.harness.Neo4j; +import org.neo4j.harness.Neo4jBuilders; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.springframework.transaction.annotation.Transactional; + +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.repositories.IUserEntityRepository; + +import java.time.LocalDateTime; +import java.util.List; + +@SpringBootTest +class BaseDatabaseIntegration { + + private static final String ROLE = "ROLE_USER"; + + + private static final String EMAIL = "jonaykb@gmail.com"; + + + protected static Neo4j embeddedDatabaseServer; + + + @Autowired + private IUserEntityRepository userRepository; + + @BeforeAll + static void initializeNeo4j() { + embeddedDatabaseServer = Neo4jBuilders.newInProcessBuilder() + .withDisabledServer() + .build(); + } + + @DynamicPropertySource + static void neo4jProperties(DynamicPropertyRegistry registry) { + registry.add("spring.neo4j.uri", embeddedDatabaseServer::boltURI); + registry.add("spring.neo4j.authentication.username", () -> "neo4j"); + registry.add("spring.neo4j.authentication.password", () -> null); + } + + @AfterAll + static void stopNeo4j() { + embeddedDatabaseServer.close(); + } + + @BeforeEach + @Transactional + void setupTestData() { + UserEntity user = new UserEntity(); + user.setUsername("JonayKB"); + user.setRole(ROLE); + user.setVerified(true); + user.setCreatedAt(LocalDateTime.parse("2025-04-29T17:53:39.430780697")); + user.setUpdatedAt(LocalDateTime.parse("2025-04-29T18:36:39.651213733")); + user.setPassword("$2a$10$.SpWMpH2w1jQzcg6S1Gb1eImmFmnoJavACHfgqCtAMQANHQ4Vah5W"); + user.setNationality("Spain"); + user.setPhoneNumber("+34648742361"); + user.setEmail(EMAIL); + + + userRepository.save(user); + } + + @BeforeEach + void setupSecurityContext() { + var authentication = new UsernamePasswordAuthenticationToken( + EMAIL, null, + List.of(new SimpleGrantedAuthority(ROLE))); + SecurityContextHolder.getContext().setAuthentication(authentication); + } + + @AfterEach + void clearSecurityContext() { + SecurityContextHolder.clearContext(); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/meeting/infrastructure/adapters/secondary/entities/MeetingEntityTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/meeting/infrastructure/adapters/secondary/entities/MeetingEntityTest.java new file mode 100644 index 000000000..940ae2dc2 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/meeting/infrastructure/adapters/secondary/entities/MeetingEntityTest.java @@ -0,0 +1,138 @@ +package es.iespuertodelacruz.routinefights.meeting.infrastructure.adapters.secondary.entities; + +import org.junit.jupiter.api.Test; + +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities.ActivityEntity; +import es.iespuertodelacruz.routinefights.badge.infrastructure.adapters.secondary.entities.BadgeEntity; +import es.iespuertodelacruz.routinefights.community_event.infrastructure.adapters.secondary.entities.CommunityEventEntity; +import es.iespuertodelacruz.routinefights.team.infrastructure.adapters.secondary.entities.TeamEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; + +class MeetingEntityTest { + + private static final String MEETING_ID = "M1"; + private static final LocalDateTime MEETING_DATE = LocalDateTime.of(2023, 3, 15, 14, 30); + private static final String LOCATION = "12.34,56.78"; + private static final List USERS = new ArrayList<>(); + + private static final String TEAM_ID = "T1"; + private static final String TEAM_NAME = "Team One"; + private static final LocalDateTime TEAM_CREATED_AT = LocalDateTime.of(2023, 3, 1, 10, 0); + private static final LocalDateTime TEAM_DELETED_AT = null; + private static final List TEAM_MEETINGS = new ArrayList<>(); + private static final UserEntity TEAM_CREATOR = new UserEntity(); + + private static final String CE_ID = "CE1"; + private static final String CE_NAME = "Community Event"; + private static final Integer CE_TOTAL_REQUIRED = 50; + private static final LocalDateTime CE_CREATED_AT = LocalDateTime.of(2023, 2, 20, 9, 0); + private static final LocalDateTime CE_FINISH_DATE = LocalDateTime.of(2023, 2, 28, 17, 0); + private static final List CE_ACTIVITIES = new ArrayList<>(); + private static final List CE_BADGES = new ArrayList<>(); + private static final List CE_MEETINGS = new ArrayList<>(); + private static final String IMAGE = "image"; + + private TeamEntity createTeam() { + TeamEntity team = new TeamEntity(); + team.setId(TEAM_ID); + team.setName(TEAM_NAME); + team.setCreatedAt(TEAM_CREATED_AT); + team.setDeletedAt(TEAM_DELETED_AT); + team.setMeetings(TEAM_MEETINGS); + team.setCreator(TEAM_CREATOR); + return team; + } + + private CommunityEventEntity createCommunityEvent() { + return new CommunityEventEntity( + CE_ID, + CE_NAME, + CE_TOTAL_REQUIRED, + CE_CREATED_AT, + CE_FINISH_DATE, + CE_ACTIVITIES, + CE_BADGES, + CE_MEETINGS, + CE_CREATED_AT, + CE_FINISH_DATE, + CE_CREATED_AT, IMAGE); + } + + @Test + void testSettersAndGetters() { + MeetingEntity meeting = new MeetingEntity(); + meeting.setId(MEETING_ID); + meeting.setDate(MEETING_DATE); + meeting.setLocation(LOCATION); + meeting.setUsers(USERS); + meeting.setTeam(createTeam()); + meeting.setCommunityEvent(createCommunityEvent()); + assertEquals(MEETING_ID, meeting.getId()); + assertEquals(MEETING_DATE, meeting.getDate()); + assertEquals(LOCATION, meeting.getLocation()); + assertEquals(USERS, meeting.getUsers()); + assertEquals(createTeam().toString(), meeting.getTeam().toString()); + assertEquals(createCommunityEvent().toString(), meeting.getCommunityEvent().toString()); + } + + @Test + void testConstructorAndGetters() { + MeetingEntity meeting = new MeetingEntity( + MEETING_ID, + MEETING_DATE, + LOCATION, + USERS, + createTeam(), + createCommunityEvent()); + assertEquals(MEETING_ID, meeting.getId()); + assertEquals(MEETING_DATE, meeting.getDate()); + assertEquals(LOCATION, meeting.getLocation()); + assertEquals(USERS, meeting.getUsers()); + assertEquals(createTeam().toString(), meeting.getTeam().toString()); + assertEquals(createCommunityEvent().toString(), meeting.getCommunityEvent().toString()); + } + + @Test + void testEqualsAndHashCode() { + MeetingEntity meeting1 = new MeetingEntity(); + MeetingEntity meeting2 = new MeetingEntity(); + assertEquals(meeting1, meeting2); + meeting1.setId(MEETING_ID); + meeting2.setId(MEETING_ID); + assertEquals(meeting1, meeting2); + assertEquals(meeting1.hashCode(), meeting2.hashCode()); + meeting2.setId("M2"); + assertNotEquals(meeting1, meeting2); + assertNotEquals(meeting1.hashCode(), meeting2.hashCode()); + assertEquals(meeting1, meeting1); + assertNotEquals(meeting1, new Object()); + } + + @Test + void testToString() { + TeamEntity team = createTeam(); + CommunityEventEntity communityEvent = createCommunityEvent(); + MeetingEntity meeting = new MeetingEntity( + MEETING_ID, + MEETING_DATE, + LOCATION, + USERS, + team, + communityEvent); + String expected = "{" + + " id='" + MEETING_ID + "'" + + ", date='" + MEETING_DATE.toString() + "'" + + ", location='" + LOCATION + "'" + + ", users='" + USERS.toString() + "'" + + ", team='" + team.toString() + "'" + + ", communityEvent='" + communityEvent.toString() + "'" + + "}"; + assertEquals(expected, meeting.toString()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/post/domain/PostTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/post/domain/PostTest.java new file mode 100644 index 000000000..20b5ddc84 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/post/domain/PostTest.java @@ -0,0 +1,97 @@ +package es.iespuertodelacruz.routinefights.post.domain; +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.user.domain.User; + +import java.time.LocalDateTime; + + class PostTest { + + @Test + void testPostConstructorAndGetters() { + String id = "123"; + String image = "image.png"; + int streak = 5; + int pointsToAdd = 10; + LocalDateTime now = LocalDateTime.now(); + User user = new User(); + Activity activity = new Activity("activity1"); + Post test = new Post(id,user); + + assertEquals(id, test.getId()); + assertEquals(user, test.getUser()); + + Post post = new Post(id, image, streak, pointsToAdd, now, now, null, null, user, activity); + + assertEquals(id, post.getId()); + assertEquals(image, post.getImage()); + assertEquals(streak, post.getStreak()); + assertEquals(pointsToAdd, post.getPointsToAdd()); + assertEquals(now, post.getCreatedAt()); + assertEquals(now, post.getUpdatedAt()); + assertNull(post.getDeletedAt()); + assertNull(post.getFiledAt()); + assertEquals(user, post.getUser()); + assertEquals(activity, post.getActivity()); + } + + @Test + void testSetters() { + Post post = new Post(); + + String id = "123"; + String image = "image.png"; + int streak = 5; + int pointsToAdd = 10; + LocalDateTime now = LocalDateTime.now(); + User user = new User(); + Activity activity = new Activity(); + + post.setId(id); + post.setImage(image); + post.setStreak(streak); + post.setPointsToAdd(pointsToAdd); + post.setCreatedAt(now); + post.setUpdatedAt(now); + post.setDeletedAt(null); + post.setFiledAt(null); + post.setUser(user); + post.setActivity(activity); + + assertEquals(id, post.getId()); + assertEquals(image, post.getImage()); + assertEquals(streak, post.getStreak()); + assertEquals(pointsToAdd, post.getPointsToAdd()); + assertEquals(now, post.getCreatedAt()); + assertEquals(now, post.getUpdatedAt()); + assertNull(post.getDeletedAt()); + assertNull(post.getFiledAt()); + assertEquals(user, post.getUser()); + assertEquals(activity, post.getActivity()); + } + + @Test + void testEqualsAndHashCode() { + String id1 = "123"; + String id2 = "456"; + Post post1 = new Post(id1); + Post post2 = new Post(id1); + Post post3 = new Post(id2); + + assertEquals(post1, post2); + assertNotEquals(post1, post3); + + assertEquals(post1.hashCode(), post2.hashCode()); + assertNotEquals(post1.hashCode(), post3.hashCode()); + } + + @Test + void testToString() { + String id = "123"; + Post post = new Post(id); + + assertEquals("{ id='123'}", post.toString()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/post/domain/services/PostServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/post/domain/services/PostServiceTest.java new file mode 100644 index 000000000..372322308 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/post/domain/services/PostServiceTest.java @@ -0,0 +1,320 @@ +package es.iespuertodelacruz.routinefights.post.domain.services; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.activity.domain.ports.secondary.IActivityRepository; +import es.iespuertodelacruz.routinefights.post.domain.Post; +import es.iespuertodelacruz.routinefights.post.domain.ports.secondary.IPostRepository; +import es.iespuertodelacruz.routinefights.post.exceptions.UploadPostException; +import es.iespuertodelacruz.routinefights.user.domain.User; +import java.util.HashSet; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Set; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import es.iespuertodelacruz.routinefights.activity.commons.TimeRates; + +class PostServiceTest { + + private static final List EMPTY_LIST = Collections.emptyList(); + private static final String ACTIVITY1 = "activity1"; + private static final String ACTIVITY_NOT_FOUND_MSG = "Activity not found"; + private static final String USER_NOT_ON_ACTIVITY_MSG = "User is not on activity"; + private static final String ACTIVITY_COMPLETED_MSG = "You have already completed this activity"; + @Mock + private IPostRepository postRepository; + @Mock + private IActivityRepository activityRepository; + @InjectMocks + private PostService postService; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + } + + @Test + void testGetPagination() { + LocalDateTime lastDate = LocalDateTime.of(2025, 3, 15, 0, 0); + int limit = 10; + List expectedPosts = Arrays.asList(new Post(), new Post()); + Mockito.when(postRepository.getPagination(lastDate, limit)).thenReturn(expectedPosts); + List result = postService.getPagination(lastDate, limit); + assertSame(expectedPosts, result); + } + + @Test + void testUploadPost_ActivityNotFound() { + String activityID = ACTIVITY1; + User user = new User(); + user.setId("1L"); + Mockito.when(activityRepository.findById(activityID)).thenReturn(null); + UploadPostException ex = assertThrows(UploadPostException.class, + () -> postService.uploadPost("image.png", user, activityID)); + assertEquals(ACTIVITY_NOT_FOUND_MSG, ex.getMessage()); + } + + @Test + void testUploadPost_UserNotOnActivity() { + String activityID = ACTIVITY1; + User user = new User(); + user.setId("1L"); + Activity activity = new Activity(); + activity.setTimeRate(TimeRates.DAILY); + activity.setTimesRequiered(3); + Mockito.when(activityRepository.findById(activityID)).thenReturn(activity); + Mockito.when(activityRepository.userIsOnActivity(user.getId(), activityID)).thenReturn(false); + UploadPostException ex = assertThrows(UploadPostException.class, + () -> postService.uploadPost("image.png", user, activityID)); + assertEquals(USER_NOT_ON_ACTIVITY_MSG, ex.getMessage()); + } + + @Test + void testUploadPost_AlreadyCompleted() { + String activityID = ACTIVITY1; + User user = new User(); + user.setId("1L"); + Activity activity = new Activity(); + activity.setTimeRate(TimeRates.DAILY); + activity.setTimesRequiered(3); + Mockito.when(activityRepository.findById(activityID)).thenReturn(activity); + Mockito.when(activityRepository.userIsOnActivity(user.getId(), activityID)).thenReturn(true); + List actualPosts = new ArrayList<>(); + for (int i = 0; i < 3; i++) { + Post p = new Post(); + p.setStreak(i + 1); + actualPosts.add(p); + } + Mockito.when(postRepository.getRangeByActivity(eq(activityID), eq(user.getId()), any(), any())) + .thenReturn(actualPosts); + UploadPostException ex = assertThrows(UploadPostException.class, + () -> postService.uploadPost("image.png", user, activityID)); + assertEquals(ACTIVITY_COMPLETED_MSG, ex.getMessage()); + } + + @Test + void testUploadPost_ActualPeriodEmpty_LastPeriodComplete() { + String activityID = ACTIVITY1; + User user = new User(); + user.setId("1L"); + Activity activity = new Activity(); + activity.setTimeRate(TimeRates.DAILY); + activity.setTimesRequiered(3); + Mockito.when(activityRepository.findById(activityID)).thenReturn(activity); + Mockito.when(activityRepository.userIsOnActivity(user.getId(), activityID)).thenReturn(true); + List lastPeriodPosts = new ArrayList<>(); + Post p1 = new Post(); + p1.setStreak(3); + Post p2 = new Post(); + p2.setStreak(4); + Post p3 = new Post(); + p3.setStreak(5); + lastPeriodPosts.add(p1); + lastPeriodPosts.add(p2); + lastPeriodPosts.add(p3); + Mockito.when(postRepository.getRangeByActivity(eq(activityID), eq(user.getId()), any(), any())) + .thenReturn(EMPTY_LIST, lastPeriodPosts); + Mockito.when(postRepository.save(any(Post.class))) + .thenAnswer(invocation -> invocation.getArgument(0)); + Post result = postService.uploadPost("image.png", user, activityID); + assertNotNull(result); + assertEquals(6, result.getStreak()); + assertEquals(100 / activity.getTimesRequiered(), result.getPointsToAdd()); + } + + @Test + void testUploadPost_ActualPeriodEmpty_LastPeriodIncomplete() { + String activityID = ACTIVITY1; + User user = new User(); + user.setId("1L"); + Activity activity = new Activity(); + activity.setTimeRate(TimeRates.DAILY); + activity.setTimesRequiered(3); + Mockito.when(activityRepository.findById(activityID)).thenReturn(activity); + Mockito.when(activityRepository.userIsOnActivity(user.getId(), activityID)).thenReturn(true); + List lastPeriodPosts = new ArrayList<>(); + Post p1 = new Post(); + p1.setStreak(2); + lastPeriodPosts.add(p1); + Mockito.when(postRepository.getRangeByActivity(eq(activityID), eq(user.getId()), any(), any())) + .thenReturn(EMPTY_LIST, lastPeriodPosts); + Mockito.when(postRepository.save(any(Post.class))) + .thenAnswer(invocation -> invocation.getArgument(0)); + Post result = postService.uploadPost("image.png", user, activityID); + assertNotNull(result); + assertEquals(1, result.getStreak()); + assertEquals(100 / activity.getTimesRequiered(), result.getPointsToAdd()); + } + + @Test + void testUploadPost_ActualPeriodNotEmpty() { + String activityID = ACTIVITY1; + User user = new User(); + user.setId("1L"); + Activity activity = new Activity(); + activity.setTimeRate(TimeRates.DAILY); + activity.setTimesRequiered(3); + Mockito.when(activityRepository.findById(activityID)).thenReturn(activity); + Mockito.when(activityRepository.userIsOnActivity(user.getId(), activityID)).thenReturn(true); + List actualPosts = new ArrayList<>(); + Post p = new Post(); + p.setStreak(4); + actualPosts.add(p); + Mockito.when(postRepository.getRangeByActivity(eq(activityID), eq(user.getId()), any(), any())) + .thenReturn(actualPosts); + Mockito.when(postRepository.save(any(Post.class))) + .thenAnswer(invocation -> invocation.getArgument(0)); + Post result = postService.uploadPost("image.png", user, activityID); + assertNotNull(result); + assertEquals(4, result.getStreak()); + assertEquals(100 / activity.getTimesRequiered(), result.getPointsToAdd()); + } + + @Test + void testUploadPost_PointsToAddWeekly() { + String activityID = "activityWeekly"; + User user = new User(); + user.setId("1L"); + Activity activity = new Activity(); + activity.setTimeRate(TimeRates.WEEKLY); + activity.setTimesRequiered(3); + Mockito.when(activityRepository.findById(activityID)).thenReturn(activity); + Mockito.when(activityRepository.userIsOnActivity(user.getId(), activityID)).thenReturn(true); + Mockito.when(postRepository.getRangeByActivity(eq(activityID), eq(user.getId()), any(), any())) + .thenReturn(EMPTY_LIST, EMPTY_LIST); + Mockito.when(postRepository.save(any(Post.class))) + .thenAnswer(invocation -> invocation.getArgument(0)); + Post result = postService.uploadPost("imageWeekly.png", user, activityID); + assertNotNull(result); + assertEquals(1, result.getStreak()); + assertEquals(700 / activity.getTimesRequiered(), result.getPointsToAdd()); + } + + @Test + void testUploadPost_PointsToAddMonthly() { + String activityID = "activityMonthly"; + User user = new User(); + user.setId("1L"); + Activity activity = new Activity(); + activity.setTimeRate(TimeRates.MONTHLY); + activity.setTimesRequiered(3); + Mockito.when(activityRepository.findById(activityID)).thenReturn(activity); + Mockito.when(activityRepository.userIsOnActivity(user.getId(), activityID)).thenReturn(true); + Mockito.when(postRepository.getRangeByActivity(eq(activityID), eq(user.getId()), any(), any())) + .thenReturn(EMPTY_LIST, EMPTY_LIST); + Mockito.when(postRepository.save(any(Post.class))) + + .thenAnswer(invocation -> invocation.getArgument(0)); + Post result = postService.uploadPost("imageMonthly.png", user, activityID); + assertNotNull(result); + assertEquals(1, result.getStreak()); + assertEquals(3000 / activity.getTimesRequiered(), result.getPointsToAdd()); + } + + @Test + void testUploadPost_PointsToAddYearly() { + String activityID = "activityYearly"; + User user = new User(); + user.setId("1L"); + Activity activity = new Activity(); + activity.setTimeRate(TimeRates.YEARLY); + activity.setTimesRequiered(3); + Mockito.when(activityRepository.findById(activityID)).thenReturn(activity); + Mockito.when(activityRepository.userIsOnActivity(user.getId(), activityID)).thenReturn(true); + Mockito.when(postRepository.getRangeByActivity(eq(activityID), eq(user.getId()), any(), any())) + .thenReturn(EMPTY_LIST, EMPTY_LIST); + Mockito.when(postRepository.save(any(Post.class))) + .thenAnswer(invocation -> invocation.getArgument(0)); + Post result = postService.uploadPost("imageYearly.png", user, activityID); + assertNotNull(result); + assertEquals(1, result.getStreak()); + assertEquals(36500 / activity.getTimesRequiered(), result.getPointsToAdd()); + } + + @Test + void testUploadPost_InvalidTimeRate() { + String activityID = "activityInvalidTimeRate"; + User user = new User(); + user.setId("1L"); + Activity activity = new Activity(); + activity.setTimeRate("PEPE"); + activity.setTimesRequiered(3); + Mockito.when(activityRepository.findById(activityID)).thenReturn(activity); + Mockito.when(activityRepository.userIsOnActivity(user.getId(), activityID)).thenReturn(true); + Mockito.when(postRepository.getRangeByActivity(eq(activityID), eq(user.getId()), any(), any())) + .thenReturn(EMPTY_LIST, EMPTY_LIST); + Mockito.when(postRepository.save(any(Post.class))) + .thenAnswer(invocation -> invocation.getArgument(0)); + UploadPostException ex = assertThrows(UploadPostException.class, + () -> postService.uploadPost("imageInvalidTimeRate.png", user, activityID)); + assertEquals("Invalid time rate", ex.getMessage()); + } + + @Test + void testGetPaginationByUser() { + LocalDateTime lastDate = LocalDateTime.of(2025, 3, 15, 0, 0); + int limit = 10; + String userID = "1L"; + List expectedPosts = Arrays.asList(new Post(), new Post()); + Mockito.when(postRepository.getPaginationByUser(lastDate, limit, userID)).thenReturn(expectedPosts); + List result = postService.getPaginationByUser(lastDate, limit, userID); + assertEquals(expectedPosts, result); + } + + @Test + void testGetPaginationByActivity() { + LocalDateTime lastDate = LocalDateTime.of(2025, 3, 15, 0, 0); + int limit = 10; + String activityID = "1L"; + List expectedPosts = Arrays.asList(new Post(), new Post()); + Mockito.when(postRepository.getPaginationByActivity(lastDate, limit, activityID)) + .thenReturn(expectedPosts); + List result = postService.getPaginationByActivity(lastDate, limit, activityID); + assertEquals(expectedPosts, result); + } + + @Test + void testGetPaginationFollowing() { + LocalDateTime lastDate = LocalDateTime.of(2025, 3, 15, 0, 0); + int limit = 10; + String userID = "1L"; + List expectedPosts = Arrays.asList(new Post(), new Post()); + Mockito.when(postRepository.getPaginationFollowing(lastDate, limit, userID)).thenReturn(expectedPosts); + List result = postService.getPaginationFollowing(lastDate, limit, userID); + assertEquals(expectedPosts, result); + } + + @Test + void testGetPaginationSubscribedAcitivites() { + LocalDateTime lastDate = LocalDateTime.of(2025, 3, 15, 0, 0); + int limit = 10; + String userID = "1L"; + List expectedPosts = Arrays.asList(new Post(), new Post()); + Mockito.when(postRepository.getPaginationSubscribedActivities(lastDate, limit, userID)) + .thenReturn(expectedPosts); + List result = postService.getPaginationSubscribedActivities(lastDate, limit, userID); + assertEquals(expectedPosts, result); + } + + @Test + void testFindAllImages() { + Set expectedImages = new HashSet<>(Arrays.asList("image1", "image2")); + Mockito.when(postRepository.findAllImages()).thenReturn(expectedImages); + Set result = postService.findAllImages(); + assertEquals(expectedImages, result); + } + +} \ No newline at end of file diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/mappers/PostOutputV2MapperTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/mappers/PostOutputV2MapperTest.java new file mode 100644 index 000000000..87d25cad2 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/mappers/PostOutputV2MapperTest.java @@ -0,0 +1,113 @@ +package es.iespuertodelacruz.routinefights.post.infrastructure.adapters.primary.mappers; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.when; + +import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.List; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.bean.override.mockito.MockitoBean; + +import es.iespuertodelacruz.routinefights.comment.domain.Comment; +import es.iespuertodelacruz.routinefights.post.domain.Post; +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.primary.v2.dtos.PostOutputDTOV2; +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.primary.v2.mappers.PostOutputV2Mapper; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos.UserOutputDTOV2; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.mappers.UserOutputV2Mapper; + + +@SpringBootTest + class PostOutputV2MapperTest { + + private static final String CONSTANT_ID = "test-id"; + private static final String CONSTANT_IMAGE = "test-image.png"; + private static final int CONSTANT_STREAK = 10; + private static final LocalDateTime CONSTANT_FILED_AT = LocalDateTime.of(2025, 3, 16, 10, 0); + private static final LocalDateTime CONSTANT_CREATED_AT = LocalDateTime.of(2025, 3, 16, 9, 0); + private static final List CONSTANT_COMMENTS = Arrays.asList(new Comment(), new Comment()); + private static final List CONSTANT_LIKED_BY = Arrays.asList(new User(), new User()); + + + @Autowired + private PostOutputV2Mapper postOutputV2Mapper; + + @MockitoBean + private UserOutputV2Mapper userOutputV2Mapper; + + @Test + void testToDto() { + User dummyUser = new User(); + dummyUser.setUsername("Test User"); + + UserOutputDTOV2 expectedUserDto = new UserOutputDTOV2(null, "Test User", null, null, null, null, null, 0, 0, false); + when(userOutputV2Mapper.toOutputDTOV2(dummyUser)).thenReturn(expectedUserDto); + + Post post = new Post(); + post.setId(CONSTANT_ID); + post.setImage(CONSTANT_IMAGE); + post.setStreak(CONSTANT_STREAK); + post.setFiledAt(CONSTANT_FILED_AT); + post.setCreatedAt(CONSTANT_CREATED_AT); + post.setUser(dummyUser); + post.setComments(CONSTANT_COMMENTS); + post.setLikedBy(CONSTANT_LIKED_BY); + + PostOutputDTOV2 result = postOutputV2Mapper.toDto(post); + + assertNotNull(result); + assertEquals(CONSTANT_ID, result.id()); + assertEquals(CONSTANT_IMAGE, result.image()); + assertEquals(CONSTANT_STREAK, result.streak()); + assertEquals(CONSTANT_FILED_AT, result.filedAt()); + assertEquals(CONSTANT_CREATED_AT, result.createdAt()); + assertEquals(expectedUserDto, result.user()); + } + + @Test + void testToDtoList() { + User dummyUser = new User(); + dummyUser.setUsername("Test User"); + + UserOutputDTOV2 expectedUserDto = new UserOutputDTOV2(null, "Test User", null, null, null, null, null, 0, 0, false); + + when(userOutputV2Mapper.toOutputDTOV2(dummyUser)).thenReturn(expectedUserDto); + + Post post = new Post(); + post.setId(CONSTANT_ID); + post.setImage(CONSTANT_IMAGE); + post.setStreak(CONSTANT_STREAK); + post.setFiledAt(CONSTANT_FILED_AT); + post.setCreatedAt(CONSTANT_CREATED_AT); + post.setUser(dummyUser); + post.setComments(CONSTANT_COMMENTS); + post.setLikedBy(CONSTANT_LIKED_BY); + + List posts = Arrays.asList(post); + List resultList = postOutputV2Mapper.toDto(posts); + + assertNotNull(resultList); + assertEquals(1, resultList.size()); + PostOutputDTOV2 result = resultList.get(0); + assertEquals(CONSTANT_ID, result.id()); + assertEquals(CONSTANT_IMAGE, result.image()); + assertEquals(CONSTANT_STREAK, result.streak()); + assertEquals(CONSTANT_FILED_AT, result.filedAt()); + assertEquals(CONSTANT_CREATED_AT, result.createdAt()); + assertEquals(expectedUserDto, result.user()); + } + + @Test + void testNullPost() { + assertNull(postOutputV2Mapper.toDto((Post) null)); + } + + @Test + void testNullPostsList() { + assertNull(postOutputV2Mapper.toDto((List) null)); + } +} \ No newline at end of file diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/v2/controllers/PostControllerV2Test.java b/API/src/test/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/v2/controllers/PostControllerV2Test.java new file mode 100644 index 000000000..059391fdd --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/primary/v2/controllers/PostControllerV2Test.java @@ -0,0 +1,169 @@ +package es.iespuertodelacruz.routinefights.post.infrastructure.adapters.primary.v2.controllers; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.when; + +import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.List; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.bean.override.mockito.MockitoBean; + +import es.iespuertodelacruz.routinefights.post.domain.Post; +import es.iespuertodelacruz.routinefights.post.domain.ports.primary.IPostService; +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.primary.v2.dtos.PostOutputDTOV2; +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.primary.v2.mappers.PostOutputV2Mapper; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.ports.primary.IUserService; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK, classes = PostControllerV2.class) +class PostControllerV2Test { + + private static final String DUMMY_EMAIL = "dummy@example.com"; + private static final String IMAGE = "dummyImage"; + private static final String ACTIVITY_ID = "activity1"; + private static final String USER_ID = "user1"; + private static final String LAST_DATE_STRING = "2025-04-01T00:00:00"; + private static final int LIMIT = 10; + + @MockitoBean + private IPostService postService; + + @MockitoBean + private PostOutputV2Mapper postOutputV2Mapper; + + @MockitoBean + private IUserService userService; + + @Autowired + private PostControllerV2 postController; + + @AfterEach + void tearDown() { + SecurityContextHolder.clearContext(); + } + + @Test + void testGetPaginationOK() { + User user = new User(); + user.setId(USER_ID); + SecurityContextHolder.getContext() + .setAuthentication(new UsernamePasswordAuthenticationToken(DUMMY_EMAIL, null)); + LocalDateTime date = LocalDateTime.parse(LAST_DATE_STRING); + Post post = new Post(); + List posts = Arrays.asList(post); + PostOutputDTOV2 dto = new PostOutputDTOV2(ACTIVITY_ID, IMAGE, null, null, null, null, null, null, null,null); + + List dtoList = Arrays.asList(dto); + when(userService.findByEmailOnlyBase(DUMMY_EMAIL)).thenReturn(user); + when(postService.getPagination(date, LIMIT)).thenReturn(posts); + when(postOutputV2Mapper.toDto(posts,user)).thenReturn(dtoList); + + List response = postController.getPagination(LAST_DATE_STRING, LIMIT); + assertEquals(dtoList, response); + } + + @Test + void testUploadPostOK() { + SecurityContextHolder.getContext() + .setAuthentication(new UsernamePasswordAuthenticationToken(DUMMY_EMAIL, null)); + User user = new User(); + user.setId(USER_ID); + Post post = new Post(); + PostOutputDTOV2 dto = new PostOutputDTOV2(ACTIVITY_ID, IMAGE, null, null, null, null, null, null, null,null); + + when(userService.findByEmailOnlyBase(DUMMY_EMAIL)).thenReturn(user); + when(postService.uploadPost(IMAGE, user, ACTIVITY_ID)).thenReturn(post); + when(postOutputV2Mapper.toDto(post)).thenReturn(dto); + + PostOutputDTOV2 response = postController.uploadPost(IMAGE, ACTIVITY_ID); + assertEquals(dto, response); + } + + @Test + void testGetPaginationByUserOK() { + User user = new User(); + user.setId(USER_ID); + SecurityContextHolder.getContext() + .setAuthentication(new UsernamePasswordAuthenticationToken(DUMMY_EMAIL, null)); + LocalDateTime date = LocalDateTime.parse(LAST_DATE_STRING); + Post post = new Post(); + List posts = Arrays.asList(post); + PostOutputDTOV2 dto = new PostOutputDTOV2(ACTIVITY_ID, IMAGE, null, date, date, null, null, null, null,null); + + List dtoList = Arrays.asList(dto); + when(userService.findByEmailOnlyBase(anyString())).thenReturn(user); + when(postService.getPaginationByUser(date, LIMIT, USER_ID)).thenReturn(posts); + when(postOutputV2Mapper.toDto(posts,user)).thenReturn(dtoList); + + List response = postController.getPaginationByUser(LAST_DATE_STRING, LIMIT, USER_ID); + assertEquals(dtoList, response); + } + + @Test + void testGetPaginationByActivityOK() { + User user = new User(); + user.setId(USER_ID); + SecurityContextHolder.getContext() + .setAuthentication(new UsernamePasswordAuthenticationToken(DUMMY_EMAIL, null)); + LocalDateTime date = LocalDateTime.parse(LAST_DATE_STRING); + Post post = new Post(); + List posts = Arrays.asList(post); + PostOutputDTOV2 dto = new PostOutputDTOV2(ACTIVITY_ID, IMAGE, null, date, date, null, null, null, null,null); + + List dtoList = Arrays.asList(dto); + when(userService.findByEmailOnlyBase(anyString())).thenReturn(user); + when(postService.getPaginationByActivity(date, LIMIT, ACTIVITY_ID)).thenReturn(posts); + when(postOutputV2Mapper.toDto(posts,user)).thenReturn(dtoList); + + List response = postController.getPaginationByActivity(LAST_DATE_STRING, LIMIT, ACTIVITY_ID); + assertEquals(dtoList, response); + } + + @Test + void testGetPaginationFollowingOK() { + SecurityContextHolder.getContext() + .setAuthentication(new UsernamePasswordAuthenticationToken(DUMMY_EMAIL, null)); + User user = new User(); + user.setId(USER_ID); + LocalDateTime date = LocalDateTime.parse(LAST_DATE_STRING); + Post post = new Post(); + List posts = Arrays.asList(post); + PostOutputDTOV2 dto = new PostOutputDTOV2(ACTIVITY_ID, IMAGE, null, date, date, null, null, null, null,null); + List dtoList = Arrays.asList(dto); + + when(userService.findByEmailOnlyBase(DUMMY_EMAIL)).thenReturn(user); + when(postService.getPaginationFollowing(date, LIMIT, USER_ID)).thenReturn(posts); + when(postOutputV2Mapper.toDto(posts,user)).thenReturn(dtoList); + + List response = postController.getPaginationFollowing(LAST_DATE_STRING, LIMIT); + assertEquals(dtoList, response); + } + + @Test + void testGetPaginationSubscribedActivitiesOK() { + SecurityContextHolder.getContext() + .setAuthentication(new UsernamePasswordAuthenticationToken(DUMMY_EMAIL, null)); + User user = new User(); + user.setId(USER_ID); + LocalDateTime date = LocalDateTime.parse(LAST_DATE_STRING); + Post post = new Post(); + List posts = Arrays.asList(post); + PostOutputDTOV2 dto = new PostOutputDTOV2(ACTIVITY_ID, IMAGE, null, date, date, null, null, null, null,null); + List dtoList = Arrays.asList(dto); + + when(userService.findByEmailOnlyBase(anyString())).thenReturn(user); + when(postService.getPaginationSubscribedActivities(date, LIMIT, USER_ID)).thenReturn(posts); + when(postOutputV2Mapper.toDto(posts, user)).thenReturn(dtoList); + + List response = postController.getPaginationSubscribedActivities(LAST_DATE_STRING, LIMIT); + assertEquals(dtoList, response); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/entities/PostEntityTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/entities/PostEntityTest.java new file mode 100644 index 000000000..fbfe2d615 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/entities/PostEntityTest.java @@ -0,0 +1,126 @@ +package es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.entities; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.time.LocalDateTime; +import java.util.ArrayList; + +import org.junit.jupiter.api.Test; + +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities.ActivityEntity; +import es.iespuertodelacruz.routinefights.comment.infrastructure.adapters.secondary.entities.CommentEntity; +import es.iespuertodelacruz.routinefights.report.infrastructure.adapters.secondary.entities.ReportEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; + +import java.util.List; + +class PostEntityTest { + + private static final String ID_1 = "1"; + private static final String ID_2 = "2"; + private static final String IMAGE = "http://example.com/image.png"; + private static final Integer STREAK = 5; + private static final Integer POINTS = 10; + private static final LocalDateTime FILED_AT = LocalDateTime.of(2023, 1, 1, 12, 0); + private static final LocalDateTime CREATED_AT = LocalDateTime.of(2023, 1, 2, 12, 0); + private static final LocalDateTime UPDATED_AT = LocalDateTime.of(2023, 1, 3, 12, 0); + private static final LocalDateTime DELETED_AT = LocalDateTime.of(2023, 1, 4, 12, 0); + + @Test + void testSettersAndGetters() { + PostEntity post = new PostEntity(); + post.setId(ID_1); + post.setImage(IMAGE); + post.setStreak(STREAK); + post.setPointsToAdd(POINTS); + post.setFiledAt(FILED_AT); + List comments = new ArrayList<>(); + post.setComments(comments); + List reports = new ArrayList<>(); + post.setReports(reports); + UserEntity user = new UserEntity(); + post.setUser(user); + ActivityEntity activity = new ActivityEntity(); + post.setActivity(activity); + List likedBy = new ArrayList<>(); + post.setLikedBy(likedBy); + assertEquals(ID_1, post.getId()); + assertEquals(IMAGE, post.getImage()); + assertEquals(STREAK, post.getStreak()); + assertEquals(POINTS, post.getPointsToAdd()); + assertEquals(FILED_AT, post.getFiledAt()); + assertEquals(comments, post.getComments()); + assertEquals(reports, post.getReports()); + assertEquals(user, post.getUser()); + assertEquals(activity, post.getActivity()); + assertEquals(likedBy, post.getLikedBy()); + } + + @Test + void testConstructorAndGetters() { + List comments = new ArrayList<>(); + List reports = new ArrayList<>(); + List likedBy = new ArrayList<>(); + UserEntity user = new UserEntity(); + ActivityEntity activity = new ActivityEntity(); + PostEntity post = new PostEntity(ID_1, IMAGE, STREAK, POINTS, CREATED_AT, UPDATED_AT, DELETED_AT, FILED_AT, + comments, reports, user, activity, likedBy); + assertEquals(ID_1, post.getId()); + assertEquals(IMAGE, post.getImage()); + assertEquals(STREAK, post.getStreak()); + assertEquals(POINTS, post.getPointsToAdd()); + assertEquals(FILED_AT, post.getFiledAt()); + assertEquals(comments, post.getComments()); + assertEquals(reports, post.getReports()); + assertEquals(user, post.getUser()); + assertEquals(activity, post.getActivity()); + assertEquals(likedBy, post.getLikedBy()); + assertEquals(CREATED_AT, post.getCreatedAt()); + assertEquals(UPDATED_AT, post.getUpdatedAt()); + assertEquals(DELETED_AT, post.getDeletedAt()); + } + + @Test + void testEqualsAndHashCode() { + PostEntity post1 = new PostEntity(); + PostEntity post2 = new PostEntity(); + assertEquals(post1, post2); + post1.setId(ID_1); + post2.setId(ID_1); + assertEquals(post1, post2); + assertEquals(post1.hashCode(), post2.hashCode()); + post2.setId(ID_2); + assertNotEquals(post1, post2); + } + + @Test + void testToString() { + PostEntity post = new PostEntity(); + post.setId(ID_1); + post.setImage(IMAGE); + post.setStreak(STREAK); + post.setPointsToAdd(POINTS); + post.setFiledAt(FILED_AT); + String str = post.toString(); + assertTrue(str.contains(ID_1)); + assertTrue(str.contains(IMAGE)); + assertTrue(str.contains(STREAK.toString())); + assertTrue(str.contains(POINTS.toString())); + assertTrue(str.contains(FILED_AT.toString())); + } + + @Test + void equalsToThis() { + PostEntity post = new PostEntity(); + assertEquals(post, post); + } + + @Test + void equalsNotPost() { + PostEntity post = new PostEntity(); + assertNotEquals(post, new Object()); + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/mappers/PostEntityMapperTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/mappers/PostEntityMapperTest.java new file mode 100644 index 000000000..90e3f1c56 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/post/infrastructure/adapters/secondary/mappers/PostEntityMapperTest.java @@ -0,0 +1,284 @@ +package es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.mappers; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import es.iespuertodelacruz.routinefights.activity.domain.Activity; +import es.iespuertodelacruz.routinefights.activity.infrastructure.adapters.secondary.entities.ActivityEntity; +import es.iespuertodelacruz.routinefights.comment.domain.Comment; +import es.iespuertodelacruz.routinefights.post.domain.Post; +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.entities.PostEntity; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; +@SpringBootTest +class PostEntityMapperTest { + + private static final String MAIN_USER_ID = "1L"; + private static final String MAIN_USERNAME = "testUser"; + private static final String MAIN_EMAIL = "test@example.com"; + private static final String MAIN_PASSWORD = "password"; + private static final String MAIN_NATIONALITY = "Testland"; + private static final String MAIN_PHONE_NUMBER = "1234567890"; + private static final String MAIN_USER_IMAGE = "userImage"; + private static final String MAIN_ROLE = "USER"; + private static final boolean MAIN_VERIFIED = true; + private static final String MAIN_VERIFICATION_TOKEN = "token123"; + private static final String FOLLOWER_USER_ID = "2L"; + private static final String FOLLOWER_USERNAME = "followerUser"; + private static final String FOLLOWING_USER_ID = "3L"; + private static final String FOLLOWING_USERNAME = "followingUser"; + private static final String PARTICIPANT_USER_ID = "4L"; + private static final String PARTICIPANT_USERNAME = "participantUser"; + private static final String ACTIVITY_ID = "10L"; + private static final String ACTIVITY_NAME = "Test Activity"; + private static final String ACTIVITY_DESCRIPTION = "Activity Description"; + private static final String ACTIVITY_IMAGE = "activityImage"; + private static final String ACTIVITY_TIME_RATE = "daily"; + private static final int ACTIVITY_TIMES_REQUIRED = 3; + private static final String POST_ID = "100L"; + private static final String POST_IMAGE = "postImage"; + private static final int POST_STREAK = 2; + private static final int POST_POINTS_TO_ADD = 10; + private static final String POST2_ID = "101L"; + + private final LocalDateTime now = LocalDateTime.now(); + @Autowired + private PostEntityMapper mapper; + + private User createUser() { + User user = new User(); + user.setId(MAIN_USER_ID); + user.setUsername(MAIN_USERNAME); + user.setEmail(MAIN_EMAIL); + user.setPassword(MAIN_PASSWORD); + user.setNationality(MAIN_NATIONALITY); + user.setPhoneNumber(MAIN_PHONE_NUMBER); + user.setImage(MAIN_USER_IMAGE); + user.setRole(MAIN_ROLE); + user.setVerified(MAIN_VERIFIED); + user.setVerificationToken(MAIN_VERIFICATION_TOKEN); + user.setCreatedAt(now); + user.setUpdatedAt(now); + user.setDeletedAt(null); + user.setFollowers(new ArrayList<>()); + user.setFollowing(new ArrayList<>()); + return user; + } + + private Activity createActivity() { + Activity activity = new Activity(); + activity.setId(ACTIVITY_ID); + activity.setName(ACTIVITY_NAME); + activity.setDescription(ACTIVITY_DESCRIPTION); + activity.setImage(ACTIVITY_IMAGE); + activity.setTimeRate(ACTIVITY_TIME_RATE); + activity.setTimesRequiered(ACTIVITY_TIMES_REQUIRED); + activity.setCreatedAt(now); + activity.setUpdatedAt(now); + activity.setDeletedAt(null); + activity.participants(new ArrayList<>()); + activity.setCreator(createUser()); + return activity; + } + + private Post createPost() { + Post post = new Post(); + post.id(POST_ID); + post.setCreatedAt(now); + post.setUpdatedAt(now); + post.setDeletedAt(null); + post.setImage(POST_IMAGE); + post.setStreak(POST_STREAK); + post.setPointsToAdd(POST_POINTS_TO_ADD); + post.setFiledAt(now); + post.user(createUser()); + post.setActivity(createActivity()); + post.setComments(List.of(new Comment())); + post.setLikedBy(List.of(new User())); + return post; + } + + @Test + void testToEntityNullInputs() { + assertNull(mapper.toEntity((Post) null)); + assertNull(mapper.toEntity((List) null)); + } + + @Test + void testToDomainNullInputs() { + assertNull(mapper.toDomain((PostEntity) null)); + assertNull(mapper.toDomain((List) null)); + } + + @Test + void testPostMapping() { + Post post = createPost(); + PostEntity entity = mapper.toEntity(post); + assertNotNull(entity); + assertEquals(post.getId(), entity.getId()); + assertEquals(post.getCreatedAt(), entity.getCreatedAt()); + assertEquals(post.getUpdatedAt(), entity.getUpdatedAt()); + assertEquals(post.getImage(), entity.getImage()); + assertEquals(post.getStreak(), entity.getStreak()); + assertEquals(post.getPointsToAdd(), entity.getPointsToAdd()); + assertEquals(post.getFiledAt(), entity.getFiledAt()); + assertNotNull(entity.getUser()); + assertEquals(post.getUser().getId(), entity.getUser().getId()); + assertEquals(post.getUser().getUsername(), entity.getUser().getUsername()); + assertNotNull(entity.getActivity()); + assertEquals(post.getActivity().getId(), entity.getActivity().getId()); + } + + @Test + void testPostEntityMapping() { + UserEntity userEntity = new UserEntity(); + userEntity.setId(MAIN_USER_ID); + userEntity.setUsername(MAIN_USERNAME); + userEntity.setEmail(MAIN_EMAIL); + userEntity.setPassword(MAIN_PASSWORD); + userEntity.setNationality(MAIN_NATIONALITY); + userEntity.setPhoneNumber(MAIN_PHONE_NUMBER); + userEntity.setImage(MAIN_USER_IMAGE); + userEntity.setRole(MAIN_ROLE); + userEntity.setVerified(MAIN_VERIFIED); + userEntity.setVerificationToken(MAIN_VERIFICATION_TOKEN); + userEntity.setCreatedAt(now); + userEntity.setUpdatedAt(now); + userEntity.setDeletedAt(null); + userEntity.setFollowers(new ArrayList<>()); + userEntity.setFollowing(new ArrayList<>()); + userEntity.setPosts(new ArrayList<>()); + userEntity.setActivities(new ArrayList<>()); + userEntity.setComments(new ArrayList<>()); + + ActivityEntity activityEntity = new ActivityEntity(); + activityEntity.setId(ACTIVITY_ID); + activityEntity.setName(ACTIVITY_NAME); + activityEntity.setDescription(ACTIVITY_DESCRIPTION); + activityEntity.setImage(ACTIVITY_IMAGE); + activityEntity.setTimeRate(ACTIVITY_TIME_RATE); + activityEntity.setTimesRequiered(ACTIVITY_TIMES_REQUIRED); + activityEntity.setCreatedAt(now); + activityEntity.setUpdatedAt(now); + activityEntity.setDeletedAt(null); + activityEntity.setParticipants(new ArrayList<>()); + activityEntity.setCreator(userEntity); + + PostEntity postEntity = new PostEntity(); + postEntity.setId(POST_ID); + postEntity.setCreatedAt(now); + postEntity.setUpdatedAt(now); + postEntity.setDeletedAt(null); + postEntity.setImage(POST_IMAGE); + postEntity.setStreak(POST_STREAK); + postEntity.setPointsToAdd(POST_POINTS_TO_ADD); + postEntity.setFiledAt(now); + postEntity.setUser(userEntity); + postEntity.setActivity(activityEntity); + postEntity.setComments(new ArrayList<>()); + + Post post = mapper.toDomain(postEntity); + assertNotNull(post); + assertEquals(postEntity.getId(), post.getId()); + assertEquals(postEntity.getCreatedAt(), post.getCreatedAt()); + assertEquals(postEntity.getUpdatedAt(), post.getUpdatedAt()); + assertEquals(postEntity.getImage(), post.getImage()); + assertEquals(postEntity.getStreak(), post.getStreak()); + assertEquals(postEntity.getPointsToAdd(), post.getPointsToAdd()); + assertEquals(postEntity.getFiledAt(), post.getFiledAt()); + assertNotNull(post.getUser()); + assertEquals(postEntity.getUser().getId(), post.getUser().getId()); + assertEquals(postEntity.getUser().getUsername(), post.getUser().getUsername()); + assertNotNull(post.getActivity()); + assertEquals(postEntity.getActivity().getId(), post.getActivity().getId()); + } + + @Test + void testListMapping() { + Post post1 = createPost(); + Post post2 = createPost(); + post2.id(POST2_ID); + List posts = Arrays.asList(post1, post2); + List entities = mapper.toEntity(posts); + assertNotNull(entities); + assertEquals(2, entities.size()); + assertEquals(post1.getId(), entities.get(0).getId()); + assertEquals(post2.getId(), entities.get(1).getId()); + List postsMappedBack = mapper.toDomain(entities); + assertNotNull(postsMappedBack); + assertEquals(2, postsMappedBack.size()); + assertEquals(entities.get(0).getId(), postsMappedBack.get(0).getId()); + assertEquals(entities.get(1).getId(), postsMappedBack.get(1).getId()); + } + + @Test + void testUserMappingWithFollowersAndFollowing() { + User user = createUser(); + User follower = new User(); + follower.setId(FOLLOWER_USER_ID); + follower.setUsername(FOLLOWER_USERNAME); + follower.setCreatedAt(now); + follower.setUpdatedAt(now); + follower.setDeletedAt(null); + follower.setFollowers(new ArrayList<>()); + follower.setFollowing(new ArrayList<>()); + User following = new User(); + following.setId(FOLLOWING_USER_ID); + following.setUsername(FOLLOWING_USERNAME); + following.setCreatedAt(now); + following.setUpdatedAt(now); + following.setDeletedAt(null); + following.setFollowers(new ArrayList<>()); + following.setFollowing(new ArrayList<>()); + user.setFollowers(Arrays.asList(follower)); + user.setFollowing(Arrays.asList(following)); + Post post = createPost(); + post.user(user); + PostEntity entity = mapper.toEntity(post); + UserEntity userEntity = entity.getUser(); + assertNotNull(userEntity.getFollowers()); + assertNotNull(userEntity.getFollowing()); + assertEquals(1, userEntity.getFollowers().size()); + assertEquals(1, userEntity.getFollowing().size()); + assertEquals(FOLLOWER_USER_ID, userEntity.getFollowers().get(0).getId()); + assertEquals(FOLLOWING_USER_ID, userEntity.getFollowing().get(0).getId()); + } + + @Test + void testActivityMappingWithParticipants() { + Activity activity = createActivity(); + User participant = createUser(); + participant.setId(PARTICIPANT_USER_ID); + participant.setUsername(PARTICIPANT_USERNAME); + activity.participants(Arrays.asList(participant)); + Post post = createPost(); + post.setActivity(activity); + PostEntity entity = mapper.toEntity(post); + ActivityEntity activityEntity = entity.getActivity(); + assertNotNull(activityEntity.getParticipants()); + assertEquals(1, activityEntity.getParticipants().size()); + assertEquals(PARTICIPANT_USER_ID, activityEntity.getParticipants().get(0).getId()); + } + + @Test + void testPostMappingWithNullNestedObjects() { + Post post = createPost(); + post.user(null); + PostEntity entity = mapper.toEntity(post); + assertNull(entity.getUser()); + post = createPost(); + post.setActivity(null); + entity = mapper.toEntity(post); + assertNull(entity.getActivity()); + } +} \ No newline at end of file diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/report/infrastructure/adapters/secondary/entities/ReportEntityTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/report/infrastructure/adapters/secondary/entities/ReportEntityTest.java new file mode 100644 index 000000000..d37a3ef44 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/report/infrastructure/adapters/secondary/entities/ReportEntityTest.java @@ -0,0 +1,91 @@ +package es.iespuertodelacruz.routinefights.report.infrastructure.adapters.secondary.entities; + +import org.junit.jupiter.api.Test; + +import es.iespuertodelacruz.routinefights.post.infrastructure.adapters.secondary.entities.PostEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; + +import java.time.LocalDateTime; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; + +class ReportEntityTest { + + private static final String REPORT_ID_1 = "R1"; + private static final String REPORT_ID_2 = "R2"; + private static final String MESSAGE = "Test report message"; + private static final LocalDateTime CREATED_AT = LocalDateTime.of(2023, 5, 1, 12, 0); + + private UserEntity createDummyUser() { + UserEntity user = new UserEntity(); + user.setId("U1"); + return user; + } + + private PostEntity createDummyPost() { + PostEntity post = new PostEntity(); + post.setId("P1"); + return post; + } + + @Test + void testSettersAndGetters() { + ReportEntity report = new ReportEntity(); + report.setId(REPORT_ID_1); + report.setMessage(MESSAGE); + report.setCreatedAt(CREATED_AT); + UserEntity user = createDummyUser(); + report.setUser(user); + PostEntity post = createDummyPost(); + report.setPost(post); + + assertEquals(REPORT_ID_1, report.getId()); + assertEquals(MESSAGE, report.getMessage()); + assertEquals(CREATED_AT, report.getCreatedAt()); + assertEquals(user.toString(), report.getUser().toString()); + assertEquals(post.toString(), report.getPost().toString()); + } + + @Test + void testConstructorAndGetters() { + UserEntity user = createDummyUser(); + PostEntity post = createDummyPost(); + ReportEntity report = new ReportEntity(REPORT_ID_1, MESSAGE, CREATED_AT, user, post); + assertEquals(REPORT_ID_1, report.getId()); + assertEquals(MESSAGE, report.getMessage()); + assertEquals(CREATED_AT, report.getCreatedAt()); + assertEquals(user.toString(), report.getUser().toString()); + assertEquals(post.toString(), report.getPost().toString()); + } + + @Test + void testEqualsAndHashCode() { + ReportEntity report1 = new ReportEntity(); + ReportEntity report2 = new ReportEntity(); + assertEquals(report1, report2); + report1.setId(REPORT_ID_1); + report2.setId(REPORT_ID_1); + assertEquals(report1, report2); + assertEquals(report1.hashCode(), report2.hashCode()); + report2.setId(REPORT_ID_2); + assertNotEquals(report1, report2); + assertNotEquals(report1.hashCode(), report2.hashCode()); + assertEquals(report1, report1); + assertNotEquals(report1, new Object()); + } + + @Test + void testToString() { + UserEntity user = createDummyUser(); + PostEntity post = createDummyPost(); + ReportEntity report = new ReportEntity(REPORT_ID_1, MESSAGE, CREATED_AT, user, post); + String expected = "{" + + " id='" + REPORT_ID_1 + "'" + + ", message='" + MESSAGE + "'" + + ", createdAt='" + CREATED_AT + "'" + + ", user='" + user.toString() + "'" + + ", post='" + post.toString() + "'" + + "}"; + assertEquals(expected, report.toString()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/config/ConditionalSslConfigTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/config/ConditionalSslConfigTest.java new file mode 100644 index 000000000..c4c154a67 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/config/ConditionalSslConfigTest.java @@ -0,0 +1,67 @@ +package es.iespuertodelacruz.routinefights.shared.config; + +import static org.junit.jupiter.api.Assertions.*; + +import java.io.File; +import java.io.IOException; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; + +class ConditionalSslConfigTest { + + @Test + void testSslDisabledWhenFilesMissing() { + ConditionalSslConfig config = new ConditionalSslConfig(); + + setField(config, "sslEnabled", true); + setField(config, "certPath", "/path/inexistente/cert.pem"); + setField(config, "keyPath", "/path/inexistente/key.pem"); + + TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); + config.sslCustomizer().customize(factory); + + assertNull(factory.getSsl()); + } + + @Test + void testSslRemainsEnabledWhenFilesExist() throws IOException { + File cert = File.createTempFile("cert", ".pem"); + File key = File.createTempFile("key", ".pem"); + + ConditionalSslConfig config = new ConditionalSslConfig(); + setField(config, "sslEnabled", true); + setField(config, "certPath", cert.getAbsolutePath()); + setField(config, "keyPath", key.getAbsolutePath()); + + TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); + config.sslCustomizer().customize(factory); + + assertNotNull(factory); + assertNull(factory.getSsl()); + + cert.delete(); + key.delete(); + } + + @Test + void testSslDisabledWhenPropertyIsFalse() { + ConditionalSslConfig config = new ConditionalSslConfig(); + setField(config, "sslEnabled", false); + + TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); + config.sslCustomizer().customize(factory); + + assertNull(factory.getSsl(), "SSL debería desactivarse si server.ssl.enabled=false"); + } + + private void setField(Object target, String fieldName, Object value) { + try { + var field = target.getClass().getDeclaredField(fieldName); + field.setAccessible(true); + field.set(target, value); + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/controllers/AuthControllerTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/controllers/AuthControllerTest.java new file mode 100644 index 000000000..ca68b87d5 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/controllers/AuthControllerTest.java @@ -0,0 +1,137 @@ +package es.iespuertodelacruz.routinefights.shared.controllers; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.when; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.bean.override.mockito.MockitoBean; + +import es.iespuertodelacruz.routinefights.device_token.domain.DeviceToken; +import es.iespuertodelacruz.routinefights.device_token.domain.ports.primary.IDeviceTokenService; +import es.iespuertodelacruz.routinefights.shared.dto.UserDTOAuth; +import es.iespuertodelacruz.routinefights.shared.exceptions.MailException; +import es.iespuertodelacruz.routinefights.shared.mappers.UserDTOAuthMapper; +import es.iespuertodelacruz.routinefights.shared.services.AuthService; +import es.iespuertodelacruz.routinefights.shared.services.MailService; +import es.iespuertodelacruz.routinefights.shared.services.NotificationsService; +import es.iespuertodelacruz.routinefights.shared.utils.HTMLTemplates; +import es.iespuertodelacruz.routinefights.user.domain.User; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK, classes = AuthController.class) +class AuthControllerTest { + private static final String VERIFICATION_TOKEN = "verificationToken"; + private static final String ROLE = "ROLE"; + private static final boolean VERIFIED = false; + private static final String IMAGE = "image"; + private static final String PHONE_NUMBER = "phoneNumber"; + private static final String NATIONALITY = "nationality"; + private static final String PASSWORD = "password"; + private static final String EMAIL = "email"; + private static final String USERNAME = "username"; + private static final String TOKEN = "token"; + private static final String LANGUAGE = "language"; + private static final String DEVICE_TOKEN_STRING = "deviceToken"; + + private static final User USER = new User(USERNAME, EMAIL, PASSWORD, NATIONALITY, PHONE_NUMBER, IMAGE, ROLE, + VERIFIED, + VERIFICATION_TOKEN, null, null, null); + private static final DeviceToken DEVICE_TOKEN = new DeviceToken(DEVICE_TOKEN_STRING, USER, "language"); + + @MockitoBean + private MailService mailService; + @MockitoBean + private AuthService authService; + @MockitoBean + private UserDTOAuthMapper userDTOAuthMapper; + @MockitoBean + private NotificationsService notificationsService; + @MockitoBean + private IDeviceTokenService deviceTokenService; + + @Autowired + private AuthController authController; + + @Test + void registerTestOK() { + UserDTOAuth userDTOAuth = new UserDTOAuth(USERNAME, EMAIL, PASSWORD, NATIONALITY, PHONE_NUMBER, IMAGE); + when(authService.register(userDTOAuth.username(), userDTOAuth.email(), + userDTOAuth.password(), + userDTOAuth.nationality(), userDTOAuth.phoneNumber(), userDTOAuth.image())) + .thenReturn(USER); + when(userDTOAuthMapper.toDTO(USER)).thenReturn(userDTOAuth); + ResponseEntity response = authController.register(userDTOAuth); + assertEquals(HttpStatus.valueOf(200), response.getStatusCode()); + assertTrue(response.getBody() instanceof UserDTOAuth); + } + + @Test + void registerTestException() { + UserDTOAuth userDTOAuth = new UserDTOAuth(USERNAME, EMAIL, PASSWORD, NATIONALITY, PHONE_NUMBER, IMAGE); + when(authService.register(userDTOAuth.username(), userDTOAuth.email(), + userDTOAuth.password(), + userDTOAuth.nationality(), userDTOAuth.phoneNumber(), userDTOAuth.image())) + .thenReturn(USER); + doThrow(new MailException("Error sending email")).when(mailService).sentVerifyToken(USER.getEmail(), + "Verify your email: " + USER.getUsername(), + USER.getVerificationToken()); + ResponseEntity response = authController.register(userDTOAuth); + assertEquals(HttpStatus.valueOf(400), response.getStatusCode()); + assertEquals("Error sending email", response.getBody()); + } + + @Test + void loginTestOK() { + when(authService.login(EMAIL, PASSWORD)).thenReturn(TOKEN); + when(deviceTokenService.save(anyString(), anyString(), anyString())).thenReturn(DEVICE_TOKEN); + + ResponseEntity response = authController.login(EMAIL, PASSWORD, DEVICE_TOKEN_STRING, LANGUAGE); + assertEquals(HttpStatus.valueOf(200), response.getStatusCode()); + assertEquals(TOKEN, response.getBody()); + } + + @Test + void loginTestException() { + when(authService.login(EMAIL, PASSWORD)).thenThrow(new RuntimeException("Error")); + when(deviceTokenService.save(anyString(), anyString(), anyString())).thenThrow(new RuntimeException("Error")); + ResponseEntity response = authController.login(EMAIL, PASSWORD, DEVICE_TOKEN_STRING, LANGUAGE); + assertEquals(HttpStatus.valueOf(400), response.getStatusCode()); + assertEquals("Error", response.getBody()); + } + + @Test + void verifyTestOK() { + when(authService.verify(EMAIL, TOKEN)).thenReturn(true); + String response = authController.verify(EMAIL, TOKEN); + assertEquals(HTMLTemplates.VERIFIED, response); + } + + @Test + void verifyTestException() { + when(authService.verify(EMAIL, TOKEN)).thenThrow(new RuntimeException("Error")); + String response = authController.verify(EMAIL, TOKEN); + assertEquals(HTMLTemplates.ERROR.formatted("Error"), response); + } + + @Test + void verifyTestMissingArguments() { + String response = authController.verify(null, null); + assertEquals(HTMLTemplates.NEED_EMAIL_TOKEN, response); + response = authController.verify(EMAIL, null); + assertEquals(HTMLTemplates.NEED_EMAIL_TOKEN, response); + + } + + @Test + void verifyTestNotVerified() { + when(authService.verify(EMAIL, TOKEN)).thenReturn(false); + String response = authController.verify(EMAIL, TOKEN); + assertEquals(HTMLTemplates.BAD_REQUEST, response); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/controllers/GraphControllerTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/controllers/GraphControllerTest.java new file mode 100644 index 000000000..d446f81c0 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/controllers/GraphControllerTest.java @@ -0,0 +1,118 @@ +package es.iespuertodelacruz.routinefights.shared.controllers; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.when; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatusCode; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.bean.override.mockito.MockitoBean; + +import es.iespuertodelacruz.routinefights.shared.dto.ChartData; +import es.iespuertodelacruz.routinefights.shared.services.GraphService; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK, classes = GraphController.class) +class GraphControllerTest { + + @MockitoBean + private GraphService graphService; + @Autowired + private GraphController graphController; + + @Test + void findAllUsersCreatedAtTest() { + ChartData chartData = new ChartData(); + chartData.addLabel("2023-01-01"); + chartData.addData(1L); + + when(graphService.findUserRegistrationsByDate()).thenReturn(chartData); + ResponseEntity response = graphController.getUserCreationChart(); + assertEquals(HttpStatusCode.valueOf(200), response.getStatusCode()); + assertEquals(chartData, response.getBody()); + } + + @Test + void findAllUsersCreatedAtExceptionTest() { + when(graphService.findUserRegistrationsByDate()).thenThrow(new RuntimeException("Error")); + ResponseEntity response = graphController.getUserCreationChart(); + assertEquals(HttpStatusCode.valueOf(400), response.getStatusCode()); + assertEquals("Error", response.getBody()); + } + + @Test + void findPostsCreatedByDateTest() { + ChartData chartData = new ChartData(); + chartData.addLabel("2023-01-01"); + chartData.addData(1L); + + when(graphService.findPostsCreatedByDate()).thenReturn(chartData); + ResponseEntity response = graphController.getPostCreationChart(); + assertEquals(HttpStatusCode.valueOf(200), response.getStatusCode()); + assertEquals(chartData, response.getBody()); + } + @Test + void findPostsCreatedByDateExceptionTest() { + when(graphService.findPostsCreatedByDate()).thenThrow(new RuntimeException("Error")); + ResponseEntity response = graphController.getPostCreationChart(); + assertEquals(HttpStatusCode.valueOf(400), response.getStatusCode()); + assertEquals("Error", response.getBody()); + } + @Test + void findPointsAddedSumByDateTest() { + ChartData chartData = new ChartData(); + chartData.addLabel("2023-01-01"); + chartData.addData(1L); + + when(graphService.findPointsAddedSumByDate()).thenReturn(chartData); + ResponseEntity response = graphController.getPostPointsChart(); + assertEquals(HttpStatusCode.valueOf(200), response.getStatusCode()); + assertEquals(chartData, response.getBody()); + } + @Test + void findPointsAddedSumByDateExceptionTest() { + when(graphService.findPointsAddedSumByDate()).thenThrow(new RuntimeException("Error")); + ResponseEntity response = graphController.getPostPointsChart(); + assertEquals(HttpStatusCode.valueOf(400), response.getStatusCode()); + assertEquals("Error", response.getBody()); + } + @Test + void findActivitiesByTimeRateTest() { + ChartData chartData = new ChartData(); + chartData.addLabel("2023-01-01"); + chartData.addData(1L); + + when(graphService.findActivitiesByTimeRate()).thenReturn(chartData); + ResponseEntity response = graphController.getActivityTimeRate(); + assertEquals(HttpStatusCode.valueOf(200), response.getStatusCode()); + assertEquals(chartData, response.getBody()); + } + @Test + void findActivitiesByTimeRateExceptionTest() { + when(graphService.findActivitiesByTimeRate()).thenThrow(new RuntimeException("Error")); + ResponseEntity response = graphController.getActivityTimeRate(); + assertEquals(HttpStatusCode.valueOf(400), response.getStatusCode()); + assertEquals("Error", response.getBody()); + } + @Test + void findTotalPointsByUserTest() { + ChartData chartData = new ChartData(); + chartData.addLabel("2023-01-01"); + chartData.addData(1L); + + when(graphService.findTotalPointsByUser()).thenReturn(chartData); + ResponseEntity response = graphController.getUsersTotalPoints(); + assertEquals(HttpStatusCode.valueOf(200), response.getStatusCode()); + assertEquals(chartData, response.getBody()); + } + @Test + void findTotalPointsByUserExceptionTest() { + when(graphService.findTotalPointsByUser()).thenThrow(new RuntimeException("Error")); + ResponseEntity response = graphController.getUsersTotalPoints(); + assertEquals(HttpStatusCode.valueOf(400), response.getStatusCode()); + assertEquals("Error", response.getBody()); + } + + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/controllers/ImageControllerTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/controllers/ImageControllerTest.java new file mode 100644 index 000000000..45f69c95d --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/controllers/ImageControllerTest.java @@ -0,0 +1,110 @@ +package es.iespuertodelacruz.routinefights.shared.controllers; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.when; + +import java.net.MalformedURLException; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.MockitoAnnotations; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.io.UrlResource; +import org.springframework.http.HttpStatusCode; +import org.springframework.http.ResponseEntity; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.context.bean.override.mockito.MockitoBean; + +import es.iespuertodelacruz.routinefights.shared.exceptions.ImageNotFoundException; +import es.iespuertodelacruz.routinefights.shared.services.ImageService; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK, classes = ImageController.class) +class ImageControllerTest { + + private static final UrlResource URL_RESOURCE; + + static { + try { + URL_RESOURCE = new UrlResource("file://test.jpg"); + } catch (MalformedURLException e) { + throw new RuntimeException(e); + } + } + + private static final String ORIGINAL_FILE_NAME = "test.jpg"; + + @InjectMocks + @Autowired + private ImageController imageController; + + @MockitoBean + private ImageService imageService; + + @BeforeEach + void setup() { + MockitoAnnotations.openMocks(this); + } + + @Test + void uploadFileOKTest() { + MockMultipartFile file = new MockMultipartFile("file", ORIGINAL_FILE_NAME, "image/jpeg", "test".getBytes()); + when(imageService.save(file)).thenReturn(ORIGINAL_FILE_NAME); + ResponseEntity responseEntity = imageController.uploadFile(file); + + assertEquals(HttpStatusCode.valueOf(200), responseEntity.getStatusCode()); + assertEquals(ORIGINAL_FILE_NAME, responseEntity.getBody()); + } + + @Test + void uploadFileNotFileTest() { + MockMultipartFile file = null; + ResponseEntity responseEntity = imageController.uploadFile(file); + + assertEquals(HttpStatusCode.valueOf(400), responseEntity.getStatusCode()); + assertEquals("File is empty", responseEntity.getBody()); + } + + @Test + void uploadFileEmptyFileTst() { + MockMultipartFile file = new MockMultipartFile("file", ORIGINAL_FILE_NAME, "image/jpeg", new byte[0]); + ResponseEntity responseEntity = imageController.uploadFile(file); + + assertEquals(HttpStatusCode.valueOf(400), responseEntity.getStatusCode()); + assertEquals("File is empty", responseEntity.getBody()); + } + + @Test + void uploadFileNotContentTypeTest() { + MockMultipartFile file = new MockMultipartFile("file", ORIGINAL_FILE_NAME, null, "test".getBytes()); + ResponseEntity responseEntity = imageController.uploadFile(file); + + assertEquals(HttpStatusCode.valueOf(400), responseEntity.getStatusCode()); + assertEquals("File is empty", responseEntity.getBody()); + } + + @Test + void uploadFileIsNotImageTest() { + MockMultipartFile file = new MockMultipartFile("file", ORIGINAL_FILE_NAME, "text/plain", "test".getBytes()); + ResponseEntity responseEntity = imageController.uploadFile(file); + + assertEquals(HttpStatusCode.valueOf(400), responseEntity.getStatusCode()); + assertEquals("File is not an image", responseEntity.getBody()); + } + + @Test + void getImageOKTest() { + when(imageService.findImage(ORIGINAL_FILE_NAME)).thenReturn(URL_RESOURCE); + ResponseEntity responseEntity = imageController.getImage(ORIGINAL_FILE_NAME); + assertEquals(URL_RESOURCE, responseEntity.getBody()); + } + + @Test + void getImageErrorTest() { + when(imageService.findImage(ORIGINAL_FILE_NAME)).thenThrow(new ImageNotFoundException("Image not found")); + ResponseEntity responseEntity = imageController.getImage(ORIGINAL_FILE_NAME); + assertEquals(HttpStatusCode.valueOf(404), responseEntity.getStatusCode()); + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/dto/CharDataTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/dto/CharDataTest.java new file mode 100644 index 000000000..86c757659 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/dto/CharDataTest.java @@ -0,0 +1,122 @@ +package es.iespuertodelacruz.routinefights.shared.dto; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class ChartDataTest { + + private static final String JAN = "Jan"; + private static final String FEB = "Feb"; + private static final String MAR = "Mar"; + private static final String APR = "Apr"; + private static final String MAY = "May"; + private static final String JUNE = "June"; + private static final String LABEL_X = "X"; + private static final String LABEL_A = "A"; + private static final String LABEL_B = "B"; + private static final String LABEL_C = "C"; + + private static final String ERR_NULL_LABELS = "Labels list should not be null"; + private static final String ERR_NULL_DATA = "Data list should not be null"; + private static final String ERR_EMPTY_LABELS = "Labels list should be empty"; + private static final String ERR_EMPTY_DATA = "Data list should be empty"; + private static final String ERR_MATCH_INPUT_LABELS = "Labels should match input list"; + private static final String ERR_MATCH_INPUT_DATA = "Data should match input list"; + private static final String ERR_SET_GET_LABELS = "Labels setter/getter should work"; + private static final String ERR_SET_GET_DATA = "Data setter/getter should work"; + private static final String ERR_TOSTRING_LABELS = "toString should include labels"; + private static final String ERR_TOSTRING_DATA = "toString should include data"; + private static final String ERR_EQUAL_CONTENT = "Objects with same content should be equal"; + private static final String ERR_HASHCODE_MATCH = "Hash codes should match for equal objects"; + private static final String ERR_NOT_EQUAL_CONTENT = "Objects with different content should not be equal"; + private static final String ERR_HASHCODE_DIFFER = "Hash codes should differ for non-equal objects"; + private static final String ERR_EQUAL_NULL = "Should not be equal to null"; + private static final String ERR_EQUAL_DIFFERENT_CLASS = "Should not be equal to object of another class"; + + private ChartData emptyChart; + private ChartData populatedChart; + + @BeforeEach + void setUp() { + emptyChart = new ChartData(); + List labels = Arrays.asList(JAN, FEB, MAR); + List data = Arrays.asList(10L, 20L, 30L); + populatedChart = new ChartData(labels, data); + } + + @Test + void testDefaultConstructor() { + assertNotNull(emptyChart.getLabels(), ERR_NULL_LABELS); + assertNotNull(emptyChart.getData(), ERR_NULL_DATA); + assertTrue(emptyChart.getLabels().isEmpty(), ERR_EMPTY_LABELS); + assertTrue(emptyChart.getData().isEmpty(), ERR_EMPTY_DATA); + } + + @Test + void testParameterizedConstructor() { + List expectedLabels = Arrays.asList(JAN, FEB, MAR); + List expectedData = Arrays.asList(10L, 20L, 30L); + + assertEquals(expectedLabels, populatedChart.getLabels(), ERR_MATCH_INPUT_LABELS); + assertEquals(expectedData, populatedChart.getData(), ERR_MATCH_INPUT_DATA); + } + + @Test + void testSettersAndGetters() { + List newLabels = Arrays.asList(APR, MAY); + List newData = Arrays.asList(40L, 50L); + + emptyChart.setLabels(newLabels); + emptyChart.setData(newData); + + assertEquals(newLabels, emptyChart.getLabels(), ERR_SET_GET_LABELS); + assertEquals(newData, emptyChart.getData(), ERR_SET_GET_DATA); + } + + @Test + void testAddLabelAndAddData() { + emptyChart.addLabel(JUNE); + emptyChart.addData(60L); + + assertEquals(Collections.singletonList(JUNE), emptyChart.getLabels()); + assertEquals(Collections.singletonList(60L), emptyChart.getData()); + } + + @Test + void testToString() { + emptyChart.addLabel(LABEL_X); + emptyChart.addData(1L); + String str = emptyChart.toString(); + + assertTrue(str.contains("labels=[" + LABEL_X + "]"), ERR_TOSTRING_LABELS); + assertTrue(str.contains("data=[1]"), ERR_TOSTRING_DATA); + } + + @Test + void testEqualsAndHashCode() { + ChartData copy = new ChartData( + Arrays.asList(LABEL_A, LABEL_B), + Arrays.asList(100L, 200L)); + ChartData same = new ChartData( + Arrays.asList(LABEL_A, LABEL_B), + Arrays.asList(100L, 200L)); + ChartData different = new ChartData( + Arrays.asList(LABEL_C), + Arrays.asList(300L)); + + assertEquals(copy, same, ERR_EQUAL_CONTENT); + assertEquals(copy.hashCode(), same.hashCode(), ERR_HASHCODE_MATCH); + + assertNotEquals(copy, different, ERR_NOT_EQUAL_CONTENT); + assertNotEquals(copy.hashCode(), different.hashCode(), ERR_HASHCODE_DIFFER); + + assertNotEquals(null, copy, ERR_EQUAL_NULL); + assertNotEquals(copy, new Object(), ERR_EQUAL_DIFFERENT_CLASS); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/dto/UserDTOAuthTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/dto/UserDTOAuthTest.java new file mode 100644 index 000000000..69484fdae --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/dto/UserDTOAuthTest.java @@ -0,0 +1,26 @@ +package es.iespuertodelacruz.routinefights.shared.dto; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class UserDTOAuthTest { + private static final String IMAGE = "image"; + private static final String PHONE_NUMBER = "phoneNumber"; + private static final String NATIONALITY = "nationality"; + private static final String PASSWORD = "password"; + private static final String EMAIL = "email"; + private static final String USERNAME = "username"; + + @Test + void dtoTest(){ + UserDTOAuth userDTOAuth = new UserDTOAuth(USERNAME, EMAIL, PASSWORD, NATIONALITY, PHONE_NUMBER, IMAGE); + assertEquals(USERNAME, userDTOAuth.username()); + assertEquals(EMAIL, userDTOAuth.email()); + assertEquals(PASSWORD, userDTOAuth.password()); + assertEquals(NATIONALITY,userDTOAuth.nationality()); + assertEquals(PHONE_NUMBER, userDTOAuth.phoneNumber()); + assertEquals(IMAGE, userDTOAuth.image()); + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/exceptions/AuthExceptionTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/exceptions/AuthExceptionTest.java new file mode 100644 index 000000000..76f6592e1 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/exceptions/AuthExceptionTest.java @@ -0,0 +1,18 @@ +package es.iespuertodelacruz.routinefights.shared.exceptions; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class AuthExceptionTest { + + private static final String MESSAGE = "message"; + + @Test + void authExceptionTest() { + AuthException authException = new AuthException(MESSAGE); + + assertEquals(MESSAGE, authException.getMessage()); + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageNotFoundExceptionTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageNotFoundExceptionTest.java new file mode 100644 index 000000000..d82142db3 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageNotFoundExceptionTest.java @@ -0,0 +1,17 @@ +package es.iespuertodelacruz.routinefights.shared.exceptions; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class ImageNotFoundExceptionTest { + + private static final String MESSAGE = "message"; + + @Test + void imageNotFoundExceptionTest() { + ImageNotFoundException imageNotFoundException = new ImageNotFoundException(MESSAGE); + + assertEquals(MESSAGE, imageNotFoundException.getMessage()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageSaveExceptionTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageSaveExceptionTest.java new file mode 100644 index 000000000..3f5f1368b --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageSaveExceptionTest.java @@ -0,0 +1,17 @@ +package es.iespuertodelacruz.routinefights.shared.exceptions; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class ImageSaveExceptionTest { + + private static final String MESSAGE = "message"; + + @Test + void imageSaveExceptionTest() { + ImageSaveException imageSaveException = new ImageSaveException(MESSAGE); + + assertEquals(MESSAGE, imageSaveException.getMessage()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageUploadExceptionTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageUploadExceptionTest.java new file mode 100644 index 000000000..e8595c658 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/exceptions/ImageUploadExceptionTest.java @@ -0,0 +1,17 @@ +package es.iespuertodelacruz.routinefights.shared.exceptions; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class ImageUploadExceptionTest { + + private static final String MESSAGE = "message"; + + @Test + void imageUploadExceptionTest() { + ImageUploadException imageUploadException = new ImageUploadException(MESSAGE); + + assertEquals(MESSAGE, imageUploadException.getMessage()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/exceptions/MailExceptionTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/exceptions/MailExceptionTest.java new file mode 100644 index 000000000..b911026cc --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/exceptions/MailExceptionTest.java @@ -0,0 +1,17 @@ +package es.iespuertodelacruz.routinefights.shared.exceptions; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class MailExceptionTest { + private static final String MESSAGE = "message"; + + @Test + void mailExceptionTest() { + MailException mailException = new MailException(MESSAGE); + + assertEquals(MESSAGE, mailException.getMessage()); + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/mappers/UserDTOAuthMapperTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/mappers/UserDTOAuthMapperTest.java new file mode 100644 index 000000000..23e70ecdb --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/mappers/UserDTOAuthMapperTest.java @@ -0,0 +1,55 @@ +package es.iespuertodelacruz.routinefights.shared.mappers; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import es.iespuertodelacruz.routinefights.shared.dto.UserDTOAuth; +import es.iespuertodelacruz.routinefights.user.domain.User; + +@SpringBootTest +class UserDTOAuthMapperTest { + private static final String VERIFICATION_TOKEN = "verificationToken"; + private static final boolean VERIFIED = true; + private static final String ROLE = "role"; + private static final String IMAGE = "image"; + private static final String PHONE_NUMBER = "phoneNumber"; + private static final String NATIONALITY = "nationality"; + private static final String PASSWORD = "password"; + private static final String EMAIL = "email"; + private static final String USERNAME = "username"; + private static final String ID = "id"; + @Autowired + private UserDTOAuthMapper userDTOAuthMapper; + + @Test + void toUserDTOAuthTestOK() { + User user = new User(); + user.setId(ID); + user.setUsername(USERNAME); + user.setEmail(EMAIL); + user.setPassword(PASSWORD); + user.setNationality(NATIONALITY); + user.setPhoneNumber(PHONE_NUMBER); + user.setImage(IMAGE); + user.setRole(ROLE); + user.setVerified(VERIFIED); + user.setVerificationToken(VERIFICATION_TOKEN); + UserDTOAuth userDTOAuth = userDTOAuthMapper.toDTO(user); + assertEquals(USERNAME, userDTOAuth.username()); + assertEquals(EMAIL, userDTOAuth.email()); + assertEquals(PASSWORD, userDTOAuth.password()); + assertEquals(NATIONALITY, userDTOAuth.nationality()); + assertEquals(PHONE_NUMBER, userDTOAuth.phoneNumber()); + assertEquals(IMAGE, userDTOAuth.image()); + } + + @Test + void toUserDTOAuthTestUserNull() { + User user = null; + assertNull(userDTOAuthMapper.toDTO(user)); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/security/CxfAuthInterceptorTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/security/CxfAuthInterceptorTest.java new file mode 100644 index 000000000..5fb8acadc --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/security/CxfAuthInterceptorTest.java @@ -0,0 +1,85 @@ +package es.iespuertodelacruz.routinefights.shared.security; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.apache.cxf.message.Message; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import es.iespuertodelacruz.routinefights.shared.utils.JwtAuthenticationHelper; + +import org.springframework.security.core.context.SecurityContextHolder; + +class CxfAuthInterceptorTest { + + private static final String AUTHORIZATION = "Authorization"; + private static final String BEARER_PREFIX = "Bearer "; + private static final String VALID_TOKEN = "validToken"; + private static final String INVALID_TOKEN = "invalidToken"; + private static final String MAIL = "test@example.com"; + private static final String ROLE = "ROLE_USER"; + + @Mock + private JwtService jwtService; + + @Mock + private Message message; + + private CxfAuthInterceptor cxfAuthInterceptor; + + private JwtAuthenticationHelper jwtAuthenticationHelper; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + jwtAuthenticationHelper = new JwtAuthenticationHelper(); + cxfAuthInterceptor = new CxfAuthInterceptor(jwtService, jwtAuthenticationHelper); + SecurityContextHolder.clearContext(); + } + + @Test + void testHandleMessageWithValidAuthorizationHeader() { + Map claims = new HashMap<>(); + claims.put("mail", MAIL); + claims.put("role", ROLE); + + Map> protocolHeaders = new HashMap<>(); + protocolHeaders.put(AUTHORIZATION, Collections.singletonList(BEARER_PREFIX + VALID_TOKEN)); + + when(message.get(Message.PROTOCOL_HEADERS)).thenReturn(protocolHeaders); + when(jwtService.validateAndGetClaims(VALID_TOKEN)).thenReturn(claims); + + cxfAuthInterceptor.handleMessage(message); + + assertNotNull(SecurityContextHolder.getContext().getAuthentication()); + assertEquals(MAIL, SecurityContextHolder.getContext().getAuthentication().getName()); + assertTrue(SecurityContextHolder.getContext().getAuthentication().getAuthorities().stream() + .anyMatch(auth -> auth.getAuthority().equals(ROLE))); + } + + @Test + void testHandleMessageWithoutAuthorizationHeader() { + when(message.get(Message.PROTOCOL_HEADERS)).thenReturn(new HashMap<>()); + + cxfAuthInterceptor.handleMessage(message); + + assertNull(SecurityContextHolder.getContext().getAuthentication()); + } + + @Test + void testHandleMessageWithInvalidToken() { + Map> protocolHeaders = new HashMap<>(); + protocolHeaders.put(AUTHORIZATION, Collections.singletonList(BEARER_PREFIX + INVALID_TOKEN)); + + when(message.get(Message.PROTOCOL_HEADERS)).thenReturn(protocolHeaders); + when(jwtService.validateAndGetClaims(INVALID_TOKEN)).thenThrow(new RuntimeException("Invalid token")); + + assertThrows(RuntimeException.class, () -> cxfAuthInterceptor.handleMessage(message)); + assertNull(SecurityContextHolder.getContext().getAuthentication()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/security/JwtFilterTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/security/JwtFilterTest.java new file mode 100644 index 000000000..c3bf737b6 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/security/JwtFilterTest.java @@ -0,0 +1,138 @@ +package es.iespuertodelacruz.routinefights.shared.security; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.when; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.never; +import es.iespuertodelacruz.routinefights.shared.utils.JwtAuthenticationHelper; + +import java.io.IOException; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.context.SecurityContextHolder; + +import com.auth0.jwt.exceptions.JWTVerificationException; + +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletResponse; + +class JwtFilterTest { + + private static final String USER_ROLE = "ROLE_USER"; + + private static final String USER_MAIL = "user@example.com"; + + @Mock + private JwtService jwtService; + + @Mock + private FilterChain filterChain; + + private JwtFilter jwtFilter; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + JwtAuthenticationHelper jwtAuthenticationHelper = new JwtAuthenticationHelper(); + jwtFilter = new JwtFilter(jwtService, jwtAuthenticationHelper); + + SecurityContextHolder.clearContext(); + } + + @Test + void testAllowedRoute() throws ServletException, IOException { + MockHttpServletRequest request = new MockHttpServletRequest(); + request.setRequestURI("/swagger-ui.html"); + MockHttpServletResponse response = new MockHttpServletResponse(); + + jwtFilter.doFilterInternal(request, response, filterChain); + + verify(filterChain, times(1)).doFilter(request, response); + } + + @Test + void testGraphQLWithNullHeader() throws ServletException, IOException { + MockHttpServletRequest request = new MockHttpServletRequest(); + request.setRequestURI("/graphql/someQuery"); + MockHttpServletResponse response = new MockHttpServletResponse(); + + jwtFilter.doFilterInternal(request, response, filterChain); + + verify(filterChain, times(1)).doFilter(request, response); + } + + @Test + void testMissingAuthHeaderNonGraphQL() throws ServletException, IOException { + MockHttpServletRequest request = new MockHttpServletRequest(); + request.setRequestURI("/api/protected"); + MockHttpServletResponse response = new MockHttpServletResponse(); + + jwtFilter.doFilterInternal(request, response, filterChain); + + assertEquals(HttpServletResponse.SC_UNAUTHORIZED, response.getStatus()); + String content = response.getContentAsString(); + assertTrue(content.contains("You are not authenticated")); + verify(filterChain, never()).doFilter(request, response); + } + + @Test + void testValidToken() throws ServletException, IOException { + String token = "validToken"; + String header = "Bearer " + token; + MockHttpServletRequest request = new MockHttpServletRequest(); + request.setRequestURI("/api/protected"); + request.addHeader("Authorization", header); + MockHttpServletResponse response = new MockHttpServletResponse(); + + Map claims = new HashMap<>(); + claims.put("mail", USER_MAIL); + claims.put("role", USER_ROLE); + when(jwtService.validateAndGetClaims(token)).thenReturn(claims); + + jwtFilter.doFilterInternal(request, response, filterChain); + + verify(filterChain, times(1)).doFilter(request, response); + + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + assertNotNull(auth); + assertEquals(USER_MAIL, auth.getName()); + Collection authorities = auth.getAuthorities(); + assertFalse(authorities.isEmpty()); + assertEquals(USER_ROLE, authorities.iterator().next().getAuthority()); + } + + @Test + void testInvalidToken() throws ServletException, IOException { + String token = "invalidToken"; + String header = "Bearer " + token; + MockHttpServletRequest request = new MockHttpServletRequest(); + request.setRequestURI("/api/protected"); + request.addHeader("Authorization", header); + MockHttpServletResponse response = new MockHttpServletResponse(); + + when(jwtService.validateAndGetClaims(token)) + .thenThrow(new JWTVerificationException("Invalid token")); + + jwtFilter.doFilterInternal(request, response, filterChain); + + verify(filterChain, never()).doFilter(request, response); + assertEquals(HttpServletResponse.SC_UNAUTHORIZED, response.getStatus()); + String content = response.getContentAsString(); + assertTrue(content.contains("Invalid token.")); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/security/JwtServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/security/JwtServiceTest.java new file mode 100644 index 000000000..24305b0dc --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/security/JwtServiceTest.java @@ -0,0 +1,30 @@ +package es.iespuertodelacruz.routinefights.shared.security; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class JwtServiceTest { + + private static final String ROLE = "ROLE_ADMIN"; + private static final String MAIL = "jonaykb@gmail.com"; + JwtService jwtService; + + @BeforeEach + void setUp() { + if (jwtService == null) { + jwtService = new JwtService(); + } + } + @Test + void testJwtToken(){ + String token = jwtService.generateToken(MAIL, ROLE); + assertEquals(MAIL, jwtService.validateAndGetClaims(token).get("mail")); + assertEquals(ROLE, jwtService.validateAndGetClaims(token).get("role")); + + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/AuthServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/AuthServiceTest.java new file mode 100644 index 000000000..ff5bab596 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/AuthServiceTest.java @@ -0,0 +1,243 @@ +package es.iespuertodelacruz.routinefights.shared.services; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.*; + +import java.util.UUID; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.*; +import org.springframework.security.crypto.password.PasswordEncoder; + +import es.iespuertodelacruz.routinefights.shared.exceptions.AuthException; +import es.iespuertodelacruz.routinefights.shared.security.JwtService; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.ports.primary.IUserService; + +class AuthServiceTest { + + private static final boolean VERIFIED = true; + + private static final String ROLE_USER = "ROLE_USER"; + + private static final String GENERATED_TOKEN = "generatedToken"; + + private static final String HASHED_PASSWORD = "hashedPassword"; + + private static final String PASSWORD = "password"; + + private static final String EMAIL = "test@example.com"; + + @Mock + private JwtService jwtService; + + @Mock + private IUserService userService; + + @Mock + private PasswordEncoder passwordEncoder; + + private AuthService authService; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + authService = new AuthService(jwtService, userService, passwordEncoder); + } + + @Test + void testLoginSuccess() { + String email = EMAIL; + String rawPassword = PASSWORD; + String hashedPassword = HASHED_PASSWORD; + String generatedToken = GENERATED_TOKEN; + + User user = new User(); + user.setEmail(email); + user.setPassword(hashedPassword); + user.setVerified(VERIFIED); + user.setRole(ROLE_USER); + + when(userService.findByEmailOnlyBase(email)).thenReturn(user); + when(passwordEncoder.matches(rawPassword, hashedPassword)).thenReturn(true); + when(jwtService.generateToken(email, ROLE_USER)).thenReturn(generatedToken); + + String token = authService.login(email, rawPassword); + + assertEquals(generatedToken, token); + } + + @Test + void testLoginUserNotVerified() { + String email = EMAIL; + String rawPassword = PASSWORD; + String hashedPassword = HASHED_PASSWORD; + + User user = new User(); + user.setEmail(email); + user.setPassword(hashedPassword); + user.setVerified(false); + user.setRole(ROLE_USER); + + when(userService.findByEmailOnlyBase(email)).thenReturn(user); + when(passwordEncoder.matches(rawPassword, hashedPassword)).thenReturn(true); + + AuthException exception = assertThrows(AuthException.class, () -> { + authService.login(email, rawPassword); + }); + assertEquals("User not verified", exception.getMessage()); + } + + @Test + void testLoginInvalidCredentials_UserNotFound() { + String email = EMAIL; + String rawPassword = PASSWORD; + + when(userService.findByEmail(email)).thenReturn(null); + + AuthException exception = assertThrows(AuthException.class, () -> { + authService.login(email, rawPassword); + }); + assertEquals("User not found or Invalid Credentials", exception.getMessage()); + } + + @Test + void testLoginInvalidCredentials_PasswordMismatch() { + String email = EMAIL; + String rawPassword = PASSWORD; + String hashedPassword = HASHED_PASSWORD; + + User user = new User(); + user.setEmail(email); + user.setPassword(hashedPassword); + user.setVerified(true); + user.setRole(ROLE_USER); + + when(userService.findByEmail(email)).thenReturn(user); + when(passwordEncoder.matches(rawPassword, hashedPassword)).thenReturn(false); + + AuthException exception = assertThrows(AuthException.class, () -> { + authService.login(email, rawPassword); + }); + assertEquals("User not found or Invalid Credentials", exception.getMessage()); + } + + @Test + void testRegisterSuccess() { + String username = "user1"; + String email = "user1@example.com"; + String password = PASSWORD; + String nationality = "Country"; + String phoneNumber = "123456"; + String image = "image.png"; + + User createdUser = new User(); + createdUser.setId("1"); + createdUser.setUsername(username); + createdUser.setEmail(email); + createdUser.setPassword(password); + createdUser.setNationality(nationality); + createdUser.setPhoneNumber(phoneNumber); + createdUser.setImage(image); + createdUser.setRole(ROLE_USER); + createdUser.setVerified(false); + createdUser.setVerificationToken(UUID.randomUUID().toString()); + + when(userService.post(eq(username), eq(email), eq(password), eq(nationality), eq(phoneNumber), eq(image), + eq(ROLE_USER), eq(false), anyString(), any(), any(), any())).thenReturn(createdUser); + + User result = authService.register(username, email, password, nationality, phoneNumber, image); + + assertEquals("HIDDEN", result.getPassword()); + assertEquals(username, result.getUsername()); + assertEquals(email, result.getEmail()); + } + + @Test + void testRegisterFailure() { + String username = "user1"; + String email = "user1@example.com"; + String password = PASSWORD; + String nationality = "Country"; + String phoneNumber = "123456"; + String image = "image.png"; + + when(userService.post(eq(username), eq(email), eq(password), eq(nationality), eq(phoneNumber), eq(image), + eq(ROLE_USER), eq(false), anyString(), any(), any(), any())).thenReturn(null); + + AuthException exception = assertThrows(AuthException.class, () -> { + authService.register(username, email, password, nationality, phoneNumber, image); + }); + assertEquals("Something happened", exception.getMessage()); + } + + @Test + void testVerifySuccess() { + String email = EMAIL; + String token = "token123"; + + User user = new User(); + user.setId("1"); + user.setEmail(email); + user.setVerificationToken(token); + user.setUsername("user1"); + user.setPassword(HASHED_PASSWORD); + user.setNationality("Country"); + user.setPhoneNumber("123456"); + user.setImage("image.png"); + user.setRole(ROLE_USER); + user.setVerified(false); + + when(userService.findByEmail(email)).thenReturn(user); + + boolean verified = authService.verify(email, token); + + assertTrue(verified); + verify(userService, times(1)).put( eq(user.getId()), eq(user.getUsername()), eq(user.getEmail()), eq(user.getPassword()), + eq(user.getNationality()), eq(user.getPhoneNumber()), eq(user.getImage()), eq(user.getRole()), eq(true), any(), any(), any(), any()); + } + + @Test + void testVerifyFailure_UserNotFound() { + String email = EMAIL; + String token = "token123"; + + when(userService.findByEmail(email)).thenReturn(null); + + boolean verified = authService.verify(email, token); + assertFalse(verified); + } + + @Test + void testVerifyFailure_TokenMismatch() { + String email = EMAIL; + String token = "token123"; + + User user = new User(); + user.setId("1"); + user.setEmail(email); + user.setVerificationToken("differentToken"); + + when(userService.findByEmail(email)).thenReturn(user); + + boolean verified = authService.verify(email, token); + assertFalse(verified); + } + + @Test + void testVerifySucces_AlreadyVerified(){ + String email = EMAIL; + + User user = new User(); + user.setId("1"); + user.setEmail(email); + user.setVerified(true); + + when(userService.findByEmail(email)).thenReturn(user); + + boolean verified = authService.verify(email, ""); + assertTrue(verified); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/DeeplServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/DeeplServiceTest.java new file mode 100644 index 000000000..921a361d7 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/DeeplServiceTest.java @@ -0,0 +1,67 @@ +package es.iespuertodelacruz.routinefights.shared.services; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.mockito.Mockito.when; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import com.deepl.api.DeepLClient; +import com.deepl.api.DeepLException; +import com.deepl.api.TextResult; + +class DeeplServiceTest { + private DeeplService deeplService; + + @Mock + private DeepLClient deeplClientMock; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + deeplService = new DeeplService(deeplClientMock); + } + + @Test + void testTranslateText() throws DeepLException, InterruptedException { + String text = "Hello, world!"; + String targetLang = "es-ES"; + String expectedTranslation = "¡Hola, mundo!"; + + when(deeplClientMock.translateText(text, null, targetLang)).thenReturn( + new TextResult(expectedTranslation, "en-US", 0, null) + ); + + String actualTranslation = deeplService.translateText(text, targetLang); + + assertEquals(expectedTranslation, actualTranslation); + } + + @Test + void testTranslateText_throwsDeepLException() throws DeepLException, InterruptedException { + String text = "Hello, world!"; + String targetLang = "es-ES"; + + when(deeplClientMock.translateText(text, null, targetLang)).thenThrow(new DeepLException("Translation error")); + + String actualTranslation = deeplService.translateText(text, targetLang); + + assertNull(actualTranslation); + } + + @Test + void testTranslateText_throwsInterruptedException() throws DeepLException, InterruptedException { + String text = "Hello, world!"; + String targetLang = "es-ES"; + + when(deeplClientMock.translateText(text, null, targetLang)).thenThrow(new InterruptedException("Translation interrupted")); + + String actualTranslation = deeplService.translateText(text, targetLang); + + assertNull(actualTranslation); + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/GraphServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/GraphServiceTest.java new file mode 100644 index 000000000..6392b9aee --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/GraphServiceTest.java @@ -0,0 +1,128 @@ +package es.iespuertodelacruz.routinefights.shared.services; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.springframework.data.neo4j.core.Neo4jClient; +import org.springframework.data.neo4j.core.Neo4jClient.RecordFetchSpec; +import org.springframework.data.neo4j.core.Neo4jClient.UnboundRunnableSpec; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.when; +import java.time.LocalDate; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import es.iespuertodelacruz.routinefights.shared.dto.ChartData; + +class GraphServiceTest { + private GraphService graphService; + @Mock + private Neo4jClient neo4jClient; + @Mock + private UnboundRunnableSpec unboundRunnableSpec; + @Mock + private RecordFetchSpec> recordFetchSpec; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + graphService = new GraphService(neo4jClient); + } + + @Test + void testFindAllUsersCreatedAt() { + + Collection> mockResult = List.of( + Map.of("registeredAt", LocalDate.of(2023, 1, 1), "total", 5), + Map.of("registeredAt", LocalDate.of(2023, 1, 2), "total", 10)); + + when(neo4jClient.query(anyString())).thenReturn(unboundRunnableSpec); + when(unboundRunnableSpec.fetch()).thenReturn(recordFetchSpec); + when(recordFetchSpec.all()).thenReturn(mockResult); + + ChartData chartData = graphService.findUserRegistrationsByDate(); + + assertEquals(List.of("2023-01-01", "2023-01-02"), chartData.getLabels()); + assertEquals(List.of(5L, 10L), chartData.getData()); + } + @Test + void testFindPostsCreatedByDate() { + Collection> mockResult = List.of( + Map.of("createdAt", LocalDate.of(2023, 1, 1), "total", 5), + Map.of("createdAt", LocalDate.of(2023, 1, 2), "total", 10)); + + when(neo4jClient.query(anyString())).thenReturn(unboundRunnableSpec); + when(unboundRunnableSpec.fetch()).thenReturn(recordFetchSpec); + when(recordFetchSpec.all()).thenReturn(mockResult); + + ChartData chartData = graphService.findPostsCreatedByDate(); + + assertEquals(List.of("2023-01-01", "2023-01-02"), chartData.getLabels()); + assertEquals(List.of(5L, 10L), chartData.getData()); + } + @Test + void testFindPointsAddedSumByDate() { + Collection> mockResult = List.of( + Map.of("createdAt", LocalDate.of(2023, 1, 1), "totalPoints", 5), + Map.of("createdAt", LocalDate.of(2023, 1, 2), "totalPoints", 10)); + + when(neo4jClient.query(anyString())).thenReturn(unboundRunnableSpec); + when(unboundRunnableSpec.fetch()).thenReturn(recordFetchSpec); + when(recordFetchSpec.all()).thenReturn(mockResult); + + ChartData chartData = graphService.findPointsAddedSumByDate(); + + assertEquals(List.of("2023-01-01", "2023-01-02"), chartData.getLabels()); + assertEquals(List.of(5L, 10L), chartData.getData()); + } + @Test + void testFindActivitiesByTimeRate() { + Collection> mockResult = List.of( + Map.of("rate", 1, "total", 5), + Map.of("rate", 2, "total", 10)); + + when(neo4jClient.query(anyString())).thenReturn(unboundRunnableSpec); + when(unboundRunnableSpec.fetch()).thenReturn(recordFetchSpec); + when(recordFetchSpec.all()).thenReturn(mockResult); + + ChartData chartData = graphService.findActivitiesByTimeRate(); + + assertEquals(List.of("1", "2"), chartData.getLabels()); + assertEquals(List.of(5L, 10L), chartData.getData()); + } + @Test + void testFindTotalPointsByUser() { + Collection> mockResult = List.of( + Map.of("user", "user1", "totalPoints", 5), + Map.of("user", "user2", "totalPoints", 10)); + + when(neo4jClient.query(anyString())).thenReturn(unboundRunnableSpec); + when(unboundRunnableSpec.fetch()).thenReturn(recordFetchSpec); + when(recordFetchSpec.all()).thenReturn(mockResult); + + ChartData chartData = graphService.findTotalPointsByUser(); + + assertEquals(List.of("user1", "user2"), chartData.getLabels()); + assertEquals(List.of(5L, 10L), chartData.getData()); + } + @Test + void testExecuteQuerry() { + Collection> mockResult = List.of( + Map.of("label", "label1", "data", 5), + Map.of("label", "label2", "data", 10)); + + when(neo4jClient.query(anyString())).thenReturn(unboundRunnableSpec); + when(unboundRunnableSpec.fetch()).thenReturn(recordFetchSpec); + when(recordFetchSpec.all()).thenReturn(mockResult); + + ChartData chartData = graphService.executeQuerry("MATCH (n) RETURN n", "label", "data"); + + assertEquals(List.of("label1", "label2"), chartData.getLabels()); + assertEquals(List.of(5L, 10L), chartData.getData()); + } + + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/ImageServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/ImageServiceTest.java new file mode 100644 index 000000000..53ff71c80 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/ImageServiceTest.java @@ -0,0 +1,143 @@ +package es.iespuertodelacruz.routinefights.shared.services; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.IOException; +import java.lang.reflect.Field; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.core.io.UrlResource; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.test.util.ReflectionTestUtils; + +import es.iespuertodelacruz.routinefights.shared.exceptions.ImageNotFoundException; + +class ImageServiceTest { + private ImageService imageService; + private Path uploadsDirectory; + + @BeforeEach + void setup() throws IOException, NoSuchFieldException, IllegalAccessException { + uploadsDirectory = Files.createTempDirectory("uploads_test"); + imageService = new ImageService(); + Field uploadsField = ImageService.class.getDeclaredField("uploads"); + uploadsField.setAccessible(true); + uploadsField.set(imageService, uploadsDirectory); + } + + @AfterEach + void tearDown() throws IOException { + Files.walk(uploadsDirectory) + .forEach(path -> { + try { + Files.delete(path); + } catch (IOException e) { + e.printStackTrace(); + } + }); + } + + @Test + void testSaveAndFindImage() { + String originalFilename = "test.jpg"; + byte[] content = "dummy image content".getBytes(); + MockMultipartFile multipartFile = new MockMultipartFile("file", originalFilename, "image/jpeg", content); + + String savedFilename = imageService.save(multipartFile); + assertNotNull(savedFilename, "Saved filename should not be null"); + Path savedFilePath = uploadsDirectory.resolve(savedFilename); + assertTrue(Files.exists(savedFilePath), "Saved file should exist"); + + UrlResource resource = imageService.findImage(savedFilename); + assertNotNull(resource, "Returned resource should not be null"); + assertTrue(resource.exists(), "Returned resource should exist"); + } + + @Test + void testFindImageNotFound() { + String nonExistentFilename = "nonexistent.jpg"; + Exception exception = assertThrows(ImageNotFoundException.class, () -> { + imageService.findImage(nonExistentFilename); + }); + assertTrue(exception.getMessage().contains("not found"), + "Exception message should indicate file was not found"); + } + + @Test + void testSaveDuplicateFileNames() { + String originalFilename = "duplicate.jpg"; + byte[] content = "dummy content".getBytes(); + MockMultipartFile file1 = new MockMultipartFile("file", originalFilename, "image/jpeg", content); + MockMultipartFile file2 = new MockMultipartFile("file", originalFilename, "image/jpeg", content); + + String savedFilename1 = imageService.save(file1); + String savedFilename2 = imageService.save(file2); + + assertEquals("duplicate.jpg", savedFilename1, "The first file should keep its original name"); + + assertNotEquals(savedFilename1, savedFilename2, "Duplicate file should have a different name"); + assertTrue(savedFilename2.matches("duplicate_\\d+\\.jpg"), "Filename should be appended with a counter"); + } + + @Test + void testGetAll() { + String originalFilename = "test.jpg"; + byte[] content = "dummy image content".getBytes(); + MockMultipartFile multipartFile = new MockMultipartFile("file", originalFilename, "image/jpeg", content); + + String savedFilename = imageService.save(multipartFile); + assertNotNull(savedFilename, "Saved filename should not be null"); + Path savedFilePath = uploadsDirectory.resolve(savedFilename); + assertTrue(Files.exists(savedFilePath), "Saved file should exist"); + + List images = imageService.getAll(); + assertEquals(1, images.size(), "There should be one image"); + assertEquals(savedFilename, images.get(0), "The saved filename should be in the list"); + } + + @Test + void testDelete() { + String originalFilename = "test.jpg"; + byte[] content = "dummy image content".getBytes(); + MockMultipartFile multipartFile = new MockMultipartFile("file", originalFilename, "image/jpeg", content); + + String savedFilename = imageService.save(multipartFile); + assertNotNull(savedFilename, "Saved filename should not be null"); + Path savedFilePath = uploadsDirectory.resolve(savedFilename); + assertTrue(Files.exists(savedFilePath), "Saved file should exist"); + + imageService.delete(savedFilename); + assertTrue(Files.notExists(savedFilePath), "Deleted file should not exist"); + } + + @Test + void testDeleteException() { + Exception exception = assertThrows(ImageNotFoundException.class, () -> { + imageService.delete("nonexistent.jpg"); + }); + assertTrue(exception.getMessage().contains("Error"), + "Exception message should indicate file was not found"); + } + + @Test + void testGetAllException() throws IOException { + Path tempFile = Files.createTempFile("test", ".tmp"); + try { + ReflectionTestUtils.setField(imageService, "uploads", tempFile); + + assertThrows(ImageNotFoundException.class, () -> imageService.getAll()); + } finally { + Files.deleteIfExists(tempFile); + } + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/MailServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/MailServiceTest.java new file mode 100644 index 000000000..63ffd95ee --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/MailServiceTest.java @@ -0,0 +1,84 @@ +package es.iespuertodelacruz.routinefights.shared.services; + +import static org.mockito.Mockito.*; +import static org.junit.jupiter.api.Assertions.*; + +import com.sendgrid.*; +import com.sendgrid.helpers.mail.objects.Email; +import es.iespuertodelacruz.routinefights.shared.exceptions.MailException; +import org.junit.jupiter.api.*; +import org.mockito.*; + +class MailServiceTest { + + @Mock + private SendGrid sendGrid; + + @Mock + private Email fromEmail; + + @InjectMocks + private MailService mailService; + + private AutoCloseable closeable; + + @BeforeEach + void setUp() { + closeable = MockitoAnnotations.openMocks(this); + } + + @AfterEach + void tearDown() throws Exception { + closeable.close(); + } + + @Test + void testDispatchEmail_Success() throws Exception { + String emailId = "test@example.com"; + String subject = "Test Subject"; + String body = "Test Body"; + + Response mockResponse = new Response(); + mockResponse.setStatusCode(202); + when(sendGrid.api(any(Request.class))).thenReturn(mockResponse); + + assertDoesNotThrow(() -> mailService.dispatchEmail(emailId, subject, body)); + + verify(sendGrid, times(1)).api(any(Request.class)); + } + + @Test + void testDispatchEmail_Failure() throws Exception { + String emailId = "test@example.com"; + String subject = "Test Subject"; + String body = "Test Body"; + + Response mockResponse = new Response(); + mockResponse.setStatusCode(400); + mockResponse.setBody("Bad Request"); + when(sendGrid.api(any(Request.class))).thenReturn(mockResponse); + + MailException exception = assertThrows(MailException.class, () -> + mailService.dispatchEmail(emailId, subject, body) + ); + assertTrue(exception.getMessage().contains("Error sending email: Bad Request")); + + verify(sendGrid, times(1)).api(any(Request.class)); + } + + @Test + void testSendVerificationEmail_Success()throws Exception { + String emailId = "test@example.com"; + String subject = "Test Subject"; + String body = "Test Body"; + + Response mockResponse = new Response(); + mockResponse.setStatusCode(202); + when(sendGrid.api(any(Request.class))).thenReturn(mockResponse); + + assertDoesNotThrow(() -> mailService.sentVerifyToken(emailId, subject, body)); + + verify(sendGrid, times(1)).api(any(Request.class)); + } +} + diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/NotificationsServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/NotificationsServiceTest.java new file mode 100644 index 000000000..f0a1b6d7f --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/NotificationsServiceTest.java @@ -0,0 +1,295 @@ + +package es.iespuertodelacruz.routinefights.shared.services; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoInteractions; +import static org.mockito.Mockito.when; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import com.google.firebase.ErrorCode; +import com.google.firebase.messaging.BatchResponse; +import com.google.firebase.messaging.FirebaseMessaging; +import com.google.firebase.messaging.FirebaseMessagingException; +import com.google.firebase.messaging.Message; +import com.google.firebase.messaging.MulticastMessage; + +import es.iespuertodelacruz.routinefights.device_token.domain.DeviceToken; + +class NotificationsServiceTest { + + private static final String TOKEN1 = "token1"; + + private static final String TOKEN2 = "token2"; + + private static final String TOKEN = "token123"; + + private static final String EN_MSG_EN = "en=msgEn"; + + private static final String MSG_ES = "msgEs"; + + private static final String MUNDO = "Mundo"; + + private static final String HOLA = "Hola"; + + private static final String WORLD = "World"; + + private static final String HELLO = "Hello"; + + private static final String ES = "es"; + + private static final String MSG_EN = "msgEn"; + + private static final String EN = "en"; + + private static final String BODY_KEY = "body.key"; + + private static final String TITLE_KEY = "title.key"; + + @Mock + private FirebaseMessaging fcm; + + @Mock + private TranslationService translationService; + + private NotificationsService notificationsService; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + notificationsService = new NotificationsService(fcm, translationService); + } + + @Test + void testSendToAllUsersSingleLanguageSuccess() throws Exception { + + Map args = Map.of(); + + when(translationService.getSupportedLanguages()).thenReturn(List.of(EN)); + when(translationService.translate(TITLE_KEY, EN, args)).thenReturn(HELLO); + when(translationService.translate(BODY_KEY, EN, args)).thenReturn(WORLD); + when(fcm.send(any(Message.class))).thenReturn(MSG_EN); + + String result = notificationsService.sendToAllUsers(TITLE_KEY, BODY_KEY, args); + + assertEquals(EN_MSG_EN, result); + verify(fcm, times(1)).send(any(Message.class)); + verify(translationService).getSupportedLanguages(); + verify(translationService).translate(TITLE_KEY, EN, args); + verify(translationService).translate(BODY_KEY, EN, args); + } + + @Test + void testSendToAllUsersMultipleLanguagesSuccessConcatenated() throws Exception { + Map args = Map.of(); + + when(translationService.getSupportedLanguages()).thenReturn(Arrays.asList(EN, ES)); + when(translationService.translate(TITLE_KEY, EN, args)).thenReturn(HELLO); + when(translationService.translate(BODY_KEY, EN, args)).thenReturn(WORLD); + when(translationService.translate(TITLE_KEY, ES, args)).thenReturn(HOLA); + when(translationService.translate(BODY_KEY, ES, args)).thenReturn(MUNDO); + + when(fcm.send(any(Message.class))).thenReturn(MSG_EN, MSG_ES); + + String result = notificationsService.sendToAllUsers(TITLE_KEY, BODY_KEY, args); + + assertEquals("en=msgEn; es=msgEs", result); + verify(fcm, times(2)).send(any(Message.class)); + } + + @Test + void testSendToAllUsersPartialFailure() throws Exception { + Map args = Map.of(); + + when(translationService.getSupportedLanguages()).thenReturn(Arrays.asList(EN, ES)); + when(translationService.translate(TITLE_KEY, EN, args)).thenReturn(HELLO); + when(translationService.translate(BODY_KEY, EN, args)).thenReturn(WORLD); + when(translationService.translate(TITLE_KEY, ES, args)).thenReturn(HOLA); + when(translationService.translate(BODY_KEY, ES, args)).thenReturn(MUNDO); + + FirebaseMessagingException fakeException = mock(FirebaseMessagingException.class); + when(fakeException.getErrorCode()).thenReturn(ErrorCode.INVALID_ARGUMENT); + when(fakeException.getMessage()).thenReturn("failed es"); + when(fcm.send(any(Message.class))).thenAnswer(invocation -> { + Message msg = invocation.getArgument(0); + String topic = null; + try { + java.lang.reflect.Field f = msg.getClass().getDeclaredField("topic"); + f.setAccessible(true); + topic = (String) f.get(msg); + } catch (ReflectiveOperationException e) { + throw new RuntimeException(e); + } + + if ("general-en".equals(topic)) { + return MSG_EN; + } else if ("general-es".equals(topic)) { + throw fakeException; + } + return null; + }); + + String result = notificationsService.sendToAllUsers(TITLE_KEY, BODY_KEY, args); + + assertEquals(EN_MSG_EN, result); + verify(fcm, times(2)).send(any(Message.class)); + } + + @Test + void testSendToAllUsersAllFailuresReturnsNull() throws Exception { + Map args = Map.of(); + + when(translationService.getSupportedLanguages()).thenReturn(Arrays.asList(EN, ES)); + when(translationService.translate(anyString(), anyString(), any())).thenReturn("t", "b"); + + FirebaseMessagingException fakeException = mock(FirebaseMessagingException.class); + when(fakeException.getMessage()).thenReturn("failed"); + when(fakeException.getErrorCode()).thenReturn(ErrorCode.UNKNOWN); + + when(fcm.send(any(Message.class))).thenAnswer(invocation -> { + throw fakeException; + }); + + String result = notificationsService.sendToAllUsers(TITLE_KEY, BODY_KEY, args); + + assertNull(result); + verify(fcm, times(2)).send(any(Message.class)); + } + + @Test + void testSendToAllUsersNoLanguagesReturnsNullAndNoSend() { + String titleKey = TITLE_KEY; + String bodyKey = BODY_KEY; + Map args = Map.of(); + + when(translationService.getSupportedLanguages()).thenReturn(Collections.emptyList()); + + String result = notificationsService.sendToAllUsers(titleKey, bodyKey, args); + + assertNull(result); + verifyNoInteractions(fcm); + } + + @Test + void testSendToUserSuccess() throws Exception { + Map args = Map.of(); + DeviceToken userToken = new DeviceToken(TOKEN, null, EN); + + when(translationService.translate(TITLE_KEY, EN, args)).thenReturn(HELLO); + when(translationService.translate(BODY_KEY, EN, args)).thenReturn(WORLD); + when(fcm.send(any(Message.class))).thenReturn("msgToUser"); + String result = notificationsService.sendTo(TITLE_KEY, BODY_KEY, userToken, args); + assertNull(result); + verify(fcm, times(1)).send(any(Message.class)); + } + + @Test + void testSendToUserFailureReturnsNull() throws Exception { + Map args = Map.of(); + DeviceToken userToken = new DeviceToken(TOKEN, null, EN); + + when(translationService.translate(TITLE_KEY, EN, args)).thenReturn(HELLO); + when(translationService.translate(BODY_KEY, EN, args)).thenReturn(WORLD); + FirebaseMessagingException fakeException = mock(FirebaseMessagingException.class); + when(fakeException.getMessage()).thenReturn("failed"); + when(fakeException.getErrorCode()).thenReturn(ErrorCode.UNKNOWN); + when(fcm.send(any(Message.class))).thenThrow(fakeException); + + String result = notificationsService.sendTo(TITLE_KEY, BODY_KEY, userToken, args); + + assertNull(result); + verify(fcm, times(1)).send(any(Message.class)); + } + + @Test + void testSendToMultipleUsersSuccess() throws Exception { + Map args = Map.of(); + DeviceToken userToken1 = new DeviceToken(TOKEN1, null, EN); + DeviceToken userToken2 = new DeviceToken(TOKEN2, null, ES); + List usersTokens = Arrays.asList(userToken1, userToken2); + + when(translationService.translate(TITLE_KEY, EN, args)).thenReturn(HELLO); + when(translationService.translate(BODY_KEY, EN, args)).thenReturn(WORLD); + when(translationService.translate(TITLE_KEY, ES, args)).thenReturn(HOLA); + when(translationService.translate(BODY_KEY, ES, args)).thenReturn(MUNDO); + + BatchResponse mockBatchResponse = mock(BatchResponse.class); + when(fcm.sendMulticast(any(MulticastMessage.class))).thenReturn(mockBatchResponse); + when(mockBatchResponse.getSuccessCount()).thenReturn(2); + when(mockBatchResponse.getFailureCount()).thenReturn(0); + + String result = notificationsService.sendTo(TITLE_KEY, BODY_KEY, usersTokens, args); + assertNull(result); + verify(fcm, times(2)).sendMulticast(any(MulticastMessage.class)); + verify(translationService, times(4)).translate(anyString(), anyString(), any()); + } + + @Test + void testSendToMultipleUsersNoTokensProvided() { + Map args = Map.of(); + List usersTokens = Collections.emptyList(); + + String result = notificationsService.sendTo(TITLE_KEY, BODY_KEY, usersTokens, args); + assertNull(result); + verifyNoInteractions(fcm); + verify(translationService, times(0)).translate(anyString(), anyString(), any()); + + } + + @Test + void testSendToMultipleUsersPartialFailure() throws Exception { + Map args = Map.of(); + DeviceToken userToken1 = new DeviceToken(TOKEN1, null, EN); + DeviceToken userToken2 = new DeviceToken(TOKEN2, null, ES); + List usersTokens = Arrays.asList(userToken1, userToken2); + when(translationService.translate(TITLE_KEY, EN, args)).thenReturn(HELLO); + when(translationService.translate(BODY_KEY, EN, args)).thenReturn(WORLD); + when(translationService.translate(TITLE_KEY, ES, args)).thenReturn(HOLA); + when(translationService.translate(BODY_KEY, ES, args)).thenReturn(MUNDO); + BatchResponse mockBatchResponse = mock(BatchResponse.class); + when(fcm.sendMulticast(any(MulticastMessage.class))).thenReturn(mockBatchResponse); + when(mockBatchResponse.getSuccessCount()).thenReturn(1); + when(mockBatchResponse.getFailureCount()).thenReturn(1); + + String result = notificationsService.sendTo(TITLE_KEY, BODY_KEY, usersTokens, args); + assertNull(result); + verify(fcm, times(2)).sendMulticast(any(MulticastMessage.class)); + verify(translationService, times(4)).translate(anyString(), anyString(), any()); + } + + @Test + void testSendToMultipleUsersAllFailures() throws Exception { + Map args = Map.of(); + DeviceToken userToken1 = new DeviceToken(TOKEN1, null, EN); + DeviceToken userToken2 = new DeviceToken(TOKEN2, null, ES); + List usersTokens = Arrays.asList(userToken1, userToken2); + when(translationService.translate(TITLE_KEY, EN, args)).thenReturn(HELLO); + when(translationService.translate(BODY_KEY, EN, args)).thenReturn(WORLD); + when(translationService.translate(TITLE_KEY, ES, args)).thenReturn(HOLA); + when(translationService.translate(BODY_KEY, ES, args)).thenReturn(MUNDO); + + FirebaseMessagingException fakeException = mock(FirebaseMessagingException.class); + when(fakeException.getMessage()).thenReturn("failed"); + when(fakeException.getErrorCode()).thenReturn(ErrorCode.UNKNOWN); + when(fcm.sendMulticast(any(MulticastMessage.class))).thenThrow(fakeException); + String result = notificationsService.sendTo(TITLE_KEY, BODY_KEY, usersTokens, args); + assertNull(result); + verify(fcm, times(2)).sendMulticast(any(MulticastMessage.class)); + verify(translationService, times(4)).translate(anyString(), anyString(), any()); + } + +} \ No newline at end of file diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/TranslationsServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/TranslationsServiceTest.java new file mode 100644 index 000000000..cf1d1fbd9 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/services/TranslationsServiceTest.java @@ -0,0 +1,53 @@ +package es.iespuertodelacruz.routinefights.shared.services; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import java.util.Collections; +import java.util.Map; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class TranslationsServiceTest { + + private TranslationService translationService; + + @BeforeEach + void setUp() { + translationService = new TranslationService(); + } + + @Test + void getTranslationsDirectorySuccess() { + assertNull(translationService.getTranslationsDirectory()); + } + + @Test + void translateSuccessNotArgs() { + String translated = translationService.translate("greeting", "en-US", null); + assertEquals("Hello", translated); + } + + @Test + void translateSuccessEmptyArgs() { + String translated = translationService.translate("greeting", "es-ES", Collections.emptyMap()); + assertEquals("Hola", translated); + } + + @Test + void translateSuccessWithArgs() { + String translatedEs = translationService.translate("test", "es-ES", Map.of("testArg", "mundo")); + assertEquals("Prueba mundo", translatedEs); + String translatedEn = translationService.translate("test", "en-US", Map.of("testArg", "world")); + assertEquals("Test world", translatedEn); + } + + @Test + void getSupportedLanguagesSuccess() { + var languages = translationService.getSupportedLanguages(); + assertNotNull(languages); + assertTrue(languages.size() > 0); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/soap/AuthSOAPImplTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/soap/AuthSOAPImplTest.java new file mode 100644 index 000000000..ac8d2f90d --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/soap/AuthSOAPImplTest.java @@ -0,0 +1,109 @@ +package es.iespuertodelacruz.routinefights.shared.soap; + +import org.junit.jupiter.api.BeforeEach; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import es.iespuertodelacruz.routinefights.shared.mappers.UserDTOAuthMapper; +import es.iespuertodelacruz.routinefights.shared.services.AuthService; +import es.iespuertodelacruz.routinefights.shared.services.MailService; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.*; +import org.junit.jupiter.api.Test; +import es.iespuertodelacruz.routinefights.shared.dto.UserDTOAuth; +import es.iespuertodelacruz.routinefights.shared.utils.HTMLTemplates; +import es.iespuertodelacruz.routinefights.user.domain.User; + +class AuthSOAPImplTest { + private AuthSOAPImpl authSOAPImpl; + + @Mock + private MailService mailService; + @Mock + private AuthService authService; + @Mock + private UserDTOAuthMapper userDTOAuthMapper; + + private static final String EMAIL = "test@example.com"; + private static final String PASSWORD = "password123"; + private static final String VALID_TOKEN = "validToken"; + private static final String INVALID_TOKEN = "invalidToken"; + private static final String MOCK_TOKEN = "mockToken"; + private static final String VERIFICATION_ERROR = "Verification error"; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + authSOAPImpl = new AuthSOAPImpl(mailService, authService, userDTOAuthMapper); + } + + @Test + void testLogin() { + when(authService.login(EMAIL, PASSWORD)).thenReturn(MOCK_TOKEN); + + String result = authSOAPImpl.login(EMAIL, PASSWORD); + + assertEquals(MOCK_TOKEN, result); + verify(authService, times(1)).login(EMAIL, PASSWORD); + } + + @Test + void testVerifySuccess() { + when(authService.verify(EMAIL, VALID_TOKEN)).thenReturn(true); + + String result = authSOAPImpl.verify(EMAIL, VALID_TOKEN); + + assertEquals(HTMLTemplates.VERIFIED, result); + verify(authService, times(1)).verify(EMAIL, VALID_TOKEN); + } + + @Test + void testVerifyFailure() { + when(authService.verify(EMAIL, INVALID_TOKEN)).thenReturn(false); + + String result = authSOAPImpl.verify(EMAIL, INVALID_TOKEN); + + assertEquals(HTMLTemplates.BAD_REQUEST, result); + verify(authService, times(1)).verify(EMAIL, INVALID_TOKEN); + } + + @Test + void testVerifyWithNullInputs() { + String result = authSOAPImpl.verify(null, null); + + assertEquals(HTMLTemplates.NEED_EMAIL_TOKEN, result); + verify(authService, never()).verify(anyString(), anyString()); + } + + @Test + void testVerifyWithException() { + when(authService.verify(EMAIL, VALID_TOKEN)).thenThrow(new RuntimeException(VERIFICATION_ERROR)); + + String result = authSOAPImpl.verify(EMAIL, VALID_TOKEN); + + assertEquals(HTMLTemplates.ERROR.formatted(VERIFICATION_ERROR), result); + verify(authService, times(1)).verify(EMAIL, VALID_TOKEN); + } + + @Test + void testRegister() { + UserDTOAuth userDTOAuth = new UserDTOAuth("username", EMAIL, PASSWORD, "nationality", "123456789", "image"); + User user = new User(); + user.setEmail(userDTOAuth.email()); + user.setUsername(userDTOAuth.username()); + user.setVerificationToken(MOCK_TOKEN); + + when(authService.register(userDTOAuth.username(), userDTOAuth.email(), userDTOAuth.password(), + userDTOAuth.nationality(), userDTOAuth.phoneNumber(), userDTOAuth.image())).thenReturn(user); + when(userDTOAuthMapper.toDTO(user)).thenReturn(userDTOAuth); + + UserDTOAuth result = authSOAPImpl.register(userDTOAuth); + + assertEquals(userDTOAuth, result); + verify(authService, times(1)).register(userDTOAuth.username(), userDTOAuth.email(), userDTOAuth.password(), + userDTOAuth.nationality(), userDTOAuth.phoneNumber(), userDTOAuth.image()); + verify(mailService, times(1)).sentVerifyToken(user.getEmail(), "Verify your email: " + user.getUsername(), + user.getVerificationToken()); + verify(userDTOAuthMapper, times(1)).toDTO(user); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/soap/GraphSOAPImplTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/soap/GraphSOAPImplTest.java new file mode 100644 index 000000000..05f583caa --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/soap/GraphSOAPImplTest.java @@ -0,0 +1,71 @@ + +package es.iespuertodelacruz.routinefights.shared.soap; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import static org.mockito.Mockito.when; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import es.iespuertodelacruz.routinefights.shared.dto.ChartData; +import es.iespuertodelacruz.routinefights.shared.services.GraphService; + +class GraphSOAPImplTest { + + private static final ChartData MOCK_CHART_DATA = new ChartData(); + private GraphSOAPImpl graphSOAPImpl; + + @Mock + private GraphService graphService; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + graphSOAPImpl = new GraphSOAPImpl(graphService); + + } + + @Test + void testGetUserCreationChart() { + when(graphService.findUserRegistrationsByDate()).thenReturn(MOCK_CHART_DATA); + + ChartData result = graphSOAPImpl.getUserCreationChart(); + + assertNotNull(result); + assertEquals(MOCK_CHART_DATA, result); + } + + @Test + void testGetPostCreationChart() { + when(graphService.findPostsCreatedByDate()).thenReturn(MOCK_CHART_DATA); + + ChartData result = graphSOAPImpl.getPostCreationChart(); + + assertNotNull(result); + assertEquals(MOCK_CHART_DATA, result); + } + + @Test + void testGetPostPointsChart() { + when(graphService.findPointsAddedSumByDate()).thenReturn(MOCK_CHART_DATA); + + ChartData result = graphSOAPImpl.getPostPointsChart(); + + assertNotNull(result); + assertEquals(MOCK_CHART_DATA, result); + } + + @Test + void testGetUserPointsChart() { + when(graphService.findTotalPointsByUser()).thenReturn(MOCK_CHART_DATA); + + ChartData result = graphSOAPImpl.getUserPointsChart(); + + assertNotNull(result); + assertEquals(MOCK_CHART_DATA, result); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/soap/ImageSOAPImplTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/soap/ImageSOAPImplTest.java new file mode 100644 index 000000000..1c067533a --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/soap/ImageSOAPImplTest.java @@ -0,0 +1,80 @@ +package es.iespuertodelacruz.routinefights.shared.soap; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.springframework.core.io.UrlResource; +import es.iespuertodelacruz.routinefights.shared.exceptions.ImageUploadException; +import es.iespuertodelacruz.routinefights.shared.services.ImageService; + +class ImageSOAPImplTest { + + private static final String VALID_IMAGE_NAME = "testImage.jpg"; + private static final String INVALID_CONTENT_TYPE = "text/plain"; + private static final String VALID_CONTENT_TYPE = "image/jpeg"; + private static final String VALID_FILE_NAME = "image.jpg"; + private static final byte[] VALID_BYTES = new byte[] { 1, 2, 3 }; + private static final byte[] EMPTY_BYTES = new byte[] {}; + + @Mock + private ImageService imageService; + + private ImageSOAPImpl imageSOAP; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + imageSOAP = new ImageSOAPImpl(imageService); + } + + @Test + void testGetImage_Success() { + UrlResource mockResource = mock(UrlResource.class); + when(imageService.findImage(VALID_IMAGE_NAME)).thenReturn(mockResource); + + UrlResource result = imageSOAP.getImage(VALID_IMAGE_NAME); + + assertNotNull(result); + verify(imageService, times(1)).findImage(VALID_IMAGE_NAME); + } + + @Test + void testUploadFile_Success() { + when(imageService.save(any())).thenReturn(VALID_FILE_NAME); + + String result = imageSOAP.uploadFile(VALID_BYTES, VALID_FILE_NAME, VALID_CONTENT_TYPE); + + assertEquals(VALID_FILE_NAME, result); + verify(imageService, times(1)).save(any()); + } + + @Test + void testUploadFile_EmptyFile() { + ImageUploadException exception = assertThrows(ImageUploadException.class, () -> { + imageSOAP.uploadFile(EMPTY_BYTES, VALID_FILE_NAME, VALID_CONTENT_TYPE); + }); + + assertEquals("File is empty", exception.getMessage()); + } + + @Test + void testUploadFile_InvalidContentType() { + ImageUploadException exception = assertThrows(ImageUploadException.class, () -> { + imageSOAP.uploadFile(VALID_BYTES, VALID_FILE_NAME, INVALID_CONTENT_TYPE); + }); + + assertEquals("File is not an image", exception.getMessage()); + } + + @Test + void testUploadFile_NullContentType() { + ImageUploadException exception = assertThrows(ImageUploadException.class, () -> { + imageSOAP.uploadFile(VALID_BYTES, VALID_FILE_NAME, null); + }); + + assertEquals("File is empty", exception.getMessage()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/tasks/CacheResetTaskTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/tasks/CacheResetTaskTest.java new file mode 100644 index 000000000..e156576c0 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/tasks/CacheResetTaskTest.java @@ -0,0 +1,39 @@ +package es.iespuertodelacruz.routinefights.shared.tasks; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.springframework.cache.Cache; +import org.springframework.cache.CacheManager; +import java.util.Arrays; +import static org.mockito.Mockito.*; + +class CacheResetTaskTest { + + @Mock + private CacheManager cacheManager; + + @Mock + private Cache cache; + + private CacheResetTask cacheResetTask; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + cacheResetTask = new CacheResetTask(cacheManager); + } + + @Test + void testClearAllCaches() { + when(cacheManager.getCacheNames()).thenReturn(Arrays.asList("cache1", "cache2")); + when(cacheManager.getCache("cache1")).thenReturn(cache); + when(cacheManager.getCache("cache2")).thenReturn(cache); + + cacheResetTask.clearAllCaches(); + + verify(cacheManager, times(1)).getCacheNames(); + verify(cache, times(2)).clear(); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/tasks/EventsTaskTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/tasks/EventsTaskTest.java new file mode 100644 index 000000000..285ddbcba --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/tasks/EventsTaskTest.java @@ -0,0 +1,56 @@ +package es.iespuertodelacruz.routinefights.shared.tasks; + +import static org.mockito.Mockito.when; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import es.iespuertodelacruz.routinefights.badge.domain.Badge; +import es.iespuertodelacruz.routinefights.badge.domain.ports.primary.IBadgeService; +import es.iespuertodelacruz.routinefights.community_event.domain.CommunityEvent; +import es.iespuertodelacruz.routinefights.community_event.domain.ports.primary.ICommunityEventService; +import es.iespuertodelacruz.routinefights.user.domain.User; + +class EventsTaskTest { + + private EventsTask eventsTask; + @Mock + private ICommunityEventService communityEventService; + @Mock + private IBadgeService badgeService; + private CommunityEvent communityEvent; + private List usersParticipated; + private List badges; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + eventsTask = new EventsTask(communityEventService, badgeService); + communityEvent = new CommunityEvent(); + communityEvent.setTotalRequired(100); + User user = new User(); + user.setId("user1"); + usersParticipated = List.of(user); + badges = List.of(new Badge("id1", null, 1, usersParticipated, communityEvent), + new Badge("id2", null, 2, usersParticipated, communityEvent), + new Badge("id3", null, 3, usersParticipated, communityEvent)); + } + + @Test + void giveTodayBadgesTestCompleted() { + when(communityEventService.getCommunityEventEndsToday()).thenReturn(communityEvent); + when(communityEventService.getUsersParticipatingInCommunityEventEndsToday()) + .thenReturn(usersParticipated.stream().map(User::getId).toList()); + when(badgeService.findByCommunityEvent(communityEvent.getId())).thenReturn(badges); + when(communityEventService.getCommunityEventPointsById(communityEvent.getId())).thenReturn(100); + List participatedUserActual = eventsTask.giveTodayBadges(); + assertEquals(usersParticipated.get(0).getId(), participatedUserActual.get(0)); + + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/shared/tasks/ImagesTasksTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/tasks/ImagesTasksTest.java new file mode 100644 index 000000000..887900a33 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/shared/tasks/ImagesTasksTest.java @@ -0,0 +1,98 @@ +package es.iespuertodelacruz.routinefights.shared.tasks; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import es.iespuertodelacruz.routinefights.activity.domain.ports.primary.IActivityService; +import es.iespuertodelacruz.routinefights.community_event.domain.ports.primary.ICommunityEventService; +import es.iespuertodelacruz.routinefights.post.domain.ports.primary.IPostService; +import es.iespuertodelacruz.routinefights.shared.services.ImageService; +import es.iespuertodelacruz.routinefights.user.domain.ports.primary.IUserService; + +class ImagesTasksTest { + private static final String IMAGE3 = "image3"; + private static final String IMAGE2 = "image2"; + private static final String IMAGE1 = "image1"; + @Mock + private ImageService imageService; + @Mock + private IUserService userService; + @Mock + private IPostService postService; + @Mock + private ICommunityEventService communityEventService; + @Mock + private IActivityService activityService; + @InjectMocks + private ImagesTasks imagesTasks; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + imagesTasks = new ImagesTasks(imageService, userService, postService,communityEventService, activityService); + } + + @Test + void deleteNotUsedImagesAllEmptyTest() { + Set images = new HashSet(); + when(imageService.getAll()).thenReturn(new ArrayList()); + when(userService.findAllImages()).thenReturn(images); + when(postService.findAllImages()).thenReturn(images); + List deletedImages = imagesTasks.deleteNotUsedImages(); + assertTrue(deletedImages.isEmpty()); + } + + @Test + void deleteNotUsedImagesOneTest() { + List imagesLocal = new ArrayList(); + imagesLocal.add(IMAGE1); + when(imageService.getAll()).thenReturn(imagesLocal); + when(userService.findAllImages()).thenReturn(new HashSet()); + when(postService.findAllImages()).thenReturn(new HashSet()); + List deletedImages = imagesTasks.deleteNotUsedImages(); + assertEquals(IMAGE1, deletedImages.get(0)); + } + + @Test + void deleteNotUsedImagesTwoTest() { + List imagesLocal = new ArrayList(); + imagesLocal.add(IMAGE1); + imagesLocal.add(IMAGE2); + when(imageService.getAll()).thenReturn(imagesLocal); + when(userService.findAllImages()).thenReturn(new HashSet()); + when(postService.findAllImages()).thenReturn(new HashSet()); + List deletedImages = imagesTasks.deleteNotUsedImages(); + assertEquals(IMAGE1, deletedImages.get(0)); + assertEquals(IMAGE2, deletedImages.get(1)); + } + + @Test + void deleteNotUsedImagesTwoOneUsedTest() { + List imagesLocal = new ArrayList(); + imagesLocal.add(IMAGE1); + imagesLocal.add(IMAGE2); + imagesLocal.add(IMAGE3); + Set imagesUsed = new HashSet(); + imagesUsed.add(IMAGE1); + when(imageService.getAll()).thenReturn(imagesLocal); + when(userService.findAllImages()).thenReturn(imagesUsed); + when(postService.findAllImages()).thenReturn(Collections.singleton(IMAGE3)); + List deletedImages = imagesTasks.deleteNotUsedImages(); + assertEquals(IMAGE2, deletedImages.get(0)); + assertEquals(1, deletedImages.size()); + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/team/infrastructure/adapters/secondary/entities/TeamEntityTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/team/infrastructure/adapters/secondary/entities/TeamEntityTest.java new file mode 100644 index 000000000..6745823a6 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/team/infrastructure/adapters/secondary/entities/TeamEntityTest.java @@ -0,0 +1,100 @@ +package es.iespuertodelacruz.routinefights.team.infrastructure.adapters.secondary.entities; + +import org.junit.jupiter.api.Test; + +import es.iespuertodelacruz.routinefights.meeting.infrastructure.adapters.secondary.entities.MeetingEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; + +class TeamEntityTest { + + private static final String ID_1 = "T1"; + private static final String ID_2 = "T2"; + private static final String NAME = "TeamName"; + private static final LocalDateTime CREATED_AT = LocalDateTime.of(2023, 1, 1, 12, 0); + private static final LocalDateTime UPDATED_AT = LocalDateTime.of(2023, 1, 2, 12, 0); + private static final LocalDateTime DELETED_AT = LocalDateTime.of(2023, 1, 3, 12, 0); + private static final List MEETINGS = new ArrayList<>(); + private static final UserEntity CREATOR = new UserEntity(); + + @Test + void testSettersAndGetters() { + TeamEntity team = new TeamEntity(); + team.setId(ID_1); + team.setName(NAME); + team.setMeetings(MEETINGS); + team.setCreator(CREATOR); + team.setCreatedAt(CREATED_AT); + team.setDeletedAt(DELETED_AT); + assertEquals(ID_1, team.getId()); + assertEquals(NAME, team.getName()); + assertEquals(MEETINGS, team.getMeetings()); + assertEquals(CREATOR, team.getCreator()); + assertEquals(CREATED_AT, team.getCreatedAt()); + assertEquals(DELETED_AT, team.getDeletedAt()); + } + + @Test + void testConstructorAndGetters() { + TeamEntity team = new TeamEntity(ID_1, NAME, CREATED_AT, UPDATED_AT, DELETED_AT, MEETINGS, CREATOR); + assertEquals(ID_1, team.getId()); + assertEquals(NAME, team.getName()); + assertEquals(CREATED_AT, team.getCreatedAt()); + assertEquals(UPDATED_AT, team.getUpdatedAt()); + assertEquals(DELETED_AT, team.getDeletedAt()); + assertEquals(MEETINGS, team.getMeetings()); + assertEquals(CREATOR, team.getCreator()); + } + + @Test + void testFluentMethods() { + TeamEntity team = new TeamEntity(); + team.id(ID_1) + .name(NAME) + .createdAt(CREATED_AT) + .deletedAt(DELETED_AT) + .meetings(MEETINGS) + .creator(CREATOR); + assertEquals(ID_1, team.getId()); + assertEquals(NAME, team.getName()); + assertEquals(CREATED_AT, team.getCreatedAt()); + assertEquals(DELETED_AT, team.getDeletedAt()); + assertEquals(MEETINGS, team.getMeetings()); + assertEquals(CREATOR, team.getCreator()); + } + + @Test + void testEqualsAndHashCode() { + TeamEntity team1 = new TeamEntity(); + TeamEntity team2 = new TeamEntity(); + assertEquals(team1, team2); + team1.setId(ID_1); + team2.setId(ID_1); + assertEquals(team1, team2); + assertEquals(team1.hashCode(), team2.hashCode()); + team2.setId(ID_2); + assertNotEquals(team1, team2); + assertNotEquals(team1.hashCode(), team2.hashCode()); + assertEquals(team1, team1); + assertNotEquals(team1, new Object()); + } + + @Test + void testToString() { + TeamEntity team = new TeamEntity(ID_1, NAME, CREATED_AT, UPDATED_AT, DELETED_AT, MEETINGS, CREATOR); + String expected = "{" + + " id='" + ID_1 + "'" + + ", name='" + NAME + "'" + + ", createdAt='" + CREATED_AT + "'" + + ", deletedAt='" + DELETED_AT + "'" + + ", meetings='" + MEETINGS + "'" + + ", creator='" + CREATOR + "'" + + "}"; + assertEquals(expected, team.toString()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/user/domain/UserTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/user/domain/UserTest.java new file mode 100644 index 000000000..c43110602 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/user/domain/UserTest.java @@ -0,0 +1,152 @@ +package es.iespuertodelacruz.routinefights.user.domain; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import es.iespuertodelacruz.routinefights.user.utils.UserInitializer; + +@SpringBootTest +class UserTest extends UserInitializer { + private static final String ERROR_CREATING_USER = "Error creating user"; + + @Test + void UserNullTest() { + User userTest = null; + assertNull(userTest); + } + + @Test + void defaultConstructorTest() { + User userTest = new User(); + + userTest.setId(ID); + userTest.setUsername(USERNAME); + userTest.setEmail(EMAIL); + userTest.setPassword(PASSWORD); + userTest.setNationality(NATIONALITY); + userTest.setPhoneNumber(PHONE_NUMBER); + userTest.setImage(IMAGE); + userTest.setRole(ROLE); + userTest.setVerified(VERIFIED); + userTest.setVerificationToken(VERIFICATION_TOKEN); + userTest.setCreatedAt(CREATED_AT); + userTest.setUpdatedAt(UPDATED_AT); + userTest.setDeletedAt(DELETED_AT); + userTest.setFollowers(followers); + userTest.setFollowing(following); + + assertNotNull(userTest, "Error creating user without properties"); + assertEquals(ID, userTest.getId(), ERROR_MAPPING_PROPERTY + "id"); + assertEquals(USERNAME, userTest.getUsername(), ERROR_MAPPING_PROPERTY + "username"); + assertEquals(EMAIL, userTest.getEmail(), ERROR_MAPPING_PROPERTY + "email"); + assertEquals(PASSWORD, userTest.getPassword(), ERROR_MAPPING_PROPERTY + "password"); + assertEquals(NATIONALITY, userTest.getNationality(), ERROR_MAPPING_PROPERTY + "nationality"); + assertEquals(PHONE_NUMBER, userTest.getPhoneNumber(), ERROR_MAPPING_PROPERTY + "phone_number"); + assertEquals(IMAGE, userTest.getImage(), ERROR_MAPPING_PROPERTY + "image"); + assertEquals(ROLE, userTest.getRole(), ERROR_MAPPING_PROPERTY + "role"); + assertEquals(VERIFIED, userTest.getVerified(), ERROR_MAPPING_PROPERTY + "verified"); + assertEquals(VERIFICATION_TOKEN, userTest.getVerificationToken(), + ERROR_MAPPING_PROPERTY + "verification_token"); + assertEquals(CREATED_AT, userTest.getCreatedAt(), ERROR_MAPPING_PROPERTY + "created_at"); + assertEquals(UPDATED_AT, userTest.getUpdatedAt(), ERROR_MAPPING_PROPERTY + "updated_at"); + assertEquals(DELETED_AT, userTest.getDeletedAt(), ERROR_MAPPING_PROPERTY + "deleted_at"); + assertEquals(followers, userTest.getFollowers(), ERROR_MAPPING_PROPERTY + "followers"); + assertEquals(following, userTest.getFollowing(), ERROR_MAPPING_PROPERTY + "following"); + } + + @Test + void constructorWithPropertiesTest() { + User userTest = new User(USERNAME, EMAIL, PASSWORD, NATIONALITY, PHONE_NUMBER, IMAGE, ROLE, VERIFIED, + VERIFICATION_TOKEN, CREATED_AT, UPDATED_AT, DELETED_AT); + assertNotNull(userTest, ERROR_CREATING_USER); + assertEquals(USERNAME, userTest.getUsername(), ERROR_CREATING_USER); + assertEquals(EMAIL, userTest.getEmail(), ERROR_CREATING_USER); + assertEquals(PASSWORD, userTest.getPassword(), ERROR_CREATING_USER); + assertEquals(NATIONALITY, userTest.getNationality(), ERROR_CREATING_USER); + assertEquals(PHONE_NUMBER, userTest.getPhoneNumber(), ERROR_CREATING_USER); + assertEquals(IMAGE, userTest.getImage(), ERROR_CREATING_USER); + assertEquals(ROLE, userTest.getRole(), ERROR_CREATING_USER); + assertEquals(VERIFIED, userTest.getVerified(), ERROR_CREATING_USER); + assertEquals(VERIFICATION_TOKEN, userTest.getVerificationToken(), ERROR_CREATING_USER); + assertEquals(CREATED_AT, userTest.getCreatedAt(), ERROR_CREATING_USER); + assertEquals(UPDATED_AT, userTest.getUpdatedAt(), ERROR_CREATING_USER); + assertEquals(DELETED_AT, userTest.getDeletedAt(), ERROR_CREATING_USER); + } + + @Test + void constructorForV2Test() { + User userTest = new User(ID, USERNAME, EMAIL, PASSWORD, NATIONALITY, PHONE_NUMBER, IMAGE); + assertNotNull(userTest, ERROR_CREATING_USER); + assertEquals(ID, userTest.getId(), ERROR_CREATING_USER); + assertEquals(USERNAME, userTest.getUsername(), ERROR_CREATING_USER); + assertEquals(EMAIL, userTest.getEmail(), ERROR_CREATING_USER); + assertEquals(PASSWORD, userTest.getPassword(), ERROR_CREATING_USER); + assertEquals(NATIONALITY, userTest.getNationality(), ERROR_CREATING_USER); + assertEquals(PHONE_NUMBER, userTest.getPhoneNumber(), ERROR_CREATING_USER); + assertEquals(IMAGE, userTest.getImage(), ERROR_CREATING_USER); + } + + @Test + void constructorWithAllFieldsTest() { + User userTest = new User(ID, USERNAME, EMAIL, PASSWORD, NATIONALITY, PHONE_NUMBER, IMAGE, ROLE, VERIFIED, + VERIFICATION_TOKEN, CREATED_AT, UPDATED_AT, DELETED_AT, followers, following, null); + assertNotNull(userTest, ERROR_CREATING_USER); + assertEquals(USERNAME, userTest.getUsername(), ERROR_CREATING_USER); + assertEquals(EMAIL, userTest.getEmail(), ERROR_CREATING_USER); + assertEquals(PASSWORD, userTest.getPassword(), ERROR_CREATING_USER); + assertEquals(NATIONALITY, userTest.getNationality(), ERROR_CREATING_USER); + assertEquals(PHONE_NUMBER, userTest.getPhoneNumber(), ERROR_CREATING_USER); + assertEquals(IMAGE, userTest.getImage(), ERROR_CREATING_USER); + assertEquals(ROLE, userTest.getRole(), ERROR_CREATING_USER); + assertEquals(VERIFIED, userTest.getVerified(), ERROR_CREATING_USER); + assertEquals(VERIFICATION_TOKEN, userTest.getVerificationToken(), ERROR_CREATING_USER); + assertEquals(CREATED_AT, userTest.getCreatedAt(), ERROR_CREATING_USER); + assertEquals(UPDATED_AT, userTest.getUpdatedAt(), ERROR_CREATING_USER); + assertEquals(DELETED_AT, userTest.getDeletedAt(), ERROR_CREATING_USER); + assertEquals(followers, userTest.getFollowers(), ERROR_CREATING_USER); + assertEquals(following, userTest.getFollowing(), ERROR_CREATING_USER); + } + + @Test + void equalsTest() { + User userTest = new User(); + userTest.setId(ID); + assertEquals(user, userTest, ERROR_IN_EQUALS_METHOD); + } + + @Test + void equalsSameTest() { + assertEquals(user, user, ERROR_IN_EQUALS_METHOD); + } + + @Test + void equalsDifferentInstanceTest() { + assertNotEquals(user, userEntity, ERROR_IN_EQUALS_METHOD); + } + + @Test + void equalsFalseTest() { + User userTest = new User(); + userTest.setId("False ID"); + assertNotEquals(user, userTest, ERROR_IN_EQUALS_METHOD); + } + + @Test + void toStringTest() { + User userTest = new User(ID, USERNAME, EMAIL, PASSWORD, NATIONALITY, EMAIL, IMAGE, ROLE, VERIFIED, + VERIFICATION_TOKEN, CREATED_AT, UPDATED_AT, DELETED_AT, followers, following, null); + assertEquals(user.toString(), userTest.toString(), "Error in toString method"); + } + + @Test + void hashCodeTest() { + User userTest = new User(ID, USERNAME, EMAIL, PASSWORD, NATIONALITY, EMAIL, IMAGE, ROLE, VERIFIED, + VERIFICATION_TOKEN, CREATED_AT, UPDATED_AT, DELETED_AT, followers, following, null); + assertEquals(user.hashCode(), userTest.hashCode(), "Error in hashCode method"); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/user/domain/services/UserServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/user/domain/services/UserServiceTest.java new file mode 100644 index 000000000..462719650 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/user/domain/services/UserServiceTest.java @@ -0,0 +1,180 @@ +package es.iespuertodelacruz.routinefights.user.domain.services; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.when; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashSet; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.springframework.boot.test.context.SpringBootTest; + +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.ports.secondary.IUserRepository; + +@SpringBootTest +class UserServiceTest { + private static final String IMAGE = "image"; + + private static final String PHONE_NUMBER = "phoneNumber"; + + private static final String NATIONALITY = "nationality"; + + private static final String PASSWORD = "password"; + + private static final String USERNAME = "username"; + + private static final String ID = "1"; + + private static final String EMAIL = "email"; + + private UserService userService; + + @Mock + private IUserRepository userRepository; + + @BeforeEach + void setUp() { + userService = new UserService(); + userService.setUserRepository(userRepository); + } + + @Test + void getUserRepositoryTest() { + assertEquals(userRepository, userService.getUserRepository()); + } + + @Test + void deleteTest() { + when(userRepository.delete(anyString())).thenReturn(true); + Boolean deleted = userService.delete(ID); + assertNotNull(deleted); + } + + @Test + void existsByEmailTest() { + when(userRepository.existsByEmail(anyString())).thenReturn(true); + assertNotNull(userService.existsByEmail(EMAIL)); + } + + @Test + void findAllTest() { + when(userRepository.findAll()).thenReturn(new ArrayList()); + assertNotNull(userService.findAll()); + } + + @Test + void findAllImagesTest() { + when(userRepository.findAllImages()).thenReturn(new HashSet()); + assertNotNull(userService.findAllImages()); + } + + @Test + void findByEmailTest() { + when(userRepository.findByEmail(anyString())).thenReturn(new User()); + assertNotNull(userService.findByEmail(EMAIL)); + } + + @Test + void findByIdTest() { + when(userRepository.findById(anyString())).thenReturn(new User()); + assertNotNull(userService.findById(ID)); + } + + @Test + void findFollowedUsersByEmailTest() { + when(userRepository.findFollowedUsersByEmail(anyString(),anyString())).thenReturn(new ArrayList()); + assertNotNull(userService.findFollowedUsersByEmail(EMAIL,"1")); + } + + @Test + void findFollowersByEmailTest() { + when(userRepository.findFollowersByEmail(anyString(),anyString())).thenReturn(new ArrayList()); + assertNotNull(userService.findFollowersByEmail(EMAIL,"1")); + } + + @Test + void followUserTest() { + when(userRepository.followUser(anyString(), anyString())).thenReturn(true); + assertTrue(userService.followUser("frEmail", "fdEmail")); + } + + @Test + void postTest() { + when(userRepository.post(any(User.class))).thenReturn(new User()); + User user = userService.post(USERNAME, EMAIL, PASSWORD, NATIONALITY, PHONE_NUMBER, IMAGE, "role", + true, "verificationToken", LocalDateTime.now(), LocalDateTime.now(), null); + assertNotNull(user); + } + + @Test + void putTest() { + when(userRepository.put(any(User.class))).thenReturn(new User()); + User user = userService.put(ID, USERNAME, EMAIL, PASSWORD, NATIONALITY, PHONE_NUMBER, IMAGE, "role", + true, "verificationToken", LocalDateTime.now(), LocalDateTime.now(), null); + assertNotNull(user); + } + + @Test + void unfollowUserTest() { + when(userRepository.unfollowUser(anyString(), anyString())).thenReturn(true); + assertTrue(userService.unfollowUser("frEmail", "fdEmail")); + } + + @Test + void restoreTest() { + when(userRepository.restore(anyString())).thenReturn(true); + assertTrue(userService.restore(ID)); + } + + @Test + void updateTest() { + when(userRepository.update(any(User.class))).thenReturn(new User()); + User user = userService.update(ID, USERNAME, EMAIL, PASSWORD, NATIONALITY, PHONE_NUMBER, IMAGE); + assertNotNull(user); + } + + @Test + void softDeleteTest() { + when(userRepository.softDelete(anyString())).thenReturn(true); + assertTrue(userService.softDelete(ID)); + } + + @Test + void findByUsernameTest() { + when(userRepository.findByUsername(anyString())).thenReturn(new ArrayList()); + assertNotNull(userService.findByUsername(USERNAME)); + } + + @Test + void findByEmailOnlyBaseTest() { + when(userRepository.findByEmailOnlyBase(anyString())).thenReturn(new User()); + assertNotNull(userService.findByEmailOnlyBase(EMAIL)); + } + + @Test + void getPaginationByNameTest() { + when(userRepository.getPaginationByName(anyInt(), anyInt(), anyString(),anyString())).thenReturn(new ArrayList()); + assertNotNull(userService.getPaginationByName(1, 10, "10", "1")); + } + + @Test + void likePostTest() { + when(userRepository.likePost(anyString(), anyString())).thenReturn(true); + assertTrue(userService.likePost("frEmail", "postId")); + } + @Test + void unlikePostTest() { + when(userRepository.unLikePost(anyString(), anyString())).thenReturn(true); + assertTrue(userService.unLikePost("frEmail", "postId")); + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserDeleteExceptionTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserDeleteExceptionTest.java new file mode 100644 index 000000000..65738f9c8 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserDeleteExceptionTest.java @@ -0,0 +1,17 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class UserDeleteExceptionTest { + private static final String MESSAGE = "message"; + + @Test + void userDeleteExceptionTest() { + UserDeleteException userDeleteException = new UserDeleteException(MESSAGE); + assertEquals(MESSAGE, userDeleteException.getMessage()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserNotFoundExceptionTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserNotFoundExceptionTest.java new file mode 100644 index 000000000..fc632cdcb --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserNotFoundExceptionTest.java @@ -0,0 +1,17 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class UserNotFoundExceptionTest { + private static final String MESSAGE = "message"; + + @Test + void UserNotFoundException() { + UserNotFoundException userNotFoundException = new UserNotFoundException(MESSAGE); + assertEquals(MESSAGE, userNotFoundException.getMessage()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserSaveExceptionTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserSaveExceptionTest.java new file mode 100644 index 000000000..5db516ce8 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserSaveExceptionTest.java @@ -0,0 +1,17 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class UserSaveExceptionTest { + private static final String MESSAGE = "message"; + + @Test + void UserSaveException() { + UserSaveException userSaveException = new UserSaveException(MESSAGE); + assertEquals(MESSAGE, userSaveException.getMessage()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserUpdateExceptionTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserUpdateExceptionTest.java new file mode 100644 index 000000000..6fc845590 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/exceptions/UserUpdateExceptionTest.java @@ -0,0 +1,17 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class UserUpdateExceptionTest { + private static final String MESSAGE = "message"; + + @Test + void UserUpdateException() { + UserUpdateException userUpdateException = new UserUpdateException(MESSAGE); + assertEquals(MESSAGE, userUpdateException.getMessage()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/controllers/UserControllerV2Test.java b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/controllers/UserControllerV2Test.java new file mode 100644 index 000000000..fdbe065e6 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/controllers/UserControllerV2Test.java @@ -0,0 +1,354 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.controllers; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; + +import es.iespuertodelacruz.routinefights.shared.services.MailService; +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.services.UserService; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserDeleteException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserNotFoundException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserUpdateException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos.UserInputDTOV2; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos.UserOutputDTOV2; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.mappers.FollowerMapper; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.mappers.UserOutputV2Mapper; +import es.iespuertodelacruz.routinefights.user.utils.UserInitializer; + +@SpringBootTest +class UserControllerV2Test extends UserInitializer { + private static final String TEST_EXCEPTION = "Test Exception"; + + private UserControllerV2 userControllerV2; + + @Mock + private UserOutputV2Mapper userOutputMapper; + + @Mock + private FollowerMapper followerMapper; + + @Mock + private UserService userService; + + @Mock + private MailService mailService; + + @Mock + private SecurityContext securityContext; + + @Mock + private Authentication authentication; + + + + private UserInputDTOV2 userInputDTOV2; + private UserOutputDTOV2 userOutputDTOV2; + + @BeforeEach + void init() { + userControllerV2 = new UserControllerV2(); + userControllerV2.setFollowerMapper(followerMapper); + userControllerV2.setUserOutputMapper(userOutputMapper); + userControllerV2.setUserService(userService); + userControllerV2.setMailService(mailService); + SecurityContextHolder.setContext(securityContext); + + userInputDTOV2 = new UserInputDTOV2("id", "username", "email", "password", "nationality", "phone_number", + "image"); + userOutputDTOV2 = new UserOutputDTOV2(null, null, null, null, null, null, null, 0, 0,false); + } + + @Test + void getFollowerMapperTest() { + assertNotNull(userControllerV2.getFollowerMapper(), TEST_EXCEPTION); + } + + @Test + void getUserOutputMapperTest() { + assertNotNull(userControllerV2.getUserOutputMapper(), TEST_EXCEPTION); + } + + @Test + void getUserServiceTest() { + assertNotNull(userControllerV2.getUserService(), TEST_EXCEPTION); + } + + @Test + void getMailServiceTest() { + assertNotNull(userControllerV2.getMailService(), TEST_EXCEPTION); + } + + @Test + void findFollowedUsersByEmailTest() { + when(userService.findFollowedUsersByEmail(anyString(),anyString())).thenReturn(new ArrayList()); + assertNotNull(userControllerV2.findFollowedUsersByEmail("email","name")); + } + + @Test + void findFollowedUsersByEmailExceptionTest() { + when(userService.findFollowedUsersByEmail(anyString(),anyString())).thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userControllerV2.findFollowedUsersByEmail("email","name"); + }); + assertEquals("Error finding followed users", exception.getMessage()); + } + + @Test + void findFollowersByEmailTest() { + when(userService.findFollowersByEmail(anyString(),anyString())).thenReturn(new ArrayList()); + assertNotNull(userControllerV2.findFollowersByEmail("email","name")); + } + + @Test + void findFollowersByEmailExceptionTest() { + when(userService.findFollowersByEmail(anyString(),anyString())).thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userControllerV2.findFollowersByEmail("email","name"); + }); + assertEquals("Error finding followers", exception.getMessage()); + } + + @Test + void followUserTest() { + when(userService.followUser(anyString(), anyString())).thenReturn(true); + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + + assertTrue(userControllerV2.followUser("fdEmail")); + } + + @Test + void followUserExceptionTest() { + when(userService.followUser(anyString(), anyString())).thenThrow(new UserUpdateException(TEST_EXCEPTION)); + + + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + UserUpdateException exception = assertThrows(UserUpdateException.class, () -> { + userControllerV2.followUser("fdEmail"); + }); + assertEquals("Error following user", exception.getMessage()); + } + + @Test + void unfollowUserTest() { + when(userService.unfollowUser(anyString(), anyString())).thenReturn(true); + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + assertTrue(userControllerV2.unfollowUser( "fdEmail")); + } + + @Test + void unfollowUserExceptionTest() { + when(userService.unfollowUser(anyString(), anyString())).thenThrow(new UserUpdateException(TEST_EXCEPTION)); + + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + + UserUpdateException exception = assertThrows(UserUpdateException.class, () -> { + userControllerV2.unfollowUser( "fdEmail"); + }); + assertEquals("Error unfollowing user", exception.getMessage()); + } + + @Test + void softDeleteTest() { + when(userService.softDelete(anyString())).thenReturn(true); + assertTrue(userControllerV2.softDelete("id")); + } + + @Test + void softDeleteExceptionTest() { + when(userService.softDelete(anyString())).thenThrow(new UserDeleteException(TEST_EXCEPTION)); + UserDeleteException exception = assertThrows(UserDeleteException.class, () -> { + userControllerV2.softDelete("id"); + }); + assertEquals("Unable to delete the user", exception.getMessage()); + } + + @Test + void findByEmailTest() { + when(userService.findByEmail(anyString())).thenReturn(new User()); + when(userOutputMapper.toOutputDTOV2(any(User.class))).thenReturn(userOutputDTOV2); + assertNotNull(userControllerV2.findByEmail("id")); + } + + @Test + void findByEmailExceptionTest() { + when(userService.findByEmail(anyString())).thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userControllerV2.findByEmail("id"); + }); + assertEquals("Error finding user", exception.getMessage()); + } + + + @Test + void updateTest() { + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + when(userService.findByEmailOnlyBase(anyString())).thenReturn(user); + when(userService.update(anyString(), anyString(), anyString(), anyString(), anyString(), anyString(), + anyString())) + .thenReturn(new User()); + when(userOutputMapper.toOutputDTOV2(any(User.class))).thenReturn(userOutputDTOV2); + assertNotNull(userControllerV2.update(userInputDTOV2)); + } + + @Test + void updateExceptionTest() { + when(userService.update(anyString(), anyString(), anyString(), anyString(), anyString(), anyString(), + anyString())) + .thenThrow(new UserUpdateException(TEST_EXCEPTION)); + UserUpdateException exception = assertThrows(UserUpdateException.class, () -> { + userControllerV2.update(userInputDTOV2); + }); + assertEquals("Unable to update the user", exception.getMessage()); + } + + @Test + void subscribeActivityTest() { + + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + SecurityContextHolder.setContext(securityContext); + + when(userService.subscribeActivity(anyString(), anyString())).thenReturn(true); + assertTrue(userControllerV2.subscribeActivity("activityId")); + } + + @Test + void subscribeActivityExceptionTest() { + when(userService.subscribeActivity(anyString(), anyString())).thenThrow(new UserUpdateException(TEST_EXCEPTION)); + UserUpdateException exception = assertThrows(UserUpdateException.class, () -> { + userControllerV2.subscribeActivity("activityId"); + }); + assertEquals("Unable to subscribe the user to the activity", exception.getMessage()); + } + + @Test + void unsubscribeActivityTest() { + + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + SecurityContextHolder.setContext(securityContext); + + when(userService.unSubscribeActivity(anyString(), anyString())).thenReturn(true); + assertTrue(userControllerV2.unSubscribeActivity("activityId")); + } + + @Test + void unsubscribeActivityExceptionTest() { + when(userService.unSubscribeActivity(anyString(), anyString())).thenThrow(new UserUpdateException(TEST_EXCEPTION)); + UserUpdateException exception = assertThrows(UserUpdateException.class, () -> { + userControllerV2.unSubscribeActivity("activityId"); + }); + assertEquals("Unable to unsubscribe the user to the activity", exception.getMessage()); + } + + @Test + void getOwnUserTest(){ + + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + SecurityContextHolder.setContext(securityContext); + + when(userService.findByEmail(anyString())).thenReturn(user); + when(userOutputMapper.toOutputDTOV2(any(User.class))).thenReturn(userOutputDTOV2); + assertNotNull(userControllerV2.getOwnUser()); + } + + @Test + void getOwnUserExceptionTest(){ + + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + SecurityContextHolder.setContext(securityContext); + + when(userService.findByEmail(anyString())).thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userControllerV2.getOwnUser(); + }); + assertEquals("Error finding user", exception.getMessage()); + } + + @Test + void getPaginationByNameTest() { + when(userService.getPaginationByName(anyInt(),anyInt(),anyString(),anyString())).thenReturn(new ArrayList()); + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + when(userService.findByEmailOnlyBase(anyString())).thenReturn(user); + + + assertNotNull(userControllerV2.getUserPaginationByName(1, 10, "username")); + } + + @Test + void getPaginationByNameExceptionTest() { + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + when(userService.findByEmailOnlyBase(anyString())).thenReturn(user); + when(userService.getPaginationByName(anyInt(),anyInt(),anyString(),anyString())).thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userControllerV2.getUserPaginationByName(1, 10, "username"); + }); + assertEquals("Error finding users", exception.getMessage()); + } + + @Test + void likePostTest() { + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + SecurityContextHolder.setContext(securityContext); + when(userService.findByEmailOnlyBase(anyString())).thenReturn(user); + + when(userService.likePost(anyString(), anyString())).thenReturn(true); + assertTrue(userControllerV2.likePost("postId")); + } + @Test + void likePostExceptionTest() { + when(userService.findByEmailOnlyBase(anyString())).thenReturn(user); + when(userService.likePost(anyString(), anyString())).thenThrow(new UserUpdateException(TEST_EXCEPTION)); + UserUpdateException exception = assertThrows(UserUpdateException.class, () -> { + userControllerV2.likePost("postId"); + }); + assertEquals("Error liking post", exception.getMessage()); + } + @Test + void unlikePostTest() { + when(authentication.getName()).thenReturn("testUser"); + when(securityContext.getAuthentication()).thenReturn(authentication); + SecurityContextHolder.setContext(securityContext); + + when(userService.findByEmailOnlyBase(anyString())).thenReturn(user); + when(userService.unLikePost(anyString(), anyString())).thenReturn(true); + assertTrue(userControllerV2.unLikePost("postId")); + } + @Test + void unlikePostExceptionTest() { + when(userService.findByEmailOnlyBase(anyString())).thenReturn(user); + when(userService.unLikePost(anyString(), anyString())).thenThrow(new UserUpdateException(TEST_EXCEPTION)); + UserUpdateException exception = assertThrows(UserUpdateException.class, () -> { + userControllerV2.unLikePost("postId"); + }); + assertEquals("Error unliking post", exception.getMessage()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/mappers/FollowerMapperTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/mappers/FollowerMapperTest.java new file mode 100644 index 000000000..9e6f4ff9c --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/mappers/FollowerMapperTest.java @@ -0,0 +1,43 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.mappers; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.util.List; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos.Follower; +import es.iespuertodelacruz.routinefights.user.utils.UserInitializer; + +@SpringBootTest +class FollowerMapperTest extends UserInitializer { + @Autowired + private FollowerMapper mapper; + + @Test + void toFollowerTest() { + Follower follower = mapper.toFollower(user); + assertNotNull(follower, "Error mapping to follower"); + assertEquals(ID, follower.id(), ERROR_MAPPING_PROPERTY + "id"); + assertEquals(USERNAME, follower.username(), ERROR_MAPPING_PROPERTY + "username"); + assertEquals(NATIONALITY, follower.nationality(), ERROR_MAPPING_PROPERTY + "nationality"); + assertEquals(IMAGE, follower.image(), ERROR_MAPPING_PROPERTY + "image"); + assertEquals(CREATED_AT, follower.createdAt(), ERROR_MAPPING_PROPERTY + "createdAt"); + assertEquals(user.getFollowers().size(), follower.followers(), ERROR_MAPPING_PROPERTY + "followers"); + assertEquals(user.getFollowing().size(), follower.following(), ERROR_MAPPING_PROPERTY + "following"); + } + + @Test + void toFollowerListTest() { + User user2 = new User(); + User user3 = new User(); + List users = List.of(user2, user3); + List followers = mapper.toFollower(users); + assertNotNull(followers, "Error mapping to followers"); + assertEquals(users.size(), followers.size(), "Error mapping to followers"); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/mappers/UserOutputV2MapperTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/mappers/UserOutputV2MapperTest.java new file mode 100644 index 000000000..6b27cd78d --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v2/mappers/UserOutputV2MapperTest.java @@ -0,0 +1,72 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.mappers; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v2.dtos.UserOutputDTOV2; +import es.iespuertodelacruz.routinefights.user.utils.UserInitializer; + +@SpringBootTest +class UserOutputV2MapperTest extends UserInitializer { + @Autowired + private UserOutputV2Mapper mapper; + + @Test + void toOutputDTOV2Test() { + UserOutputDTOV2 userOutputDTOV2 = mapper.toOutputDTOV2(user); + assertNotNull(userOutputDTOV2, "Error mapping to output DTO"); + assertEquals(ID, userOutputDTOV2.id(), ERROR_MAPPING_PROPERTY + "id"); + assertEquals(USERNAME, userOutputDTOV2.username(), ERROR_MAPPING_PROPERTY + "username"); + assertEquals(EMAIL, userOutputDTOV2.email(), ERROR_MAPPING_PROPERTY + "email"); + assertEquals(NATIONALITY, userOutputDTOV2.nationality(), ERROR_MAPPING_PROPERTY + "nationality"); + assertEquals(PHONE_NUMBER, userOutputDTOV2.phoneNumber(), ERROR_MAPPING_PROPERTY + "phoneNumber"); + assertEquals(IMAGE, userOutputDTOV2.image(), ERROR_MAPPING_PROPERTY + "image"); + assertEquals(CREATED_AT, userOutputDTOV2.createdAt(), ERROR_MAPPING_PROPERTY + "createdAt"); + assertEquals(user.getFollowers().size(), userOutputDTOV2.followers(), ERROR_MAPPING_PROPERTY + "followers"); + assertEquals(user.getFollowing().size(), userOutputDTOV2.following(), ERROR_MAPPING_PROPERTY + "following"); + } + + @Test + void toOutputDTOV2ListTest() { + User user2 = new User(); + User user3 = new User(); + List users = new ArrayList<>(List.of(user2, user3)); + List usersOutputV2 = mapper.toOutputDTOV2(users); + assertNotNull(users, "Error mapping to entity"); + assertEquals(users.size(), usersOutputV2.size(), "Error mapping to entity"); + } + + @Test + void toOutputDTOV2WithSearchingUserTest() { + UserOutputDTOV2 userOutputDTOV2 = mapper.toOutputDTOV2(user, follower); + assertNotNull(userOutputDTOV2, "Error mapping to output DTO"); + assertEquals(ID, userOutputDTOV2.id(), ERROR_MAPPING_PROPERTY + "id"); + assertEquals(USERNAME, userOutputDTOV2.username(), ERROR_MAPPING_PROPERTY + "username"); + assertEquals(EMAIL, userOutputDTOV2.email(), ERROR_MAPPING_PROPERTY + "email"); + assertEquals(NATIONALITY, userOutputDTOV2.nationality(), ERROR_MAPPING_PROPERTY + "nationality"); + assertEquals(PHONE_NUMBER, userOutputDTOV2.phoneNumber(), ERROR_MAPPING_PROPERTY + "phoneNumber"); + assertEquals(IMAGE, userOutputDTOV2.image(), ERROR_MAPPING_PROPERTY + "image"); + assertEquals(CREATED_AT, userOutputDTOV2.createdAt(), ERROR_MAPPING_PROPERTY + "createdAt"); + assertEquals(user.getFollowers().size(), userOutputDTOV2.followers(), ERROR_MAPPING_PROPERTY + "followers"); + assertEquals(user.getFollowing().size(), userOutputDTOV2.following(), ERROR_MAPPING_PROPERTY + "following"); + assertEquals(true, userOutputDTOV2.isFollowing(), ERROR_MAPPING_PROPERTY + "isFollowing"); + } + + @Test + void toOutputDTOV2WithSearchingUserListTest() { + User user2 = new User(); + User user3 = new User(); + List users = new ArrayList<>(List.of(user2, user3)); + List usersOutputV2 = mapper.toOutputDTOV2(users, user); + assertNotNull(users, "Error mapping to entity"); + assertEquals(users.size(), usersOutputV2.size(), "Error mapping to entity"); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/controllers/UserControllerV3Test.java b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/controllers/UserControllerV3Test.java new file mode 100644 index 000000000..539264b8d --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/controllers/UserControllerV3Test.java @@ -0,0 +1,174 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v3.controllers; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +import java.time.LocalDateTime; +import java.util.ArrayList; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.springframework.boot.test.context.SpringBootTest; + +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.domain.services.UserService; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserDeleteException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserNotFoundException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserSaveException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserUpdateException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v3.dtos.UserInputDTOV3; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v3.dtos.UserOutputDTOV3; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v3.mappers.UserOutputV3Mapper; + +@SpringBootTest +class UserControllerV3Test { + private static final String TEST_EXCEPTION = "Test Exception"; + + private UserControllerV3 userControllerV3; + + @Mock + private UserOutputV3Mapper userOutputMapper; + + @Mock + private UserService userService; + + private UserInputDTOV3 userInputDTOV3; + private UserOutputDTOV3 userOutputDTOV3; + + @BeforeEach + void setUp() { + userControllerV3 = new UserControllerV3(); + userControllerV3.setUserOutputMapper(userOutputMapper); + userControllerV3.setUserService(userService); + + userInputDTOV3 = new UserInputDTOV3("id", "username", "email", "password", "nationality", "phone_number", + "image", "role", false, "verification_token", LocalDateTime.now(), LocalDateTime.now(), + LocalDateTime.now()); + userOutputDTOV3 = new UserOutputDTOV3(null, null, null, null, null, null, null, false, null, null, null, null, + null, null); + } + + @Test + void getUserOutputMapperTest() { + assertNotNull(userControllerV3.getUserOutputMapper()); + } + + @Test + void getUserServiceTest() { + assertNotNull(userControllerV3.getUserService()); + } + + @Test + void deleteTest() { + when(userService.delete(anyString())).thenReturn(true); + assertTrue(userControllerV3.delete("id")); + } + + @Test + void deleteExceptionTest() { + when(userService.delete(anyString())).thenThrow(new UserDeleteException(TEST_EXCEPTION)); + + UserDeleteException exception = assertThrows(UserDeleteException.class, () -> { + userControllerV3.delete("id"); + }); + assertEquals("Unable to delete the user", exception.getMessage()); + } + + @Test + void findAllTest() { + when(userService.findAll()).thenReturn(new ArrayList()); + assertNotNull(userControllerV3.findAll()); + } + + @Test + void findAllExceptionTest() { + when(userService.findAll()).thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userControllerV3.findAll(); + }); + assertEquals("Error finding users", exception.getMessage()); + } + + @Test + void findByIdTest() { + when(userService.findById(anyString())).thenReturn(new User()); + when(userOutputMapper.toDTO(any(User.class))).thenReturn(userOutputDTOV3); + assertNotNull(userControllerV3.findById("id")); + } + + @Test + void findByIdExceptionTest() { + when(userService.findById(anyString())).thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userControllerV3.findById("id"); + }); + assertEquals("Error finding user", exception.getMessage()); + } + + @Test + void postTest() { + when(userService.post(anyString(), anyString(), anyString(), anyString(), anyString(), anyString(), anyString(), + anyBoolean(), anyString(), any(LocalDateTime.class), any(LocalDateTime.class), + any(LocalDateTime.class))).thenReturn(new User()); + when(userOutputMapper.toDTO(any(User.class))).thenReturn(userOutputDTOV3); + assertNotNull(userControllerV3.post(userInputDTOV3)); + } + + @Test + void postExceptionTest() { + when(userService.post(anyString(), anyString(), anyString(), anyString(), anyString(), anyString(), anyString(), + anyBoolean(), anyString(), any(LocalDateTime.class), any(LocalDateTime.class), + any(LocalDateTime.class))).thenThrow(new UserSaveException(TEST_EXCEPTION)); + + UserSaveException exception = assertThrows(UserSaveException.class, () -> { + userControllerV3.post(userInputDTOV3); + }); + assertEquals("Unable to create the user", exception.getMessage()); + } + + @Test + void putTest() { + when(userService.put(anyString(), anyString(), anyString(), anyString(), anyString(), anyString(), anyString(), + anyString(), anyBoolean(), anyString(), any(LocalDateTime.class), any(LocalDateTime.class), + any(LocalDateTime.class))).thenReturn(new User()); + when(userOutputMapper.toDTO(any(User.class))).thenReturn(userOutputDTOV3); + assertNotNull(userControllerV3.put(userInputDTOV3)); + } + + @Test + void putExceptionTest() { + when(userService.put(anyString(), anyString(), anyString(), anyString(), anyString(), anyString(), anyString(), + anyString(), anyBoolean(), anyString(), any(LocalDateTime.class), any(LocalDateTime.class), + any(LocalDateTime.class))).thenThrow(new UserUpdateException(TEST_EXCEPTION)); + + UserUpdateException exception = assertThrows(UserUpdateException.class, () -> { + userControllerV3.put(userInputDTOV3); + }); + assertEquals("Unable to update the user", exception.getMessage()); + } + + @Test + void restoreUserTest() { + when(userService.restore(anyString())).thenReturn(true); + assertTrue(userControllerV3.restoreUser("id")); + } + + @Test + void restoreUserExceptionTest() { + when(userService.restore(anyString())).thenThrow(new UserUpdateException(TEST_EXCEPTION)); + + UserUpdateException exception = assertThrows(UserUpdateException.class, () -> { + userControllerV3.restoreUser("id"); + }); + assertEquals("Unable to restore the user", exception.getMessage()); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/mappers/UserOutputV3MapperTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/mappers/UserOutputV3MapperTest.java new file mode 100644 index 000000000..d385884fe --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/primary/v3/mappers/UserOutputV3MapperTest.java @@ -0,0 +1,51 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v3.mappers; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.primary.v3.dtos.UserOutputDTOV3; +import es.iespuertodelacruz.routinefights.user.utils.UserInitializer; + +@SpringBootTest +class UserOutputV3MapperTest extends UserInitializer { + @Autowired + private UserOutputV3Mapper mapper; + + @Test + void toOutputDTOV3Test() { + UserOutputDTOV3 userOutputDTOV3 = mapper.toDTO(user); + assertNotNull(userOutputDTOV3, "Error mapping to output DTO"); + assertEquals(ID, userOutputDTOV3.id(), ERROR_MAPPING_PROPERTY + "id"); + assertEquals(USERNAME, userOutputDTOV3.username(), ERROR_MAPPING_PROPERTY + "username"); + assertEquals(EMAIL, userOutputDTOV3.email(), ERROR_MAPPING_PROPERTY + "email"); + assertEquals(NATIONALITY, userOutputDTOV3.nationality(), ERROR_MAPPING_PROPERTY + "nationality"); + assertEquals(PHONE_NUMBER, userOutputDTOV3.phoneNumber(), ERROR_MAPPING_PROPERTY + "phoneNumber"); + assertEquals(IMAGE, userOutputDTOV3.image(), ERROR_MAPPING_PROPERTY + "image"); + assertEquals(ROLE, userOutputDTOV3.role(), ERROR_MAPPING_PROPERTY + "role"); + assertEquals(VERIFIED, userOutputDTOV3.verified(), ERROR_MAPPING_PROPERTY + "verified"); + assertEquals(VERIFICATION_TOKEN, userOutputDTOV3.verificationToken(), ERROR_MAPPING_PROPERTY + "verificationToken"); + assertEquals(CREATED_AT, userOutputDTOV3.createdAt(), ERROR_MAPPING_PROPERTY + "createdAt"); + assertEquals(UPDATED_AT, userOutputDTOV3.updatedAt(), ERROR_MAPPING_PROPERTY + "updatedAt"); + assertEquals(DELETED_AT, userOutputDTOV3.deletedAt(), ERROR_MAPPING_PROPERTY + "deletedAt"); + assertEquals(user.getFollowers().size(), userOutputDTOV3.followers().size(), ERROR_MAPPING_PROPERTY + "followers"); + assertEquals(user.getFollowing().size(), userOutputDTOV3.following().size(), ERROR_MAPPING_PROPERTY + "following"); + } + + @Test + void toOutputDTOV3ListTest() { + User user2 = new User(); + User user3 = new User(); + List users = new ArrayList<>(List.of(user2, user3)); + List usersOutputV3 = mapper.toDTO(users); + assertNotNull(users, "Error mapping to entity"); + assertEquals(users.size(), usersOutputV3.size(), "Error mapping to entity"); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/entities/UserEntityTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/entities/UserEntityTest.java new file mode 100644 index 000000000..b2228c7da --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/entities/UserEntityTest.java @@ -0,0 +1,123 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import es.iespuertodelacruz.routinefights.user.utils.UserInitializer; + +@SpringBootTest +class UserEntityTest extends UserInitializer { + private static final String ERROR_CREATING_USER = "Error creating user"; + + @Test + void UserNullTest() { + UserEntity userTest = null; + assertNull(userTest); + } + + @Test + void defaultConstructorTest() { + UserEntity userEntityTest = new UserEntity(); + + userEntityTest.setId(ID); + userEntityTest.setUsername(USERNAME); + userEntityTest.setEmail(EMAIL); + userEntityTest.setPassword(PASSWORD); + userEntityTest.setNationality(NATIONALITY); + userEntityTest.setPhoneNumber(PHONE_NUMBER); + userEntityTest.setImage(IMAGE); + userEntityTest.setRole(ROLE); + userEntityTest.setVerified(VERIFIED); + userEntityTest.setVerificationToken(VERIFICATION_TOKEN); + userEntityTest.setCreatedAt(CREATED_AT); + userEntityTest.setUpdatedAt(UPDATED_AT); + userEntityTest.setDeletedAt(DELETED_AT); + userEntityTest.setFollowers(followersEntity); + userEntityTest.setFollowing(followingEntity); + + assertNotNull(userEntityTest, "Error creating user without properties"); + assertEquals(ID, userEntityTest.getId(), ERROR_MAPPING_PROPERTY + "id"); + assertEquals(USERNAME, userEntityTest.getUsername(), ERROR_MAPPING_PROPERTY + "username"); + assertEquals(EMAIL, userEntityTest.getEmail(), ERROR_MAPPING_PROPERTY + "email"); + assertEquals(PASSWORD, userEntityTest.getPassword(), ERROR_MAPPING_PROPERTY + "password"); + assertEquals(NATIONALITY, userEntityTest.getNationality(), ERROR_MAPPING_PROPERTY + "nationality"); + assertEquals(PHONE_NUMBER, userEntityTest.getPhoneNumber(), ERROR_MAPPING_PROPERTY + "phone_number"); + assertEquals(IMAGE, userEntityTest.getImage(), ERROR_MAPPING_PROPERTY + "image"); + assertEquals(ROLE, userEntityTest.getRole(), ERROR_MAPPING_PROPERTY + "role"); + assertEquals(VERIFIED, userEntityTest.getVerified(), ERROR_MAPPING_PROPERTY + "verified"); + assertEquals(VERIFICATION_TOKEN, userEntityTest.getVerificationToken(), + ERROR_MAPPING_PROPERTY + "verification_token"); + assertEquals(CREATED_AT, userEntityTest.getCreatedAt(), ERROR_MAPPING_PROPERTY + "created_at"); + assertEquals(UPDATED_AT, userEntityTest.getUpdatedAt(), ERROR_MAPPING_PROPERTY + "updated_at"); + assertEquals(DELETED_AT, userEntityTest.getDeletedAt(), ERROR_MAPPING_PROPERTY + "deleted_at"); + assertEquals(followersEntity, userEntityTest.getFollowers(), ERROR_MAPPING_PROPERTY + "followers"); + assertEquals(followingEntity, userEntityTest.getFollowing(), ERROR_MAPPING_PROPERTY + "following"); + } + + @Test + void constructorWithAllFieldsTest() { + UserEntity userEntityTest = new UserEntity(ID, USERNAME, EMAIL, PASSWORD, NATIONALITY, PHONE_NUMBER, IMAGE, + ROLE, + VERIFIED, VERIFICATION_TOKEN, CREATED_AT, UPDATED_AT, DELETED_AT, followersEntity, followingEntity, null); + assertNotNull(userEntityTest, ERROR_CREATING_USER); + assertEquals(USERNAME, userEntityTest.getUsername(), ERROR_CREATING_USER); + assertEquals(EMAIL, userEntityTest.getEmail(), ERROR_CREATING_USER); + assertEquals(PASSWORD, userEntityTest.getPassword(), ERROR_CREATING_USER); + assertEquals(NATIONALITY, userEntityTest.getNationality(), ERROR_CREATING_USER); + assertEquals(PHONE_NUMBER, userEntityTest.getPhoneNumber(), ERROR_CREATING_USER); + assertEquals(IMAGE, userEntityTest.getImage(), ERROR_CREATING_USER); + assertEquals(ROLE, userEntityTest.getRole(), ERROR_CREATING_USER); + assertEquals(VERIFIED, userEntityTest.getVerified(), ERROR_CREATING_USER); + assertEquals(VERIFICATION_TOKEN, userEntityTest.getVerificationToken(), ERROR_CREATING_USER); + assertEquals(CREATED_AT, userEntityTest.getCreatedAt(), ERROR_CREATING_USER); + assertEquals(UPDATED_AT, userEntityTest.getUpdatedAt(), ERROR_CREATING_USER); + assertEquals(DELETED_AT, userEntityTest.getDeletedAt(), ERROR_CREATING_USER); + assertEquals(followersEntity, userEntityTest.getFollowers(), ERROR_CREATING_USER); + assertEquals(followingEntity, userEntityTest.getFollowing(), ERROR_CREATING_USER); + } + + @Test + void equalsTest() { + UserEntity userEntityTest = new UserEntity(); + userEntityTest.setId(ID); + assertEquals(userEntity, userEntityTest, ERROR_IN_EQUALS_METHOD); + } + + @Test + void equalsSameTest() { + assertEquals(userEntity, userEntity, ERROR_IN_EQUALS_METHOD); + } + + @Test + void equalsDifferentInstanceTest() { + assertNotEquals(userEntity, user, ERROR_IN_EQUALS_METHOD); + } + + @Test + void equalsFalseTest() { + UserEntity userEntityTest = new UserEntity(); + userEntityTest.setId("False ID"); + assertNotEquals(userEntity, userEntityTest, ERROR_IN_EQUALS_METHOD); + } + + @Test + void toStringTest() { + UserEntity userEntityTest = new UserEntity(ID, USERNAME, EMAIL, PASSWORD, NATIONALITY, EMAIL, IMAGE, ROLE, + VERIFIED, + VERIFICATION_TOKEN, CREATED_AT, UPDATED_AT, DELETED_AT, followersEntity, followingEntity, null); + assertEquals(userEntity.toString(), userEntityTest.toString(), "Error in toString method"); + } + + @Test + void hashCodeTest() { + UserEntity userEntityTest = new UserEntity(ID, USERNAME, EMAIL, PASSWORD, NATIONALITY, EMAIL, IMAGE, ROLE, + VERIFIED, + VERIFICATION_TOKEN, CREATED_AT, UPDATED_AT, DELETED_AT, followersEntity, followingEntity, null); + assertEquals(userEntity.hashCode(), userEntityTest.hashCode(), "Error in hashCode method"); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/mappers/UserEntityMapperTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/mappers/UserEntityMapperTest.java new file mode 100644 index 000000000..5c53015db --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/mappers/UserEntityMapperTest.java @@ -0,0 +1,83 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.mappers; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; +import es.iespuertodelacruz.routinefights.user.utils.UserInitializer; + +@SpringBootTest +class UserEntityMapperTest extends UserInitializer { + @Autowired + private IUserEntityMapper mapper; + + @Test + void toDomainTest() { + userEntity.setFollowing(null); + + User userTest = mapper.toDomain(userEntity); + assertNotNull(userTest, "Error mapping to domain"); + assertEquals(ID, userTest.getId(), ERROR_MAPPING_PROPERTY + "id"); + assertEquals(USERNAME, userTest.getUsername(), ERROR_MAPPING_PROPERTY + "username"); + assertEquals(EMAIL, userTest.getEmail(), ERROR_MAPPING_PROPERTY + "email"); + assertEquals(PASSWORD, userTest.getPassword(), ERROR_MAPPING_PROPERTY + "password"); + assertEquals(NATIONALITY, userTest.getNationality(), ERROR_MAPPING_PROPERTY + "nationality"); + assertEquals(PHONE_NUMBER, userTest.getPhoneNumber(), ERROR_MAPPING_PROPERTY + "phone_number"); + assertEquals(IMAGE, userTest.getImage(), ERROR_MAPPING_PROPERTY + "image"); + assertEquals(ROLE, userTest.getRole(), ERROR_MAPPING_PROPERTY + "role"); + assertEquals(VERIFIED, userTest.getVerified(), ERROR_MAPPING_PROPERTY + "verified"); + assertEquals(VERIFICATION_TOKEN, userTest.getVerificationToken(), + ERROR_MAPPING_PROPERTY + "verification_token"); + assertEquals(CREATED_AT, userTest.getCreatedAt(), ERROR_MAPPING_PROPERTY + "created_at"); + assertEquals(UPDATED_AT, userTest.getUpdatedAt(), ERROR_MAPPING_PROPERTY + "updated_at"); + assertEquals(DELETED_AT, userTest.getDeletedAt(), ERROR_MAPPING_PROPERTY + "deleted_at"); + } + + @Test + void toDomainListTest() { + UserEntity userEntity2 = new UserEntity(); + UserEntity userEntity3 = new UserEntity(); + List userEntities = new ArrayList<>(List.of(userEntity, userEntity2, userEntity3)); + List users = mapper.toDomain(userEntities); + assertNotNull(users, "Error mapping to entity"); + assertEquals(userEntities.size(), users.size(), "Error mapping to entity"); + } + + @Test + void toEntityTest() { + UserEntity userEntityTest = mapper.toEntity(user); + assertNotNull(userEntityTest, "Error mapping to entity"); + assertEquals(ID, userEntityTest.getId(), ERROR_MAPPING_PROPERTY + "id"); + assertEquals(USERNAME, userEntityTest.getUsername(), ERROR_MAPPING_PROPERTY + "username"); + assertEquals(EMAIL, userEntityTest.getEmail(), ERROR_MAPPING_PROPERTY + "email"); + assertEquals(PASSWORD, userEntityTest.getPassword(), ERROR_MAPPING_PROPERTY + "password"); + assertEquals(NATIONALITY, userEntityTest.getNationality(), ERROR_MAPPING_PROPERTY + "nationality"); + assertEquals(PHONE_NUMBER, userEntityTest.getPhoneNumber(), ERROR_MAPPING_PROPERTY + "phone_number"); + assertEquals(IMAGE, userEntityTest.getImage(), ERROR_MAPPING_PROPERTY + "image"); + assertEquals(ROLE, userEntityTest.getRole(), ERROR_MAPPING_PROPERTY + "role"); + assertEquals(VERIFIED, userEntityTest.getVerified(), ERROR_MAPPING_PROPERTY + "verified"); + assertEquals(VERIFICATION_TOKEN, userEntityTest.getVerificationToken(), + ERROR_MAPPING_PROPERTY + "verification_token"); + assertEquals(CREATED_AT, userEntityTest.getCreatedAt(), ERROR_MAPPING_PROPERTY + "created_at"); + assertEquals(UPDATED_AT, userEntityTest.getUpdatedAt(), ERROR_MAPPING_PROPERTY + "updated_at"); + assertEquals(DELETED_AT, userEntityTest.getDeletedAt(), ERROR_MAPPING_PROPERTY + "deleted_at"); + } + + @Test + void toEntityListTest() { + User user2 = new User(); + User user3 = new User(); + List users = new ArrayList<>(List.of(user, user2, user3)); + List userEntities = mapper.toEntity(users); + assertNotNull(userEntities, "Error mapping to entity"); + assertEquals(users.size(), userEntities.size(), "Error mapping to entity"); + } +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/services/UserEntityServiceTest.java b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/services/UserEntityServiceTest.java new file mode 100644 index 000000000..e44ee1ab2 --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/user/infrastructure/adapters/secondary/services/UserEntityServiceTest.java @@ -0,0 +1,527 @@ +package es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.services; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.anyList; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Optional; + +import es.iespuertodelacruz.routinefights.user.domain.User; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.crypto.password.PasswordEncoder; + +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserDeleteException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserNotFoundException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserSaveException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.exceptions.UserUpdateException; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.mappers.IUserEntityMapper; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.repositories.IUserEntityRepository; +import es.iespuertodelacruz.routinefights.user.utils.UserInitializer; + +@SpringBootTest +class UserEntityServiceTest extends UserInitializer { + private static final String TEST_EXCEPTION = "Test Exception"; + + private UserEntityService userEntityService; + + @Mock + private IUserEntityRepository userEntityRepository; + + @Mock + private PasswordEncoder passwordEncoder; + + @Mock + private IUserEntityMapper userEntityMapper; + + @BeforeEach + void init() { + userEntityService = new UserEntityService(); + userEntityService.setUserRepository(userEntityRepository); + userEntityService.setPasswordEncoder(passwordEncoder); + userEntityService.setUserEntityMapper(userEntityMapper); + } + + @Test + void getPasswordEncoderTest() { + assertNotNull(userEntityService.getPasswordEncoder()); + } + + @Test + void getUserEntityMapperTest() { + assertNotNull(userEntityService.getUserEntityMapper()); + } + + @Test + void getUserRepositoryTest() { + assertNotNull(userEntityService.getUserRepository()); + } + + @Test + void deleteTest() { + assertTrue(userEntityService.delete("id")); + } + + @Test + void deleteExceptionTest() { + when(userEntityRepository.existsById(anyString())).thenThrow(new UserDeleteException(TEST_EXCEPTION)); + + UserDeleteException exception = assertThrows(UserDeleteException.class, () -> { + userEntityService.delete("id"); + }); + assertEquals("Error deleting user", exception.getMessage()); + } + + @Test + void existsByEmailTest() { + when(userEntityRepository.existsByEmail(anyString())).thenReturn(true); + assertTrue(userEntityService.existsByEmail("email")); + } + + @Test + void findAllTest() { + when(userEntityRepository.findAll()).thenReturn(new ArrayList()); + when(userEntityMapper.toDomain(anyList())).thenReturn(new ArrayList()); + assertNotNull(userEntityService.findAll()); + } + + @Test + void findAllExceptionTest() { + when(userEntityRepository.findAll()).thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.findAll(); + }); + assertEquals("Users not found", exception.getMessage()); + } + + @Test + void findAllImagesTest() { + when(userEntityRepository.findAllImages()).thenReturn(new HashSet()); + assertNotNull(userEntityService.findAllImages()); + } + + @Test + void findAllImagesExceptionTest() { + when(userEntityRepository.findAllImages()).thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.findAllImages(); + }); + assertEquals("Error finding images", exception.getMessage()); + } + + @Test + void findByEmailTest() { + when(userEntityRepository.findByEmail(anyString())).thenReturn(new UserEntity()); + when(userEntityMapper.toDomain(any(UserEntity.class))).thenReturn(user); + assertNotNull(userEntityService.findByEmail("email")); + } + + @Test + void findByEmailExceptionTest() { + when(userEntityRepository.findByEmail(anyString())).thenThrow(UserNotFoundException.class); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.findByEmail("email"); + }); + assertEquals("User not found", exception.getMessage()); + } + + @Test + void findByIdTest() { + when(userEntityRepository.findById(anyString())).thenReturn(Optional.of(new UserEntity())); + when(userEntityMapper.toDomain(any(UserEntity.class))).thenReturn(user); + assertNotNull(userEntityService.findById("id")); + } + + @Test + void findByIdExceptionTest() { + when(userEntityRepository.findById(anyString())).thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.findById("id"); + }); + assertEquals("User not found", exception.getMessage()); + } + + @Test + void findFollowedUsersByEmailTest() { + when(userEntityRepository.findFollowedUsersByEmail(anyString(),anyString())).thenReturn(new ArrayList()); + assertNotNull(userEntityService.findFollowedUsersByEmail("email","name")); + } + + @Test + void findFollowedUsersByEmailExceptionTest() { + when(userEntityRepository.findFollowedUsersByEmail(anyString(),anyString())) + .thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.findFollowedUsersByEmail("email","name"); + }); + assertEquals("Followed users not found", exception.getMessage()); + } + + @Test + void findFollowersByEmailTest() { + when(userEntityRepository.findFollowersByEmail(anyString(),anyString())).thenReturn(new ArrayList()); + assertNotNull(userEntityService.findFollowersByEmail("email","name")); + } + + @Test + void findFollowersByEmailExceptionTest() { + when(userEntityRepository.findFollowersByEmail(anyString(),anyString())) + .thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.findFollowersByEmail("email","name"); + }); + assertEquals("Followers not found", exception.getMessage()); + } + + @Test + void followUserTest() { + when(userEntityRepository.existsByEmail(anyString())).thenReturn(true); + when(userEntityRepository.followUser(anyString(), anyString())).thenReturn(true); + Boolean followed = userEntityService.followUser("frEmail", "fdEmail"); + assertTrue(followed); + } + + @Test + void followUserNotFoundTest() { + when(userEntityRepository.existsByEmail(anyString())).thenReturn(false); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.followUser("frEmail", "fdEmail"); + }); + assertEquals("User not found", exception.getMessage()); + } + + @Test + void followUserExceptionTest() { + when(userEntityRepository.existsByEmail(anyString())).thenReturn(true); + when(userEntityRepository.followUser(anyString(), anyString())) + .thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.followUser("frEmail", "fdEmail"); + }); + assertEquals("Error following user", exception.getMessage()); + } + + @Test + void postTest() { + when(userEntityRepository.save(any(UserEntity.class))).thenReturn(new UserEntity()); + when(userEntityMapper.toEntity(any(User.class))).thenReturn(userEntity); + when(userEntityMapper.toDomain(any(UserEntity.class))).thenReturn(user); + assertNotNull(userEntityService.post(user)); + } + + @Test + void postNullUserTest() { + UserSaveException exception = assertThrows(UserSaveException.class, () -> { + userEntityService.post(null); + }); + assertEquals("Data required", exception.getMessage()); + } + + @Test + void postExistingUserTest() { + when(userEntityRepository.existsByEmail(anyString())).thenReturn(true); + UserSaveException exception = assertThrows(UserSaveException.class, () -> { + userEntityService.post(user); + }); + assertEquals("Email already exists", exception.getMessage()); + } + + @Test + void postExceptionTest() { + when(userEntityRepository.save(any(UserEntity.class))).thenThrow(new UserSaveException(TEST_EXCEPTION)); + when(userEntityMapper.toEntity(any(User.class))).thenReturn(userEntity); + + UserSaveException exception = assertThrows(UserSaveException.class, () -> { + userEntityService.post(user); + }); + assertEquals("Error saving user", exception.getMessage()); + } + + @Test + void putTest() { + when(userEntityRepository.save(any(UserEntity.class))).thenReturn(new UserEntity()); + when(userEntityRepository.findById(anyString())).thenReturn(Optional.of(userEntity)); + when(userEntityMapper.toDomain(any(UserEntity.class))).thenReturn(user); + assertNotNull(userEntityService.put(user)); + } + + @Test + void putNullUserTest() { + UserUpdateException exception = assertThrows(UserUpdateException.class, () -> { + userEntityService.put(null); + }); + assertEquals("Data required", exception.getMessage()); + } + + @Test + void putUserNotFoundTest() { + when(userEntityRepository.findById(anyString())).thenReturn(Optional.empty()); + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.put(user); + }); + assertEquals("User not found", exception.getMessage()); + } + + @Test + void putPasswordEncoderTest() { + when(userEntityRepository.findById(anyString())).thenReturn(Optional.of(userEntity)); + when(passwordEncoder.encode(anyString())).thenReturn("password2"); + when(userEntityRepository.save(any(UserEntity.class))).thenReturn(new UserEntity()); + when(userEntityMapper.toDomain(any(UserEntity.class))).thenReturn(user); + + user.setPassword("password2"); + assertEquals(user, userEntityService.put(user)); + } + + @Test + void putExceptionTest() { + when(userEntityRepository.findById(anyString())).thenReturn(Optional.of(userEntity)); + when(userEntityRepository.save(any(UserEntity.class))).thenThrow(new UserUpdateException(TEST_EXCEPTION)); + + UserUpdateException exception = assertThrows(UserUpdateException.class, () -> { + userEntityService.put(user); + }); + assertEquals("Error updating user", exception.getMessage()); + } + + @Test + void unfollowUserTest() { + when(userEntityRepository.existsByEmail(anyString())).thenReturn(true); + when(userEntityRepository.unfollowUser(anyString(), anyString())).thenReturn(true); + Boolean unfollowed = userEntityService.unfollowUser("frEmail", "fdEmail"); + assertTrue(unfollowed); + } + + @Test + void unfollowUserNotFoundTest() { + when(userEntityRepository.existsByEmail(anyString())).thenReturn(false); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.unfollowUser("frEmail", "fdEmail"); + }); + assertEquals("User not found", exception.getMessage()); + } + + @Test + void unfollowUserExceptionTest() { + when(userEntityRepository.existsByEmail(anyString())).thenReturn(true); + when(userEntityRepository.unfollowUser(anyString(), anyString())) + .thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.unfollowUser("frEmail", "fdEmail"); + }); + assertEquals("Error unfollowing user", exception.getMessage()); + } + + @Test + void findByUsernameTest() { + when(userEntityRepository.findByUsername(anyString())).thenReturn(new ArrayList()); + when(userEntityMapper.toDomain(anyList())).thenReturn(new ArrayList()); + assertNotNull(userEntityService.findByUsername("username")); + } + + @Test + void findByUsernameExceptionTest() { + when(userEntityRepository.findByUsername(anyString())).thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.findByUsername("username"); + }); + assertEquals("User not found", exception.getMessage()); + } + + @Test + void restoreTest() { + when(userEntityRepository.findById(anyString())).thenReturn(Optional.of(new UserEntity())); + when(userEntityRepository.save(any(UserEntity.class))).thenReturn(new UserEntity()); + assertTrue(userEntityService.restore("id")); + } + + @Test + void restoreUserNotFoundExceptionTest() { + when(userEntityRepository.findById(anyString())).thenReturn(Optional.empty()); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.restore("id"); + }); + assertEquals("User not found", exception.getMessage()); + } + + @Test + void restoreUserUpdateExceptionTest() { + when(userEntityRepository.findById(anyString())).thenReturn(Optional.of(new UserEntity())); + when(userEntityRepository.save(any(UserEntity.class))).thenThrow(new UserUpdateException(TEST_EXCEPTION)); + + UserUpdateException exception = assertThrows(UserUpdateException.class, () -> { + userEntityService.restore("id"); + }); + assertEquals("Error updating user", exception.getMessage()); + } + + @Test + void softdeleteTest() { + when(userEntityRepository.findById(anyString())).thenReturn(Optional.of(new UserEntity())); + when(userEntityRepository.save(any(UserEntity.class))).thenReturn(userEntity); + assertTrue(userEntityService.softDelete("id")); + } + + @Test + void softDeleteUserNotFoundExceptionTest() { + when(userEntityRepository.findById(anyString())).thenReturn(Optional.empty()); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.softDelete("id"); + }); + assertEquals("User not found", exception.getMessage()); + } + + @Test + void softDeleteUserDeleteExceptionTest() { + when(userEntityRepository.findById(anyString())).thenReturn(Optional.of(new UserEntity())); + when(userEntityRepository.save(any(UserEntity.class))).thenThrow(new UserDeleteException(TEST_EXCEPTION)); + + UserDeleteException exception = assertThrows(UserDeleteException.class, () -> { + userEntityService.softDelete("id"); + }); + assertEquals("Error deleting user", exception.getMessage()); + } + + @Test + void updateTest() { + userEntity.setPassword("Different Password"); + userEntity.setEmail("Different Email"); + + when(userEntityRepository.findById(anyString())).thenReturn(Optional.of(userEntity)); + when(userEntityRepository.save(any(UserEntity.class))).thenReturn(new UserEntity()); + when(userEntityMapper.toDomain(any(UserEntity.class))).thenReturn(user); + assertNotNull(userEntityService.update(user)); + } + + @Test + void updateNullUserExceptionTest() { + UserUpdateException exception = assertThrows(UserUpdateException.class, () -> { + userEntityService.update(null); + }); + assertEquals("Data required", exception.getMessage()); + } + + @Test + void updateUserNotFoundExceptionTest() { + when(userEntityRepository.findById(anyString())).thenReturn(Optional.empty()); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.update(user); + }); + assertEquals("User not found", exception.getMessage()); + } + + @Test + void updateEmailAlreadyExistsExceptionTest() { + userEntity.setEmail("Different Email"); + + when(userEntityRepository.findById(anyString())).thenReturn(Optional.of(new UserEntity())); + when(userEntityRepository.existsByEmail(anyString())).thenReturn(true); + + UserUpdateException exception = assertThrows(UserUpdateException.class, () -> { + userEntityService.update(user); + }); + assertEquals("Email already exists", exception.getMessage()); + } + + @Test + void updateUserUpdateExceptionTest() { + when(userEntityRepository.findById(anyString())).thenReturn(Optional.of(new UserEntity())); + when(userEntityRepository.save(any(UserEntity.class))).thenThrow(new UserUpdateException(TEST_EXCEPTION)); + + UserUpdateException exception = assertThrows(UserUpdateException.class, () -> { + userEntityService.update(user); + }); + assertEquals("Error updating user", exception.getMessage()); + } + + @Test + void findByEmailOnlyBaseTest() { + when(userEntityRepository.findByEmailOnlyBase(anyString())).thenReturn(new UserEntity()); + when(userEntityMapper.toDomain(any(UserEntity.class))).thenReturn(user); + assertNotNull(userEntityService.findByEmailOnlyBase("email")); + } + + @Test + void findByEmailOnlyBaseExceptionTest() { + when(userEntityRepository.findByEmailOnlyBase(anyString())).thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.findByEmailOnlyBase("email"); + }); + assertEquals("User not found", exception.getMessage()); + } + + @Test + void getPaginationByNameTest() { + when(userEntityRepository.getPaginationByName(anyInt(), anyInt(), anyString(),anyString())).thenReturn(new ArrayList()); + when(userEntityMapper.toDomain(anyList())).thenReturn(new ArrayList()); + assertNotNull(userEntityService.getPaginationByName(0, 10, "username", "id")); + } + + @Test + void getPaginationByNameExceptionTest() { + when(userEntityRepository.getPaginationByName(anyInt(), anyInt(), anyString(), anyString())) + .thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.getPaginationByName(0, 10, "username", "id"); + }); + assertEquals(TEST_EXCEPTION, exception.getMessage()); + } + + @Test + void likePostTest() { + when(userEntityRepository.likePost(anyString(), anyString())).thenReturn(true); + assertTrue(userEntityService.likePost("id", "postId")); + } + @Test + void likePostExceptionTest() { + when(userEntityRepository.likePost(anyString(), anyString())).thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.likePost("id", "postId"); + }); + assertEquals("Error liking post", exception.getMessage()); + } + @Test + void unlikePostTest() { + when(userEntityRepository.unLikePost(anyString(), anyString())).thenReturn(true); + assertTrue(userEntityService.unLikePost("id", "postId")); + } + + @Test + void unlikePostExceptionTest() { + when(userEntityRepository.unLikePost(anyString(), anyString())).thenThrow(new UserNotFoundException(TEST_EXCEPTION)); + + UserNotFoundException exception = assertThrows(UserNotFoundException.class, () -> { + userEntityService.unLikePost("id", "postId"); + }); + assertEquals("Error unliking post", exception.getMessage()); + } + +} diff --git a/API/src/test/java/es/iespuertodelacruz/routinefights/user/utils/UserInitializer.java b/API/src/test/java/es/iespuertodelacruz/routinefights/user/utils/UserInitializer.java new file mode 100644 index 000000000..559948bab --- /dev/null +++ b/API/src/test/java/es/iespuertodelacruz/routinefights/user/utils/UserInitializer.java @@ -0,0 +1,53 @@ +package es.iespuertodelacruz.routinefights.user.utils; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; + +import es.iespuertodelacruz.routinefights.user.domain.User; +import es.iespuertodelacruz.routinefights.user.infrastructure.adapters.secondary.entities.UserEntity; + +public abstract class UserInitializer { + protected static final String ERROR_MAPPING_PROPERTY = "Error mapping property: "; + protected static final String ERROR_IN_EQUALS_METHOD = "Error in equals method"; + + protected static final String ID = "id"; + protected static final String USERNAME = "username"; + protected static final String EMAIL = "email@email.com"; + protected static final String PASSWORD = "password"; + protected static final String NATIONALITY = "nationality"; + protected static final String PHONE_NUMBER = "+34648742361"; + protected static final String IMAGE = "image"; + protected static final String ROLE = "role"; + protected static final boolean VERIFIED = false; + protected static final String VERIFICATION_TOKEN = "verification_token"; + protected static final LocalDateTime CREATED_AT = LocalDateTime.now(); + protected static final LocalDateTime UPDATED_AT = LocalDateTime.now(); + protected static final LocalDateTime DELETED_AT = LocalDateTime.now(); + protected static final List followers = new ArrayList<>(); + protected static final List following = new ArrayList<>(); + protected static final List followersEntity = new ArrayList<>(); + protected static final List followingEntity = new ArrayList<>(); + + protected User user; + protected User follower; + protected UserEntity userEntity; + + @BeforeEach + void setUp() { + user = new User(ID, USERNAME, EMAIL, PASSWORD, NATIONALITY, PHONE_NUMBER, IMAGE, ROLE, VERIFIED, + VERIFICATION_TOKEN, + CREATED_AT, UPDATED_AT, DELETED_AT, followers, following, null); + follower = new User("followerId", "followerUsername", "followerEmail", "followerPassword", + "followerNationality", + "followerPhoneNumber", "followerImage", "followerRole", true, "followerVerificationToken", + LocalDateTime.now(), LocalDateTime.now(), LocalDateTime.now(), new ArrayList<>(), new ArrayList<>(), null); + followers.add(follower); + + userEntity = new UserEntity(ID, USERNAME, EMAIL, PASSWORD, NATIONALITY, PHONE_NUMBER, IMAGE, ROLE, VERIFIED, + VERIFICATION_TOKEN, CREATED_AT, UPDATED_AT, DELETED_AT, followersEntity, followingEntity, null); + followersEntity.add(new UserEntity()); + } +} diff --git a/App/.gitignore b/App/.gitignore new file mode 100644 index 000000000..cfe6bd027 --- /dev/null +++ b/App/.gitignore @@ -0,0 +1,74 @@ +# 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 +**/.xcode.env.local + +# Android/IntelliJ +# +build/ +.idea +.gradle +local.properties +*.iml +*.hprof +.cxx/ +*.keystore +!debug.keystore + +# node.js +# +node_modules/ +npm-debug.log +yarn-error.log + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/ + +**/fastlane/report.xml +**/fastlane/Preview.html +**/fastlane/screenshots +**/fastlane/test_output + +# Bundle artifact +*.jsbundle + +# Ruby / CocoaPods +**/Pods/ +/vendor/bundle/ + +# Temporary files created by Metro to check the health of the file watcher +.metro-health-check* + +# testing +/coverage + +# Yarn +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions \ No newline at end of file diff --git a/App/.vscode/settings.json b/App/.vscode/settings.json new file mode 100644 index 000000000..c5f3f6b9c --- /dev/null +++ b/App/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "interactive" +} \ No newline at end of file diff --git a/App/App.tsx b/App/App.tsx new file mode 100644 index 000000000..291c13fd6 --- /dev/null +++ b/App/App.tsx @@ -0,0 +1,15 @@ +import 'react-native-gesture-handler'; +import React from 'react'; +import { NavigationContainer } from '@react-navigation/native'; +import LoginNavigation from './src/navigation/LoginStackNavigation'; +import './global.css'; + +function App(): React.JSX.Element { + return ( + + + + ); +} + +export default App; diff --git a/App/Gemfile b/App/Gemfile new file mode 100644 index 000000000..03278dd5e --- /dev/null +++ b/App/Gemfile @@ -0,0 +1,10 @@ +source 'https://rubygems.org' + +# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version +ruby ">= 2.6.10" + +# Exclude problematic versions of cocoapods and activesupport that causes build failures. +gem 'cocoapods', '>= 1.13', '!= 1.15.0', '!= 1.15.1' +gem 'activesupport', '>= 6.1.7.5', '!= 7.1.0' +gem 'xcodeproj', '< 1.26.0' +gem 'concurrent-ruby', '< 1.3.4' diff --git a/App/README.md b/App/README.md new file mode 100644 index 000000000..330b1a9c6 --- /dev/null +++ b/App/README.md @@ -0,0 +1,31 @@ +# Tres en Raya +# Rubén Abreu Gónzalez + +## Índice +- [Tres en Raya](#tres-en-raya) +- [Rubén Abreu Gónzalez](#rubén-abreu-gónzalez) + - [Índice](#índice) + - [Definicion de clases](#definicion-de-clases) + - [Partida](#partida) + - [Persona](#persona) + - [Persona \> Jugador](#persona--jugador) + +### Definicion de clases +#### Partida +- **tablero:** string[]([]); +- **jugador1:** Jugador; +- **jugador2:** Jugador; +- **espectadores:** Persona[]; +- **turno:** Jugador; +- **estado:** esperando | activa | finalizada; +- **jugadas:** number; +- **ganador:** Jugador; + +#### Persona +- **id:** number; +- **nombre:** string; +- **password:** string; + +#### Persona > Jugador +- **historial:** Partida[]; +- **símbolo:** string (Jugador1= "X | Jugador2: "O"); \ No newline at end of file diff --git a/App/__tests__/App.test.tsx b/App/__tests__/App.test.tsx new file mode 100644 index 000000000..e532f701e --- /dev/null +++ b/App/__tests__/App.test.tsx @@ -0,0 +1,13 @@ +/** + * @format + */ + +import React from 'react'; +import ReactTestRenderer from 'react-test-renderer'; +import App from '../App'; + +test('renders correctly', async () => { + await ReactTestRenderer.act(() => { + ReactTestRenderer.create(); + }); +}); diff --git a/App/android/.settings/org.eclipse.buildship.core.prefs b/App/android/.settings/org.eclipse.buildship.core.prefs new file mode 100644 index 000000000..8f9964a18 --- /dev/null +++ b/App/android/.settings/org.eclipse.buildship.core.prefs @@ -0,0 +1,13 @@ +arguments=--init-script /home/jonaykb/.config/Code/User/globalStorage/redhat.java/1.47.0/config_linux/org.eclipse.osgi/58/0/.cp/gradle/init/init.gradle --init-script /home/jonaykb/.config/Code/User/globalStorage/redhat.java/1.47.0/config_linux/org.eclipse.osgi/58/0/.cp/gradle/protobuf/init.gradle +auto.sync=false +build.scans.enabled=false +connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) +connection.project.dir= +eclipse.preferences.version=1 +gradle.user.home= +java.home=/usr/lib/jvm/java-17-openjdk +jvm.arguments= +offline.mode=false +override.workspace.settings=true +show.console.view=true +show.executions.view=true diff --git a/App/android/app/build.gradle b/App/android/app/build.gradle new file mode 100644 index 000000000..057f38f90 --- /dev/null +++ b/App/android/app/build.gradle @@ -0,0 +1,129 @@ +apply plugin: "com.android.application" +apply plugin: "org.jetbrains.kotlin.android" +apply plugin: "com.facebook.react" +project.ext.vectoricons = [ +iconFontNames: ['MaterialCommunityIcons.ttf', 'Ionicons.ttf' ] +] +apply from: file("../../node_modules/react-native-vector-icons/fonts.gradle") + +/** + * 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 { + /* 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") + // The cli.js file which is the React Native CLI entrypoint. Default is ../../node_modules/react-native/cli.js + // cliFile = file("../../node_modules/react-native/cli.js") + + /* 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 command to run when bundling. By default is 'bundle' + // bundleCommand = "ram-bundle" + // + // 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 = false + +/** + * 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.routinefights" + defaultConfig { + applicationId "com.routinefights" + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode 1 + versionName "1.0" + } + signingConfigs { + debug { + storeFile file('debug.keystore') + storePassword 'android' + keyAlias 'androiddebugkey' + keyPassword 'android' + } + release { + storeFile file('my-release-key.keystore') + storePassword '1q2w3e4r' + keyAlias 'your_key_alias' + keyPassword '1q2w3e4r' + } + } + 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. + minifyEnabled enableProguardInReleaseBuilds + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + signingConfig signingConfigs.release + } + } +} + +dependencies { + // The version of react-native is set by the React Native Gradle Plugin + implementation("com.facebook.react:react-android") + + if (hermesEnabled.toBoolean()) { + implementation("com.facebook.react:hermes-android") + } else { + implementation jscFlavor + } +} diff --git a/App/android/app/debug.keystore b/App/android/app/debug.keystore new file mode 100644 index 000000000..364e105ed Binary files /dev/null and b/App/android/app/debug.keystore differ diff --git a/App/android/app/proguard-rules.pro b/App/android/app/proguard-rules.pro new file mode 100644 index 000000000..11b025724 --- /dev/null +++ b/App/android/app/proguard-rules.pro @@ -0,0 +1,10 @@ +# 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 + +# Add any project specific keep options here: diff --git a/App/android/app/src/debug/AndroidManifest.xml b/App/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 000000000..eb98c01af --- /dev/null +++ b/App/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/App/android/app/src/main/AndroidManifest.xml b/App/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..664d99925 --- /dev/null +++ b/App/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/App/android/app/src/main/assets/index.android.bundle b/App/android/app/src/main/assets/index.android.bundle new file mode 100644 index 000000000..84bc7ce7c --- /dev/null +++ b/App/android/app/src/main/assets/index.android.bundle @@ -0,0 +1,1371 @@ +var __BUNDLE_START_TIME__=globalThis.nativePerformanceNow?nativePerformanceNow():Date.now(),__DEV__=false,process=globalThis.process||{},__METRO_GLOBAL_PREFIX__='';process.env=process.env||{};process.env.NODE_ENV=process.env.NODE_ENV||"production"; +!(function(e){"use strict";e.__r=i,e[`${__METRO_GLOBAL_PREFIX__}__d`]=function(e,n,o){if(r.has(n))return;var i={dependencyMap:o,factory:e,hasError:!1,importedAll:t,importedDefault:t,isInitialized:!1,publicModule:{exports:{}}};r.set(n,i)},e.__c=o,e.__registerSegment=function(e,t,n){s[e]=t,n&&n.forEach((function(t){r.has(t)||v.has(t)||v.set(t,e)}))};var r=o(),t={},n={}.hasOwnProperty;function o(){return r=new Map}function i(e){var t=e,n=r.get(t);return n&&n.isInitialized?n.publicModule.exports:d(t,n)}function a(e){var n=e,o=r.get(n);if(o&&o.importedDefault!==t)return o.importedDefault;var a=i(n),l=a&&a.__esModule?a.default:a;return r.get(n).importedDefault=l}function l(e){var o=e,a=r.get(o);if(a&&a.importedAll!==t)return a.importedAll;var l,u=i(o);if(u&&u.__esModule)l=u;else{if(l={},u)for(var d in u)n.call(u,d)&&(l[d]=u[d]);l.default=u}return r.get(o).importedAll=l}i.importDefault=a,i.importAll=l,i.context=function(){throw new Error("The experimental Metro feature `require.context` is not enabled in your project.")},i.resolveWeak=function(){throw new Error("require.resolveWeak cannot be called dynamically.")};var u=!1;function d(r,t){if(!u&&e.ErrorUtils){var n;u=!0;try{n=h(r,t)}catch(r){e.ErrorUtils.reportFatalError(r)}return u=!1,n}return h(r,t)}var c=16,f=65535;function p(e){return{segmentId:e>>>c,localId:e&f}}i.unpackModuleId=p,i.packModuleId=function(e){return(e.segmentId<0){var o,u=null!=(o=v.get(t))?o:0,d=s[u];null!=d&&(d(t),n=r.get(t),v.delete(t))}var c=e.nativeRequire;if(!n&&c){var f=p(t),h=f.segmentId;c(f.localId,h),n=r.get(t)}if(!n)throw Error('Requiring unknown module "'+t+'".');if(n.hasError)throw n.error;n.isInitialized=!0;var g=n,_=g.factory,m=g.dependencyMap;try{var w=n.publicModule;return w.id=t,_(e,i,a,l,w,w.exports,m),n.factory=void 0,n.dependencyMap=void 0,w.exports}catch(e){throw n.hasError=!0,n.error=e,n.isInitialized=!1,n.publicModule.exports=void 0,e}}})('undefined'!=typeof globalThis?globalThis:'undefined'!=typeof global?global:'undefined'!=typeof window?window:this); +!(function(n){var e=(function(){function n(n,e){return n}function e(n){var e={};return n.forEach((function(n,t){e[n]=!0})),e}function t(n,t,a){if(n.formatValueCalls++,n.formatValueCalls>200)return`[TOO BIG formatValueCalls ${n.formatValueCalls} exceeded limit of 200]`;var c=r(n,t);if(c)return c;var f=Object.keys(t),s=e(f);if(d(t)&&(f.indexOf('message')>=0||f.indexOf('description')>=0))return o(t);if(0===f.length){if(v(t)){var p=t.name?': '+t.name:'';return n.stylize('[Function'+p+']','special')}if(g(t))return n.stylize(RegExp.prototype.toString.call(t),'regexp');if(y(t))return n.stylize(Date.prototype.toString.call(t),'date');if(d(t))return o(t)}var h,b,m='',j=!1,O=['{','}'];(h=t,Array.isArray(h)&&(j=!0,O=['[',']']),v(t))&&(m=' [Function'+(t.name?': '+t.name:'')+']');return g(t)&&(m=' '+RegExp.prototype.toString.call(t)),y(t)&&(m=' '+Date.prototype.toUTCString.call(t)),d(t)&&(m=' '+o(t)),0!==f.length||j&&0!=t.length?a<0?g(t)?n.stylize(RegExp.prototype.toString.call(t),'regexp'):n.stylize('[Object]','special'):(n.seen.push(t),b=j?i(n,t,a,s,f):f.map((function(e){return l(n,t,a,s,e,j)})),n.seen.pop(),u(b,m,O)):O[0]+m+O[1]}function r(n,e){if(s(e))return n.stylize('undefined','undefined');if('string'==typeof e){var t="'"+JSON.stringify(e).replace(/^"|"$/g,'').replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return n.stylize(t,'string')}return f(e)?n.stylize(''+e,'number'):a(e)?n.stylize(''+e,'boolean'):c(e)?n.stylize('null','null'):void 0}function o(n){return'['+Error.prototype.toString.call(n)+']'}function i(n,e,t,r,o){for(var i=[],u=0,a=e.length;u-1&&(a=l?a.split('\n').map((function(n){return' '+n})).join('\n').slice(2):'\n'+a.split('\n').map((function(n){return' '+n})).join('\n')):a=n.stylize('[Circular]','special')),s(u)){if(l&&i.match(/^\d+$/))return a;(u=JSON.stringify(''+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(u=u.slice(1,u.length-1),u=n.stylize(u,'name')):(u=u.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),u=n.stylize(u,'string'))}return u+': '+a}function u(n,e,t){return n.reduce((function(n,e){return e.indexOf('\n')>=0&&0,n+e.replace(/\u001b\[\d\d?m/g,'').length+1}),0)>60?t[0]+(''===e?'':e+'\n ')+' '+n.join(',\n ')+' '+t[1]:t[0]+e+' '+n.join(', ')+' '+t[1]}function a(n){return'boolean'==typeof n}function c(n){return null===n}function f(n){return'number'==typeof n}function s(n){return void 0===n}function g(n){return p(n)&&'[object RegExp]'===h(n)}function p(n){return'object'==typeof n&&null!==n}function y(n){return p(n)&&'[object Date]'===h(n)}function d(n){return p(n)&&('[object Error]'===h(n)||n instanceof Error)}function v(n){return'function'==typeof n}function h(n){return Object.prototype.toString.call(n)}function b(n,e){return Object.prototype.hasOwnProperty.call(n,e)}return function(e,r){return t({seen:[],formatValueCalls:0,stylize:n},e,r.depth)}})(),t=0,r=1,o=2,i=3,l=[];l[t]='debug',l[r]='log',l[o]='warning',l[i]='error';function u(t){return function(){var r;r=1===arguments.length&&'string'==typeof arguments[0]?arguments[0]:Array.prototype.map.call(arguments,(function(n){return e(n,{depth:10})})).join(', ');var u=arguments[0],a=t;'string'==typeof u&&'Warning: '===u.slice(0,9)&&a>=i&&(a=o),n.__inspectorLog&&n.__inspectorLog(l[a],r,[].slice.call(arguments),1),c.length&&(r=f('',r)),n.nativeLoggingHook(r,a)}}function a(n,e){return Array.apply(null,Array(e)).map((function(){return n}))}var c=[];function f(n,e){return c.join('')+n+' '+(e||'')}if(n.nativeLoggingHook){var s=n.console;n.console=Object.assign({},null!=s?s:{},{error:u(i),info:u(r),log:u(r),warn:u(o),trace:u(t),debug:u(t),table:function(e){if(!Array.isArray(e)){var t=e;for(var o in e=[],t)if(t.hasOwnProperty(o)){var i=t[o];i["(index)"]=o,e.push(i)}}if(0!==e.length){var l=Object.keys(e[0]).sort(),u=[],c=[];l.forEach((function(n,t){c[t]=n.length;for(var r=0;r';return function(){for(var r=arguments.length,u=new Array(r),e=0;e=5){var h=this._queue;this._queue=[[],[],[],this._callID],this._lastFlush=o,g.nativeFlushQueueImmediate(h)}r(d[3]).counterEvent('pending_js_to_native_queue',this._queue[0].length),this.__spy&&this.__spy({type:1,module:t+'',method:l,args:s})}},{key:"createDebugLookup",value:function(t,l,s){}},{key:"setReactNativeMicrotasksCallback",value:function(t){this._reactNativeMicrotasksCallback=t}},{key:"__guard",value:function(t){if(this.__shouldPauseOnThrow())t();else try{t()}catch(t){r(d[4]).reportFatalError(t)}}},{key:"__shouldPauseOnThrow",value:function(){return'undefined'!=typeof DebuggerInternal&&!0===DebuggerInternal.shouldPauseOnThrow}},{key:"__callReactNativeMicrotasks",value:function(){r(d[3]).beginEvent('JSTimers.callReactNativeMicrotasks()');try{null!=this._reactNativeMicrotasksCallback&&this._reactNativeMicrotasksCallback()}finally{r(d[3]).endEvent()}}},{key:"__callFunction",value:function(t,l,s){this._lastFlush=Date.now(),this._eventLoopStartTime=this._lastFlush,this.__spy?r(d[3]).beginEvent(`${t}.${l}(${r(d[5]).default(s)})`):r(d[3]).beginEvent(`${t}.${l}(...)`);try{this.__spy&&this.__spy({type:0,module:t,method:l,args:s});var u=this.getCallableModule(t);if(!u){var n=Object.keys(this._lazyCallableModules),o=n.length,h=n.join(', '),c=!0===g.RN$Bridgeless?'true':'false';r(d[6])(!1,`Failed to call into JavaScript module method ${t}.${l}(). Module has not been registered as callable. Bridgeless Mode: ${c}. Registered callable JavaScript modules (n = ${o}): ${h}.\n A frequent cause of the error is that the application entry file path is incorrect. This can also happen when the JS bundle is corrupt or there is an early initialization error when loading React Native.`)}u[l]||r(d[6])(!1,`Failed to call into JavaScript module method ${t}.${l}(). Module exists, but the method is undefined.`),u[l].apply(u,s)}finally{r(d[3]).endEvent()}}},{key:"__invokeCallback",value:function(l,s){this._lastFlush=Date.now(),this._eventLoopStartTime=this._lastFlush;var u=l>>>1,n=1&l?this._successCallbacks.get(u):this._failureCallbacks.get(u);try{if(!n)return;this._successCallbacks.delete(u),this._failureCallbacks.delete(u),n.apply(void 0,t(s))}finally{}}}],[{key:"spy",value:function(t){u.prototype.__spy=!0===t?function(t){console.log((0===t.type?'N->JS':'JS->N')+" : "+`${null!=t.module?t.module+'.':''}${t.method}`+`(${JSON.stringify(t.args)})`)}:!1===t?null:t}}])})();m.exports=u}),5,[6,12,13,17,18,19,20]); +__d((function(g,_r,i,a,m,e,d){m.exports=function(t){return _r(d[0])(t)||_r(d[1])(t)||_r(d[2])(t)||_r(d[3])()},m.exports.__esModule=!0,m.exports.default=m.exports}),6,[7,9,10,11]); +__d((function(g,_r,i,a,m,e,d){m.exports=function(r){if(Array.isArray(r))return _r(d[0])(r)},m.exports.__esModule=!0,m.exports.default=m.exports}),7,[8]); +__d((function(g,_r,i,_a,m,_e,d){m.exports=function(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);to+17?n.substring(0,o)+u:n}if('object'!=typeof n||null===n)return n;var l=n;if(Array.isArray(n))h.length>=f?l=`[ ... array with ${n.length} values ... ]`:n.length>c&&(l=n.slice(0,c).concat([`... extra ${n.length-c} values truncated ...`]));else{(0,e.default)('object'==typeof n,'This was already found earlier');var s=Object.keys(n);if(h.length>=f)l=`{ ... object with ${s.length} keys ... }`;else if(s.length>y){for(var I of(l={},s.slice(0,y)))l[I]=n[I];l['...(truncated keys)...']=s.length-y}}return h.unshift(l),l}return function(t){if(void 0===t)return'undefined';if(null===t)return'null';if('function'==typeof t)try{return t.toString()}catch(t){return'[function unknown]'}else{if(t instanceof Error)return t.name+': '+t.message;try{var e=JSON.stringify(t,I);return void 0===e?'["'+typeof t+'" failed to stringify]':e}catch(e){if('function'==typeof t.toString)try{return t.toString()}catch(t){}}}return'["'+typeof t+'" failed to stringify]'}}var f=n({maxDepth:10,maxStringLimit:100,maxArrayLimit:50,maxObjectKeysLimit:50});_e.default=f}),19,[1,20]); +__d((function(g,r,i,_a,m,_e,_d){'use strict';m.exports=function(e,n,o,t,a,f,s,d){if(!e){var u;if(void 0===n)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[o,t,a,f,s,d],l=0;(u=new Error(n.replace(/%s/g,(function(){return c[l++]})))).name='Invariant Violation'}throw u.framesToPop=1,u}}}),20,[]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=n(r(d[1])),l=n(r(d[2])),u=n(r(d[3])),o=n(r(d[4])),s=n(r(d[5])),c='android'===l.default.OS?new Map([['change','touchExplorationDidChange'],['reduceMotionChanged','reduceMotionDidChange'],['screenReaderChanged','touchExplorationDidChange'],['accessibilityServiceChanged','accessibilityServiceDidChange']]):new Map([['announcementFinished','announcementFinished'],['boldTextChanged','boldTextChanged'],['change','screenReaderChanged'],['grayscaleChanged','grayscaleChanged'],['invertColorsChanged','invertColorsChanged'],['reduceMotionChanged','reduceMotionChanged'],['reduceTransparencyChanged','reduceTransparencyChanged'],['screenReaderChanged','screenReaderChanged']]),f={isBoldTextEnabled:function(){return'android'===l.default.OS?Promise.resolve(!1):new Promise((function(n,t){null!=s.default?s.default.getCurrentBoldTextState(n,t):t(null)}))},isGrayscaleEnabled:function(){return'android'===l.default.OS?Promise.resolve(!1):new Promise((function(n,t){null!=s.default?s.default.getCurrentGrayscaleState(n,t):t(null)}))},isInvertColorsEnabled:function(){return'android'===l.default.OS?Promise.resolve(!1):new Promise((function(n,t){null!=s.default?s.default.getCurrentInvertColorsState(n,t):t(null)}))},isReduceMotionEnabled:function(){return new Promise((function(n,t){'android'===l.default.OS?null!=o.default?o.default.isReduceMotionEnabled(n):t(null):null!=s.default?s.default.getCurrentReduceMotionState(n,t):t(null)}))},prefersCrossFadeTransitions:function(){return new Promise((function(n,t){if('android'===l.default.OS)return Promise.resolve(!1);null!=(null==s.default?void 0:s.default.getCurrentPrefersCrossFadeTransitionsState)?s.default.getCurrentPrefersCrossFadeTransitionsState(n,t):t(null)}))},isReduceTransparencyEnabled:function(){return'android'===l.default.OS?Promise.resolve(!1):new Promise((function(n,t){null!=s.default?s.default.getCurrentReduceTransparencyState(n,t):t(null)}))},isScreenReaderEnabled:function(){return new Promise((function(n,t){'android'===l.default.OS?null!=o.default?o.default.isTouchExplorationEnabled(n):t(null):null!=s.default?s.default.getCurrentVoiceOverState(n,t):t(null)}))},isAccessibilityServiceEnabled:function(){return new Promise((function(n,t){'android'===l.default.OS&&null!=o.default&&null!=o.default.isAccessibilityServiceEnabled?o.default.isAccessibilityServiceEnabled(n):t(null)}))},addEventListener:function(n,l){var u=c.get(n);return null==u?{remove:function(){}}:t.default.addListener(u,l)},setAccessibilityFocus:function(n){(0,u.default)(n,'focus')},sendAccessibilityEvent:function(n,t){'ios'===l.default.OS&&'click'===t||(0,r(d[6]).sendAccessibilityEvent)(n,t)},announceForAccessibility:function(n){'android'===l.default.OS?null==o.default||o.default.announceForAccessibility(n):null==s.default||s.default.announceForAccessibility(n)},announceForAccessibilityWithOptions:function(n,t){'android'===l.default.OS?null==o.default||o.default.announceForAccessibility(n):null!=s.default&&s.default.announceForAccessibilityWithOptions?null==s.default||s.default.announceForAccessibilityWithOptions(n,t):null==s.default||s.default.announceForAccessibility(n)},getRecommendedTimeoutMillis:function(n){return'android'===l.default.OS?new Promise((function(t,l){null!=o.default&&o.default.getRecommendedTimeoutMillis?o.default.getRecommendedTimeoutMillis(n,t):t(n)})):Promise.resolve(n)}};e.default=f}),21,[1,22,33,43,53,55,57]); +__d((function(g,_r,i,a,m,_e,d){var t=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=t(_r(d[1])),n=t(_r(d[2])),r=t(_r(d[3])),u=t(_r(d[4])),o=t(_r(d[5])),c=t(_r(d[6]));function f(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(f=function(){return!!t})()}var l=(function(t){function l(){return(0,e.default)(this,l),t=this,n=l,o=arguments,n=(0,u.default)(n),(0,r.default)(t,f()?Reflect.construct(n,o||[],(0,u.default)(t).constructor):n.apply(t,o));var t,n,o}return(0,c.default)(l,t),(0,n.default)(l,[{key:"emit",value:function(t){(0,_r(d[8]).beginEvent)((function(){return`RCTDeviceEventEmitter.emit#${t}`}));for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r1?u-1:0),s=1;s0?l[l.length-1]:null,c=l.length>1?l[l.length-2]:null,v='function'==typeof s,h='function'==typeof c;h&&r(d[1])(v,'Cannot have a non-function arg after a function arg.');var y=v?s:null,C=h?c:null,b=v+h,M=l.slice(0,l.length-b);if('sync'===o)return r(d[2]).callNativeSyncHook(n,t,M,C,y);r(d[2]).enqueueNativeCall(n,t,M,C,y)},u.type=o,u}function l(n,t){return-1!==n.indexOf(t)}function f(n,t){return Object.assign(t,n||{})}g.__fbGenNativeModule=t;var s={};if(g.nativeModuleProxy)s=g.nativeModuleProxy;else{var c=g.__fbBatchedBridgeConfig;r(d[1])(c,'__fbBatchedBridgeConfig is not set, cannot invoke native modules');var v=r(d[3]);(c.remoteModuleConfig||[]).forEach((function(n,u){var l=t(n,u);l&&(l.module?s[l.name]=l.module:v(s,l.name,{get:function(){return o(l.name,u)}}))}))}m.exports=s}),37,[38,20,4,42]); +__d((function(g,_r,i,a,m,_e,d){m.exports=function(e,t){return _r(d[0])(e)||_r(d[1])(e,t)||_r(d[2])(e,t)||_r(d[3])()},m.exports.__esModule=!0,m.exports.default=m.exports}),38,[39,40,10,41]); +__d((function(g,_r,i,a,m,e,d){m.exports=function(r){if(Array.isArray(r))return r},m.exports.__esModule=!0,m.exports.default=m.exports}),39,[]); +__d((function(g,_r,_i,_a,m,_e,d){m.exports=function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var l,n,u,o,f=[],i=!0,a=!1;try{if(u=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;i=!1}else for(;!(i=(l=u.call(r)).done)&&(f.push(l.value),f.length!==t);i=!0);}catch(e){a=!0,n=e}finally{try{if(!i&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(a)throw n}}return f}},m.exports.__esModule=!0,m.exports.default=m.exports}),40,[]); +__d((function(g,r,i,a,m,e,d){m.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},m.exports.__esModule=!0,m.exports.default=m.exports}),41,[]); +__d((function(g,r,i,a,m,e,d){'use strict';m.exports=function(t,n,u){var b,c=u.get,o=!1!==u.enumerable,f=!1!==u.writable,l=!1;function s(u){b=u,l=!0,Object.defineProperty(t,n,{value:u,configurable:!0,enumerable:o,writable:f})}Object.defineProperty(t,n,{get:function(){return l||(l=!0,s(c())),b},set:s,configurable:!0,enumerable:o})}}),42,[]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]),s=t(r(d[1])),c=t(r(d[2]));m.exports=function(t,n){'focus'===n&&(0,c.default)(s.default.sendAccessibilityEvent)(t,s.default.getConstants().AccessibilityEventTypes.typeViewFocused),'click'===n&&(0,c.default)(s.default.sendAccessibilityEvent)(t,s.default.getConstants().AccessibilityEventTypes.typeViewClicked)}}),43,[1,44,45]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0])(r(d[1]));function o(n){return n%2==0}var t=!0===g.RN$Bridgeless?r(d[2]):r(d[3]),u=Object.assign({},t,{measure:function(u,s){if(o(u)){var f=(0,n.default)((0,r(d[4]).getFabricUIManager)()),c=f.findShadowNodeByTag_DEPRECATED(u);c?f.measure(c,s):(console.warn(`measure cannot find view with tag #${u}`),s())}else t.measure(u,s)},measureInWindow:function(u,s){if(o(u)){var f=(0,n.default)((0,r(d[4]).getFabricUIManager)()),c=f.findShadowNodeByTag_DEPRECATED(u);c?f.measureInWindow(c,s):(console.warn(`measure cannot find view with tag #${u}`),s())}else t.measureInWindow(u,s)},measureLayout:function(u,s,f,c){if(o(u)){var w=(0,n.default)((0,r(d[4]).getFabricUIManager)()),l=w.findShadowNodeByTag_DEPRECATED(u),E=w.findShadowNodeByTag_DEPRECATED(s);if(!l||!E)return;w.measureLayout(l,E,f,c)}else t.measureLayout(u,s,f,c)},measureLayoutRelativeToParent:function(u,s,f){if(o(u)){console.warn('RCTUIManager.measureLayoutRelativeToParent method is deprecated and it will not be implemented in newer versions of RN (Fabric) - T47686450');var c=(0,n.default)((0,r(d[4]).getFabricUIManager)()),w=c.findShadowNodeByTag_DEPRECATED(u);w&&c.measure(w,(function(n,o,t,u,s,c){f(n,o,t,u)}))}else t.measureLayoutRelativeToParent(u,s,f)},dispatchViewManagerCommand:function(u,s,f){if('number'!=typeof u)throw new Error('dispatchViewManagerCommand: found null reactTag');if(o(u)){var c=(0,n.default)((0,r(d[4]).getFabricUIManager)()),w=c.findShadowNodeByTag_DEPRECATED(u);w&&(s=`${s}`,c.dispatchCommand(w,s,f))}else t.dispatchViewManagerCommand(u,s,f)}});m.exports=u}),44,[1,45,46,49,47]); +__d((function(g,r,i,a,m,e,d){'use strict';function t(t,o){if(null!=t)return t;var n=new Error(void 0!==o?o:'Got unexpected '+t);throw n.framesToPop=1,n}m.exports=t,m.exports.default=t,Object.defineProperty(m.exports,'__esModule',{value:!0})}),45,[]); +__d((function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]),t=n(r(d[1])),o=n(r(d[2])),s=n(r(d[3]));function u(n,t){console.error(`[ReactNative Architecture][JS] '${n}' is not available in the new React Native architecture.`+(t?` ${t}`:''))}var c,f,l=g.RN$LegacyInterop_UIManager_getConstants,w=(c=!1,f={},function(){return c||(f=(0,s.default)(l)(),c=!0),f}),v=g.RN$LegacyInterop_UIManager_getConstantsForViewManager,C=g.RN$LegacyInterop_UIManager_getDefaultEventTypes,p=(function(){var n=!1,t=null;return function(){return n||(t=(0,s.default)(C)(),n=!0),t}})(),h={measure:function(n,t){u('measure')},measureInWindow:function(n,t){u('measureInWindow')},measureLayout:function(n,t,o,s){u('measureLayout')},measureLayoutRelativeToParent:function(n,t,o){u('measureLayoutRelativeToParent')},dispatchViewManagerCommand:function(n,t,o){u('dispatchViewManagerCommand')}},y={createView:function(n,t,o,s){u('createView')},updateView:function(n,t,o){u('updateView')},setChildren:function(n,t){u('setChildren')},manageChildren:function(n,t,o,s,c,f){u('manageChildren')},setJSResponder:function(n,t){u('setJSResponder')},clearJSResponder:function(){u('clearJSResponder')}},E=o.default.select({android:{}}),b=o.default.select({android:{getConstantsForViewManager:function(n){return v?v(n):(u('getConstantsForViewManager'),{})},getDefaultEventTypes:function(){return C?p():(u('getDefaultEventTypes'),[])},setLayoutAnimationEnabledExperimental:function(n){n||u('setLayoutAnimationEnabledExperimental(false)','Layout animations are always enabled in the New Architecture.')},sendAccessibilityEvent:function(n,t){var o=null;if(t===8)o='focus';else if(t===32)o='windowStateChange';else if(t===1)o='click';else{if(t!==128)return void console.error(`sendAccessibilityEvent() dropping event: Called with unsupported eventType: ${t}`);o='viewHoverEnter'}var u=(0,s.default)((0,r(d[4]).getFabricUIManager)()),c=u.findShadowNodeByTag_DEPRECATED(n);c?u.sendAccessibilityEvent(c,o):console.error(`sendAccessibilityEvent() dropping event: Cannot find view with tag #${n}`)}},ios:{lazilyLoadView:function(n){return u('lazilyLoadView'),{}},focus:function(n){var t=(0,s.default)((0,r(d[4]).getFabricUIManager)()),o=t.findShadowNodeByTag_DEPRECATED(n);o?t.dispatchCommand(o,'focus',[]):console.error(`focus() noop: Cannot find view with tag #${n}`)},blur:function(n){var t=(0,s.default)((0,r(d[4]).getFabricUIManager)()),o=t.findShadowNodeByTag_DEPRECATED(n);o?t.dispatchCommand(o,'blur',[]):console.error(`blur() noop: Cannot find view with tag #${n}`)}}}),M=Object.assign({},h,E,b,y,{getViewManagerConfig:function(n){if(l){var t=w();return!t[n]&&M.getConstantsForViewManager&&(t[n]=M.getConstantsForViewManager(n)),t[n]}return u(`getViewManagerConfig('${n}')`,`If '${n}' has a ViewManager and you want to retrieve its native ViewConfig, please turn on the native ViewConfig interop layer. If you want to see if this component is registered with React Native, please call hasViewManagerConfig('${n}') instead.`),null},hasViewManagerConfig:function(n){return(0,r(d[5]).unstable_hasComponent)(n)},getConstants:function(){return l?w():(u('getConstants'),null)},findSubviewIn:function(n,t,o){var u=(0,s.default)((0,r(d[4]).getFabricUIManager)()),c=u.findShadowNodeByTag_DEPRECATED(n);c?u.findNodeAtPoint(c,t[0],t[1],(function(n){if(null!=n){var t=n,s=t.stateNode.node;if(s){var c=t.stateNode.canonical.nativeTag;u.measure(s,(function(n,t,s,u,f,l){o(c,f,l,s,u)}))}else console.error('findSubviewIn(): Cannot find node at point')}else console.error('findSubviewIn(): Cannot find node at point')})):console.error(`findSubviewIn() noop: Cannot find view with reactTag ${n}`)},viewIsDescendantOf:function(n,t,o){var u=(0,s.default)((0,r(d[4]).getFabricUIManager)()),c=u.findShadowNodeByTag_DEPRECATED(n);if(c){var f=u.findShadowNodeByTag_DEPRECATED(t);if(f){o([!!(16&u.compareDocumentPosition(f,c))])}else console.error(`viewIsDescendantOf() noop: Cannot find view with ancestorReactTag ${t}`)}else console.error(`viewIsDescendantOf() noop: Cannot find view with reactTag ${n}`)},configureNextLayoutAnimation:function(n,t,o){(0,s.default)((0,r(d[4]).getFabricUIManager)()).configureNextLayoutAnimation(n,t,o)}});l&&(Object.keys(w()).forEach((function(n){M[n]=w()[n]})),M.getConstants().ViewManagerNames&&M.getConstants().ViewManagerNames.forEach((function(n){(0,t.default)(M,n,{get:function(){return(0,s.default)(M.getConstantsForViewManager)(n)}})}))),m.exports=M}),46,[1,42,33,45,47,48]); +__d((function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.getFabricUIManager=function(){null==t&&null!=g.nativeFabricUIManager&&(t=u(g.nativeFabricUIManager,c));return t};var t,o=n(r(d[1])),c=['createNode','cloneNode','cloneNodeWithNewChildren','cloneNodeWithNewProps','cloneNodeWithNewChildrenAndProps','createChildSet','appendChild','appendChildToSet','completeRoot','measure','measureInWindow','measureLayout','configureNextLayoutAnimation','sendAccessibilityEvent','findShadowNodeByTag_DEPRECATED','setNativeProps','dispatchCommand','compareDocumentPosition','getBoundingClientRect'];function u(n,t){var c=Object.create(n),u=function(t){(0,o.default)(c,t,{get:function(){return n[t]}})};for(var l of t)u(l);return c}}),47,[1,42]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.unstable_hasComponent=function(t){var o=n.get(t);if(null==o){if(!g.__nativeComponentRegistry__hasComponent)throw`unstable_hasComponent('${t}'): Global function is not registered`;o=g.__nativeComponentRegistry__hasComponent(t),n.set(t,o)}return o};var n=new Map}),48,[]); +__d((function(g,r,i,a,m,_e,d){var e=r(d[0]),n=e(r(d[1])),t=e(r(d[2])),o={},f=new Set,u={},c=!1;function l(){return c||(u=n.default.getConstants(),c=!0),u}function s(e){if(void 0===o[e]&&g.nativeCallSyncHook&&n.default.getConstantsForViewManager)try{o[e]=n.default.getConstantsForViewManager(e)}catch(n){console.error("NativeUIManager.getConstantsForViewManager('"+e+"') threw an exception.",n),o[e]=null}var u=o[e];if(u)return u;if(!g.nativeCallSyncHook)return u;if(n.default.lazilyLoadView&&!f.has(e)){var c=(0,t.default)(n.default.lazilyLoadView)(e);f.add(e),null!=c&&null!=c.viewConfig&&(l()[e]=c.viewConfig,C(e))}return o[e]}var w=Object.assign({},n.default,{createView:function(e,t,o,f){n.default.createView(e,t,o,f)},getConstants:function(){return l()},getViewManagerConfig:function(e){return s(e)},hasViewManagerConfig:function(e){return null!=s(e)}});function C(e){var n=l()[e];o[e]=n,n.Manager&&(r(d[3])(n,'Constants',{get:function(){var e=r(d[4])[n.Manager],t={};return e&&Object.keys(e).forEach((function(n){var o=e[n];'function'!=typeof o&&(t[n]=o)})),t}}),r(d[3])(n,'Commands',{get:function(){var e=r(d[4])[n.Manager],t={},o=0;return e&&Object.keys(e).forEach((function(n){'function'==typeof e[n]&&(t[n]=o++)})),t}}))}n.default.getViewManagerConfig=w.getViewManagerConfig,l().ViewManagerNames&&n.default.getConstants().ViewManagerNames.forEach((function(e){r(d[3])(n.default,e,{get:function(){return(0,t.default)(n.default.getConstantsForViewManager)(e)}})})),g.nativeCallSyncHook||Object.keys(l()).forEach((function(e){r(d[5]).includes(e)||(o[e]||(o[e]=l()[e]),r(d[3])(n.default,e,{get:function(){return console.warn(`Accessing view manager configs directly off UIManager via UIManager['${e}'] is no longer supported. Use UIManager.getViewManagerConfig('${e}') instead.`),w.getViewManagerConfig(e)}}))})),m.exports=w}),49,[1,50,45,42,37,52]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),50,[51]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.getEnforcing('UIManager')}),51,[36]); +__d((function(g,r,i,a,m,e,d){'use strict';m.exports=['clearJSResponder','configureNextLayoutAnimation','createView','dispatchViewManagerCommand','findSubviewIn','getConstantsForViewManager','getDefaultEventTypes','manageChildren','measure','measureInWindow','measureLayout','measureLayoutRelativeToParent','removeRootView','sendAccessibilityEvent','setChildren','setJSResponder','setLayoutAnimationEnabledExperimental','updateView','viewIsDescendantOf','LazyViewManagersEnabled','ViewManagerNames','StyleConstants','AccessibilityEventTypes','UIView','getViewManagerConfig','hasViewManagerConfig','blur','focus','genericBubblingEventTypes','genericDirectEventTypes','lazilyLoadView']}),52,[]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),53,[54]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.get('AccessibilityInfo')}),54,[36]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),55,[56]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=o?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(u,a,f):u[a]=e[a]}return u.default=e,n&&n.set(e,u),u})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.get('AccessibilityManager')}),56,[36]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),Object.keys(r(d[0])).forEach((function(n){"default"!==n&&"__esModule"!==n&&(n in e&&e[n]===r(d[0])[n]||Object.defineProperty(e,n,{enumerable:!0,get:function(){return r(d[0])[n]}}))}))}),57,[58]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.dispatchCommand=function(n,t,o){return!0===g.RN$Bridgeless?r(d[0]).dispatchCommand(n,t,o):r(d[2]).dispatchCommand(n,t,o)},e.findHostInstance_DEPRECATED=function(n){return r(d[2]).findHostInstance_DEPRECATED(n)},e.findNodeHandle=function(n){return r(d[2]).findNodeHandle(n)},e.getNodeFromInternalInstanceHandle=function(n){return r(d[0]).getNodeFromInternalInstanceHandle(n)},e.getPublicInstanceFromInternalInstanceHandle=function(n){return r(d[0]).getPublicInstanceFromInternalInstanceHandle(n)},e.isChildPublicInstance=function(n,t){return r(d[2]).isChildPublicInstance(n,t)},e.isProfilingRenderer=function(){return Boolean(!1)},e.renderElement=function(n){var t=n.element,o=n.rootTag,c=n.useFabric,u=n.useConcurrentRoot;c?r(d[0]).render(t,o,null,u,{onCaughtError:r(d[1]).onCaughtError,onUncaughtError:r(d[1]).onUncaughtError,onRecoverableError:r(d[1]).onRecoverableError}):r(d[2]).render(t,o,void 0,{onCaughtError:r(d[1]).onCaughtError,onUncaughtError:r(d[1]).onUncaughtError,onRecoverableError:r(d[1]).onRecoverableError})},e.sendAccessibilityEvent=function(n,t){return r(d[2]).sendAccessibilityEvent(n,t)},e.unmountComponentAtNodeAndRemoveContainer=function(n){var t=n;r(d[2]).unmountComponentAtNodeAndRemoveContainer(t)},e.unstable_batchedUpdates=function(n,t){return r(d[2]).unstable_batchedUpdates(n,t)}}),58,[59,480,296]); +__d((function(g,r,i,a,m,e,d){'use strict';var t;t=r(d[0]),g.RN$stopSurface=t.stopSurface,!0!==g.RN$Bridgeless&&r(d[1]).BatchedBridge.registerCallableModule('ReactFabric',t),m.exports=t}),59,[60,298]); +__d((function(e,n,t,r,l,a,i){"use strict";n(i[0]);var u=n(i[1]),o=Array.isArray,s=!1,c=null,f=null,d=null,p=null;function h(e,n,t){e.currentTarget=p(t);try{n(e)}catch(e){s||(s=!0,c=e)}e.currentTarget=null}function g(e){var n=e._dispatchListeners,t=e._dispatchInstances;if(o(n))throw Error("Invalid `event`.");return e.currentTarget=n?p(t):null,n=n?n(e):null,e.currentTarget=null,e._dispatchListeners=null,e._dispatchInstances=null,n}var m=Object.assign;function v(){return!0}function b(){return!1}function y(e,n,t,r){for(var l in this.dispatchConfig=e,this._targetInst=n,this.nativeEvent=t,this._dispatchInstances=this._dispatchListeners=null,e=this.constructor.Interface)e.hasOwnProperty(l)&&((n=e[l])?this[l]=n(t):"target"===l?this.target=r:this[l]=t[l]);return this.isDefaultPrevented=(null!=t.defaultPrevented?t.defaultPrevented:!1===t.returnValue)?v:b,this.isPropagationStopped=b,this}function S(e,n,t,r){if(this.eventPool.length){var l=this.eventPool.pop();return this.call(l,e,n,t,r),l}return new this(e,n,t,r)}function k(e){if(!(e instanceof this))throw Error("Trying to release an event instance into a pool of a different type.");e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function w(e){e.getPooled=S,e.eventPool=[],e.release=k}m(y.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=v)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=v)},persist:function(){this.isPersistent=v},isPersistent:b,destructor:function(){var e,n=this.constructor.Interface;for(e in n)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=b,this._dispatchInstances=this._dispatchListeners=null}}),y.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},y.extend=function(e){function n(){}function t(){return r.apply(this,arguments)}var r=this;n.prototype=r.prototype;var l=new n;return m(l,t.prototype),t.prototype=l,t.prototype.constructor=t,t.Interface=m({},r.Interface,e),t.extend=r.extend,w(t),t},w(y);var P=y.extend({touchHistory:function(){return null}});function E(e){return"topTouchStart"===e}function R(e){return"topTouchMove"===e}var _=["topTouchStart"],T=["topTouchMove"],x=["topTouchCancel","topTouchEnd"],z=[],N={touchBank:z,numberActiveTouches:0,indexOfSingleActiveTouch:-1,mostRecentTimeStamp:0};function C(e){return e.timeStamp||e.timestamp}function I(e){if(null==(e=e.identifier))throw Error("Touch object is missing identifier.");return e}function L(e){var n=I(e),t=z[n];t?(t.touchActive=!0,t.startPageX=e.pageX,t.startPageY=e.pageY,t.startTimeStamp=C(e),t.currentPageX=e.pageX,t.currentPageY=e.pageY,t.currentTimeStamp=C(e),t.previousPageX=e.pageX,t.previousPageY=e.pageY,t.previousTimeStamp=C(e)):(t={touchActive:!0,startPageX:e.pageX,startPageY:e.pageY,startTimeStamp:C(e),currentPageX:e.pageX,currentPageY:e.pageY,currentTimeStamp:C(e),previousPageX:e.pageX,previousPageY:e.pageY,previousTimeStamp:C(e)},z[n]=t),N.mostRecentTimeStamp=C(e)}function U(e){var n=z[I(e)];n&&(n.touchActive=!0,n.previousPageX=n.currentPageX,n.previousPageY=n.currentPageY,n.previousTimeStamp=n.currentTimeStamp,n.currentPageX=e.pageX,n.currentPageY=e.pageY,n.currentTimeStamp=C(e),N.mostRecentTimeStamp=C(e))}function F(e){var n=z[I(e)];n&&(n.touchActive=!1,n.previousPageX=n.currentPageX,n.previousPageY=n.currentPageY,n.previousTimeStamp=n.currentTimeStamp,n.currentPageX=e.pageX,n.currentPageY=e.pageY,n.currentTimeStamp=C(e),N.mostRecentTimeStamp=C(e))}var D,Q={instrument:function(e){D=e},recordTouchTrack:function(e,n){if(null!=D&&D(e,n),R(e))n.changedTouches.forEach(U);else if(E(e))n.changedTouches.forEach(L),N.numberActiveTouches=n.touches.length,1===N.numberActiveTouches&&(N.indexOfSingleActiveTouch=n.touches[0].identifier);else if(("topTouchEnd"===e||"topTouchCancel"===e)&&(n.changedTouches.forEach(F),N.numberActiveTouches=n.touches.length,1===N.numberActiveTouches))for(e=0;e=t)throw Error("EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `"+e+"`.");if(!re[t]){if(!n.extractEvents)throw Error("EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `"+e+"` does not.");for(var r in re[t]=n,t=n.eventTypes){var l=void 0,a=t[r];if(le.hasOwnProperty(r))throw Error("EventPluginRegistry: More than one plugin attempted to publish the same event name, `"+r+"`.");le[r]=a;var i=a.phasedRegistrationNames;if(i){for(l in i)i.hasOwnProperty(l)&&te(i[l],n);l=!0}else a.registrationName?(te(a.registrationName,n),l=!0):l=!1;if(!l)throw Error("EventPluginRegistry: Failed to publish event `"+r+"` for plugin `"+e+"`.")}}}}function te(e,n){if(ae[e])throw Error("EventPluginRegistry: More than one plugin attempted to publish the same registration name, `"+e+"`.");ae[e]=n}var re=[],le={},ae={};function ie(e,n){if(null===(e=e.stateNode))return null;if(null===(e=f(e)))return null;if((e=e[n])&&"function"!=typeof e)throw Error("Expected `"+n+"` listener to be a function, instead got a value of `"+typeof e+"` type.");return e}var ue=n(i[2]).ReactNativeViewConfigRegistry.customBubblingEventTypes,oe=n(i[2]).ReactNativeViewConfigRegistry.customDirectEventTypes;function se(e,n,t){(n=ie(e,t.dispatchConfig.phasedRegistrationNames[n]))&&(t._dispatchListeners=A(t._dispatchListeners,n),t._dispatchInstances=A(t._dispatchInstances,e))}function ce(e,n,t,r){for(var l=[];e;){l.push(e);do{e=e.return}while(e&&5!==e.tag);e=e||null}for(e=l.length;0>>=0)?32:31-(Qe(e)/Me|0)|0},Qe=Math.log,Me=Math.LN2;var Ae=128,je=4194304;function He(e){var n=42&e;if(0!==n)return n;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194176&e;case 4194304:case 8388608:case 16777216:case 33554432:return 62914560&e;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Be(e,n){var t=e.pendingLanes;if(0===t)return 0;var r=0,l=e.suspendedLanes;e=e.pingedLanes;var a=134217727&t;return 0!==a?0!==(t=a&~l)?r=He(t):0!==(e&=a)&&(r=He(e)):0!==(t&=~l)?r=He(t):0!==e&&(r=He(e)),0===r?0:0!==n&&n!==r&&!(n&l)&&((l=r&-r)>=(e=n&-n)||32===l&&4194176&e)?n:r}function We(e,n){switch(e){case 1:case 2:case 4:case 8:return n+250;case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n+5e3;default:return-1}}function Oe(e,n){return e.errorRecoveryDisabledLanes&n?0:0!==(e=-536870913&e.pendingLanes)?e:536870912&e?536870912:0}function Ve(){var e=Ae;return!(4194176&(Ae<<=1))&&(Ae=128),e}function $e(){var e=je;return!(62914560&(je<<=1))&&(je=4194304),e}function Ye(e){for(var n=[],t=0;31>t;t++)n.push(e);return n}function qe(e,n){e.pendingLanes|=n,268435456!==n&&(e.suspendedLanes=0,e.pingedLanes=0)}function Xe(e,n,t){var r=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0,n=e.entanglements;for(var l=e.expirationTimes,a=e.hiddenUpdates;0$n||(e.current=Vn[$n],Vn[$n]=null,$n--)}function Xn(e,n){$n++,Vn[$n]=e.current,e.current=n}var Gn={};var Kn="function"==typeof Object.is?Object.is:function(e,n){return e===n&&(0!==e||1/e==1/n)||e!=e&&n!=n},Jn=Yn(null),Zn=Yn(null),et=Yn(null);function nt(e,n){Xn(et,n),Xn(Zn,e),Xn(Jn,null),qn(Jn),Xn(Jn,{isInAParentText:!1})}function tt(){qn(Jn),qn(Zn),qn(et)}function rt(e){var n=Jn.current,t=e.type;t="AndroidTextInput"===t||"RCTMultilineTextInputView"===t||"RCTSinglelineTextInputView"===t||"RCTText"===t||"RCTVirtualText"===t,n!==(t=n.isInAParentText!==t?{isInAParentText:t}:n)&&(Xn(Zn,e),Xn(Jn,t))}function lt(e){Zn.current===e&&(qn(Jn),qn(Zn))}var at=null,it=[],ut=0,ot=0;function st(){for(var e=ut,n=ot=ut=0;ng?(m=f,f=null):m=f.sibling;var v=p(l,f,u[g],o);if(null===v){null===f&&(f=m);break}e&&f&&null===v.alternate&&n(l,f),i=a(v,i,g),null===c?s=v:c.sibling=v,c=v,f=m}if(g===u.length)return t(l,f),s;if(null===f){for(;gg?(m=f,f=null):m=f.sibling;var b=p(l,f,v.value,o);if(null===b){null===f&&(f=m);break}e&&f&&null===b.alternate&&n(l,f),i=a(b,i,g),null===c?s=b:c.sibling=b,c=b,f=m}if(v.done)return t(l,f),s;if(null===f){for(;!v.done;g++,v=u.next())null!==(v=d(l,v.value,o))&&(i=a(v,i,g),null===c?s=v:c.sibling=v,c=v);return s}for(f=r(f);!v.done;g++,v=u.next())null!==(v=h(f,l,g,v.value,o))&&(e&&null!==v.alternate&&f.delete(null===v.key?g:v.key),i=a(v,i,g),null===c?s=v:c.sibling=v,c=v);return e&&f.forEach((function(e){return n(l,e)})),s}function v(e,r,a,u){if("object"==typeof a&&null!==a&&a.type===_n&&null===a.key&&(a=a.props.children),"object"==typeof a&&null!==a){switch(a.$$typeof){case En:e:{for(var s=a.key,c=r;null!==c;){if(c.key===s){if((s=a.type)===_n){if(7===c.tag){t(e,c.sibling),(r=l(c,a.props.children)).return=e,e=r;break e}}else if(c.elementType===s||"object"==typeof s&&null!==s&&s.$$typeof===Dn&&rr(s)===c.type){t(e,c.sibling),nr(e,c,r=l(c,a.props),a),r.return=e,e=r;break e}t(e,c);break}n(e,c),c=c.sibling}a.type===_n?((r=Qu(a.props.children,e.mode,u,a.key)).return=e,e=r):(nr(e,r,u=Du(a.type,a.key,a.props,null,e.mode,u),a),u.return=e,e=u)}return i(e);case Rn:e:{for(c=a.key;null!==r;){if(r.key===c){if(4===r.tag&&r.stateNode.containerInfo===a.containerInfo&&r.stateNode.implementation===a.implementation){t(e,r.sibling),(r=l(r,a.children||[])).return=e,e=r;break e}t(e,r);break}n(e,r),r=r.sibling}(r=ju(a,e.mode,u)).return=e,e=r}return i(e);case Dn:return v(e,r,(c=a._init)(a._payload),u)}if(o(a))return g(e,r,a,u);if(An(a))return m(e,r,a,u);if("function"==typeof a.then)return v(e,r,Zt(a),u);if(a.$$typeof===Cn)return v(e,r,wa(e,a,u),u);tr(e,a)}return"string"==typeof a&&""!==a||"number"==typeof a?(a=""+a,null!==r&&6===r.tag?(t(e,r.sibling),(r=l(r,a)).return=e,e=r):(t(e,r),(r=Au(a,e.mode,u)).return=e,e=r),i(e)):t(e,r)}return function(e,n,t,r){return Jt=0,e=v(e,n,t,r),Kt=null,e}}var ar=lr(!0),ir=lr(!1),ur=Yn(null),or=Yn(0);function sr(e,n){Xn(or,e=Ci),Xn(ur,n),Ci=e|n.baseLanes}function cr(){Xn(or,Ci),Xn(ur,ur.current)}function fr(){Ci=or.current,qn(ur),qn(or)}var dr=Yn(null),pr=null;function hr(e){var n=e.alternate;Xn(br,1&br.current),Xn(dr,e),null===pr&&(null===n||null!==ur.current||null!==n.memoizedState)&&(pr=e)}function gr(e){if(22===e.tag){if(Xn(br,br.current),Xn(dr,e),null===pr){var n=e.alternate;null!==n&&null!==n.memoizedState&&(pr=e)}}else mr()}function mr(){Xn(br,br.current),Xn(dr,dr.current)}function vr(e){qn(dr),pr===e&&(pr=null),qn(br)}var br=Yn(0);function yr(e){for(var n=e;null!==n;){if(13===n.tag){var t=n.memoizedState;if(null!==t&&(null===t.dehydrated||en()||en()))return n}else if(19===n.tag&&void 0!==n.memoizedProps.revealOrder){if(128&n.flags)return n}else if(null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}var Sr=Ie.ReactCurrentDispatcher,kr=Ie.ReactCurrentBatchConfig,wr=0,Pr=null,Er=null,Rr=null,_r=!1,Tr=!1,xr=!1,zr=0,Nr=null,Cr=0;function Ir(){throw Error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.")}function Lr(e,n){if(null===n)return!1;for(var t=0;ta?a:8;var i=kr.transition,u={_callbacks:new Set};kr.transition=null,vl(e,n,t),kr.transition=u;try{vl(e,n,r),l()}catch(e){throw e}finally{Je=a,kr.transition=i}}function gl(){return jr().memoizedState}function ml(e,n,t){var r=Ji(e);t={lane:r,revertLane:0,action:t,hasEagerState:!1,eagerState:null,next:null},bl(e)?yl(n,t):(ct(e,n,t,r),null!==(t=pt(e))&&(eu(t,e,r),Sl(t,n,r)))}function vl(e,n,t){var r=Ji(e),l={lane:r,revertLane:0,action:t,hasEagerState:!1,eagerState:null,next:null};if(bl(e))yl(n,l);else{var a=e.alternate;if(0===e.lanes&&(null===a||0===a.lanes)&&null!==(a=n.lastRenderedReducer))try{var i=n.lastRenderedState,u=a(i,t);if(l.hasEagerState=!0,l.eagerState=u,Kn(u,i))return ct(e,n,l,0),void(null===Ri&&st())}catch(e){}ct(e,n,l,r),null!==(t=pt(e))&&(eu(t,e,r),Sl(t,n,r))}}function bl(e){var n=e.alternate;return e===Pr||null!==n&&n===Pr}function yl(e,n){Tr=_r=!0;var t=e.pending;null===t?n.next=n:(n.next=t.next,t.next=n),e.pending=n}function Sl(e,n,t){if(4194176&t){var r=n.lanes;t|=r&=e.pendingLanes,n.lanes=t,Ke(e,t)}}var kl={readContext:ka,use:Br,useCallback:Ir,useContext:Ir,useEffect:Ir,useImperativeHandle:Ir,useInsertionEffect:Ir,useLayoutEffect:Ir,useMemo:Ir,useReducer:Ir,useRef:Ir,useState:Ir,useDebugValue:Ir,useDeferredValue:Ir,useTransition:Ir,useSyncExternalStore:Ir,useId:Ir},wl={readContext:ka,use:Br,useCallback:function(e,n){return Ar().memoizedState=[e,void 0===n?null:n],e},useContext:ka,useEffect:rl,useImperativeHandle:function(e,n,t){t=null!=t?t.concat([e]):null,nl(4194308,4,ul.bind(null,n,e),t)},useLayoutEffect:function(e,n){return nl(4194308,4,e,n)},useInsertionEffect:function(e,n){nl(4,2,e,n)},useMemo:function(e,n){var t=Ar();n=void 0===n?null:n;var r=e();return xr&&e(),t.memoizedState=[r,n],r},useReducer:function(e,n,t){var r=Ar();if(void 0!==t){var l=t(n);xr&&t(n)}else l=n;return r.memoizedState=r.baseState=l,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:l},r.queue=e,e=e.dispatch=ml.bind(null,Pr,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Ar().memoizedState=e},useState:function(e){var n=(e=Jr(e)).queue,t=vl.bind(null,Pr,n);return n.dispatch=t,[e.memoizedState,t]},useDebugValue:sl,useDeferredValue:function(e,n){return dl(Ar(),e,n)},useTransition:function(){var e=Jr(!1);return e=hl.bind(null,Pr,e.queue,!0,!1),Ar().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,n){var t=Pr,r=Ar(),l=n();if(null===Ri)throw Error("Expected a work-in-progress root. This is a bug in React. Please file an issue.");60&Ti||Yr(t,n,l),r.memoizedState=l;var a={value:l,getSnapshot:n};return r.queue=a,rl(Xr.bind(null,t,a,e),[e]),t.flags|=2048,Zr(9,qr.bind(null,t,a,l,n),{destroy:void 0},null),l},useId:function(){var e=Ar(),n=Ri.identifierPrefix;return n=":"+n+"r"+(Cr++).toString(32)+":",e.memoizedState=n}},Pl={readContext:ka,use:Br,useCallback:cl,useContext:ka,useEffect:ll,useImperativeHandle:ol,useInsertionEffect:al,useLayoutEffect:il,useMemo:fl,useReducer:Or,useRef:el,useState:function(){return Or(Wr)},useDebugValue:sl,useDeferredValue:function(e,n){return pl(jr(),Er.memoizedState,e,n)},useTransition:function(){var e=Or(Wr)[0],n=jr().memoizedState;return["boolean"==typeof e?e:Hr(e),n]},useSyncExternalStore:$r,useId:gl},El={readContext:ka,use:Br,useCallback:cl,useContext:ka,useEffect:ll,useImperativeHandle:ol,useInsertionEffect:al,useLayoutEffect:il,useMemo:fl,useReducer:Vr,useRef:el,useState:function(){return Vr(Wr)},useDebugValue:sl,useDeferredValue:function(e,n){var t=jr();return null===Er?dl(t,e,n):pl(t,Er.memoizedState,e,n)},useTransition:function(){var e=Vr(Wr)[0],n=jr().memoizedState;return["boolean"==typeof e?e:Hr(e),n]},useSyncExternalStore:$r,useId:gl};function Rl(e,n){if(e&&e.defaultProps){for(var t in n=m({},n),e=e.defaultProps)void 0===n[t]&&(n[t]=e[t]);return n}return n}function _l(e,n,t,r){t=null==(t=t(r,n=e.memoizedState))?n:m({},n,t),e.memoizedState=t,0===e.lanes&&(e.updateQueue.baseState=t)}var Tl={isMounted:function(e){return!!(e=e._reactInternals)&&jn(e)===e},enqueueSetState:function(e,n,t){var r=Ji(e=e._reactInternals),l=zt(r);l.payload=n,null!=t&&(l.callback=t),null!==(n=Nt(e,l,r))&&(eu(n,e,r),Ct(n,e,r))},enqueueReplaceState:function(e,n,t){var r=Ji(e=e._reactInternals),l=zt(r);l.tag=1,l.payload=n,null!=t&&(l.callback=t),null!==(n=Nt(e,l,r))&&(eu(n,e,r),Ct(n,e,r))},enqueueForceUpdate:function(e,n){var t=Ji(e=e._reactInternals),r=zt(t);r.tag=2,null!=n&&(r.callback=n),null!==(n=Nt(e,r,t))&&(eu(n,e,t),Ct(n,e,t))}};function xl(e,n,t,r,l,a,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,i):!n.prototype||!n.prototype.isPureReactComponent||(!Qt(t,r)||!Qt(l,a))}function zl(e,n,t){var r=Gn,l=n.contextType;return"object"==typeof l&&null!==l&&(r=ka(l)),n=new n(t,r),e.memoizedState=null!==n.state&&void 0!==n.state?n.state:null,n.updater=Tl,e.stateNode=n,n._reactInternals=e,n}function Nl(e,n,t,r){e=n.state,"function"==typeof n.componentWillReceiveProps&&n.componentWillReceiveProps(t,r),"function"==typeof n.UNSAFE_componentWillReceiveProps&&n.UNSAFE_componentWillReceiveProps(t,r),n.state!==e&&Tl.enqueueReplaceState(n,n.state,null)}function Cl(e,n,t,r){var l=e.stateNode;l.props=t,l.state=e.memoizedState,l.refs={},Tt(e);var a=n.contextType;l.context="object"==typeof a&&null!==a?ka(a):Gn,l.state=e.memoizedState,"function"==typeof(a=n.getDerivedStateFromProps)&&(_l(e,n,a,t),l.state=e.memoizedState),"function"==typeof n.getDerivedStateFromProps||"function"==typeof l.getSnapshotBeforeUpdate||"function"!=typeof l.UNSAFE_componentWillMount&&"function"!=typeof l.componentWillMount||(n=l.state,"function"==typeof l.componentWillMount&&l.componentWillMount(),"function"==typeof l.UNSAFE_componentWillMount&&l.UNSAFE_componentWillMount(),n!==l.state&&Tl.enqueueReplaceState(l,l.state,null),Lt(e,t,l,r),l.state=e.memoizedState),"function"==typeof l.componentDidMount&&(e.flags|=4194308)}var Il=new WeakMap;function Ll(e,n){if("object"==typeof e&&null!==e){var t=Il.get(e);"string"!=typeof t&&(t=Ht(n),Il.set(e,t))}else t=Ht(n);return{value:e,source:n,stack:t,digest:null}}function Ul(e,n,t){return"string"==typeof t&&Il.set(e,t),{value:e,source:null,stack:null!=t?t:null,digest:null!=n?n:null}}if("function"!=typeof n(i[2]).ReactFiberErrorDialog.showErrorDialog)throw Error("Expected ReactFiberErrorDialog.showErrorDialog to be a function.");function Fl(e,t){try{!1!==n(i[2]).ReactFiberErrorDialog.showErrorDialog({componentStack:null!==t.stack?t.stack:"",error:t.value,errorBoundary:null!==e&&1===e.tag?e.stateNode:null})&&console.error(t.value)}catch(e){setTimeout((function(){throw e}))}}function Dl(e,n,t){(t=zt(t)).tag=3,t.payload={element:null};var r=n.value;return t.callback=function(){Oi||(Oi=!0,Vi=r),Fl(e,n)},t}function Ql(e,n,t){(t=zt(t)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var l=n.value;t.payload=function(){return r(l)},t.callback=function(){Fl(e,n)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(t.callback=function(){Fl(e,n),"function"!=typeof r&&(null===$i?$i=new Set([this]):$i.add(this));var t=n.stack;this.componentDidCatch(n.value,{componentStack:null!==t?t:""})}),t}function Ml(e,n,t,r,l){if(t.flags|=32768,null!==r&&"object"==typeof r&&"function"==typeof r.then){var a=t.tag;if(1&t.mode||0!==a&&11!==a&&15!==a||((a=t.alternate)?(t.updateQueue=a.updateQueue,t.memoizedState=a.memoizedState,t.lanes=a.lanes):(t.updateQueue=null,t.memoizedState=null)),null!==(a=dr.current)){switch(a.tag){case 13:return 1&t.mode&&(null===pr?fu():null===a.alternate&&0===Ii&&(Ii=3)),a.flags&=-257,1&a.mode?(a.flags|=65536,a.lanes=l):a===n?a.flags|=65536:(a.flags|=128,t.flags|=131072,t.flags&=-52805,1===t.tag&&(null===t.alternate?t.tag=17:((n=zt(2)).tag=2,Nt(t,n,2))),t.lanes|=2),r===Ot?a.flags|=16384:(null===(n=a.updateQueue)?a.updateQueue=new Set([r]):n.add(r),1&a.mode&&Ru(e,r,l)),!1;case 22:if(1&a.mode)return a.flags|=65536,r===Ot?a.flags|=16384:(null===(n=a.updateQueue)?(n={transitions:null,markerInstances:null,retryQueue:new Set([r])},a.updateQueue=n):null===(t=n.retryQueue)?n.retryQueue=new Set([r]):t.add(r),Ru(e,r,l)),!1}throw Error("Unexpected Suspense handler tag ("+a.tag+"). This is a bug in React.")}if(1===e.tag)return Ru(e,r,l),fu(),!1;r=Error("A component suspended while responding to synchronous input. This will cause the UI to be replaced with a loading indicator. To fix, updates that suspend should be wrapped with startTransition.")}if(e=r=Ll(r,t),4!==Ii&&(Ii=2),null===Mi?Mi=[e]:Mi.push(e),null===n)return!0;e=n;do{switch(e.tag){case 3:return e.flags|=65536,l&=-l,e.lanes|=l,It(e,l=Dl(e,r,l)),!1;case 1:if(n=r,t=e.type,a=e.stateNode,!(128&e.flags||"function"!=typeof t.getDerivedStateFromError&&(null===a||"function"!=typeof a.componentDidCatch||null!==$i&&$i.has(a))))return e.flags|=65536,l&=-l,e.lanes|=l,It(e,l=Ql(e,n,l)),!1}e=e.return}while(null!==e);return!1}var Al=Ie.ReactCurrentOwner,jl=Error("This is not a real error. It's an implementation detail of React's selective hydration feature. If this leaks into userspace, it's a bug in React. Please file an issue."),Hl=!1;function Bl(e,n,t,r){n.child=null===e?ir(n,null,t,r):ar(n,e.child,t,r)}function Wl(e,n,t,r,l){t=t.render;var a=n.ref;return Sa(n,l),r=Ur(e,n,t,r,a,l),null===e||Hl?(n.flags|=1,Bl(e,n,r,l),n.child):(Qr(e,n,l),ca(e,n,l))}function Ol(e,n,t,r,l){if(null===e){var a=t.type;return"function"!=typeof a||Iu(a)||void 0!==a.defaultProps||null!==t.compare||void 0!==t.defaultProps?((e=Du(t.type,null,r,n,n.mode,l)).ref=n.ref,e.return=n,n.child=e):(n.tag=15,n.type=a,Vl(e,n,a,r,l))}if(a=e.child,!(e.lanes&l)){var i=a.memoizedProps;if((t=null!==(t=t.compare)?t:Qt)(i,r)&&e.ref===n.ref)return ca(e,n,l)}return n.flags|=1,(e=Uu(a,r)).ref=n.ref,e.return=n,n.child=e}function Vl(e,n,t,r,l){if(null!==e){var a=e.memoizedProps;if(Qt(a,r)&&e.ref===n.ref){if(Hl=!1,n.pendingProps=r=a,!(e.lanes&l))return n.lanes=e.lanes,ca(e,n,l);131072&e.flags&&(Hl=!0)}}return Xl(e,n,t,r,l)}function $l(e,n,t){var r=n.pendingProps,l=r.children,a=!!(2&n.stateNode._pendingVisibility),i=null!==e?e.memoizedState:null;if(ql(e,n),"hidden"===r.mode||a){if(128&n.flags){if(t=null!==i?i.baseLanes|t:t,null!==e){for(r=n.child=e.child,l=0;null!==r;)l=l|r.lanes|r.childLanes,r=r.sibling;n.childLanes=l&~t}else n.childLanes=0,n.child=null;return Yl(e,n,t)}if(1&n.mode){if(!(536870912&t))return n.lanes=n.childLanes=536870912,Yl(e,n,null!==i?i.baseLanes|t:t);n.memoizedState={baseLanes:0,cachePool:null},null!==i?sr(n,i):cr()}else n.memoizedState={baseLanes:0,cachePool:null},cr();gr(n)}else null!==i?(sr(n,i),mr(),n.memoizedState=null):(cr(),mr());return Bl(e,n,l,t),n.child}function Yl(e,n,t){return n.memoizedState={baseLanes:t,cachePool:null},cr(),gr(n),null}function ql(e,n){var t=n.ref;if(null===t)null!==e&&null!==e.ref&&(n.flags|=2097664);else{if("function"!=typeof t&&"object"!=typeof t)throw Error("Expected ref to be a function, an object returned by React.createRef(), or undefined/null.");null!==e&&e.ref===t||(n.flags|=2097664)}}function Xl(e,n,t,r,l){return Sa(n,l),t=Ur(e,n,t,r,void 0,l),null===e||Hl?(n.flags|=1,Bl(e,n,t,l),n.child):(Qr(e,n,l),ca(e,n,l))}function Gl(e,n,t,r,l,a){return Sa(n,a),t=Dr(n,r,t,l),Fr(),null===e||Hl?(n.flags|=1,Bl(e,n,t,a),n.child):(Qr(e,n,a),ca(e,n,a))}function Kl(e,n,t,r,l){if(Sa(n,l),null===n.stateNode)sa(e,n),zl(n,t,r),Cl(n,t,r,l),r=!0;else if(null===e){var a=n.stateNode,i=n.memoizedProps;a.props=i;var u=a.context,o=t.contextType,s=Gn;"object"==typeof o&&null!==o&&(s=ka(o));var c=t.getDerivedStateFromProps;(o="function"==typeof c||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(i!==r||u!==s)&&Nl(n,a,r,s),_t=!1;var f=n.memoizedState;a.state=f,Lt(n,r,a,l),u=n.memoizedState,i!==r||f!==u||_t?("function"==typeof c&&(_l(n,t,c,r),u=n.memoizedState),(i=_t||xl(n,t,i,r,f,u,s))?(o||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(n.flags|=4194308)):("function"==typeof a.componentDidMount&&(n.flags|=4194308),n.memoizedProps=r,n.memoizedState=u),a.props=r,a.state=u,a.context=s,r=i):("function"==typeof a.componentDidMount&&(n.flags|=4194308),r=!1)}else{a=n.stateNode,xt(e,n),s=n.memoizedProps,o=n.type===n.elementType?s:Rl(n.type,s),a.props=o,c=n.pendingProps;var d=a.context;u=t.contextType,i=Gn,"object"==typeof u&&null!==u&&(i=ka(u)),(u="function"==typeof(f=t.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(s!==c||d!==i)&&Nl(n,a,r,i),_t=!1,d=n.memoizedState,a.state=d,Lt(n,r,a,l);var p=n.memoizedState;s!==c||d!==p||_t?("function"==typeof f&&(_l(n,t,f,r),p=n.memoizedState),(o=_t||xl(n,t,o,r,d,p,i)||!1)?(u||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(r,p,i),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,p,i)),"function"==typeof a.componentDidUpdate&&(n.flags|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(n.flags|=1024)):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&d===e.memoizedState||(n.flags|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&d===e.memoizedState||(n.flags|=1024),n.memoizedProps=r,n.memoizedState=p),a.props=r,a.state=p,a.context=i,r=o):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&d===e.memoizedState||(n.flags|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&d===e.memoizedState||(n.flags|=1024),r=!1)}return Jl(e,n,t,r,!1,l)}function Jl(e,n,t,r,l,a){return ql(e,n),l=!!(128&n.flags),r||l?(r=n.stateNode,Al.current=n,t=l&&"function"!=typeof t.getDerivedStateFromError?null:r.render(),n.flags|=1,null!==e&&l?(n.child=ar(n,e.child,null,a),n.child=ar(n,null,t,a)):Bl(e,n,t,a),n.memoizedState=r.state,n.child):ca(e,n,a)}var Zl={dehydrated:null,treeContext:null,retryLane:0};function ea(e){return{baseLanes:e,cachePool:null}}function na(e,n,t){return e=null!==e?e.childLanes&~t:0,n&&(e|=Qi),e}function ta(e,n,t){var r,l=n.pendingProps,a=!1,i=!!(128&n.flags);if((r=i)||(r=(null===e||null!==e.memoizedState)&&!!(2&br.current)),r&&(a=!0,n.flags&=-129),r=!!(32&n.flags),n.flags&=-33,null===e){if(i=l.children,l=l.fallback,a){mr(),a=n.mode;var u=n.child;return i={mode:"hidden",children:i},1&a||null===u?u=Mu(i,a,0,null):(u.childLanes=0,u.pendingProps=i),l=Qu(l,a,t,null),u.return=n,l.return=n,u.sibling=l,n.child=u,(a=n.child).memoizedState=ea(t),a.childLanes=na(e,r,t),n.memoizedState=Zl,l}return hr(n),ra(n,i)}if(null!==(u=e.memoizedState)){var o=u.dehydrated;if(null!==o)return aa(e,n,i,r,l,o,u,t)}if(a){mr(),a=l.fallback,i=n.mode,o=(u=e.child).sibling;var s={mode:"hidden",children:l.children};return 1&i||n.child===u?(l=Uu(u,s)).subtreeFlags=31457280&u.subtreeFlags:((l=n.child).childLanes=0,l.pendingProps=s,n.deletions=null),null!==o?a=Uu(o,a):(a=Qu(a,i,t,null)).flags|=2,a.return=n,l.return=n,l.sibling=a,n.child=l,l=a,a=n.child,i=null===(i=e.child.memoizedState)?ea(t):{baseLanes:i.baseLanes|t,cachePool:null},a.memoizedState=i,a.childLanes=na(e,r,t),n.memoizedState=Zl,l}return hr(n),e=(r=e.child).sibling,r=Uu(r,{mode:"visible",children:l.children}),!(1&n.mode)&&(r.lanes=t),r.return=n,r.sibling=null,null!==e&&(null===(t=n.deletions)?(n.deletions=[e],n.flags|=16):t.push(e)),n.child=r,n.memoizedState=null,r}function ra(e,n){return(n=Mu({mode:"visible",children:n},e.mode,0,null)).return=e,e.child=n}function la(e,n,t,r){return null!==r&&(null===at?at=[r]:at.push(r)),ar(n,e.child,null,t),(e=ra(n,n.pendingProps.children)).flags|=2,n.memoizedState=null,e}function aa(e,n,t,r,l,a,i,u){if(t)return 256&n.flags?(hr(n),n.flags&=-257,la(e,n,u,r=Ul(Error("There was an error while hydrating this Suspense boundary. Switched to client rendering.")))):null!==n.memoizedState?(mr(),n.child=e.child,n.flags|=128,null):(mr(),i=l.fallback,t=n.mode,l=Mu({mode:"visible",children:l.children},t,0,null),(i=Qu(i,t,u,null)).flags|=2,l.return=n,i.return=n,l.sibling=i,n.child=l,1&n.mode&&ar(n,e.child,null,u),(l=n.child).memoizedState=ea(u),l.childLanes=na(e,r,u),n.memoizedState=Zl,i);if(hr(n),!(1&n.mode))return la(e,n,u,null);if(en())return r=en().digest,(i=Error("The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering.")).digest=r,la(e,n,u,r=Ul(i,r,void 0));if(r=!!(u&e.childLanes),Hl||r){if(null!==(r=Ri)){if(42&(l=u&-u))l=1;else switch(l){case 2:l=1;break;case 8:l=4;break;case 32:l=16;break;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:l=64;break;case 268435456:l=134217728;break;default:l=0}if(0!==(l=l&(r.suspendedLanes|u)?0:l)&&l!==i.retryLane)throw i.retryLane=l,ft(e,l),eu(r,e,l),jl}return en()||fu(),la(e,n,u,null)}return en()?(n.flags|=128,n.child=e.child,xu.bind(null,e),en(),null):((e=ra(n,l.children)).flags|=4096,e)}function ia(e,n,t){e.lanes|=n;var r=e.alternate;null!==r&&(r.lanes|=n),ya(e.return,n,t)}function ua(e,n,t,r,l){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:r,tail:t,tailMode:l}:(a.isBackwards=n,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=t,a.tailMode=l)}function oa(e,n,t){var r=n.pendingProps,l=r.revealOrder,a=r.tail;if(Bl(e,n,r.children,t),2&(r=br.current))r=1&r|2,n.flags|=128;else{if(null!==e&&128&e.flags)e:for(e=n.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&ia(e,t,n);else if(19===e.tag)ia(e,t,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===n)break e;for(;null===e.sibling;){if(null===e.return||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Xn(br,r),1&n.mode)switch(l){case"forwards":for(t=n.child,l=null;null!==t;)null!==(e=t.alternate)&&null===yr(e)&&(l=t),t=t.sibling;null===(t=l)?(l=n.child,n.child=null):(l=t.sibling,t.sibling=null),ua(n,!1,l,t,a);break;case"backwards":for(t=null,l=n.child,n.child=null;null!==l;){if(null!==(e=l.alternate)&&null===yr(e)){n.child=l;break}e=l.sibling,l.sibling=t,t=l,l=e}ua(n,!0,t,null,a);break;case"together":ua(n,!1,null,null,void 0);break;default:n.memoizedState=null}else n.memoizedState=null;return n.child}function sa(e,n){!(1&n.mode)&&null!==e&&(e.alternate=null,n.alternate=null,n.flags|=2)}function ca(e,n,t){if(null!==e&&(n.dependencies=e.dependencies),Ui|=n.lanes,!(t&n.childLanes))return null;if(null!==e&&n.child!==e.child)throw Error("Resuming work not yet implemented.");if(null!==n.child){for(t=Uu(e=n.child,e.pendingProps),n.child=t,t.return=n;null!==e.sibling;)e=e.sibling,(t=t.sibling=Uu(e,e.pendingProps)).return=n;t.sibling=null}return n.child}function fa(e,n,t){switch(n.tag){case 3:case 4:nt(n,n.stateNode.containerInfo);break;case 27:case 5:rt(n);break;case 10:var r=n.memoizedProps.value,l=n.type._context;Xn(pa,l._currentValue2),l._currentValue2=r;break;case 13:if(null!==(r=n.memoizedState))return null!==r.dehydrated?(hr(n),n.flags|=128,null):t&n.child.childLanes?ta(e,n,t):(hr(n),null!==(e=ca(e,n,t))?e.sibling:null);hr(n);break;case 19:if(r=!!(t&n.childLanes),128&e.flags){if(r)return oa(e,n,t);n.flags|=128}if(null!==(l=n.memoizedState)&&(l.rendering=null,l.tail=null,l.lastEffect=null),Xn(br,br.current),r)break;return null;case 22:case 23:return n.lanes=0,$l(e,n,t)}return ca(e,n,t)}function da(e,n,t){if(null!==e)if(e.memoizedProps!==n.pendingProps)Hl=!0;else{if(!(e.lanes&t||128&n.flags))return Hl=!1,fa(e,n,t);Hl=!!(131072&e.flags)}else Hl=!1;switch(n.lanes=0,n.tag){case 2:var r=n.type;sa(e,n),e=n.pendingProps,Sa(n,t);var l=Ur(null,n,r,e,void 0,t);return n.flags|=1,"object"==typeof l&&null!==l&&"function"==typeof l.render&&void 0===l.$$typeof?(n.tag=1,n.memoizedState=null,n.updateQueue=null,n.memoizedState=null!==l.state&&void 0!==l.state?l.state:null,Tt(n),l.updater=Tl,n.stateNode=l,l._reactInternals=n,Cl(n,r,e,t),n=Jl(null,n,r,!0,!1,t)):(n.tag=0,Bl(null,n,l,t),n=n.child),n;case 16:r=n.elementType;e:{switch(sa(e,n),e=n.pendingProps,r=(l=r._init)(r._payload),n.type=r,l=n.tag=Lu(r),e=Rl(r,e),l){case 0:n=Xl(null,n,r,e,t);break e;case 1:n=Kl(null,n,r,e,t);break e;case 11:n=Wl(null,n,r,e,t);break e;case 14:n=Ol(null,n,r,Rl(r.type,e),t);break e}throw Error("Element type is invalid. Received a promise that resolves to: "+r+". Lazy element type must resolve to a class or function.")}return n;case 0:return r=n.type,l=n.pendingProps,Xl(e,n,r,l=n.elementType===r?l:Rl(r,l),t);case 1:return r=n.type,l=n.pendingProps,Kl(e,n,r,l=n.elementType===r?l:Rl(r,l),t);case 3:if(nt(n,n.stateNode.containerInfo),null===e)throw Error("Should have a current fiber. This is a bug in React.");return l=n.pendingProps,r=n.memoizedState.element,xt(e,n),Lt(n,l,null,t),(l=n.memoizedState.element)===r?n=ca(e,n,t):(Bl(e,n,l,t),n=n.child),n;case 26:case 27:case 5:return rt(n),r=n.pendingProps.children,ql(e,n),Bl(e,n,r,t),n.child;case 6:return null;case 13:return ta(e,n,t);case 4:return nt(n,n.stateNode.containerInfo),r=n.pendingProps,null===e?n.child=ar(n,null,r,t):Bl(e,n,r,t),n.child;case 11:return r=n.type,l=n.pendingProps,Wl(e,n,r,l=n.elementType===r?l:Rl(r,l),t);case 7:return Bl(e,n,n.pendingProps,t),n.child;case 8:case 12:return Bl(e,n,n.pendingProps.children,t),n.child;case 10:e:{r=n.type._context,l=n.pendingProps;var a=n.memoizedProps,i=l.value;if(Xn(pa,r._currentValue2),r._currentValue2=i,null!==a)if(Kn(a.value,i)){if(a.children===l.children){n=ca(e,n,t);break e}}else for(null!==(a=n.child)&&(a.return=n);null!==a;){var u=a.dependencies;if(null!==u){i=a.child;for(var o=u.firstContext;null!==o;){if(o.context===r){if(1===a.tag){(o=zt(t&-t)).tag=2;var s=a.updateQueue;if(null!==s){var c=(s=s.shared).pending;null===c?o.next=o:(o.next=c.next,c.next=o),s.pending=o}}a.lanes|=t,null!==(o=a.alternate)&&(o.lanes|=t),ya(a.return,t,n),u.lanes|=t;break}o=o.next}}else if(10===a.tag)i=a.type===n.type?null:a.child;else if(18===a.tag){if(null===(i=a.return))throw Error("We just came from a parent so we must have had a parent. This is a bug in React.");i.lanes|=t,null!==(u=i.alternate)&&(u.lanes|=t),ya(i,t,n),i=a.sibling}else i=a.child;if(null!==i)i.return=a;else for(i=a;null!==i;){if(i===n){i=null;break}if(null!==(a=i.sibling)){a.return=i.return,i=a;break}i=i.return}a=i}Bl(e,n,l.children,t),n=n.child}return n;case 9:return l=n.type,r=n.pendingProps.children,Sa(n,t),r=r(l=ka(l)),n.flags|=1,Bl(e,n,r,t),n.child;case 14:return l=Rl(r=n.type,n.pendingProps),Ol(e,n,r,l=Rl(r.type,l),t);case 15:return Vl(e,n,n.type,n.pendingProps,t);case 17:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:Rl(r,l),sa(e,n),n.tag=1,Sa(n,t),zl(n,r,l),Cl(n,r,l,t),Jl(null,n,r,!0,!1,t);case 19:return oa(e,n,t);case 22:return $l(e,n,t)}throw Error("Unknown unit of work tag ("+n.tag+"). This error is likely caused by a bug in React. Please file an issue.")}var pa=Yn(null),ha=null,ga=null,ma=null;function va(){ma=ga=ha=null}function ba(e){e._currentValue2=pa.current,qn(pa)}function ya(e,n,t){for(;null!==e;){var r=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,null!==r&&(r.childLanes|=n)):null!==r&&(r.childLanes&n)!==n&&(r.childLanes|=n),e===t)break;e=e.return}}function Sa(e,n){ha=e,ma=ga=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(!!(e.lanes&n)&&(Hl=!0),e.firstContext=null)}function ka(e){return Pa(ha,e)}function wa(e,n,t){return null===ha&&Sa(e,t),Pa(e,n)}function Pa(e,n){var t=n._currentValue2;if(ma!==n)if(n={context:n,memoizedValue:t,next:null},null===ga){if(null===e)throw Error("Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().");ga=n,e.dependencies={lanes:0,firstContext:n}}else ga=ga.next=n;return t}var Ea=Ie.ReactCurrentBatchConfig;function Ra(){}function _a(e,n){if(null!==e&&e.child===n.child)return!1;if(16&n.flags)return!0;for(e=n.child;null!==e;){if(12854&e.flags||12854&e.subtreeFlags)return!0;e=e.sibling}return!1}function Ta(e,n,t,r){for(var l=n.child;null!==l;){if(5===l.tag){var a=l.stateNode;t&&r&&(a=Sn(a)),on(e.node,a.node)}else if(6===l.tag){if(a=l.stateNode,t&&r)throw Error("Not yet implemented.");on(e.node,a.node)}else if(4!==l.tag)if(22===l.tag&&null!==l.memoizedState)null!==(a=l.child)&&(a.return=l),Ta(e,l,!0,!0);else if(null!==l.child){l.child.return=l,l=l.child;continue}if(l===n)break;for(;null===l.sibling;){if(null===l.return||l.return===n)return;l=l.return}l.sibling.return=l.return,l=l.sibling}}function xa(e,n,t,r){for(var l=n.child;null!==l;){if(5===l.tag){var a=l.stateNode;t&&r&&(a=Sn(a)),sn(e,a.node)}else if(6===l.tag){if(a=l.stateNode,t&&r)throw Error("Not yet implemented.");sn(e,a.node)}else if(4!==l.tag)if(22===l.tag&&null!==l.memoizedState)null!==(a=l.child)&&(a.return=l),xa(e,l,!(null!==l.memoizedProps&&"manual"===l.memoizedProps.mode),!0);else if(null!==l.child){l.child.return=l,l=l.child;continue}if(l===n)break;for(;null===l.sibling;){if(null===l.return||l.return===n)return;l=l.return}l.sibling.return=l.return,l=l.sibling}}function za(e,n){if(_a(e,n)){var t=(e=n.stateNode).containerInfo,r=un();xa(r,n,!1,!1),e.pendingChildren=r,n.flags|=4,cn(t,r)}}function Na(e,n){null!==n?e.flags|=4:16384&e.flags&&(n=22!==e.tag?$e():536870912,e.lanes|=n)}function Ca(e,n){switch(e.tailMode){case"hidden":n=e.tail;for(var t=null;null!==n;)null!==n.alternate&&(t=n),n=n.sibling;null===t?e.tail=null:t.sibling=null;break;case"collapsed":t=e.tail;for(var r=null;null!==t;)null!==t.alternate&&(r=t),t=t.sibling;null===r?n||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Ia(e){var n=null!==e.alternate&&e.alternate.child===e.child,t=0,r=0;if(n)for(var l=e.child;null!==l;)t|=l.lanes|l.childLanes,r|=31457280&l.subtreeFlags,r|=31457280&l.flags,l.return=e,l=l.sibling;else for(l=e.child;null!==l;)t|=l.lanes|l.childLanes,r|=l.subtreeFlags,r|=l.flags,l.return=e,l=l.sibling;return e.subtreeFlags|=r,e.childLanes=t,n}function La(e,t,r){var l=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:case 1:case 17:return Ia(t),null;case 3:return l=t.stateNode,tt(),l.pendingContext&&(l.context=l.pendingContext,l.pendingContext=null),null!==e&&null!==e.child||null===e||e.memoizedState.isDehydrated&&!(256&t.flags)||(t.flags|=1024,null!==at&&(ru(at),at=null)),za(e,t),Ia(t),null;case 26:case 27:case 5:if(lt(t),r=t.type,null!==e&&null!=t.stateNode){r=e.stateNode;var a=e.memoizedProps;if((e=_a(e,t))||a!==l){e:{if(a=_e(null,a,l,r.canonical.viewConfig.validAttributes),r.canonical.currentProps=l,l=r.node,e)l=null!==a?ln(l,a):rn(l);else{if(null===a){l=r;break e}l=an(l,a)}l={node:l,canonical:r.canonical}}l===r?t.stateNode=r:(t.stateNode=l,e?Ta(l,t,!1,!1):t.flags|=4)}else t.stateNode=r}else{if(!l){if(null===t.stateNode)throw Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");return Ia(t),null}a=et.current,e=gn,gn+=2,r=hn(r);var u=_e(null,ve,l,r.validAttributes);Ta(e={node:a=tn(e,r.uiViewClassName,a,u,t),canonical:{nativeTag:e,viewConfig:r,currentProps:l,internalInstanceHandle:t,publicInstance:u=n(i[2]).createPublicInstance(e,r,t)}},t,!1,!1),t.stateNode=e}return Ia(t),t.flags&=-16777217,null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==l?(t.stateNode=mn(l,et.current,Jn.current,t),t.flags|=4):t.stateNode=e.stateNode;else{if("string"!=typeof l&&null===t.stateNode)throw Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");t.stateNode=mn(l,et.current,Jn.current,t)}return Ia(t),null;case 13:if(l=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(null!==l&&null!==l.dehydrated){if(null===e)throw Error("A dehydrated suspense component was completed without a hydrated node. This is probably a bug in React.");!(128&t.flags)&&(t.memoizedState=null),t.flags|=4,Ia(t),a=!1}else null!==at&&(ru(at),at=null),a=!0;if(!a)return 256&t.flags?(vr(t),t):(vr(t),null)}return vr(t),128&t.flags?(t.lanes=r,t):((l=null!==l)!==(null!==e&&null!==e.memoizedState)&&l&&(t.child.flags|=8192),Na(t,t.updateQueue),Ia(t),null);case 4:return tt(),za(e,t),Ia(t),null;case 10:return ba(t.type._context),Ia(t),null;case 19:if(qn(br),null===(a=t.memoizedState))return Ia(t),null;if(l=!!(128&t.flags),null===(u=a.rendering))if(l)Ca(a,!1);else{if(0!==Ii||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(u=yr(e))){for(t.flags|=128,Ca(a,!1),e=u.updateQueue,t.updateQueue=e,Na(t,e),t.subtreeFlags=0,e=r,l=t.child;null!==l;)Fu(l,e),l=l.sibling;return Xn(br,1&br.current|2),t.child}e=e.sibling}null!==a.tail&&n(i[3]).unstable_now()>Bi&&(t.flags|=128,l=!0,Ca(a,!1),t.lanes=4194304)}else{if(!l)if(null!==(e=yr(u))){if(t.flags|=128,l=!0,e=e.updateQueue,t.updateQueue=e,Na(t,e),Ca(a,!0),null===a.tail&&"hidden"===a.tailMode&&!u.alternate)return Ia(t),null}else 2*n(i[3]).unstable_now()-a.renderingStartTime>Bi&&536870912!==r&&(t.flags|=128,l=!0,Ca(a,!1),t.lanes=4194304);a.isBackwards?(u.sibling=t.child,t.child=u):(null!==(e=a.last)?e.sibling=u:t.child=u,a.last=u)}return null!==a.tail?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=n(i[3]).unstable_now(),t.sibling=null,e=br.current,Xn(br,l?1&e|2:1&e),t):(Ia(t),null);case 22:case 23:return vr(t),fr(),l=null!==t.memoizedState,null!==e?null!==e.memoizedState!==l&&(t.flags|=8192):l&&(t.flags|=8192),l&&1&t.mode?!!(536870912&r)&&!(128&t.flags)&&(Ia(t),6&t.subtreeFlags&&(t.flags|=8192)):Ia(t),null!==(e=t.updateQueue)&&Na(t,e.retryQueue),null;case 24:case 25:return null}throw Error("Unknown unit of work tag ("+t.tag+"). This error is likely caused by a bug in React. Please file an issue.")}function Ua(e,n){switch(n.tag){case 1:return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 3:return tt(),65536&(e=n.flags)&&!(128&e)?(n.flags=-65537&e|128,n):null;case 26:case 27:case 5:return lt(n),null;case 13:if(vr(n),null!==(e=n.memoizedState)&&null!==e.dehydrated&&null===n.alternate)throw Error("Threw in newly mounted dehydrated component. This is likely a bug in React. Please file an issue.");return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 19:return qn(br),null;case 4:return tt(),null;case 10:return ba(n.type._context),null;case 22:case 23:return vr(n),fr(),65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;default:return null}}function Fa(e,n){switch(n.tag){case 3:case 4:tt();break;case 26:case 27:case 5:lt(n);break;case 13:vr(n);break;case 19:qn(br);break;case 10:ba(n.type._context);break;case 22:case 23:vr(n),fr()}}var Da=!1,Qa=!1,Ma="function"==typeof WeakSet?WeakSet:Set,Aa=null;function ja(e,n){try{var t=e.ref;if(null!==t){var r=e.stateNode;switch(e.tag){case 26:case 27:case 5:var l=vn(r);break;default:l=r}"function"==typeof t?e.refCleanup=t(l):t.current=l}}catch(t){Eu(e,n,t)}}function Ha(e,n){var t=e.ref,r=e.refCleanup;if(null!==t)if("function"==typeof r)try{r()}catch(t){Eu(e,n,t)}finally{e.refCleanup=null,null!=(e=e.alternate)&&(e.refCleanup=null)}else if("function"==typeof t)try{t(null)}catch(t){Eu(e,n,t)}else t.current=null}function Ba(e,n,t){try{t()}catch(t){Eu(e,n,t)}}var Wa=!1;function Oa(e,n){for(Aa=n;null!==Aa;)if(n=(e=Aa).child,1028&e.subtreeFlags&&null!==n)n.return=e,Aa=n;else for(;null!==Aa;){e=Aa;try{var t=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 15:case 3:case 5:case 26:case 27:case 6:case 4:case 17:break;case 1:if(1024&r&&null!==t){var l=t.memoizedProps,a=t.memoizedState,i=e.stateNode,u=i.getSnapshotBeforeUpdate(e.elementType===e.type?l:Rl(e.type,l),a);i.__reactInternalSnapshotBeforeUpdate=u}break;default:if(1024&r)throw Error("This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.")}}catch(n){Eu(e,e.return,n)}if(null!==(n=e.sibling)){n.return=e.return,Aa=n;break}Aa=e.return}return t=Wa,Wa=!1,t}function Va(e,n,t){var r=n.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var l=r=r.next;do{if((l.tag&e)===e){var a=l.inst,i=a.destroy;void 0!==i&&(a.destroy=void 0,Ba(n,t,i))}l=l.next}while(l!==r)}}function $a(e,n){if(null!==(n=null!==(n=n.updateQueue)?n.lastEffect:null)){var t=n=n.next;do{if((t.tag&e)===e){var r=t.create,l=t.inst;r=r(),l.destroy=r}t=t.next}while(t!==n)}}function Ya(e,n){try{$a(n,e)}catch(n){Eu(e,e.return,n)}}function qa(e){var n=e.updateQueue;if(null!==n){var t=e.stateNode;try{Ft(n,t)}catch(n){Eu(e,e.return,n)}}}function Xa(e){try{throw Error("The current renderer does not support mutation. This error is likely caused by a bug in React. Please file an issue.")}catch(n){Eu(e,e.return,n)}}function Ga(e,n,t){var r=t.flags;switch(t.tag){case 0:case 11:case 15:ai(e,t),4&r&&Ya(t,5);break;case 1:if(ai(e,t),4&r)if(e=t.stateNode,null===n)try{e.componentDidMount()}catch(e){Eu(t,t.return,e)}else{var l=t.elementType===t.type?n.memoizedProps:Rl(t.type,n.memoizedProps);n=n.memoizedState;try{e.componentDidUpdate(l,n,e.__reactInternalSnapshotBeforeUpdate)}catch(e){Eu(t,t.return,e)}}64&r&&qa(t),512&r&&ja(t,t.return);break;case 3:if(ai(e,t),64&r&&null!==(r=t.updateQueue)){if(e=null,null!==t.child)switch(t.child.tag){case 27:case 5:e=vn(t.child.stateNode);break;case 1:e=t.child.stateNode}try{Ft(r,e)}catch(e){Eu(t,t.return,e)}}break;case 26:case 27:case 5:ai(e,t),null===n&&4&r&&Xa(t),512&r&&ja(t,t.return);break;case 12:case 13:default:ai(e,t);break;case 22:if(1&t.mode){if(!(l=null!==t.memoizedState||Da)){n=null!==n&&null!==n.memoizedState||Qa;var a=Da,i=Qa;Da=l,(Qa=n)&&!i?ui(e,t,!!(8772&t.subtreeFlags)):ai(e,t),Da=a,Qa=i}}else ai(e,t);512&r&&("manual"===t.memoizedProps.mode?ja(t,t.return):Ha(t,t.return))}}function Ka(e){var n=e.alternate;null!==n&&(e.alternate=null,Ka(n)),e.child=null,e.deletions=null,e.sibling=null,e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Ja(e,n,t){for(t=t.child;null!==t;)Za(e,n,t),t=t.sibling}function Za(e,n,t){if(Ue&&"function"==typeof Ue.onCommitFiberUnmount)try{Ue.onCommitFiberUnmount(Le,t)}catch(e){}switch(t.tag){case 26:case 27:case 5:Qa||Ha(t,n);case 6:Ja(e,n,t);break;case 18:break;case 4:un(),Ja(e,n,t);break;case 0:case 11:case 14:case 15:if(!Qa){var r=t.updateQueue;if(null!==r&&null!==(r=r.lastEffect)){var l=r=r.next;do{var a=l.tag,i=l.inst,u=i.destroy;void 0!==u&&(2&a||4&a)&&(i.destroy=void 0,Ba(t,n,u)),l=l.next}while(l!==r)}}Ja(e,n,t);break;case 1:if(!Qa&&(Ha(t,n),"function"==typeof(r=t.stateNode).componentWillUnmount))try{r.props=t.memoizedProps,r.state=t.memoizedState,r.componentWillUnmount()}catch(e){Eu(t,n,e)}Ja(e,n,t);break;case 21:Ja(e,n,t);break;case 22:Ha(t,n),1&t.mode?(Qa=(r=Qa)||null!==t.memoizedState,Ja(e,n,t),Qa=r):Ja(e,n,t);break;default:Ja(e,n,t)}}function ei(e){switch(e.tag){case 13:case 19:var n=e.stateNode;return null===n&&(n=e.stateNode=new Ma),n;case 22:return null===(n=(e=e.stateNode)._retryCache)&&(n=e._retryCache=new Ma),n;default:throw Error("Unexpected Suspense handler tag ("+e.tag+"). This is a bug in React.")}}function ni(e,n){var t=ei(e);n.forEach((function(n){var r=zu.bind(null,e,n);t.has(n)||(t.add(n),n.then(r,r))}))}function ti(e,n){var t=n.deletions;if(null!==t)for(var r=0;re?32:e,null===qi)var r=!1;else{if(e=qi,qi=null,Xi=0,6&Ei)throw Error("Cannot flush passive effects while already rendering.");var l=Ei;if(Ei|=4,vi(e.current),ci(e,e.current),Ei=l,kt(!1),Ue&&"function"==typeof Ue.onPostCommitFiberRoot)try{Ue.onPostCommitFiberRoot(Le,e)}catch(e){}r=!0}return r}finally{Je=t,Pi.transition=n}}return!1}function Pu(e,n,t){null!==(e=Nt(e,n=Dl(e,n=Ll(t,n),2),2))&&(qe(e,2),St(e))}function Eu(e,n,t){if(3===e.tag)Pu(e,e,t);else for(;null!==n;){if(3===n.tag){Pu(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===$i||!$i.has(r))){null!==(n=Nt(n,e=Ql(n,e=Ll(t,e),2),2))&&(qe(n,2),St(n));break}}n=n.return}}function Ru(e,n,t){var r=e.pingCache;if(null===r){r=e.pingCache=new Si;var l=new Set;r.set(n,l)}else void 0===(l=r.get(n))&&(l=new Set,r.set(n,l));l.has(t)||(Ni=!0,l.add(t),e=_u.bind(null,e,n,t),n.then(e,e))}function _u(e,t,r){var l=e.pingCache;null!==l&&l.delete(t),e.pingedLanes|=e.suspendedLanes&r,Ri===e&&(Ti&r)===r&&(4===Ii||3===Ii&&(62914560&Ti)===Ti&&300>n(i[3]).unstable_now()-Hi?!(2&Ei)&&ou(e,0):Di|=r),St(e)}function Tu(e,n){0===n&&(n=1&e.mode?$e():2),null!==(e=ft(e,n))&&(qe(e,n),St(e))}function xu(e){var n=e.memoizedState,t=0;null!==n&&(t=n.retryLane),Tu(e,t)}function zu(e,n){var t=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;null!==l&&(t=l.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error("Pinged unknown suspense boundary type. This is probably a bug in React.")}null!==r&&r.delete(n),Tu(e,t)}function Nu(e,n,t,r){this.tag=e,this.key=t,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Cu(e,n,t,r){return new Nu(e,n,t,r)}function Iu(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Lu(e){if("function"==typeof e)return Iu(e)?1:0;if(null!=e){if((e=e.$$typeof)===In)return 11;if(e===Fn)return 14}return 2}function Uu(e,n){var t=e.alternate;return null===t?((t=Cu(e.tag,n,e.key,e.mode)).elementType=e.elementType,t.type=e.type,t.stateNode=e.stateNode,t.alternate=e,e.alternate=t):(t.pendingProps=n,t.type=e.type,t.flags=0,t.subtreeFlags=0,t.deletions=null),t.flags=31457280&e.flags,t.childLanes=e.childLanes,t.lanes=e.lanes,t.child=e.child,t.memoizedProps=e.memoizedProps,t.memoizedState=e.memoizedState,t.updateQueue=e.updateQueue,n=e.dependencies,t.dependencies=null===n?null:{lanes:n.lanes,firstContext:n.firstContext},t.sibling=e.sibling,t.index=e.index,t.ref=e.ref,t.refCleanup=e.refCleanup,t}function Fu(e,n){e.flags&=31457282;var t=e.alternate;return null===t?(e.childLanes=0,e.lanes=n,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=t.childLanes,e.lanes=t.lanes,e.child=t.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=t.memoizedProps,e.memoizedState=t.memoizedState,e.updateQueue=t.updateQueue,e.type=t.type,n=t.dependencies,e.dependencies=null===n?null:{lanes:n.lanes,firstContext:n.firstContext}),e}function Du(e,n,t,r,l,a){var i=2;if(r=e,"function"==typeof e)Iu(e)&&(i=1);else if("string"==typeof e)i=5;else e:switch(e){case _n:return Qu(t.children,l,a,n);case Tn:i=8,1&(l|=8)&&(l|=16);break;case xn:return(e=Cu(12,t,n,2|l)).elementType=xn,e.lanes=a,e;case Ln:return(e=Cu(13,t,n,l)).elementType=Ln,e.lanes=a,e;case Un:return(e=Cu(19,t,n,l)).elementType=Un,e.lanes=a,e;case Qn:return Mu(t,l,a,n);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case zn:i=10;break e;case Cn:i=9;break e;case Nn:case In:i=11;break e;case Fn:i=14;break e;case Dn:i=16,r=null;break e}throw Error("Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: "+(null==e?e:typeof e)+".")}return(n=Cu(i,t,n,l)).elementType=e,n.type=r,n.lanes=a,n}function Qu(e,n,t,r){return(e=Cu(7,e,r,n)).lanes=t,e}function Mu(e,n,t,r){(e=Cu(22,e,r,n)).elementType=Qn,e.lanes=t;var l={_visibility:1,_pendingVisibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null,_current:null,detach:function(){var e=l._current;if(null===e)throw Error("Calling Offscreen.detach before instance handle has been set.");if(!(2&l._pendingVisibility)){var n=ft(e,2);null!==n&&(l._pendingVisibility|=2,eu(n,e,2))}},attach:function(){var e=l._current;if(null===e)throw Error("Calling Offscreen.detach before instance handle has been set.");if(2&l._pendingVisibility){var n=ft(e,2);null!==n&&(l._pendingVisibility&=-3,eu(n,e,2))}}};return e.stateNode=l,e}function Au(e,n,t){return(e=Cu(6,e,null,n)).lanes=t,e}function ju(e,n,t){return(n=Cu(4,null!==e.children?e.children:[],e.key,n)).lanes=t,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function Hu(e,n,t,r,l,a){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=Ye(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.finishedLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ye(0),this.hiddenUpdates=Ye(null),this.identifierPrefix=r,this.onRecoverableError=l,this.formState=a,this.incompleteTransitions=new Map}function Bu(e,n,t){var r=3=t.durationThreshold)}));if(0!==n.length)try{t.callback(new v(n),p,f)}catch(t){console.error(t)}};for(var l of h.entries()){var y=(0,a.default)(l,2),p=y[0];s(y[1])}}}};function P(){(0,l.default)('missing-native-performance-observer','Missing native implementation of PerformanceObserver')}function w(){var t=Array.from(h.values()).map((function(t){return t.durationThreshold})).filter(Boolean);return Math.min.apply(Math,(0,n.default)(t))}var O=(0,s.default)("callback"),E=(0,s.default)("type"),k=(0,s.default)("validateObserveOptions");function j(t){var n=t.type,a=t.entryTypes,o=t.durationThreshold;if(!n&&!a)throw new TypeError("Failed to execute 'observe' on 'PerformanceObserver': An observe() call must not include both entryTypes and type arguments.");if(a&&n)throw new TypeError("Failed to execute 'observe' on 'PerformanceObserver': An observe() call must include either entryTypes or type arguments.");if('multiple'===(0,u.default)(this,E)[E]&&n)throw new Error("Failed to execute 'observe' on 'PerformanceObserver': This observer has performed observe({entryTypes:...}, therefore it cannot perform observe({type:...})");if('single'===(0,u.default)(this,E)[E]&&a)throw new Error("Failed to execute 'observe' on 'PerformanceObserver': This PerformanceObserver has performed observe({type:...}, therefore it cannot perform observe({entryTypes:...})");if(a&&void 0!==o)throw new TypeError("Failed to execute 'observe' on 'PerformanceObserver': An observe() call must not include both entryTypes and durationThreshold arguments.")}function S(t,a){return new Set((0,n.default)(t).filter((function(t){return!a.has(t)})))}(e.PerformanceObserver=(function(){return(0,f.default)((function t(n){(0,o.default)(this,t),Object.defineProperty(this,k,{value:j}),Object.defineProperty(this,O,{writable:!0,value:void 0}),Object.defineProperty(this,E,{writable:!0,value:void 0}),(0,u.default)(this,O)[O]=n}),[{key:"observe",value:function(t){var a;if(c.default){var o;(0,u.default)(this,k)[k](t),t.entryTypes?((0,u.default)(this,E)[E]='multiple',o=new Set(t.entryTypes)):((0,u.default)(this,E)[E]='single',o=new Set([t.type]));var f,s,l=null==(a=h.get(this))?void 0:a.entryTypes,y=l?(f=o,s=l,new Set([].concat((0,n.default)(f),(0,n.default)(s)))):o;if(!l||l.size!==y.size){h.set(this,{callback:(0,u.default)(this,O)[O],durationThreshold:'event'===t.type?t.durationThreshold:void 0,entryTypes:y}),b||(c.default.setOnPerformanceEntryCallback(T),b=!0);var v=l?S(new Set(o.keys()),new Set(l.keys())):new Set(o.keys());for(var j of v){var z;if(!p.has(j)){var M=(0,r(d[11]).performanceEntryTypeToRaw)(j);c.default.startReporting(M)}p.set(j,(null!=(z=p.get(j))?z:0)+1)}w()}}else P()}},{key:"disconnect",value:function(){if(c.default){var t=h.get(this);if(t){for(var n of t.entryTypes.keys()){var a,o=null!=(a=p.get(n))?a:0;1===o?(p.delete(n),c.default.stopReporting((0,r(d[11]).performanceEntryTypeToRaw)(n))):0!==o&&p.set(n,o-1)}h.delete(this),0===h.size&&(c.default.setOnPerformanceEntryCallback(void 0),b=!1),w()}}else P()}}])})()).supportedEntryTypes=c.default?c.default.getSupportedPerformanceEntryTypes?Object.freeze(c.default.getSupportedPerformanceEntryTypes().map(r(d[11]).rawToPerformanceEntryType)):Object.freeze(['mark','measure','event']):Object.freeze([])}),78,[1,75,77,6,38,12,13,31,32,70,74,76]); +__d((function(g,_r,i,a,m,_e,d){var t=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.TaskAttributionTiming=_e.PerformanceLongTaskTiming=void 0;var n=t(_r(d[1])),e=t(_r(d[2])),r=t(_r(d[3])),u=t(_r(d[4])),o=t(_r(d[5])),f=t(_r(d[6]));function c(t,n,e){return n=(0,o.default)(n),(0,u.default)(t,l()?Reflect.construct(n,e||[],(0,o.default)(t).constructor):n.apply(t,e))}function l(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(l=function(){return!!t})()}_e.TaskAttributionTiming=(function(t){function n(){return(0,r.default)(this,n),c(this,n,arguments)}return(0,f.default)(n,t),(0,e.default)(n)})(_r(d[7]).PerformanceEntry);var s=Object.preventExtensions([]);_e.PerformanceLongTaskTiming=(function(t){function u(){return(0,r.default)(this,u),c(this,u,arguments)}return(0,f.default)(u,t),(0,e.default)(u,[{key:"attribution",get:function(){return s}},{key:"toJSON",value:function(){return Object.assign({},(t=u,e="toJSON",r=this,f=3,c=(0,n.default)((0,o.default)(1&f?t.prototype:t),e,r),2&f&&"function"==typeof c?function(t){return c.apply(r,t)}:c)([]),{attribution:this.attribution});var t,e,r,f,c}}])})(_r(d[7]).PerformanceEntry)}),79,[1,26,13,12,23,25,28,75]); +__d((function(g,r,i,a,m,_e,d){var e=r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.PerformanceMeasure=_e.PerformanceMark=void 0;var t=e(r(d[1])),n=e(r(d[2])),u=e(r(d[3])),l=e(r(d[4])),o=e(r(d[5])),f=e(r(d[6])),c=e(r(d[7]));function s(e,t,n){return t=(0,f.default)(t),(0,o.default)(e,v()?Reflect.construct(t,n||[],(0,f.default)(e).constructor):t.apply(e,n))}function v(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(v=function(){return!!e})()}_e.PerformanceMark=(function(e){function t(e,n){var u,o;return(0,l.default)(this,t),o=s(this,t,[{name:e,entryType:'mark',startTime:null!=(u=null==n?void 0:n.startTime)?u:performance.now(),duration:0}]),n&&(o.detail=n.detail),o}return(0,c.default)(t,e),(0,u.default)(t)})(r(d[8]).PerformanceEntry);var y=(0,n.default)("detail");_e.PerformanceMeasure=(function(e){function n(e,u){var o,f,c;return(0,l.default)(this,n),c=s(this,n,[{name:e,entryType:'measure',startTime:null!=(o=null==u?void 0:u.startTime)?o:0,duration:null!=(f=null==u?void 0:u.duration)?f:0}]),Object.defineProperty(c,y,{writable:!0,value:void 0}),u&&((0,t.default)(c,y)[y]=u.detail),c}return(0,c.default)(n,e),(0,u.default)(n,[{key:"detail",get:function(){return(0,t.default)(this,y)[y]}}])})(r(d[8]).PerformanceEntry)}),80,[1,31,32,13,12,23,25,28,75]); +__d((function(g,r,i,a,m,_e,d){'use strict';if(r(d[0]).installConsoleErrorReporter(),!g.__fbDisableExceptionsManager){r(d[1]).setGlobalHandler((function(e,o){try{r(d[0]).handleException(e,o)}catch(o){throw console.log('Failed to print error: ',o.message),e}}))}}),81,[82,18]); +__d((function(g,r,i,a,m,_e,d){'use strict';var n=r(d[0]),e=r(d[1]),t=r(d[2]),o=r(d[3]),s=r(d[4]);function c(){try{var n=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(n){}return(c=function(){return!!n})()}var l,u=(function(l){function u(){var n,s,l,f;e(this,u);for(var p=arguments.length,y=new Array(p),E=0;E|\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,u=/\((\S*)(?::(\d+))(?::(\d+))\)/;function t(t){var c=l.exec(t);if(!c)return null;var o=c[2]&&0===c[2].indexOf('native'),s=c[2]&&0===c[2].indexOf('eval'),v=u.exec(c[2]);return s&&null!=v&&(c[2]=v[1],c[3]=v[2],c[4]=v[3]),{file:o?null:c[2],methodName:c[1]||n,arguments:o?[c[2]]:[],lineNumber:c[3]?+c[3]:null,column:c[4]?+c[4]:null}}var c=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|rsc|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i;function o(l){var u=c.exec(l);return u?{file:u[2],methodName:u[1]||n,arguments:[],lineNumber:+u[3],column:u[4]?+u[4]:null}:null}var s=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|rsc|resource|\[native).*?|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,v=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i;function f(l){var u=s.exec(l);if(!u)return null;var t=u[3]&&u[3].indexOf(' > eval')>-1,c=v.exec(u[3]);return t&&null!=c&&(u[3]=c[1],u[4]=c[2],u[5]=null),{file:u[3],methodName:u[1]||n,arguments:u[2]?u[2].split(','):[],lineNumber:u[4]?+u[4]:null,column:u[5]?+u[5]:null}}var b=/^\s*(?:([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i;function p(l){var u=b.exec(l);return u?{file:u[3],methodName:u[1]||n,arguments:[],lineNumber:+u[4],column:u[5]?+u[5]:null}:null}var x=/^\s*at (?:((?:\[object object\])?[^\\/]+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i;function h(l){var u=x.exec(l);return u?{file:u[2],methodName:u[1]||n,arguments:[],lineNumber:+u[3],column:u[4]?+u[4]:null}:null}e.parse=function(n){return n.split('\n').reduce((function(n,l){var u=t(l)||o(l)||f(l)||h(l)||p(l);return u&&n.push(u),n}),[])}}),88,[]); +__d((function(g,r,_i,a,m,e,d){'use strict';var t=/^ {4}at (.+?)(?: \((native)\)?| \((address at )?(.*?):(\d+):(\d+)\))$/,s=/^ {4}... skipping (\d+) frames$/,n=/^ {4}at .*$/;function u(n){var u,i=n.match(t);if(i)return{type:'FRAME',functionName:i[1],location:'native'===i[2]?{type:'NATIVE'}:'address at '===i[3]?(u=i[4],'InternalBytecode.js'===u?{type:'INTERNAL_BYTECODE',sourceUrl:i[4],line1Based:Number.parseInt(i[5],10),virtualOffset0Based:Number.parseInt(i[6],10)}:{type:'BYTECODE',sourceUrl:i[4],line1Based:Number.parseInt(i[5],10),virtualOffset0Based:Number.parseInt(i[6],10)}):{type:'SOURCE',sourceUrl:i[4],line1Based:Number.parseInt(i[5],10),column1Based:Number.parseInt(i[6],10)}};var p=n.match(s);return p?{type:'SKIPPED',count:Number.parseInt(p[1],10)}:void 0}m.exports=function(t){for(var s=t.split(/\n/),i=[],p=-1,o=0;o-1}m.exports={isNativeFunction:t,hasNativeConstructor:function(n,o){var c=Object.getPrototypeOf(n).constructor;return c.name===o&&t(c)}}}),99,[]); +__d((function(g,r,_i,a,m,e,d){var t=(function(t){"use strict";var n,o=Object.prototype,i=o.hasOwnProperty,c=Object.defineProperty||function(t,n,o){t[n]=o.value},u="function"==typeof Symbol?Symbol:{},h=u.iterator||"@@iterator",f=u.asyncIterator||"@@asyncIterator",l=u.toStringTag||"@@toStringTag";function s(t,n,o){return Object.defineProperty(t,n,{value:o,enumerable:!0,configurable:!0,writable:!0}),t[n]}try{s({},"")}catch(t){s=function(t,n,o){return t[n]=o}}function p(t,n,o,i){var u=n&&n.prototype instanceof E?n:E,h=Object.create(u.prototype),f=new A(i||[]);return c(h,"_invoke",{value:F(t,o,f)}),h}function y(t,n,o){try{return{type:"normal",arg:t.call(n,o)}}catch(t){return{type:"throw",arg:t}}}t.wrap=p;var v="suspendedStart",w="suspendedYield",b="executing",L="completed",x={};function E(){}function _(){}function j(){}var O={};s(O,h,(function(){return this}));var k=Object.getPrototypeOf,G=k&&k(k(Y([])));G&&G!==o&&i.call(G,h)&&(O=G);var N=j.prototype=E.prototype=Object.create(O);function P(t){["next","throw","return"].forEach((function(n){s(t,n,(function(t){return this._invoke(n,t)}))}))}function T(t,n){function o(c,u,h,f){var l=y(t[c],t,u);if("throw"!==l.type){var s=l.arg,p=s.value;return p&&"object"==typeof p&&i.call(p,"__await")?n.resolve(p.__await).then((function(t){o("next",t,h,f)}),(function(t){o("throw",t,h,f)})):n.resolve(p).then((function(t){s.value=t,h(s)}),(function(t){return o("throw",t,h,f)}))}f(l.arg)}var u;c(this,"_invoke",{value:function(t,i){function c(){return new n((function(n,c){o(t,i,n,c)}))}return u=u?u.then(c,c):c()}})}function F(t,n,o){var i=v;return function(c,u){if(i===b)throw new Error("Generator is already running");if(i===L){if("throw"===c)throw u;return q()}for(o.method=c,o.arg=u;;){var h=o.delegate;if(h){var f=S(h,o);if(f){if(f===x)continue;return f}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if(i===v)throw i=L,o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);i=b;var l=y(t,n,o);if("normal"===l.type){if(i=o.done?L:w,l.arg===x)continue;return{value:l.arg,done:o.done}}"throw"===l.type&&(i=L,o.method="throw",o.arg=l.arg)}}}function S(t,o){var i=o.method,c=t.iterator[i];if(c===n)return o.delegate=null,"throw"===i&&t.iterator.return&&(o.method="return",o.arg=n,S(t,o),"throw"===o.method)||"return"!==i&&(o.method="throw",o.arg=new TypeError("The iterator does not provide a '"+i+"' method")),x;var u=y(c,t.iterator,o.arg);if("throw"===u.type)return o.method="throw",o.arg=u.arg,o.delegate=null,x;var h=u.arg;return h?h.done?(o[t.resultName]=h.value,o.next=t.nextLoc,"return"!==o.method&&(o.method="next",o.arg=n),o.delegate=null,x):h:(o.method="throw",o.arg=new TypeError("iterator result is not an object"),o.delegate=null,x)}function I(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function R(t){var n=t.completion||{};n.type="normal",delete n.arg,t.completion=n}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(I,this),this.reset(!0)}function Y(t){if(t){var o=t[h];if(o)return o.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var c=-1,u=function o(){for(;++c=0;--u){var h=this.tryEntries[u],f=h.completion;if("root"===h.tryLoc)return c("end");if(h.tryLoc<=this.prev){var l=i.call(h,"catchLoc"),s=i.call(h,"finallyLoc");if(l&&s){if(this.prev=0;--o){var c=this.tryEntries[o];if(c.tryLoc<=this.prev&&i.call(c,"finallyLoc")&&this.prev=0;--n){var o=this.tryEntries[n];if(o.finallyLoc===t)return this.complete(o.completion,o.afterLoc),R(o),x}},catch:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc===t){var i=o.completion;if("throw"===i.type){var c=i.arg;R(o)}return c}}throw new Error("illegal catch attempt")},delegateYield:function(t,o,i){return this.delegate={iterator:Y(t),resultName:o,nextLoc:i},"next"===this.method&&(this.arg=n),x}},t})("object"==typeof m?m.exports:{});try{regeneratorRuntime=t}catch(n){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}}),100,[]); +__d((function(g,r,i,a,m,e,d){'use strict';if(!0!==g.RN$Bridgeless){var l=function(l){r(d[0]).polyfillGlobal(l,(function(){return r(d[1])[l]}))};l('setTimeout'),l('clearTimeout'),l('setInterval'),l('clearInterval'),l('requestAnimationFrame'),l('cancelAnimationFrame'),l('requestIdleCallback'),l('cancelIdleCallback')}else null!=r(d[2]).default&&r(d[3]).useModernRuntimeScheduler()&&(r(d[0]).polyfillGlobal('requestIdleCallback',(function(){return r(d[4]).default.requestIdleCallback})),r(d[0]).polyfillGlobal('cancelIdleCallback',(function(){return r(d[4]).default.cancelIdleCallback})));null!=r(d[2]).default&&r(d[3]).enableMicrotasks()?(g.RN$enableMicrotasksInReact=!0,r(d[0]).polyfillGlobal('queueMicrotask',(function(){return r(d[5]).default.queueMicrotask})),r(d[0]).polyfillGlobal('setImmediate',(function(){return r(d[6]).setImmediate})),r(d[0]).polyfillGlobal('clearImmediate',(function(){return r(d[6]).clearImmediate}))):(r(d[0]).polyfillGlobal('queueMicrotask',(function(){return r(d[7]).default})),!0!==g.RN$Bridgeless&&(r(d[0]).polyfillGlobal('setImmediate',(function(){return r(d[1]).queueReactNativeMicrotask})),r(d[0]).polyfillGlobal('clearImmediate',(function(){return r(d[1]).clearReactNativeMicrotask}))))}),101,[93,102,105,106,108,109,110,111]); +__d((function(g,r,_i,a,m,_e,d){var e=r(d[0])(r(d[1])),t=16.666666666666668,n=[],i=[],l=[],o=[],c=[],u={},f=1,s=[],v=!1;function h(){var e=l.indexOf(null);return-1===e&&(e=l.length),e}function T(e,t){var o=f++,c=h();return l[c]=o,n[c]=e,i[c]=t,o}function k(e,o,c){e>f&&console.warn('Tried to call timer with ID %s but no such timer exists.',e);var u=l.indexOf(e);if(-1!==u){var v=i[u],h=n[u];if(h&&v){'setInterval'!==v&&p(u);try{'setTimeout'===v||'setInterval'===v||'queueReactNativeMicrotask'===v?h():'requestAnimationFrame'===v?h(g.performance.now()):'requestIdleCallback'===v?h({timeRemaining:function(){return Math.max(0,t-(g.performance.now()-o))},didTimeout:!!c}):console.error('Tried to call a callback with invalid type: '+v)}catch(e){s.push(e)}}else console.error('No callback found for timerID '+e)}}function w(){if(0===o.length)return!1;var e=o;o=[];for(var t=0;t0}function p(e){l[e]=null,n[e]=null,i[e]=null}function N(e){if(null!=e){var t=l.indexOf(e);if(-1!==t){var n=i[t];p(t),'queueReactNativeMicrotask'!==n&&'requestIdleCallback'!==n&&M(e)}}}var b,I={setTimeout:function(e,t){for(var n=arguments.length,i=new Array(n>2?n-2:0),l=2;l2?n-2:0),l=2;l1?t-1:0),i=1;i-1&&(c.splice(e,1),k(i,g.performance.now(),!0)),delete u[i],0===c.length&&R(!1)}),n);u[i]=l}return i},cancelIdleCallback:function(e){N(e);var t=c.indexOf(e);-1!==t&&c.splice(t,1);var n=u[e];n&&(I.clearTimeout(n),delete u[e]),0===c.length&&R(!1)},clearTimeout:function(e){N(e)},clearInterval:function(e){N(e)},clearReactNativeMicrotask:function(e){N(e);var t=o.indexOf(e);-1!==t&&o.splice(t,1)},cancelAnimationFrame:function(e){N(e)},callTimers:function(e){r(d[2])(0!==e.length,'Cannot call `callTimers` with an empty list of IDs.'),s.length=0;for(var t=0;t0){if(n>1)for(var i=1;i0){var n=c;c=[];for(var i=0;i0){var u=Array.from(l).join(', ');throw new Error(`Feature flags were accessed before being overridden: ${u}`)}t=n};var t,u=n(r(d[1])),l=new Set;function o(n,t,u){var l;return function(){var n;null==l&&(l=null!=(n=t())?n:u);return l}}var c=new Set;function f(n){c.has(n)||(c.add(n),console.error(`Could not access feature flag '${n}' because native module method was not available`))}}),107,[1,105]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=u?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(o,a,f):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.getEnforcing('NativeIdleCallbacksCxx')}),108,[36]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.getEnforcing('NativeMicrotasksCxx')}),109,[36]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=1,n=new Set;var o={setImmediate:function(o){for(var u=arguments.length,s=new Array(u>1?u-1:0),c=1;c=0,loaded:t,total:s})}},{key:"__didCompleteResponse",value:function(e,t,s){e===this._requestId&&(t&&(''!==this._responseType&&'text'!==this._responseType||(this._response=t),this._hasError=!0,s&&(this._timedOut=!0)),this._clearSubscriptions(),this._requestId=null,this.setReadyState(this.DONE),t?a._interceptor&&a._interceptor.loadingFailed(e,t):a._interceptor&&a._interceptor.loadingFinished(e,this._response.length))}},{key:"_clearSubscriptions",value:function(){(this._subscriptions||[]).forEach((function(e){e&&e.remove()})),this._subscriptions=[]}},{key:"getAllResponseHeaders",value:function(){if(!this.responseHeaders)return null;var e=this.responseHeaders,s=new Map;for(var r of Object.keys(e)){var n=e[r],a=r.toLowerCase(),o=s.get(a);o?(o.headerValue+=', '+n,s.set(a,o)):s.set(a,{lowerHeaderName:a,upperHeaderName:r.toUpperCase(),headerValue:n})}return(0,t.default)(s.values()).sort((function(e,t){return e.upperHeaderNamet.upperHeaderName?1:0})).map((function(e){return e.lowerHeaderName+': '+e.headerValue})).join('\r\n')+'\r\n'}},{key:"getResponseHeader",value:function(e){var t=this._lowerCaseResponseHeaders[e.toLowerCase()];return void 0!==t?t:null}},{key:"setRequestHeader",value:function(e,t){if(this.readyState!==this.OPENED)throw new Error('Request has not been opened');this._headers[e.toLowerCase()]=String(t)}},{key:"setTrackingName",value:function(e){return this._trackingName=e,this}},{key:"setPerformanceLogger",value:function(e){return this._performanceLogger=e,this}},{key:"open",value:function(e,t,s){if(this.readyState!==this.UNSENT)throw new Error('Cannot open, already sending');if(void 0!==s&&!s)throw new Error('Synchronous http requests are not supported');if(!t)throw new Error('Cannot load an empty url');this._method=e.toUpperCase(),this._url=t,this._aborted=!1,this.setReadyState(this.OPENED)}},{key:"send",value:function(e){var s=this;if(this.readyState!==this.OPENED)throw new Error('Request has not been opened');if(this._sent)throw new Error('Request has already been sent');this._sent=!0;var r=this._incrementalEvents||!!this.onreadystatechange||!!this.onprogress;this._subscriptions.push(_r(d[13]).default.addListener('didSendNetworkData',(function(e){return s.__didUploadProgress.apply(s,(0,t.default)(e))}))),this._subscriptions.push(_r(d[13]).default.addListener('didReceiveNetworkResponse',(function(e){return s.__didReceiveResponse.apply(s,(0,t.default)(e))}))),this._subscriptions.push(_r(d[13]).default.addListener('didReceiveNetworkData',(function(e){return s.__didReceiveData.apply(s,(0,t.default)(e))}))),this._subscriptions.push(_r(d[13]).default.addListener('didReceiveNetworkIncrementalData',(function(e){return s.__didReceiveIncrementalData.apply(s,(0,t.default)(e))}))),this._subscriptions.push(_r(d[13]).default.addListener('didReceiveNetworkDataProgress',(function(e){return s.__didReceiveDataProgress.apply(s,(0,t.default)(e))}))),this._subscriptions.push(_r(d[13]).default.addListener('didCompleteNetworkResponse',(function(e){return s.__didCompleteResponse.apply(s,(0,t.default)(e))})));var n='text';'arraybuffer'===this._responseType&&(n='base64'),'blob'===this._responseType&&(n='blob');var a;a='unknown'!==s._trackingName?s._trackingName:s._url,s._perfKey='network_XMLHttpRequest_'+String(a),s._performanceLogger.startTimespan(s._perfKey),_r(d[11])(s._method,'XMLHttpRequest method needs to be defined (%s).',a),_r(d[11])(s._url,'XMLHttpRequest URL needs to be defined (%s).',a),_r(d[13]).default.sendRequest(s._method,s._trackingName,s._url,s._headers,e,n,r,s.timeout,s.__didCreateRequest.bind(s),s.withCredentials)}},{key:"abort",value:function(){this._aborted=!0,this._requestId&&_r(d[13]).default.abortRequest(this._requestId),this.readyState===this.UNSENT||this.readyState===this.OPENED&&!this._sent||this.readyState===this.DONE||(this._reset(),this.setReadyState(this.DONE)),this._reset()}},{key:"setResponseHeaders",value:function(e){this.responseHeaders=e||null;var t=e||{};this._lowerCaseResponseHeaders=Object.keys(t).reduce((function(e,s){return e[s.toLowerCase()]=t[s],e}),{})}},{key:"setReadyState",value:function(e){this.readyState=e,this.dispatchEvent({type:'readystatechange'}),e===this.DONE&&(this._aborted?this.dispatchEvent({type:'abort'}):this._hasError?this._timedOut?this.dispatchEvent({type:'timeout'}):this.dispatchEvent({type:'error'}):this.dispatchEvent({type:'load'}),this.dispatchEvent({type:'loadend'}))}},{key:"addEventListener",value:function(e,t){var r,n,u,h,p;'readystatechange'!==e&&'progress'!==e||(this._incrementalEvents=!0),(r=a,n="addEventListener",u=this,h=3,p=(0,s.default)((0,o.default)(1&h?r.prototype:r),n,u),2&h&&"function"==typeof p?function(e){return p.apply(u,e)}:p)([e,t])}}],[{key:"setInterceptor",value:function(e){a._interceptor=e}}])})(h.default.apply(void 0,(0,t.default)(f)));v.UNSENT=0,v.OPENED=1,v.HEADERS_RECEIVED=2,v.LOADING=3,v.DONE=4,v._interceptor=null,m.exports=v}),113,[1,6,26,13,12,23,25,28,114,115,120,20,123,124]); +__d((function(g,r,_i,a,m,e,d){'use strict';Object.defineProperty(e,'__esModule',{value:!0});var t=new WeakMap,n=new WeakMap;function o(n){var o=t.get(n);return console.assert(null!=o,"'this' is expected an Event object, but got",n),o}function i(t){null==t.passiveListener?t.event.cancelable&&(t.canceled=!0,"function"==typeof t.event.preventDefault&&t.event.preventDefault()):"undefined"!=typeof console&&"function"==typeof console.error&&console.error("Unable to preventDefault inside passive event listener invocation.",t.passiveListener)}function l(n,o){t.set(this,{eventTarget:n,event:o,eventPhase:2,currentTarget:n,canceled:!1,stopped:!1,immediateStopped:!1,passiveListener:null,timeStamp:o.timeStamp||Date.now()}),Object.defineProperty(this,"isTrusted",{value:!1,enumerable:!0});for(var i=Object.keys(o),l=0;l0){for(var t=new Array(arguments.length),n=0;n0&&void 0!==arguments[0]?arguments[0]:[],o=arguments.length>1?arguments[1]:void 0;t(this,s);var l=r(d[2]);this.data=l.createFromParts(n,o).data}),[{key:"data",get:function(){if(!this._data)throw new Error('Blob has been closed and is no longer available');return this._data},set:function(t){this._data=t}},{key:"slice",value:function(t,s){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:'',o=r(d[2]),l=this.data,h=l.offset,u=l.size;return'number'==typeof t&&(t>u&&(t=u),h+=t,u-=t,'number'==typeof s&&(s<0&&(s=this.size+s),s>this.size&&(s=this.size),u=s-t)),o.createFromOptions({blobId:this.data.blobId,offset:h,size:u,type:n,__collector:this.data.__collector})}},{key:"close",value:function(){r(d[2]).release(this.data.blobId),this.data=null}},{key:"size",get:function(){return this.data.size}},{key:"type",get:function(){return this.data.type||''}}])})();m.exports=n}),118,[12,13,115]); +__d((function(g,r,i,a,m,e,d){var t=new Map;m.exports={register:function(n){var u=t.get(n);null!=u?t.set(n,u+1):t.set(n,1)},unregister:function(n){var u=t.get(n);null!=u&&(u<=1?t.delete(n):t.set(n,u-1))},has:function(n){return t.get(n)||!1}}}),119,[]); +__d((function(g,r,i,a,m,e,d){var t=(0,r(d[0])(r(d[1])).default)();m.exports=t}),120,[1,121]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return new l},e.getCurrentTimestamp=void 0;var s,n=t(r(d[1])),o=t(r(d[2])),u=(t(r(d[3])),e.getCurrentTimestamp=null!=(s=g.nativeQPLTimestamp)?s:function(){return g.performance.now()}),l=(function(){return(0,o.default)((function t(){(0,n.default)(this,t),this._timespans={},this._extras={},this._points={},this._pointExtras={},this._closed=!1}),[{key:"addTimespan",value:function(t,s,n,o,u){this._closed||this._timespans[t]||(this._timespans[t]={startTime:s,endTime:n,totalTime:n-(s||0),startExtras:o,endExtras:u})}},{key:"append",value:function(t){this._timespans=Object.assign({},t.getTimespans(),this._timespans),this._extras=Object.assign({},t.getExtras(),this._extras),this._points=Object.assign({},t.getPoints(),this._points),this._pointExtras=Object.assign({},t.getPointExtras(),this._pointExtras)}},{key:"clear",value:function(){this._timespans={},this._extras={},this._points={}}},{key:"clearCompleted",value:function(){for(var t in this._timespans){var s;null!=(null==(s=this._timespans[t])?void 0:s.totalTime)&&delete this._timespans[t]}this._extras={},this._points={}}},{key:"close",value:function(){this._closed=!0}},{key:"currentTimestamp",value:function(){return u()}},{key:"getExtras",value:function(){return this._extras}},{key:"getPoints",value:function(){return this._points}},{key:"getPointExtras",value:function(){return this._pointExtras}},{key:"getTimespans",value:function(){return this._timespans}},{key:"hasTimespan",value:function(t){return!!this._timespans[t]}},{key:"isClosed",value:function(){return this._closed}},{key:"logEverything",value:function(){}},{key:"markPoint",value:function(t){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u(),n=arguments.length>2?arguments[2]:void 0;this._closed||null==this._points[t]&&(this._points[t]=s,n&&(this._pointExtras[t]=n))}},{key:"removeExtra",value:function(t){var s=this._extras[t];return delete this._extras[t],s}},{key:"setExtra",value:function(t,s){this._closed||this._extras.hasOwnProperty(t)||(this._extras[t]=s)}},{key:"startTimespan",value:function(t){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u(),n=arguments.length>2?arguments[2]:void 0;this._closed||this._timespans[t]||(this._timespans[t]={startTime:s,startExtras:n})}},{key:"stopTimespan",value:function(t){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:u(),n=arguments.length>2?arguments[2]:void 0;if(!this._closed){var o=this._timespans[t];o&&null!=o.startTime&&null==o.endTime&&(o.endExtras=n,o.endTime=s,o.totalTime=o.endTime-(o.startTime||0))}}}])})()}),121,[1,12,13,122]); +__d((function(g,r,i,a,m,e,d){'use strict';m.exports=function(){var n;return(n=console).log.apply(n,arguments)}}),122,[]); +__d((function(g,r,_i,a,m,e,d){'use strict';e.byteLength=function(t){var n=c(t),o=n[0],h=n[1];return 3*(o+h)/4-h},e.toByteArray=function(t){var h,u,f=c(t),A=f[0],C=f[1],y=new o(i(t,A,C)),s=0,v=C>0?A-4:A;for(u=0;u>16&255,y[s++]=h>>8&255,y[s++]=255&h;2===C&&(h=n[t.charCodeAt(u)]<<2|n[t.charCodeAt(u+1)]>>4,y[s++]=255&h);1===C&&(h=n[t.charCodeAt(u)]<<10|n[t.charCodeAt(u+1)]<<4|n[t.charCodeAt(u+2)]>>2,y[s++]=h>>8&255,y[s++]=255&h);return y},e.fromByteArray=function(n){for(var o,h=n.length,u=h%3,c=[],i=16383,A=0,C=h-u;AC?C:A+i));1===u?(o=n[h-1],c.push(t[o>>2]+t[o<<4&63]+'==')):2===u&&(o=(n[h-2]<<8)+n[h-1],c.push(t[o>>10]+t[o>>4&63]+t[o<<2&63]+'='));return c.join('')};for(var t=[],n=[],o='undefined'!=typeof Uint8Array?Uint8Array:Array,h='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',u=0;u<64;++u)t[u]=h[u],n[h.charCodeAt(u)]=u;function c(t){var n=t.length;if(n%4>0)throw new Error('Invalid string. Length must be a multiple of 4');var o=t.indexOf('=');return-1===o&&(o=n),[o,o===n?0:4-o%4]}function i(t,n,o){return 3*(n+o)/4-o}function f(n,o,h){for(var u,c,i=[],f=o;f>18&63]+t[c>>12&63]+t[c>>6&63]+t[63&c]);return i.join('')}n['-'.charCodeAt(0)]=62,n['_'.charCodeAt(0)]=63}),123,[]); +__d((function(g,r,i,a,m,_e,d){var e=r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(r(d[1])),u=e(r(d[2])),n=e(r(d[3])),o=e(r(d[4])),f=e(r(d[5])),l=e(r(d[6])),c=e(r(d[7])),s=e(r(d[8])),v=e(r(d[9]));function p(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(p=function(){return!!e})()}function y(e){var t=[];for(var u in e)t.push([u,e[u]]);return t}var h=1;var k=(function(e){function l(){return(0,t.default)(this,l),e=this,u=l,f=['ios'!==c.default.OS?null:v.default],u=(0,o.default)(u),(0,n.default)(e,p()?Reflect.construct(u,f||[],(0,o.default)(e).constructor):u.apply(e,f));var e,u,f}return(0,f.default)(l,e),(0,u.default)(l,[{key:"sendRequest",value:function(e,t,u,n,o,f,l,c,p,k){var R=(0,s.default)(o);R&&R.formData&&(R.formData=R.formData.map((function(e){return Object.assign({},e,{headers:y(e.headers)})})));var b=h++;v.default.sendRequest(e,u,b,y(n),Object.assign({},R,{trackingName:t}),f,l,c,k),p(b)}},{key:"abortRequest",value:function(e){v.default.abortRequest(e)}},{key:"clearCookies",value:function(e){v.default.clearCookies(e)}}])})(l.default);_e.default=new k}),124,[1,12,13,23,25,28,125,33,126,129]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(r(d[1])),l=t(r(d[2])),u=t(r(d[3])),o=t(r(d[4])),s=t(r(d[5]));e.default=(function(){return(0,l.default)((function t(l){(0,n.default)(this,t),'ios'===u.default.OS&&(0,s.default)(null!=l,'`new NativeEventEmitter()` requires a non-null argument.');var o=!!l&&'function'==typeof l.addListener,v=!!l&&'function'==typeof l.removeListeners;l&&o&&v?this._nativeModule=l:null!=l&&(o||console.warn('`new NativeEventEmitter()` was called with a non-null argument without the required `addListener` method.'),v||console.warn('`new NativeEventEmitter()` was called with a non-null argument without the required `removeListeners` method.'))}),[{key:"addListener",value:function(t,n,l){var u,s=this;null==(u=this._nativeModule)||u.addListener(t);var v=o.default.addListener(t,n,l);return{remove:function(){var t;null!=v&&(null==(t=s._nativeModule)||t.removeListeners(1),v.remove(),v=null)}}}},{key:"emit",value:function(t){for(var n=arguments.length,l=new Array(n>1?n-1:0),u=1;u-1};function c(t){if('string'!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(t)||''===t)throw new TypeError('Invalid character in header field name: "'+t+'"');return t.toLowerCase()}function y(t){return'string'!=typeof t&&(t=String(t)),t}function l(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return n&&(e[Symbol.iterator]=function(){return e}),e}function p(t){this.map={},t instanceof p?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){if(2!=t.length)throw new TypeError('Headers constructor: expected name/value pair to be length 2, found'+t.length);this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function b(t){if(!t._noBody)return t.bodyUsed?Promise.reject(new TypeError('Already read')):void(t.bodyUsed=!0)}function w(t){return new Promise((function(e,o){t.onload=function(){e(t.result)},t.onerror=function(){o(t.error)}}))}function v(t){var e=new FileReader,o=w(e);return e.readAsArrayBuffer(t),o}function E(t){for(var e=new Uint8Array(t),o=new Array(e.length),n=0;n-1?i:n),this.mode=o.mode||this.mode||null,this.signal=o.signal||this.signal||(function(){if('AbortController'in e)return(new AbortController).signal})(),this.referrer=null,('GET'===this.method||'HEAD'===this.method)&&s)throw new TypeError('Body not allowed for GET or HEAD requests');if(this._initBody(s),!('GET'!==this.method&&'HEAD'!==this.method||'no-store'!==o.cache&&'no-cache'!==o.cache)){var h=/([?&])_=[^&]*/;h.test(this.url)?this.url=this.url.replace(h,'$1_='+(new Date).getTime()):this.url+=(/\?/.test(this.url)?'&':'?')+'_='+(new Date).getTime()}}function x(t){var e=new FormData;return t.trim().split('&').forEach((function(t){if(t){var o=t.split('='),n=o.shift().replace(/\+/g,' '),i=o.join('=').replace(/\+/g,' ');e.append(decodeURIComponent(n),decodeURIComponent(i))}})),e}function B(t,e){if(!(this instanceof B))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');if(e||(e={}),this.type='default',this.status=void 0===e.status?200:e.status,this.status<200||this.status>599)throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");this.ok=this.status>=200&&this.status<300,this.statusText=void 0===e.statusText?'':''+e.statusText,this.headers=new p(e.headers),this.url=e.url||'',this._initBody(t)}g.prototype.clone=function(){return new g(this,{body:this._bodyInit})},_.call(g.prototype),_.call(B.prototype),B.prototype.clone=function(){return new B(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new p(this.headers),url:this.url})},B.error=function(){var t=new B(null,{status:200,statusText:''});return t.ok=!1,t.status=0,t.type='error',t};var O=[301,302,303,307,308];B.redirect=function(t,e){if(-1===O.indexOf(e))throw new RangeError('Invalid status code');return new B(null,{status:e,headers:{location:t}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(t,e){this.message=t,this.name=e;var o=Error(t);this.stack=o.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function P(o,n){return new Promise((function(s,u){var f=new g(o,n);if(f.signal&&f.signal.aborted)return u(new t.DOMException('Aborted','AbortError'));var l=new XMLHttpRequest;function b(){l.abort()}if(l.onload=function(){var t,e,o={statusText:l.statusText,headers:(t=l.getAllResponseHeaders()||'',e=new p,t.replace(/\r?\n[\t ]+/g,' ').split('\r').map((function(t){return 0===t.indexOf('\n')?t.substr(1,t.length):t})).forEach((function(t){var o=t.split(':'),n=o.shift().trim();if(n){var i=o.join(':').trim();try{e.append(n,i)}catch(t){console.warn('Response '+t.message)}}})),e)};0===f.url.indexOf('file://')&&(l.status<200||l.status>599)?o.status=200:o.status=l.status,o.url='responseURL'in l?l.responseURL:o.headers.get('X-Request-URL');var n='response'in l?l.response:l.responseText;setTimeout((function(){s(new B(n,o))}),0)},l.onerror=function(){setTimeout((function(){u(new TypeError('Network request failed'))}),0)},l.ontimeout=function(){setTimeout((function(){u(new TypeError('Network request timed out'))}),0)},l.onabort=function(){setTimeout((function(){u(new t.DOMException('Aborted','AbortError'))}),0)},l.open(f.method,(function(t){try{return''===t&&e.location.href?e.location.href:t}catch(e){return t}})(f.url),!0),'include'===f.credentials?l.withCredentials=!0:'omit'===f.credentials&&(l.withCredentials=!1),'responseType'in l&&(i?l.responseType='blob':h&&(l.responseType='arraybuffer')),n&&'object'==typeof n.headers&&!(n.headers instanceof p||e.Headers&&n.headers instanceof e.Headers)){var w=[];Object.getOwnPropertyNames(n.headers).forEach((function(t){w.push(c(t)),l.setRequestHeader(t,y(n.headers[t]))})),f.headers.forEach((function(t,e){-1===w.indexOf(e)&&l.setRequestHeader(e,t)}))}else f.headers.forEach((function(t,e){l.setRequestHeader(e,t)}));f.signal&&(f.signal.addEventListener('abort',b),l.onreadystatechange=function(){4===l.readyState&&f.signal.removeEventListener('abort',b)}),l.send(void 0===f._bodyInit?null:f._bodyInit)}))}P.polyfill=!0,e.fetch||(e.fetch=P,e.Headers=p,e.Request=g,e.Response=B),t.Headers=p,t.Request=g,t.Response=B,t.fetch=P,Object.defineProperty(t,'__esModule',{value:!0})},'object'==typeof _e&&void 0!==m?e(_e):'function'==typeof define&&define.amd?define(['exports'],e):e(t.WHATWGFetch={})}),132,[]); +__d((function(g,r,i,a,m,_e,d){var e=r(d[0]),t=e(r(d[1])),o=e(r(d[2])),n=e(r(d[3])),s=e(r(d[4])),u=e(r(d[5])),c=e(r(d[6])),l=e(r(d[7])),f=e(r(d[8])),h=e(r(d[9])),y=e(r(d[10])),b=e(r(d[11])),p=e(r(d[12])),v=e(r(d[13])),_=e(r(d[14])),E=e(r(d[15])),k=e(r(d[16])),S=["headers"];function I(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(I=function(){return!!e})()}var N=0,O=(function(e){function E(e,n,c){var l,f,y,v;(0,o.default)(this,E),f=this,y=E,y=(0,u.default)(y),(l=(0,s.default)(f,I()?Reflect.construct(y,v||[],(0,u.default)(f).constructor):y.apply(f,v))).CONNECTING=0,l.OPEN=1,l.CLOSING=2,l.CLOSED=3,l.readyState=0,l.url=e,'string'==typeof n&&(n=[n]);var _=c||{},k=_.headers,O=void 0===k?{}:k,w=(0,t.default)(_,S);return w&&'string'==typeof w.origin&&(console.warn('Specifying `origin` as a WebSocket connection option is deprecated. Include it under `headers` instead.'),O.origin=w.origin,delete w.origin),Object.keys(w).length>0&&console.warn('Unrecognized WebSocket connection option(s) `'+Object.keys(w).join('`, `')+"`. Did you mean to put these under `headers`?"),Array.isArray(n)||(n=null),l._eventEmitter=new h.default('ios'!==b.default.OS?null:p.default),l._socketId=N++,l._registerEvents(),p.default.connect(e,n,{headers:O},l._socketId),l}return(0,c.default)(E,e),(0,n.default)(E,[{key:"binaryType",get:function(){return this._binaryType},set:function(e){if('blob'!==e&&'arraybuffer'!==e)throw new Error("binaryType must be either 'blob' or 'arraybuffer'");'blob'!==this._binaryType&&'blob'!==e||((0,k.default)(f.default.isAvailable,'Native module BlobModule is required for blob support'),'blob'===e?f.default.addWebSocketHandler(this._socketId):f.default.removeWebSocketHandler(this._socketId)),this._binaryType=e}},{key:"close",value:function(e,t){this.readyState!==this.CLOSING&&this.readyState!==this.CLOSED&&(this.readyState=this.CLOSING,this._close(e,t))}},{key:"send",value:function(e){if(this.readyState===this.CONNECTING)throw new Error('INVALID_STATE_ERR');if(e instanceof l.default)return(0,k.default)(f.default.isAvailable,'Native module BlobModule is required for blob support'),void f.default.sendOverSocket(e,this._socketId);if('string'!=typeof e){if(!(e instanceof ArrayBuffer||ArrayBuffer.isView(e)))throw new Error('Unsupported data type');p.default.sendBinary((0,y.default)(e),this._socketId)}else p.default.send(e,this._socketId)}},{key:"ping",value:function(){if(this.readyState===this.CONNECTING)throw new Error('INVALID_STATE_ERR');p.default.ping(this._socketId)}},{key:"_close",value:function(e,t){var o='number'==typeof e?e:1e3,n='string'==typeof t?t:'';p.default.close(o,n,this._socketId),f.default.isAvailable&&'blob'===this._binaryType&&f.default.removeWebSocketHandler(this._socketId)}},{key:"_unregisterEvents",value:function(){this._subscriptions.forEach((function(e){return e.remove()})),this._subscriptions=[]}},{key:"_registerEvents",value:function(){var e=this;this._subscriptions=[this._eventEmitter.addListener('websocketMessage',(function(t){if(t.id===e._socketId){var o=t.data;switch(t.type){case'binary':o=_.default.toByteArray(t.data).buffer;break;case'blob':o=f.default.createFromOptions(t.data)}e.dispatchEvent(new v.default('message',{data:o}))}})),this._eventEmitter.addListener('websocketOpen',(function(t){t.id===e._socketId&&(e.readyState=e.OPEN,e.protocol=t.protocol,e.dispatchEvent(new v.default('open')))})),this._eventEmitter.addListener('websocketClosed',(function(t){t.id===e._socketId&&(e.readyState=e.CLOSED,e.dispatchEvent(new v.default('close',{code:t.code,reason:t.reason})),e._unregisterEvents(),e.close())})),this._eventEmitter.addListener('websocketFailed',(function(t){t.id===e._socketId&&(e.readyState=e.CLOSED,e.dispatchEvent(new v.default('error',{message:t.message})),e.dispatchEvent(new v.default('close',{code:1006,reason:t.message})),e._unregisterEvents(),e.close())}))]}}])})(E.default.apply(void 0,['close','error','message','open']));O.CONNECTING=0,O.OPEN=1,O.CLOSING=2,O.CLOSED=3,m.exports=O}),133,[1,134,12,13,23,25,28,118,115,125,128,33,136,138,123,114,20]); +__d((function(g,_r,_i,a,m,_e,d){m.exports=function(e,r){if(null==e)return{};var t,o,n=_r(d[0])(e,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(o=0;o1&&void 0!==arguments[1]?arguments[1]:'UTF-8';if(this._aborted=!1,null==t)throw new TypeError("Failed to execute 'readAsText' on 'FileReader': parameter 1 is not of type 'Blob'");l.default.readAsText(t.data,o).then((function(t){e._aborted||(e._result=t,e._setReadyState(2))}),(function(t){e._aborted||(e._error=t,e._setReadyState(2))}))}},{key:"abort",value:function(){this._aborted=!0,0!==this._readyState&&2!==this._readyState&&(this._reset(),this._setReadyState(2)),this._reset()}},{key:"readyState",get:function(){return this._readyState}},{key:"error",get:function(){return this._error}},{key:"result",get:function(){return this._result}}])})(f.default.apply(void 0,['abort','error','load','loadstart','loadend','progress']));h.EMPTY=0,h.LOADING=1,h.DONE=2,m.exports=h}),140,[1,12,13,23,25,28,141,114,123]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),141,[142]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.getEnforcing('FileReaderModule')}),142,[36]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.URL=void 0,Object.defineProperty(e,"URLSearchParams",{enumerable:!0,get:function(){return r(d[1]).URLSearchParams}});var n=t(r(d[2])),o=t(r(d[3])),s=t(r(d[4])),u=null;if(s.default&&'string'==typeof s.default.getConstants().BLOB_URI_SCHEME){var f=s.default.getConstants();u=f.BLOB_URI_SCHEME+':','string'==typeof f.BLOB_URI_HOST&&(u+=`//${f.BLOB_URI_HOST}/`)}function h(t){return/^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)*(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/.test(t)}e.URL=(function(){return(0,o.default)((function t(o,s){(0,n.default)(this,t),this._searchParamsInstance=null;var u=null;if(!s||h(o))this._url=o,this._url.endsWith('/')||(this._url+='/');else{if('string'==typeof s){if(!h(u=s))throw new TypeError(`Invalid base URL: ${u}`)}else u=s.toString();u.endsWith('/')&&(u=u.slice(0,u.length-1)),o.startsWith('/')||(o=`/${o}`),u.endsWith(o)&&(o=''),this._url=`${u}${o}`}}),[{key:"hash",get:function(){throw new Error('URL.hash is not implemented')}},{key:"host",get:function(){throw new Error('URL.host is not implemented')}},{key:"hostname",get:function(){throw new Error('URL.hostname is not implemented')}},{key:"href",get:function(){return this.toString()}},{key:"origin",get:function(){throw new Error('URL.origin is not implemented')}},{key:"password",get:function(){throw new Error('URL.password is not implemented')}},{key:"pathname",get:function(){throw new Error('URL.pathname not implemented')}},{key:"port",get:function(){throw new Error('URL.port is not implemented')}},{key:"protocol",get:function(){throw new Error('URL.protocol is not implemented')}},{key:"search",get:function(){throw new Error('URL.search is not implemented')}},{key:"searchParams",get:function(){return null==this._searchParamsInstance&&(this._searchParamsInstance=new URLSearchParams),this._searchParamsInstance}},{key:"toJSON",value:function(){return this.toString()}},{key:"toString",value:function(){if(null===this._searchParamsInstance)return this._url;var t=this._searchParamsInstance.toString(),n=this._url.indexOf('?')>-1?'&':'?';return this._url+n+t}},{key:"username",get:function(){throw new Error('URL.username is not implemented')}}],[{key:"createObjectURL",value:function(t){if(null===u)throw new Error('Cannot create URL for blob!');return`${u}${t.data.blobId}?offset=${t.data.offset}&size=${t.size}`}},{key:"revokeObjectURL",value:function(t){}}])})()}),143,[1,144,12,13,116]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.URLSearchParams=void 0;var n=t(r(d[1])),o=t(r(d[2]));e.URLSearchParams=(function(){return(0,o.default)((function t(o){var s=this;(0,n.default)(this,t),this._searchParams=[],'object'==typeof o&&Object.keys(o).forEach((function(t){return s.append(t,o[t])}))}),[{key:"append",value:function(t,n){this._searchParams.push([t,n])}},{key:"delete",value:function(t){throw new Error('URLSearchParams.delete is not implemented')}},{key:"get",value:function(t){throw new Error('URLSearchParams.get is not implemented')}},{key:"getAll",value:function(t){throw new Error('URLSearchParams.getAll is not implemented')}},{key:"has",value:function(t){throw new Error('URLSearchParams.has is not implemented')}},{key:"set",value:function(t,n){throw new Error('URLSearchParams.set is not implemented')}},{key:"sort",value:function(){throw new Error('URLSearchParams.sort is not implemented')}},{key:Symbol.iterator,value:function(){return this._searchParams[Symbol.iterator]()}},{key:"toString",value:function(){if(0===this._searchParams.length)return'';var t=this._searchParams.length-1;return this._searchParams.reduce((function(n,o,s){return n+encodeURIComponent(o[0])+'='+encodeURIComponent(o[1])+(s===t?'':'&')}),'')}}])})()}),144,[1,12,13]); +__d((function(g,r,i,a,m,_e,d){'use strict';var t=r(d[0]),e=r(d[1]),o=r(d[2]),n=r(d[3]),l=r(d[4]);function u(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(u=function(){return!!t})()}Object.defineProperty(_e,'__esModule',{value:!0});var c=(function(c){function p(){var e,l,c;throw t(this,p),e=this,l=n(l=p),o(e,u()?Reflect.construct(l,c||[],n(e).constructor):l.apply(e,c)),new TypeError("AbortSignal cannot be constructed directly")}return l(p,c),e(p,[{key:"aborted",get:function(){var t=b.get(this);if("boolean"!=typeof t)throw new TypeError("Expected 'this' to be an 'AbortSignal' object, but got "+(null===this?"null":typeof this));return t}}])})(r(d[5]).EventTarget);r(d[5]).defineEventAttribute(c.prototype,"abort");var b=new WeakMap;Object.defineProperties(c.prototype,{aborted:{enumerable:!0}}),"function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag&&Object.defineProperty(c.prototype,Symbol.toStringTag,{configurable:!0,value:"AbortSignal"});var p=(function(){return e((function e(){var o;t(this,e),f.set(this,(o=Object.create(c.prototype),r(d[5]).EventTarget.call(o),b.set(o,!1),o))}),[{key:"signal",get:function(){return y(this)}},{key:"abort",value:function(){var t;t=y(this),!1===b.get(t)&&(b.set(t,!0),t.dispatchEvent({type:"abort"}))}}])})(),f=new WeakMap;function y(t){var e=f.get(t);if(null==e)throw new TypeError("Expected 'this' to be an 'AbortController' object, but got "+(null===t?"null":typeof t));return e}Object.defineProperties(p.prototype,{signal:{enumerable:!0},abort:{enumerable:!0}}),"function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag&&Object.defineProperty(p.prototype,Symbol.toStringTag,{configurable:!0,value:"AbortController"}),_e.AbortController=p,_e.AbortSignal=c,_e.default=p,m.exports=p,m.exports.AbortController=m.exports.default=p,m.exports.AbortSignal=c}),145,[12,13,23,25,28,114]); +__d((function(g,r,i,a,m,e,d){'use strict';g.alert||(g.alert=function(t){r(d[0]).alert('Alert',''+t)})}),146,[147]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]),n=t(r(d[1])),o=t(r(d[2])),s=t(r(d[3])),l=t(r(d[4])),u=(function(){function t(){(0,n.default)(this,t)}return(0,o.default)(t,null,[{key:"alert",value:function(n,o,l,u){if('ios'===s.default.OS)t.prompt(n,o,l,'default',void 0,void 0,u);else if('android'===s.default.OS){var c=r(d[5]).default;if(!c)return;var f=c.getConstants(),v={title:n||'',message:o||'',cancelable:!1};u&&u.cancelable&&(v.cancelable=u.cancelable);var p=l?l.slice(0,3):[{text:"OK"}],y=p.pop(),b=p.pop(),h=p.pop();h&&(v.buttonNeutral=h.text||''),b&&(v.buttonNegative=b.text||''),y&&(v.buttonPositive=y.text||"OK");c.showAlert(v,(function(t){return console.warn(t)}),(function(t,n){t===f.buttonClicked?n===f.buttonNeutral?h.onPress&&h.onPress():n===f.buttonNegative?b.onPress&&b.onPress():n===f.buttonPositive&&y.onPress&&y.onPress():t===f.dismissed&&u&&u.onDismiss&&u.onDismiss()}))}}},{key:"prompt",value:function(t,n,o){var u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:'plain-text',c=arguments.length>4?arguments[4]:void 0,f=arguments.length>5?arguments[5]:void 0,v=arguments.length>6?arguments[6]:void 0;if('ios'===s.default.OS){var p,y,b,h=[],P=[];'function'==typeof o?h=[o]:Array.isArray(o)&&o.forEach((function(t,n){if(h[n]=t.onPress,'cancel'===t.style?p=String(n):'destructive'===t.style&&(y=String(n)),t.isPreferred&&(b=String(n)),t.text||n<(o||[]).length-1){var s={};s[n]=t.text||'',P.push(s)}})),l.default.alertWithArgs({title:t||'',message:n||void 0,buttons:P,type:u||void 0,defaultValue:c,cancelButtonKey:p,destructiveButtonKey:y,preferredButtonKey:b,keyboardType:f,userInterfaceStyle:(null==v?void 0:v.userInterfaceStyle)||void 0},(function(t,n){var o=h[t];o&&o(n)}))}}}])})();m.exports=u}),147,[1,12,13,33,148,149]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0])(r(d[1]));function n(){}m.exports={alertWithArgs:function(f,o){t.default&&t.default.showAlert(f,n,o||n)}}}),148,[1,149]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),149,[150]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=u?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(o,a,f):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.get('DialogManagerAndroid')}),150,[36]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=g.navigator;void 0===t?g.navigator={product:'ReactNative'}:r(d[0]).polyfillObjectProperty(t,'product',(function(){return'ReactNative'}))}),151,[93]); +__d((function(g,r,i,a,m,e,d){'use strict';var n;if(!0===g.RN$Bridgeless&&g.RN$registerCallableModule)n=g.RN$registerCallableModule;else{var t=r(d[0]);n=function(n,u){return t.registerLazyCallableModule(n,u)}}n('Systrace',(function(){return r(d[1])})),!0!==g.RN$Bridgeless&&n('JSTimers',(function(){return r(d[2])})),n('HeapCapture',(function(){return r(d[3])})),n('SamplingProfiler',(function(){return r(d[4])})),n('RCTLog',(function(){return r(d[5])})),n('RCTDeviceEventEmitter',(function(){return r(d[6]).default})),n('RCTNativeAppEventEmitter',(function(){return r(d[7])})),n('GlobalPerformanceLogger',(function(){return r(d[8])})),n('HMRClient',(function(){return r(d[9])}))}),152,[4,17,102,153,156,159,22,160,120,161]); +__d((function(g,r,i,a,m,_e,d){var e=r(d[0])(r(d[1])),t={captureHeap:function(t){var p=null;try{g.nativeCaptureHeap(t),console.log('HeapCapture.captureHeap succeeded: '+t)}catch(e){console.log('HeapCapture.captureHeap error: '+e.toString()),p=e.toString()}e.default&&e.default.captureComplete(t,p)}};m.exports=t}),153,[1,154]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),154,[155]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=o?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(u,a,f):u[a]=e[a]}return u.default=e,n&&n.set(e,u),u})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.get('JSCHeapCapture')}),155,[36]); +__d((function(g,r,i,a,m,_e,d){'use strict';var o={poke:function(o){var e=null,l=null;try{null===(l=g.pokeSamplingProfiler())?console.log('The JSC Sampling Profiler has started'):console.log('The JSC Sampling Profiler has stopped')}catch(o){console.log('Error occurred when restarting Sampling Profiler: '+o.toString()),e=o.toString()}var n=r(d[0]).default;n&&n.operationComplete(o,l,e)}};m.exports=o}),156,[157]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),157,[158]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.get('JSCSamplingProfiler')}),158,[36]); +__d((function(g,r,i,a,m,e,d){'use strict';var o={log:'log',info:'info',warn:'warn',error:'error',fatal:'error'},n=null,l={logIfNoNativeHook:function(o){for(var t=arguments.length,f=new Array(t>1?t-1:0),c=1;c1?f-1:0),v=1;v>>8)>>>0,u|=0)}}}),188,[189,191]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0])(r(d[1]));m.exports=function(n){if('object'==typeof n&&null!=n){var o=(0,r(d[2]).normalizeColorObject)(n);if(null!=o)return o}if('string'==typeof n||'number'==typeof n)return(0,t.default)(n)}}),189,[1,190,191]); +__d((function(_g,_r,i,a,m,e,d){'use strict';function r(r,n,t){return t<0&&(t+=1),t>1&&(t-=1),t<.16666666666666666?r+6*(n-r)*t:t<.5?n:t<.6666666666666666?r+(n-r)*(.6666666666666666-t)*6:r}function n(n,t,u){var s=u<.5?u*(1+t):u+t-u*t,c=2*u-s,l=r(c,s,n+.3333333333333333),o=r(c,s,n),g=r(c,s,n-.3333333333333333);return Math.round(255*l)<<24|Math.round(255*o)<<16|Math.round(255*g)<<8}function t(n,t,u){if(t+u>=1){var s=Math.round(255*t/(t+u));return s<<24|s<<16|s<<8}var c=r(0,1,n+.3333333333333333)*(1-t-u)+t,l=r(0,1,n)*(1-t-u)+t,o=r(0,1,n-.3333333333333333)*(1-t-u)+t;return Math.round(255*c)<<24|Math.round(255*l)<<16|Math.round(255*o)<<8}var u,s='[-+]?\\d*\\.?\\d+',c="[-+]?\\d*\\.?\\d+%";function l(){for(var r=arguments.length,n=new Array(r),t=0;t255?255:n}function f(r){return(parseFloat(r)%360+360)%360/360}function p(r){var n=parseFloat(r);return n<0?0:n>1?255:Math.round(255*n)}function y(r){var n=parseFloat(r);return n<0?0:n>100?1:n/100}function w(r){switch(r){case'transparent':return 0;case'aliceblue':return 4042850303;case'antiquewhite':return 4209760255;case'aqua':case'cyan':return 16777215;case'aquamarine':return 2147472639;case'azure':return 4043309055;case'beige':return 4126530815;case'bisque':return 4293182719;case'black':return 255;case'blanchedalmond':return 4293643775;case'blue':return 65535;case'blueviolet':return 2318131967;case'brown':return 2771004159;case'burlywood':return 3736635391;case'burntsienna':return 3934150143;case'cadetblue':return 1604231423;case'chartreuse':return 2147418367;case'chocolate':return 3530104575;case'coral':return 4286533887;case'cornflowerblue':return 1687547391;case'cornsilk':return 4294499583;case'crimson':return 3692313855;case'darkblue':return 35839;case'darkcyan':return 9145343;case'darkgoldenrod':return 3095792639;case'darkgray':case'darkgrey':return 2846468607;case'darkgreen':return 6553855;case'darkkhaki':return 3182914559;case'darkmagenta':return 2332068863;case'darkolivegreen':return 1433087999;case'darkorange':return 4287365375;case'darkorchid':return 2570243327;case'darkred':return 2332033279;case'darksalmon':return 3918953215;case'darkseagreen':return 2411499519;case'darkslateblue':return 1211993087;case'darkslategray':case'darkslategrey':return 793726975;case'darkturquoise':return 13554175;case'darkviolet':return 2483082239;case'deeppink':return 4279538687;case'deepskyblue':return 12582911;case'dimgray':case'dimgrey':return 1768516095;case'dodgerblue':return 512819199;case'firebrick':return 2988581631;case'floralwhite':return 4294635775;case'forestgreen':return 579543807;case'fuchsia':case'magenta':return 4278255615;case'gainsboro':return 3705462015;case'ghostwhite':return 4177068031;case'gold':return 4292280575;case'goldenrod':return 3668254975;case'gray':case'grey':return 2155905279;case'green':return 8388863;case'greenyellow':return 2919182335;case'honeydew':return 4043305215;case'hotpink':return 4285117695;case'indianred':return 3445382399;case'indigo':return 1258324735;case'ivory':return 4294963455;case'khaki':return 4041641215;case'lavender':return 3873897215;case'lavenderblush':return 4293981695;case'lawngreen':return 2096890111;case'lemonchiffon':return 4294626815;case'lightblue':return 2916673279;case'lightcoral':return 4034953471;case'lightcyan':return 3774873599;case'lightgoldenrodyellow':return 4210742015;case'lightgray':case'lightgrey':return 3553874943;case'lightgreen':return 2431553791;case'lightpink':return 4290167295;case'lightsalmon':return 4288707327;case'lightseagreen':return 548580095;case'lightskyblue':return 2278488831;case'lightslategray':case'lightslategrey':return 2005441023;case'lightsteelblue':return 2965692159;case'lightyellow':return 4294959359;case'lime':return 16711935;case'limegreen':return 852308735;case'linen':return 4210091775;case'maroon':return 2147483903;case'mediumaquamarine':return 1724754687;case'mediumblue':return 52735;case'mediumorchid':return 3126187007;case'mediumpurple':return 2473647103;case'mediumseagreen':return 1018393087;case'mediumslateblue':return 2070474495;case'mediumspringgreen':return 16423679;case'mediumturquoise':return 1221709055;case'mediumvioletred':return 3340076543;case'midnightblue':return 421097727;case'mintcream':return 4127193855;case'mistyrose':return 4293190143;case'moccasin':return 4293178879;case'navajowhite':return 4292783615;case'navy':return 33023;case'oldlace':return 4260751103;case'olive':return 2155872511;case'olivedrab':return 1804477439;case'orange':return 4289003775;case'orangered':return 4282712319;case'orchid':return 3664828159;case'palegoldenrod':return 4008225535;case'palegreen':return 2566625535;case'paleturquoise':return 2951671551;case'palevioletred':return 3681588223;case'papayawhip':return 4293907967;case'peachpuff':return 4292524543;case'peru':return 3448061951;case'pink':return 4290825215;case'plum':return 3718307327;case'powderblue':return 2967529215;case'purple':return 2147516671;case'rebeccapurple':return 1714657791;case'red':return 4278190335;case'rosybrown':return 3163525119;case'royalblue':return 1097458175;case'saddlebrown':return 2336560127;case'salmon':return 4202722047;case'sandybrown':return 4104413439;case'seagreen':return 780883967;case'seashell':return 4294307583;case'sienna':return 2689740287;case'silver':return 3233857791;case'skyblue':return 2278484991;case'slateblue':return 1784335871;case'slategray':case'slategrey':return 1887473919;case'snow':return 4294638335;case'springgreen':return 16744447;case'steelblue':return 1182971135;case'tan':return 3535047935;case'teal':return 8421631;case'thistle':return 3636451583;case'tomato':return 4284696575;case'turquoise':return 1088475391;case'violet':return 4001558271;case'wheat':return 4125012991;case'white':return 4294967295;case'whitesmoke':return 4126537215;case'yellow':return 4294902015;case'yellowgreen':return 2597139199}return null}m.exports=function(r){if('number'==typeof r)return r>>>0===r&&r>=0&&r<=4294967295?r:null;if('string'!=typeof r)return null;var u,s=h();if(u=s.hex6.exec(r))return parseInt(u[1]+'ff',16)>>>0;var c=w(r);return null!=c?c:(u=s.rgb.exec(r))?(b(u[1])<<24|b(u[2])<<16|b(u[3])<<8|255)>>>0:(u=s.rgba.exec(r))?void 0!==u[6]?(b(u[6])<<24|b(u[7])<<16|b(u[8])<<8|p(u[9]))>>>0:(b(u[2])<<24|b(u[3])<<16|b(u[4])<<8|p(u[5]))>>>0:(u=s.hex3.exec(r))?parseInt(u[1]+u[1]+u[2]+u[2]+u[3]+u[3]+'ff',16)>>>0:(u=s.hex8.exec(r))?parseInt(u[1],16)>>>0:(u=s.hex4.exec(r))?parseInt(u[1]+u[1]+u[2]+u[2]+u[3]+u[3]+u[4]+u[4],16)>>>0:(u=s.hsl.exec(r))?(255|n(f(u[1]),y(u[2]),y(u[3])))>>>0:(u=s.hsla.exec(r))?void 0!==u[6]?(n(f(u[6]),y(u[7]),y(u[8]))|p(u[9]))>>>0:(n(f(u[2]),y(u[3]),y(u[4]))|p(u[5]))>>>0:(u=s.hwb.exec(r))?(255|t(f(u[1]),y(u[2]),y(u[3])))>>>0:null}}),190,[]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.processColorObject=e.normalizeColorObject=e.PlatformColor=void 0;e.PlatformColor=function(){for(var o=arguments.length,n=new Array(o),t=0;t0)for(var M of x.positions){if(!M.endsWith('%'))return[];v.push({color:b,position:parseFloat(M)/100})}else v.push({color:b,position:null})}var I=null;if(void 0===h.direction)I=s;else if(i.test(h.direction)){var P=c(h.direction);null!=P&&(I=f(P))}else if(n.test(h.direction)){var F=u(h.direction);null!=F&&(I=F)}var w=p(v);null!=I&&(o=o.concat({type:'linearGradient',start:I.start,end:I.end,colorStops:w}))}return o};var o=t(r(d[1])),n=/^to\s+(?:top|bottom|left|right)(?:\s+(?:top|bottom|left|right))?/,i=/^([+-]?\d*\.?\d+)(deg|grad|rad|turn)$/i,s={start:{x:.5,y:0},end:{x:.5,y:1}};function l(t){for(var l,h=[],v=/linear-gradient\s*\(((?:\([^)]*\)|[^())])*)\)/gi;l=v.exec(t);){var y=l[1].split(','),x=s,b=y[0].trim().toLowerCase(),M=/\s*((?:(?:rgba?|hsla?)\s*\([^)]+\))|#[0-9a-fA-F]+|[a-zA-Z]+)(?:\s+(-?[0-9.]+%?)(?:\s+(-?[0-9.]+%?))?)?\s*/gi;if(i.test(b)){var I=c(b);if(null==I)return[];x=f(I),y.shift()}else if(n.test(b)){var P=u(b);if(null==P)return[];x=P,y.shift()}else if(!M.test(b))return[];M.lastIndex=0;for(var F=[],w=y.join(','),A=void 0;A=M.exec(w);){var S=A,_=(0,o.default)(S,4),W=_[1],j=_[2],C=_[3],G=r(d[2]).default(W.trim().toLowerCase());if(null==G)return[];if(void 0!==j){if(!j.endsWith('%'))return[];F.push({color:G,position:parseFloat(j)/100})}else F.push({color:G,position:null});if(void 0!==C){if(!C.endsWith('%'))return[];F.push({color:G,position:parseFloat(C)/100})}}var L=p(F);h.push({type:'linearGradient',start:x.start,end:x.end,colorStops:L})}return h}function u(t){switch(t.replace(/\s+/g,' ')){case'to right':return{start:{x:0,y:.5},end:{x:1,y:.5}};case'to left':return{start:{x:1,y:.5},end:{x:0,y:.5}};case'to bottom':return s;case'to top':return{start:{x:.5,y:1},end:{x:.5,y:0}};case'to bottom right':case'to right bottom':return{start:{x:0,y:0},end:{x:1,y:1}};case'to top left':case'to left top':return{start:{x:1,y:1},end:{x:0,y:0}};case'to bottom left':case'to left bottom':return{start:{x:1,y:0},end:{x:0,y:1}};case'to top right':case'to right top':return{start:{x:0,y:1},end:{x:1,y:0}};default:return null}}function f(t){var o=t%(2*Math.PI);o<0&&(o+=2*Math.PI);var n=.5+.5*Math.sin(o),i=.5-.5*Math.cos(o);return{start:{x:1-n,y:1-i},end:{x:n,y:i}}}function c(t){var n=t.match(i);if(!n)return null;var s=(0,o.default)(n,3),l=s[1],u=s[2],f=parseFloat(l);switch(u){case'deg':return f*Math.PI/180;case'grad':return f*Math.PI/200;case'rad':return f;case'turn':return 2*f*Math.PI;default:return null}}function p(t){for(var o,n=[],i=!1,s=null!=(o=t[0].position)?o:0,l=0;l0)for(var v=n[c].position,y=(n[p].position-v)/(h+1),x=1;x<=h;x++)n[c+x]={color:t[c+x].color,position:v+y*x};c=p}return n}}),194,[1,38,188]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var u=[];if(null==t)return u;if('string'==typeof t){t=t.replace(/\n/g,' ');for(var o,s=/([\w-]+)\(([^()]*|\([^()]*\)|[^()]*\([^()]*\)[^()]*)\)/g;o=s.exec(t);){var c=o[1].toLowerCase();if('drop-shadow'===c){var v=l(o[2]);if(null==v)return[];u.push({dropShadow:v})}else{var p='drop-shadow'===c?'dropShadow':'hue-rotate'===c?'hueRotate':c,h=f(p,o[2]);if(null==h)return[];var b={};b[p]=h,u.push(b)}}}else{if(!Array.isArray(t))throw new TypeError(typeof t+" filter is not a string or array");for(var w of t){var y=(0,n.default)(Object.entries(w)[0],2),N=y[0],X=y[1];if('dropShadow'===N){var Y=l(X);if(null==Y)return[];u.push({dropShadow:Y})}else{var k=f(N,X);if(null==k)return[];var x={};x[N]=k,u.push(x)}}}return u};var n=t(r(d[1])),u=t(r(d[2]));function f(t,n){var u,f;if('string'==typeof n){var l=new RegExp(/([+-]?\d*(\.\d+)?)([a-zA-Z%]+)?/g).exec(n);if(!l||isNaN(Number(l[1])))return;u=Number(l[1]),f=l[3]}else{if('number'!=typeof n)return;u=n}switch(t){case'hueRotate':if(0===u)return 0;if('deg'!==f&&'rad'!==f)return;return'rad'===f?180*u/Math.PI:u;case'blur':if(f&&'px'!==f||u<0)return;return u;case'brightness':case'contrast':case'grayscale':case'invert':case'opacity':case'saturate':case'sepia':if(f&&'%'!==f&&'px'!==f||u<0)return;return'%'===f&&(u/=100),u;default:return}}function l(t){var n,f,l='string'==typeof t?o(t):t,c={offsetX:0,offsetY:0};for(var v in l){var p=void 0;switch(v){case'offsetX':if(null==(p='string'==typeof l.offsetX?s(l.offsetX):l.offsetX))return null;n=p;break;case'offsetY':if(null==(p='string'==typeof l.offsetY?s(l.offsetY):l.offsetY))return null;f=p;break;case'standardDeviation':if(null==(p='string'==typeof l.standardDeviation?s(l.standardDeviation):l.standardDeviation)||p<0)return null;c.standardDeviation=p;break;case'color':var h=(0,u.default)(l.color);if(null==h)return null;c.color=h;break;default:return null}}return null==n||null==f?null:(c.offsetX=n,c.offsetY=f,c)}function o(t){var n,f,l={offsetX:0,offsetY:0},o=0,s=!1;for(var c of t.split(/\s+(?![^(]*\))/)){if(null==(0,u.default)(c))switch(o){case 0:n=c,o++;break;case 1:if(s)return null;f=c,o++;break;case 2:if(s)return null;l.standardDeviation=c,o++;break;default:return null}else{if(null!=l.color)return null;null!=n&&(s=!0),l.color=c}}return null==n||null==f?null:(l.offsetX=n,l.offsetY=f,l)}function s(t){var n=/([+-]?\d*(\.\d+)?)([\w\W]+)?/g.exec(t);return!n||Number.isNaN(n[1])||null!=n[3]&&'px'!==n[3]?null:Number(n[1])}}),195,[1,38,188]); +__d((function(g,r,i,a,m,e,d){'use strict';m.exports=function(t){return Array.isArray(t)?t:t.split(' ').filter(Boolean)}}),196,[]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);var u=function(t,u){var n,s=new RegExp(/([+-]?\d+(\.\d+)?)([a-zA-Z]+|%)?/g);switch(t){case'matrix':return{key:t,value:null==(n=u.match(/[+-]?\d+(\.\d+)?/g))?void 0:n.map(Number)};case'translate':case'translate3d':for(var v,l=[];v=s.exec(u);){var c=Number(v[1]),p=v[3];0===c||p||!0,'%'===p?l.push(`${c}%`):l.push(c)}return 1===l.length&&l.push(0),{key:'translate',value:l};case'translateX':case'translateY':case'perspective':var o=s.exec(u);if(null==o||!o.length)return{key:t,value:void 0};var f=Number(o[1]);o[3];return{key:t,value:f};default:return{key:t,value:isNaN(u)?u:Number(u)}}};m.exports=function(n){if('string'==typeof n){for(var s,v=new RegExp(/(\w+)\(([^)]+)\)/g),l=[];s=v.exec(n);){var c=u(s[1],s[2]),p=c.key,o=c.value;void 0!==o&&l.push(t({},p,o))}n=l}return n}}),197,[198]); +__d((function(g,_r,i,a,m,_e,d){m.exports=function(e,r,t){return(r=_r(d[0])(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e},m.exports.__esModule=!0,m.exports.default=m.exports}),198,[14]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){if('string'==typeof t){var c,l=t,u=/(top|bottom|left|right|center|\d+(?:%|px)|0)/gi,b=['50%','50%',0],p=s;e:for(;c=u.exec(l);){var k=p+1,v=c[0],h=v.toLowerCase();switch(h){case'left':case'right':(0,o.default)(p===s,'Transform-origin %s can only be used for x-position',v),b[s]='left'===h?0:'100%';break;case'top':case'bottom':if((0,o.default)(p!==f,'Transform-origin %s can only be used for y-position',v),b[n]='top'===h?0:'100%',p===s){var y=u.exec(l);if(null==y)break e;switch(y[0].toLowerCase()){case'left':b[s]=0;break;case'right':b[s]='100%';break;case'center':b[s]='50%';break;default:(0,o.default)(!1,'Could not parse transform-origin: %s',l)}k=f}break;case'center':(0,o.default)(p!==f,'Transform-origin value %s cannot be used for z-position',v),b[p]='50%';break;default:v.endsWith('%')?b[p]=v:b[p]=parseFloat(v)}p=k}t=b}return t};t(r(d[1]));var o=t(r(d[2])),s=0,n=1,f=2}),199,[1,38,20]); +__d((function(g,r,i,a,m,e,d){'use strict';var t={width:void 0,height:void 0};m.exports=function(h,n){var o=h||t,u=n||t;return o!==u&&(o.width!==u.width||o.height!==u.height)}}),200,[]); +__d((function(g,r,i,a,m,e,d){'use strict';m.exports=function(t,n){return t!==n&&(!t||!n||t[12]!==n[12]||t[13]!==n[13]||t[14]!==n[14]||t[5]!==n[5]||t[10]!==n[10]||t[0]!==n[0]||t[1]!==n[1]||t[2]!==n[2]||t[3]!==n[3]||t[4]!==n[4]||t[6]!==n[6]||t[7]!==n[7]||t[8]!==n[8]||t[9]!==n[9]||t[11]!==n[11]||t[15]!==n[15])}}),201,[]); +__d((function(g,r,i,a,m,e,d){'use strict';var t={x:void 0,y:void 0};m.exports=function(n,o){return(n=n||t)!==(o=o||t)&&(n.x!==o.x||n.y!==o.y)}}),202,[]); +__d((function(g,r,i,a,m,e,d){'use strict';var t={top:void 0,left:void 0,right:void 0,bottom:void 0};m.exports=function(o,f){return(o=o||t)!==(f=f||t)&&(o.top!==f.top||o.left!==f.left||o.right!==f.right||o.bottom!==f.bottom)}}),203,[]); +__d((function(g,r,i,a,m,e,d){'use strict';var n=r(d[0])(r(d[1]));function l(l){var u=(0,n.default)(l);return null==u?(console.error('Invalid value in color array:',l),0):u}m.exports=function(n){return null==n?null:n.map(l)}}),204,[1,188]); +__d((function(g,r,i,a,m,e,d){var t,n,u,s=r(d[0])(r(d[1])),f=[];function l(){return null!=u?u:u=s.default.getConstants().scriptURL}function o(){if(void 0===t){var n=l(),u=null==n?void 0:n.match(/^https?:\/\/.*?\//);t=u?u[0]:null}return t}function c(t){var n=t;if(null!=n){if(n.startsWith('assets://'))return null;(n=n.substring(0,n.lastIndexOf('/')+1)).includes('://')||(n='file://'+n)}return n}function v(t){if(null==t||'object'==typeof t)return t;var u=r(d[2]).getAssetByID(t);if(!u)return null;var s=new(r(d[3]))(o(),(void 0===n&&(n=c(l())),n),u);if(f)for(var v of f){var p=v(s);if(null!=p)return p}return s.defaultAsset()}v.pickScale=r(d[4]).pickScale,v.setCustomSourceTransformer=function(t){f=[t]},v.addCustomSourceTransformer=function(t){f.push(t)},m.exports=v}),205,[1,206,208,209,210]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),206,[207]); +__d((function(g,_r,_i,_a,m,_e,d){function e(t){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(e=function(e){return e?r:n})(t)}Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=(function(t,n){if(!n&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var r=e(n);if(r&&r.has(t))return r.get(t);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in t)if("default"!==f&&{}.hasOwnProperty.call(t,f)){var a=u?Object.getOwnPropertyDescriptor(t,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=t[f]}return o.default=t,r&&r.set(t,o),o})(_r(d[0])).getEnforcing('SourceCode'),n=null,r={getConstants:function(){return null==n&&(n=t.getConstants()),n}};_e.default=r}),207,[36]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=[];m.exports={registerAsset:function(s){return t.push(s)},getAssetByID:function(s){return t[s-1]}}}),208,[]); +__d((function(g,r,i,a,m,e,d){'use strict';var s=r(d[0]),t=r(d[1]);function n(s){var t=r(d[2]).pickScale(s.scales,r(d[3]).default.get()),n=1===t?'':'@'+t+'x';return r(d[4]).getBasePath(s)+'/'+s.name+n+'.'+s.type}var l=(function(){return t((function t(n,l,o){s(this,t),this.serverUrl=n,this.jsbundleUrl=l,this.asset=o}),[{key:"isLoadedFromServer",value:function(){return!!this.serverUrl}},{key:"isLoadedFromFileSystem",value:function(){var s;return null!=this.jsbundleUrl&&(null==(s=this.jsbundleUrl)?void 0:s.startsWith('file://'))}},{key:"defaultAsset",value:function(){return this.isLoadedFromServer()?this.assetServerURL():null!=this.asset.resolver?this.getAssetUsingResolver(this.asset.resolver):this.isLoadedFromFileSystem()?this.drawableFolderInBundle():this.resourceIdentifierWithoutScale()}},{key:"getAssetUsingResolver",value:function(s){switch(s){case'android':return this.isLoadedFromFileSystem()?this.drawableFolderInBundle():this.resourceIdentifierWithoutScale();case'generic':return this.scaledAssetURLNearBundle();default:throw new Error("Don't know how to get asset via provided resolver: "+s+'\nAsset: '+JSON.stringify(this.asset,null,'\t')+'\nPossible resolvers are:'+JSON.stringify(['android','generic'],null,'\t'))}}},{key:"assetServerURL",value:function(){return r(d[5])(null!=this.serverUrl,'need server to load from'),this.fromSource(this.serverUrl+n(this.asset)+"?platform=android&hash="+this.asset.hash)}},{key:"scaledAssetPath",value:function(){return this.fromSource(n(this.asset))}},{key:"scaledAssetURLNearBundle",value:function(){var s,t=null!=(s=this.jsbundleUrl)?s:'file://';return this.fromSource(t+n(this.asset).replace(/\.\.\//g,'_'))}},{key:"resourceIdentifierWithoutScale",value:function(){return r(d[5])(!0,'resource identifiers work on Android'),this.fromSource(r(d[4]).getAndroidResourceIdentifier(this.asset))}},{key:"drawableFolderInBundle",value:function(){var s,t,n,l=null!=(s=this.jsbundleUrl)?s:'file://';return this.fromSource(l+(t=this.asset,n=r(d[2]).pickScale(t.scales,r(d[3]).default.get()),r(d[4]).getAndroidResourceFolderName(t,n)+'/'+r(d[4]).getAndroidResourceIdentifier(t)+'.'+t.type))}},{key:"fromSource",value:function(s){return{__packager_asset:!0,width:this.asset.width,height:this.asset.height,uri:s,scale:r(d[2]).pickScale(this.asset.scales,r(d[3]).default.get())}}}])})();l.pickScale=r(d[2]).pickScale,m.exports=l}),209,[12,13,210,211,215,20]); +__d((function(g,r,_i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.getUrlCacheBreaker=function(){if(null==t)return'';return t},e.pickScale=function(n,t){for(var l=null!=t?t:u.default.get(),c=0;c=l)return n[c];return n[n.length-1]||1},e.setUrlCacheBreaker=function(n){t=n};var t,u=n(r(d[1]))}),210,[1,211]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=t(r(d[1])),n=t(r(d[2])),o=(function(){function t(){(0,u.default)(this,t)}return(0,n.default)(t,null,[{key:"get",value:function(){return r(d[3]).default.get('window').scale}},{key:"getFontScale",value:function(){return r(d[3]).default.get('window').fontScale||t.get()}},{key:"getPixelSizeForLayoutSize",value:function(u){return Math.round(u*t.get())}},{key:"roundToNearestPixel",value:function(u){var n=t.get();return Math.round(u*n)/n}},{key:"startDetecting",value:function(){}}])})();e.default=o}),211,[1,12,13,212]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n,l=t(r(d[1])),s=t(r(d[2])),c=t(r(d[3])),u=t(r(d[4])),o=t(r(d[5])),f=t(r(d[6])),h=new u.default,w=!1,v=(function(){return(0,s.default)((function t(){(0,l.default)(this,t)}),null,[{key:"get",value:function(t){return(0,f.default)(n[t],'No dimension set for key '+t),n[t]}},{key:"set",value:function(t){var l=t.screen,s=t.window,c=t.windowPhysicalPixels;c&&(s={width:c.width/c.scale,height:c.height/c.scale,scale:c.scale,fontScale:c.fontScale});var u=t.screenPhysicalPixels;u?l={width:u.width/u.scale,height:u.height/u.scale,scale:u.scale,fontScale:u.fontScale}:null==l&&(l=s),n={window:s,screen:l},w?h.emit('change',n):w=!0}},{key:"addEventListener",value:function(t,n){return(0,f.default)('change'===t,'Trying to subscribe to unknown event: "%s"',t),h.addListener(t,n)}}])})();c.default.addListener('didUpdateDimensions',(function(t){v.set(t)})),v.set(o.default.getConstants().Dimensions);e.default=v}),212,[1,12,13,22,30,213,20]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),213,[214]); +__d((function(g,_r,_i,_a,m,_e,d){function e(t){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(e=function(e){return e?r:n})(t)}Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=(function(t,n){if(!n&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var r=e(n);if(r&&r.has(t))return r.get(t);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in t)if("default"!==f&&{}.hasOwnProperty.call(t,f)){var a=u?Object.getOwnPropertyDescriptor(t,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=t[f]}return o.default=t,r&&r.set(t,o),o})(_r(d[0])).getEnforcing('DeviceInfo'),n=null,r={getConstants:function(){return null==n&&(n=t.getConstants()),n}};_e.default=r}),214,[36]); +__d((function(g,r,i,a,m,e,d){'use strict';var t={.75:'ldpi',1:'mdpi',1.5:'hdpi',2:'xhdpi',3:'xxhdpi',4:'xxxhdpi'};function n(n){if(n.toString()in t)return t[n.toString()];if(Number.isFinite(n)&&n>0)return Math.round(160*n)+'dpi';throw new Error('no such scale '+n.toString())}var o=new Set(['gif','jpeg','jpg','ktx','png','svg','webp','xml']);function s(t){var n=t.httpServerLocation;return n.startsWith('/')?n.slice(1):n}m.exports={getAndroidResourceFolderName:function(s,u){if(!o.has(s.type))return'raw';var c=n(u);if(!c)throw new Error("Don't know which android drawable suffix to use for scale: "+u+'\nAsset: '+JSON.stringify(s,null,'\t')+'\nPossible scales are:'+JSON.stringify(t,null,'\t'));return'drawable-'+c},getAndroidResourceIdentifier:function(t){return(s(t)+'/'+t.name).toLowerCase().replace(/\//g,'_').replace(/([^a-z0-9_])/g,'').replace(/^assets_/,'')},getBasePath:s}}),215,[]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.customDirectEventTypes=e.customBubblingEventTypes=void 0,e.get=function(t){var o;if(l.has(t))o=l.get(t);else{var s=u.get(t);'function'!=typeof s&&(0,n.default)(!1,'View config getter callback for component `%s` must be a function (received `%s`).%s',t,null===s?'null':typeof s,'string'==typeof t[0]&&/[a-z]/.test(t[0])?' Make sure to start component names with a capital letter.':''),c(o=s()),l.set(t,o),u.set(t,null)}return(0,n.default)(o,'View config not found for name %s',t),o},e.register=function(t,o){return(0,n.default)(!u.has(t),'Tried to register two views with the same name %s',t),(0,n.default)('function'==typeof o,'View config getter callback for component `%s` must be a function (received `%s`)',t,null===o?'null':typeof o),u.set(t,o),t};var n=t(r(d[1])),o=e.customBubblingEventTypes={},s=e.customDirectEventTypes={},u=new Map,l=new Map;function c(t){var n=t.bubblingEventTypes,u=t.directEventTypes;if(null!=n)for(var l in n)null==o[l]&&(o[l]=n[l]);if(null!=u)for(var c in u)null==s[c]&&(s[c]=u[c])}}),216,[1,20]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.stringifyValidationResult=function(t,u){var s=u.differences;return[`StaticViewConfigValidator: Invalid static view config for '${t}'.`,''].concat((0,n.default)(s.map((function(t){var n=t.type,u=t.path;switch(n){case'missing':return`- '${u.join('.')}' is missing.`;case'unequal':return`- '${u.join('.')}' is the wrong value.`}}))),['']).join('\n')},e.validate=function(t,n,s){var l=[];if(u(l,[],{bubblingEventTypes:n.bubblingEventTypes,directEventTypes:n.directEventTypes,uiViewClassName:n.uiViewClassName,validAttributes:n.validAttributes},{bubblingEventTypes:s.bubblingEventTypes,directEventTypes:s.directEventTypes,uiViewClassName:s.uiViewClassName,validAttributes:s.validAttributes}),0===l.length)return{type:'valid'};return{type:'invalid',differences:l}};var n=t(r(d[1]));function u(t,l,v,c){for(var o in v){var p=v[o];if(c.hasOwnProperty(o)){var f=c[o],y=s(p);if(null!=y){var b=s(f);if(null!=b){l.push(o),u(t,l,y,b),l.pop();continue}}p!==f&&t.push({path:[].concat((0,n.default)(l),[o]),type:'unequal',nativeValue:p,staticValue:f})}else t.push({path:[].concat((0,n.default)(l),[o]),type:'missing',nativeValue:p})}}function s(t){return'object'!=typeof t||Array.isArray(t)?null:t}}),217,[1,6]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.createViewConfig=function(t){return{uiViewClassName:t.uiViewClassName,Commands:{},bubblingEventTypes:u(n.default.bubblingEventTypes,t.bubblingEventTypes),directEventTypes:u(n.default.directEventTypes,t.directEventTypes),validAttributes:u(n.default.validAttributes,t.validAttributes)}};var n=t(r(d[1]));function u(t,n){var u;return null==t||null==n?null!=(u=null!=t?t:n)?u:{}:Object.assign({},t,n)}}),218,[1,219]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=t(r(d[1])).default;e.default=u}),219,[1,220]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(r(d[1])),o={topAccessibilityAction:{registrationName:'onAccessibilityAction'},onGestureHandlerEvent:(0,r(d[2]).DynamicallyInjectedByGestureHandler)({registrationName:'onGestureHandlerEvent'}),onGestureHandlerStateChange:(0,r(d[2]).DynamicallyInjectedByGestureHandler)({registrationName:'onGestureHandlerStateChange'}),topContentSizeChange:{registrationName:'onContentSizeChange'},topScrollBeginDrag:{registrationName:'onScrollBeginDrag'},topMessage:{registrationName:'onMessage'},topSelectionChange:{registrationName:'onSelectionChange'},topLoadingFinish:{registrationName:'onLoadingFinish'},topMomentumScrollEnd:{registrationName:'onMomentumScrollEnd'},topLoadingStart:{registrationName:'onLoadingStart'},topLoadingError:{registrationName:'onLoadingError'},topMomentumScrollBegin:{registrationName:'onMomentumScrollBegin'},topScrollEndDrag:{registrationName:'onScrollEndDrag'},topScroll:{registrationName:'onScroll'},topLayout:{registrationName:'onLayout'}},l={backgroundColor:{process:r(d[3]).default},transform:!0,transformOrigin:!0,experimental_backgroundImage:{process:r(d[4]).default},boxShadow:{process:r(d[5]).default},filter:{process:r(d[6]).default},experimental_mixBlendMode:!0,isolation:!0,opacity:!0,elevation:!0,shadowColor:{process:r(d[3]).default},zIndex:!0,renderToHardwareTextureAndroid:!0,testID:!0,nativeID:!0,accessibilityLabelledBy:!0,accessibilityLabel:!0,accessibilityHint:!0,accessibilityRole:!0,accessibilityCollection:!0,accessibilityCollectionItem:!0,accessibilityState:!0,accessibilityActions:!0,accessibilityValue:!0,importantForAccessibility:!0,role:!0,rotation:!0,scaleX:!0,scaleY:!0,translateX:!0,translateY:!0,accessibilityLiveRegion:!0,width:!0,minWidth:!0,collapsable:!0,collapsableChildren:!0,maxWidth:!0,height:!0,minHeight:!0,maxHeight:!0,flex:!0,flexGrow:!0,rowGap:!0,columnGap:!0,gap:!0,flexShrink:!0,flexBasis:!0,aspectRatio:!0,flexDirection:!0,flexWrap:!0,alignSelf:!0,alignItems:!0,alignContent:!0,justifyContent:!0,overflow:!0,display:!0,margin:!0,marginBlock:!0,marginBlockEnd:!0,marginBlockStart:!0,marginBottom:!0,marginEnd:!0,marginHorizontal:!0,marginInline:!0,marginInlineEnd:!0,marginInlineStart:!0,marginLeft:!0,marginRight:!0,marginStart:!0,marginTop:!0,marginVertical:!0,padding:!0,paddingBlock:!0,paddingBlockEnd:!0,paddingBlockStart:!0,paddingBottom:!0,paddingEnd:!0,paddingHorizontal:!0,paddingInline:!0,paddingInlineEnd:!0,paddingInlineStart:!0,paddingLeft:!0,paddingRight:!0,paddingStart:!0,paddingTop:!0,paddingVertical:!0,borderWidth:!0,borderStartWidth:!0,borderEndWidth:!0,borderTopWidth:!0,borderBottomWidth:!0,borderLeftWidth:!0,borderRightWidth:!0,start:!0,end:!0,left:!0,right:!0,top:!0,bottom:!0,inset:!0,insetBlock:!0,insetBlockEnd:!0,insetBlockStart:!0,insetInline:!0,insetInlineEnd:!0,insetInlineStart:!0,position:!0,style:n.default,experimental_layoutConformance:!0},s={directEventTypes:o,bubblingEventTypes:{topChange:{phasedRegistrationNames:{captured:'onChangeCapture',bubbled:'onChange'}},topSelect:{phasedRegistrationNames:{captured:'onSelectCapture',bubbled:'onSelect'}},topTouchEnd:{phasedRegistrationNames:{captured:'onTouchEndCapture',bubbled:'onTouchEnd'}},topTouchCancel:{phasedRegistrationNames:{captured:'onTouchCancelCapture',bubbled:'onTouchCancel'}},topTouchStart:{phasedRegistrationNames:{captured:'onTouchStartCapture',bubbled:'onTouchStart'}},topTouchMove:{phasedRegistrationNames:{captured:'onTouchMoveCapture',bubbled:'onTouchMove'}},topPointerCancel:{phasedRegistrationNames:{captured:'onPointerCancelCapture',bubbled:'onPointerCancel'}},topPointerDown:{phasedRegistrationNames:{captured:'onPointerDownCapture',bubbled:'onPointerDown'}},topPointerEnter:{phasedRegistrationNames:{captured:'onPointerEnterCapture',bubbled:'onPointerEnter',skipBubbling:!0}},topPointerLeave:{phasedRegistrationNames:{captured:'onPointerLeaveCapture',bubbled:'onPointerLeave',skipBubbling:!0}},topPointerMove:{phasedRegistrationNames:{captured:'onPointerMoveCapture',bubbled:'onPointerMove'}},topPointerUp:{phasedRegistrationNames:{captured:'onPointerUpCapture',bubbled:'onPointerUp'}},topPointerOut:{phasedRegistrationNames:{captured:'onPointerOutCapture',bubbled:'onPointerOut'}},topPointerOver:{phasedRegistrationNames:{captured:'onPointerOverCapture',bubbled:'onPointerOver'}},topClick:{phasedRegistrationNames:{captured:'onClickCapture',bubbled:'onClick'}}},validAttributes:Object.assign({},l,{onLayout:!0,onMoveShouldSetResponder:!0,onMoveShouldSetResponderCapture:!0,onStartShouldSetResponder:!0,onStartShouldSetResponderCapture:!0,onResponderGrant:!0,onResponderReject:!0,onResponderStart:!0,onResponderEnd:!0,onResponderRelease:!0,onResponderMove:!0,onResponderTerminate:!0,onResponderTerminationRequest:!0,onShouldBlockNativeResponder:!0,onTouchStart:!0,onTouchMove:!0,onTouchEnd:!0,onTouchCancel:!0,onClick:!0,onClickCapture:!0,onPointerEnter:!0,onPointerEnterCapture:!0,onPointerLeave:!0,onPointerLeaveCapture:!0,onPointerMove:!0,onPointerMoveCapture:!0,onPointerOut:!0,onPointerOutCapture:!0,onPointerOver:!0,onPointerOverCapture:!0})};e.default=s}),220,[1,192,221,188,194,187,195]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.ConditionallyIgnoredEventHandlers=function(n){if('ios'===t.default.OS)return n;return},e.DynamicallyInjectedByGestureHandler=function(n){return u.add(n),n},e.isIgnored=function(n){if('object'==typeof n&&null!=n)return u.has(n);return!1};var t=n(r(d[1])),u=new WeakSet}),221,[1,33]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default=function(n){var o={};return n.supportedCommands.forEach((function(n){o[n]=function(o){for(var t=arguments.length,u=new Array(t>1?t-1:0),f=1;f2?s-2:0),l=2;l directly")}}),229,[38,198,230,178,231,237,238,239,240,241,235,232,233]); +__d((function(g,r,i,a,m,e,d){m.exports=function(t){if(null==t)throw new TypeError("Cannot destructure "+t)},m.exports.__esModule=!0,m.exports.default=m.exports}),230,[]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.StyleSheet=void 0,e.StyleSheet={getGlobalStyle:function(t){return(0,r(d[0]).getStyle)(t)},register:function(){throw new Error("Not yet implemented")},registerCompiled:function(t){return(0,r(d[0]).injectData)(t)},getFlag:function(t){var n;return null==(n=r(d[1]).flags.get(t))?void 0:n.toString()}}}),231,[232,234]); +__d((function(g,r,i,a,m,e,d){"use strict";var t,s=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.getUniversalVariable=e.VariableContext=e.opaqueStyles=void 0,e.getStyle=v,e.getOpaqueStyles=function(t,s){var n=e.opaqueStyles.get(t);if(!n)return[t];if("RemappedClassName"===n[r(d[5]).StyleRuleSetSymbol])return n.classNames.map((function(t){return v(t,s)}));if(n)return[n];return[]},e.getAnimation=function(t,s){var n=u.get(t);n||u.set(t,n=(0,r(d[3]).observable)(void 0));return n.get(s)},e.getVariable=_,e.resetData=function(){o.clear(),b.clear(),u.clear(),r(d[4]).warnings.clear(),f.clear(),c.clear(),r(d[6]).colorScheme[r(d[7]).INTERNAL_RESET](l.Appearance),r(d[6]).isReduceMotionEnabled[r(d[7]).INTERNAL_RESET](),r(d[7]).rem.set(14)},e.injectData=function(t){t.rules&&Object.assign(p,t.rules);for(var n of b)y(n);if(t.keyframes)for(var l of t.keyframes){var o=u.get(l[0]);o?o.set(l[1]):u.set(l[0],(0,r(d[3]).observable)(l[1]))}if(t.rootVariables)for(var v of Object.entries(t.rootVariables)){var _=c.get(v[0]);_?_.set(v[1]):c.set(v[0],(0,r(d[6]).cssVariableObservable)(v[1],{name:v[0]}))}if(t.universalVariables)for(var S of Object.entries(t.universalVariables)){var V=f.get(S[0]);V?V.set(S[1]):f.set(S[0],(0,r(d[6]).cssVariableObservable)(S[1]))}if(r(d[4]).flags.set("enabled","true"),t.flags)for(var w of Object.entries(t.flags)){var R=s(w,2),E=R[0],M=R[1];r(d[4]).flags.set(E,M)}t.rem&&r(d[7]).rem.set(t.rem)};var n=r(d[1]),l=r(d[2]);null!=(t=g).__css_interop||(t.__css_interop={styles:new Map,keyframes:new Map,rootVariables:new Map,universalVariables:new Map});var o=g.__css_interop.styles,u=g.__css_interop.keyframes,c=g.__css_interop.rootVariables,f=g.__css_interop.universalVariables,b=new Set;function v(t,s){b.has(t)||(b.add(t),y(t));var n=o.get(t);n||o.set(t,n=(0,r(d[3]).observable)(void 0));var l=n.get(s),u=null==l?void 0:l.warnings;return u&&(r(d[4]).warnings.has(t)||r(d[4]).warnings.set(t,u)),l}function _(t,s,n){if(s){var l=s instanceof Map?s.get(t):s[t];return l&&"object"==typeof l&&"get"in l?l.get(n):l}}e.opaqueStyles=new WeakMap,e.VariableContext=(0,n.createContext)(c);e.getUniversalVariable=function(t,s){return _(t,f,s)};var p={};function y(t){var s,n,l=o.get(t),u=p[t];u&&(u[r(d[5]).StyleRuleSetSymbol]=!0,null==(s=u.n)||s.forEach((function(t){t[r(d[5]).StyleRuleSymbol]=!0})),null==(n=u.i)||n.forEach((function(t){t[r(d[5]).StyleRuleSymbol]=!0})),l?l.set(u):o.set(t,(0,r(d[3]).observable)(u)))}}),232,[38,178,2,233,234,235,237,238]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.observable=function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},f=t.fallback,o=t.name,c=new Set;return{name:o,get:function(t){return t&&(c.add(t),t.dependencies.add((function(){return c.delete(t)}))),null!=n?n:null==f?void 0:f.get(t)},set:function(t){if(!Object.is(t,n))for(var f of(n=t,Array.from(c)))f.run()}}},e.cleanupEffect=function(n){for(var t of Array.from(n.dependencies))t();n.dependencies.clear()}}),233,[]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.containerContext=e.flags=e.warnings=void 0;var n=r(d[0]);e.warnings=new Map,e.flags=new Map,e.containerContext=(0,n.createContext)({})}),234,[178]); +__d((function(g,r,i,a,m,e,d){"use strict";var t=r(d[0]),n=r(d[1]);Object.defineProperty(e,"__esModule",{value:!0}),e.transformKeys=e.inlineSpecificity=e.SpecificityIndex=e.STYLE_SCOPES=e.DEFAULT_CONTAINER_NAME=e.PLACEHOLDER_SYMBOL=e.StyleRuleSymbol=e.StyleRuleSetSymbol=e.INTERNAL_FLAGS=e.INTERNAL_SET=e.INTERNAL_RESET=void 0,e.isDescriptorFunction=function(t){return Array.isArray(t)&&"object"==typeof t[0]&&!Array.isArray(t[0])},e.isDescriptorArray=function(t){if(Array.isArray(t))return"object"!=typeof t[0]||Array.isArray(t[0]);return!1},e.isRuntimeDescriptor=function(t){return!("object"!=typeof t||!Array.isArray(t))||"object"!=typeof t},e.assignToTarget=function s(o,y,f){var c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"==typeof y&&r(d[2]).ShorthandSymbol in y)return y.map((function(t){var y=Array.from(Array.isArray(f)?f:f.target),l=t[0];"string"==typeof l?y.splice(-1,1,l):y.splice.apply(y,[-1,1].concat(n(l))),s(o,t[1],y,c)}));var l,A=c.arrayMergeStyle,S=void 0===A?"push":A,u=c.objectMergeStyle,p=void 0===u?"assign":u,b=c.allowTransformMerging,E=void 0!==b&&b,L=c.reverseTransformPush,N=void 0!==L&&L,T=Array.isArray(f)?f:f.target;if(0===T.length)return void Object.assign(o,y);for(var _=0;_1&&void 0!==arguments[1]?arguments[1]:{},o=n.name,l=(0,r(d[2]).observable)(null==t?void 0:t.light,{name:`${o}#light`}),c=(0,r(d[2]).observable)(null==t?void 0:t.dark,{name:`${o}#dark`,fallback:l});return{name:o,get:function(t){return"light"===e.colorScheme.get(t)?l.get(t):c.get(t)},set:function(t){"object"==typeof t&&t?("dark"in t&&c.set(t.dark),"light"in t&&l.set(t.light)):(l.set(t),c.set(t))}}};var l=r(d[1]);e.systemColorScheme=(0,r(d[2]).observable)(null!=(t=l.Appearance.getColorScheme())?t:"light");var c=(0,r(d[2]).observable)(void 0);e.colorScheme=o({set:function(t){"system"===t?h.setColorScheme(null):h.setColorScheme(t)},get:function(t){var n;return null!=(n=c.get(t))?n:e.systemColorScheme.get(t)},getSystem:function(t){var n;return null!=(n=c.get(t))?n:e.systemColorScheme.get(t)},toggle:function(){var t,n=c.get();void 0===n&&(n=null!=(t=h.getColorScheme())?t:"light"),e.colorScheme.set("light"===n?"dark":"light")}},r(d[3]).INTERNAL_RESET,(function(t){c.set(void 0),v(t,l.AppState)}));var s,u,h=l.Appearance;function v(t,n){var o,c;h=t,null==(o=s)||o.remove(),null==(c=u)||c.remove(),s=h.addChangeListener((function(t){var n;"active"===l.AppState.currentState&&e.systemColorScheme.set(null!=(n=t.colorScheme)?n:"light")})),u=n.addEventListener("change",(function(t){if("active"===t){var n,o=null!=(n=h.getColorScheme())?n:"light";e.systemColorScheme.set(o)}}))}v(h,l.AppState),e.isReduceMotionEnabled=Object.assign((0,r(d[2]).observable)(!1,{name:"isReduceMotionEnabled"}),o({},r(d[3]).INTERNAL_RESET,(function(){return e.isReduceMotionEnabled.set(!1)}))),null==(n=l.AccessibilityInfo.isReduceMotionEnabled())||n.then(e.isReduceMotionEnabled.set),l.AccessibilityInfo.addEventListener("reduceMotionChanged",(function(t){e.isReduceMotionEnabled.set(t)}))}),237,[198,2,233,235]); +__d((function(g,r,i,a,m,e,d){"use strict";var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.vh=e.vw=e.INTERNAL_RESET=e.rem=void 0;var n=r(d[1]);e.rem=(0,r(d[2]).observable)(14),Object.defineProperty(e,"INTERNAL_RESET",{enumerable:!0,get:function(){return r(d[3]).INTERNAL_RESET}});var o,E=(0,r(d[2]).observable)(n.Dimensions.get("window"),{name:"viewport"}),s=function(t){var n;E.set(t.get("window")),null==(n=o)||n.remove(),o=t.addEventListener("change",(function(t){return E.set(t.window)}))};s(n.Dimensions),e.vw=t(t({get:function(t){return E.get(t).width}},r(d[3]).INTERNAL_RESET,s),r(d[3]).INTERNAL_SET,(function(t){var n=E.get();t!==n.width&&E.set(Object.assign({},n,{width:t}))})),e.vh=t(t({get:function(t){return E.get(t).height}},r(d[3]).INTERNAL_RESET,s),r(d[3]).INTERNAL_SET,(function(t){var n=E.get();t!==n.height&&E.set(Object.assign({},n,{height:t}))}))}),238,[198,2,233,235]); +__d((function(g,r,i,a,m,e,d){"use strict";var t=r(d[0]);function o(o){if(o)return Object.entries(o).map((function(o){var n=t(o,2),v=n[0],p=n[1];return[v,!0===p?[v]:p.split(".")]}))}Object.defineProperty(e,"__esModule",{value:!0}),e.getNormalizeConfig=function(n){var v=[];for(var p of Object.entries(n)){var u=t(p,2),f=u[0],l=u[1],s=void 0,c=void 0,y=void 0,P=void 0;l&&(!0===l?s=[f]:"string"==typeof l?s=[l]:!1===l.target?(s=[f],y=f,P=o(l.nativeStyleToProp)):(s=!0===l.target?[f]:l.target.split("."),P=o(l.nativeStyleToProp)),1===s.length&&s[0]!==f&&(c=s[0]),v.push({nativeStyleToProp:P,source:f,target:s,inlineProp:c,propToRemove:y}))}return v}}),239,[38]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getComponentType=function(o){var n;switch(typeof o){case"function":case"object":return"$$typeof"in o&&o.$$typeof===t?"forwardRef":null!=(n=o.prototype)&&n.isReactComponent?"class":typeof o;default:return"unknown"}};var t=Symbol.for("react.forward_ref")}),240,[]); +__d((function(g,r,i,_a,m,e,d){"use strict";var n=r(d[0]),a=r(d[1]),t=r(d[2]),o=r(d[3]);Object.defineProperty(e,"__esModule",{value:!0}),e.interop=function(n,a,t,v){var p=(0,s.useContext)(r(d[6]).VariableContext),y=(0,s.useContext)(r(d[7]).containerContext),h=Object.assign({},t),b=(0,s.useState)({initialRender:!0,originalProps:t,props:{},canUpgradeWarn:!1,animated:r(d[8]).UpgradeState.NONE,containers:r(d[8]).UpgradeState.NONE,variables:r(d[8]).UpgradeState.NONE,pressable:r(d[8]).UpgradeState.NONE})[0],T={sharedState:b,containers:y,props:h,variables:p};function S(n,a){switch(a.type){case"rerender-declarations":case"new-declarations":var t=u(n,T,a);return Object.is(t,n)?n:f(t,T);case"styles":return f(n,T)}}var N=[],O=function(){var n=(0,s.useReducer)(S,{dispatch:function(n){return l(n)},reducer:S,config:P,className:null==h?void 0:h[P.source]},c),a=o(n,2),t=a[0],l=a[1];b.initialRender||(t.declarationTracking.guards.some((function(n){return n(T)}))?l({type:"new-declarations",className:null==h?void 0:h[P.source]}):t.styleTracking.guards.some((function(n){return n(T)}))&&l({type:"styles"})),N.push(t),null==h||delete h[t.config.source]};for(var P of a)O();var I=(0,s.useMemo)((function(){var a=void 0,t={},o={},s={},c=!1;for(var u of N)if(Object.assign(o,u.props),u.variables&&(a||(a={}),Object.assign(a,u.variables)),void 0!==u.containerNames)if(!1===u.containerNames)c=!0;else if(!c){for(var f of u.containerNames)t[f]=b;t[r(d[9]).DEFAULT_CONTAINER_NAME]=b}(b.active&&(s.onPressIn=function(n){var a;null==(a=b.originalProps)||null==a.onPressIn||a.onPressIn(n),b.active.set(!0)},s.onPressOut=function(n){var a;null==(a=b.originalProps)||null==a.onPressOut||a.onPressOut(n),b.active.set(!1)}),b.hover&&(s.onHoverIn=function(n){var a;null==(a=b.originalProps)||null==a.onHoverIn||a.onHoverIn(n),b.hover.set(!0)},s.onHoverOut=function(n){var a;null==(a=b.originalProps)||null==a.onHoverOut||a.onHoverOut(n),b.hover.set(!1)}),b.focus&&(s.onFocus=function(n){var a;null==(a=b.originalProps)||null==a.onFocus||a.onFocus(n),b.focus.set(!0)},s.onBlur=function(n){var a;null==(a=b.originalProps)||null==a.onBlur||a.onBlur(n),b.focus.set(!1)}),(b.active||b.hover||b.focus)&&(n===l.View&&(b.pressable||(b.pressable=r(d[8]).UpgradeState.SHOULD_UPGRADE)),s.onPress=function(n){var a;null==(a=b.originalProps)||null==a.onPress||a.onPress(n)}),b.layout||b.containers)&&(null!=b.layout||(b.layout=(0,r(d[10]).observable)([0,0])),s.onLayout=function(n){var a;null==(a=b.originalProps)||null==a.onLayout||a.onLayout(n);var t=n.nativeEvent.layout,o=b.layout.get();t.width===o[0]&&t.height===o[0]||b.layout.set([t.width,t.height])});return{possiblyAnimatedProps:o,handlers:s,variables:a,containers:b.containers&&!c?t:void 0}}),N),A=(0,s.useMemo)((function(){return Object.assign({},p instanceof Map?Object.fromEntries(p.entries()):p,I.variables)}),[p,I.variables]),w=(0,s.useMemo)((function(){return I.containers?Object.assign({},y,I.containers):y}),[y,I.containers]);return(0,s.useEffect)((function(){return function(){for(var n of N)(0,r(d[10]).cleanupEffect)(n.declarationTracking.effect),(0,r(d[10]).cleanupEffect)(n.styleTracking.effect)}}),[]),b.originalProps=t,b.initialRender=!1,(0,r(d[8]).renderComponent)(n,b,Object.assign({},h,I.handlers,{ref:v}),I.possiblyAnimatedProps,A,w)};var s=r(d[4]),l=r(d[5]);function c(n){var a=n.dispatch,t=n.config,o=n.reducer,s=n.className;return o({config:t,className:s,props:{},normal:[],important:[],currentRenderAnimation:{},declarationTracking:{effect:{dependencies:new Set,run:function(){return a({type:"rerender-declarations"})}},guards:[]},styleTracking:{effect:{dependencies:new Set,run:function(){return a({type:"styles"})}},guards:[]}},{type:"new-declarations",className:s})}function u(n,a,t){var o,s,l=n.config;(0,r(d[10]).cleanupEffect)(n.declarationTracking.effect);var c=Object.assign({},n,{normal:[],important:[],currentRenderAnimation:{},containerNames:void 0,variables:void 0,inline:(0,r(d[11]).getTarget)(a.props,l),declarationTracking:{effect:n.declarationTracking.effect,guards:[],previous:null==(o=a.props)?void 0:o[l.source]},transition:n.transition?Object.assign({},M):void 0});"new-declarations"===t.type&&(c.className=t.className),c.declarationTracking.guards.push((function(n){var a;return!Object.is(null==(a=n.props)?void 0:a[l.source],c.className)||!Object.is((0,r(d[11]).getTarget)(n.props,l),c.inline)}));var u,f,v=[],p=[];if(c.className)for(var y of c.className.split(/\s+/)){var h=(0,r(d[6]).getStyle)(y,c.declarationTracking.effect);h&&(b(a.sharedState,h),I(c,a,h,v,"n"),I(c,a,h,p,"i"))}return l.inlineProp&&null!=(s=a.props)&&s[l.inlineProp]&&A(c,a,a.props[l.inlineProp],c.declarationTracking.effect,v,p),c.normal=v.filter(Boolean).sort(P).flatMap((function(n){return r(d[9]).StyleRuleSymbol in n?n.d:n})),c.important=p.filter(Boolean).sort(P).flatMap((function(n){return r(d[9]).StyleRuleSymbol in n?n.d:n})),n.className===c.className&&n.inline===c.inline&&S(n.normal,c.normal)&&S(n.important,c.important)&&(u=n.variables,f=c.variables,u&&f&&S(Object.values(u),Object.values(f)))&&N(n.containerNames,c.containerNames)?n:c}function f(n,a){(0,r(d[10]).cleanupEffect)(n.styleTracking.effect),n=Object.assign({},n,{props:{},styleTracking:{effect:n.styleTracking.effect,guards:[]}});var t=[],o=new Set;for(var s of(O(n,a,n.normal,t),v(n,a,o),O(n,a,n.important,t),t))s();return y(n,a,o),h(n,o),T(n.props,n.config),n}function v(n,s,l){var c,u;if(null!=(c=n.currentRenderAnimation)&&null!=(c=c.name)&&c.length){null!=n.sharedValues||(n.sharedValues=new Map),null!=n.animationNames||(n.animationNames=new Set),null!=n.props||(n.props={});var f=n.props,v=n.currentRenderAnimation,y=v.name,h=v.duration,b=void 0===h?w.duration:h,T=v.delay,S=void 0===T?w.delay:T,N=v.timingFunction,O=void 0===N?w.timingFunction:N,P=v.iterationCount,I=void 0===P?w.iterationCount:P,A=n.previousAnimation||{},M=A.name,E=void 0===M?[]:M,R=A.duration,j=void 0===R?w.duration:R,V=A.delay,x=void 0===V?w.delay:V,L=A.timingFunction,U=void 0===L?w.timingFunction:L,C=A.iterationCount,H=void 0===C?w.iterationCount:C,D=n.isWaitingLayout,F=r(d[12]),_=F.makeMutable,B=F.withRepeat,W=F.withSequence,q=D||k(E,y)||k(j,b)||k(x,S)||k(U,O)||k(H,I),$=[];for(var G of y){if("none"===G.type){p(n);break}$.push(G.value),0!==n.animationNames.size&&n.animationNames.has(G.value)||(q=!0)}if(q){n.animationNames.clear(),n.isWaitingLayout=!1;for(var z=function(){var o,c=$[Y%$.length];n.animationNames.add(c);var u=(0,r(d[6]).getAnimation)(c,n.styleTracking.effect);if(!u)return 1;var v=O[Y%O.length],p=(null==(o=u.easingFunctions)?void 0:o.map((function(n){return"!PLACEHOLDER!"===n.type?v:n})))||v,y=(0,r(d[11]).timeToMS)(b[Y%c.length]),h=(0,r(d[11]).timeToMS)(S[Y%S.length]),T=I[Y%I.length];for(var N of u.frames){var P=N[0],A=N[1],w=["style",P];if(!l.has(P)){l.add(P);var M=(0,r(d[11]).resolveAnimation)(n,s,A,P,h,y,p),k=t(M),E=k[0],R=k.slice(1);if(u.requiresLayoutWidth||u.requiresLayoutHeight){var j,V,x=u.requiresLayoutWidth&&void 0===(null==(j=f.style)?void 0:j.width)&&0===(0,r(d[11]).getWidth)(n,s,n.styleTracking),L=u.requiresLayoutHeight&&void 0===(null==(V=f.style)?void 0:V.height)&&0===(0,r(d[11]).getHeight)(n,s,n.styleTracking);(x||L)&&(n.isWaitingLayout=!0)}var U=n.sharedValues.get(P);U?U.value=E:(U=_(E),n.sharedValues.set(P,U)),U.value=B(W.apply(void 0,a(R)),"infinite"===T.type?-1:T.value),(0,r(d[9]).assignToTarget)(f,U,w,{allowTransformMerging:!0})}}},Y=$.length-1;Y>=0;Y--)z()}else for(var J of $){var K=(0,r(d[6]).getAnimation)(J,n.styleTracking.effect);if(K)for(var Q of K.frames){var X=o(Q,1)[0];(0,r(d[9]).assignToTarget)(f,n.sharedValues.get(X),["style",X],{allowTransformMerging:!0}),l.add(X)}}}else null!=(u=n.animationNames)&&u.size&&p(n)}function p(n){if(n.animationNames)for(var a of n.animationNames){var t=(0,r(d[6]).getAnimation)(a,n.styleTracking.effect);if(t){null!=n.sharedValues||(n.sharedValues=new Map);var s=r(d[12]).cancelAnimation;for(var l of t.frames){var c=o(l,1)[0],u=r(d[11]).defaultValues[c];"function"==typeof u&&(u=u(n.styleTracking.effect));var f=n.sharedValues.get(c);f&&s(f)}}}}function y(n,a,t){if(n.transition){null!=n.sharedValues||(n.sharedValues=new Map),null!=n.props||(n.props={});var o=n.props,s=n.transition,l=s.property,c=s.duration,u=s.delay,f=s.timingFunction,v=r(d[12]),p=v.makeMutable,y=v.withTiming,h=v.withDelay,b=v.Easing;if(0!==l.length&&!l.includes("none"))for(var T=0;T2&&void 0!==arguments[2]&&arguments[2];o.removeListener(t+n),g._notifyAboutEnd(t,s)};return t.__closure={TAG_OFFSET:n},t.__workletHash=5503355398871,t.__initData=u,t})(),c={code:"function createLayoutAnimationManager_reactNativeReanimated_animationsManagerTs3(){const{LayoutAnimationType,makeMutableUI,stopObservingProgress,withStyleAnimation,startObservingProgress}=this.__closure;const currentAnimationForTag=new Map();const mutableValuesForTag=new Map();return{start:function(tag,type,yogaValues,config){if(type===LayoutAnimationType.SHARED_ELEMENT_TRANSITION_PROGRESS){global.ProgressTransitionRegister.onTransitionStart(tag,yogaValues);return;}const style=config(yogaValues);let currentAnimation=style.animations;const previousAnimation=currentAnimationForTag.get(tag);if(previousAnimation){currentAnimation={...previousAnimation,...style.animations};}currentAnimationForTag.set(tag,currentAnimation);let value=mutableValuesForTag.get(tag);if(value===undefined){value=makeMutableUI(style.initialValues);mutableValuesForTag.set(tag,value);}else{stopObservingProgress(tag,value);value._value=style.initialValues;}const animation=withStyleAnimation(currentAnimation);animation.callback=function(finished){if(finished){currentAnimationForTag.delete(tag);mutableValuesForTag.delete(tag);const shouldRemoveView=type===LayoutAnimationType.EXITING;stopObservingProgress(tag,value,shouldRemoveView);}style.callback&&style.callback(finished===undefined?false:finished);};startObservingProgress(tag,value,type);value.value=animation;},stop:function(tag){const value=mutableValuesForTag.get(tag);if(!value){return;}stopObservingProgress(tag,value);}};}"},_=(function(){var t=function(){var t=new Map,n=new Map;return{start:function(o,u,c,_){if(u!==r(d[0]).LayoutAnimationType.SHARED_ELEMENT_TRANSITION_PROGRESS){var T=_(c),v=T.animations,y=t.get(o);y&&(v=Object.assign({},y,T.animations)),t.set(o,v);var A=n.get(o);void 0===A?(A=(0,r(d[1]).makeMutableUI)(T.initialValues),n.set(o,A)):(l(o,A),A._value=T.initialValues);var f=(0,r(d[2]).withStyleAnimation)(v);f.callback=function(s){if(s){t.delete(o),n.delete(o);var c=u===r(d[0]).LayoutAnimationType.EXITING;l(o,A,c)}T.callback&&T.callback(void 0!==s&&s)},s(o,A,u),A.value=f}else g.ProgressTransitionRegister.onTransitionStart(o,c)},stop:function(t){var o=n.get(t);o&&l(t,o)}}};return t.__closure={LayoutAnimationType:r(d[0]).LayoutAnimationType,makeMutableUI:r(d[1]).makeMutableUI,stopObservingProgress:l,withStyleAnimation:r(d[2]).withStyleAnimation,startObservingProgress:s},t.__workletHash=9529680266919,t.__initData=c,t})(),T={code:"function reactNativeReanimated_animationsManagerTs4(){const{createLayoutAnimationManager}=this.__closure;global.LayoutAnimationsManager=createLayoutAnimationManager();}"};(0,r(d[3]).runOnUIImmediately)(((t=function(){g.LayoutAnimationsManager=_()}).__closure={createLayoutAnimationManager:_},t.__workletHash=8793185565378,t.__initData=T,t))()}),246,[247,248,307,266]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.isWorkletFunction=e.SharedTransitionType=e.SensorType=e.ReduceMotion=e.LayoutAnimationType=e.KeyboardState=e.InterfaceOrientation=e.IOSReferenceFrame=void 0;e.LayoutAnimationType=(function(t){return t[t.ENTERING=1]="ENTERING",t[t.EXITING=2]="EXITING",t[t.LAYOUT=3]="LAYOUT",t[t.SHARED_ELEMENT_TRANSITION=4]="SHARED_ELEMENT_TRANSITION",t[t.SHARED_ELEMENT_TRANSITION_PROGRESS=5]="SHARED_ELEMENT_TRANSITION_PROGRESS",t})({}),e.SharedTransitionType=(function(t){return t.ANIMATION="animation",t.PROGRESS_ANIMATION="progressAnimation",t})({});var t={code:"function isWorkletFunction_reactNativeReanimated_commonTypesTs1(value){return(typeof value==='function'&&!!value.__workletHash);}"};e.isWorkletFunction=(function(){var n=function(t){return'function'==typeof t&&!!t.__workletHash};return n.__closure={},n.__workletHash=1314228105291,n.__initData=t,n})(),e.SensorType=(function(t){return t[t.ACCELEROMETER=1]="ACCELEROMETER",t[t.GYROSCOPE=2]="GYROSCOPE",t[t.GRAVITY=3]="GRAVITY",t[t.MAGNETIC_FIELD=4]="MAGNETIC_FIELD",t[t.ROTATION=5]="ROTATION",t})({}),e.IOSReferenceFrame=(function(t){return t[t.XArbitraryZVertical=0]="XArbitraryZVertical",t[t.XArbitraryCorrectedZVertical=1]="XArbitraryCorrectedZVertical",t[t.XMagneticNorthZVertical=2]="XMagneticNorthZVertical",t[t.XTrueNorthZVertical=3]="XTrueNorthZVertical",t[t.Auto=4]="Auto",t})({}),e.InterfaceOrientation=(function(t){return t[t.ROTATION_0=0]="ROTATION_0",t[t.ROTATION_90=90]="ROTATION_90",t[t.ROTATION_180=180]="ROTATION_180",t[t.ROTATION_270=270]="ROTATION_270",t})({}),e.KeyboardState=(function(t){return t[t.UNKNOWN=0]="UNKNOWN",t[t.OPENING=1]="OPENING",t[t.OPEN=2]="OPEN",t[t.CLOSING=3]="CLOSING",t[t.CLOSED=4]="CLOSED",t})({}),e.ReduceMotion=(function(t){return t.System="system",t.Always="always",t.Never="never",t})({})}),247,[]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.makeMutableUI=e.makeMutable=void 0;var t=(0,r(d[0]).shouldBeUseWeb)();function n(){0}function u(){0}var l={code:"function addCompilerSafeGetAndSet_reactNativeReanimated_mutablesTs1(mutable){Object.defineProperties(mutable,{get:{value:function(){return mutable.value;},configurable:false,enumerable:false},set:{value:function(newValue){if(typeof newValue==='function'&&!newValue.__isAnimationDefinition){mutable.value=newValue(mutable.value);}else{mutable.value=newValue;}},configurable:false,enumerable:false}});}"},o=(function(){var t=function(t){Object.defineProperties(t,{get:{value:function(){return t.value},configurable:!1,enumerable:!1},set:{value:(function(t){function n(n){return t.apply(this,arguments)}return n.toString=function(){return t.toString()},n})((function(n){'function'!=typeof n||n.__isAnimationDefinition?t.value=n:t.value=n(t.value)})),configurable:!1,enumerable:!1}})};return t.__closure={},t.__workletHash=3090637828732,t.__initData=l,t})(),s={code:"function hideInternalValueProp_reactNativeReanimated_mutablesTs2(mutable){Object.defineProperty(mutable,'_value',{configurable:false,enumerable:false});}"},c=(function(){var t=function(t){Object.defineProperty(t,'_value',{configurable:!1,enumerable:!1})};return t.__closure={},t.__workletHash=6485490150831,t.__initData=s,t})(),f={code:"function makeMutableUI_reactNativeReanimated_mutablesTs3(initial){const{valueSetter,hideInternalValueProp,addCompilerSafeGetAndSet}=this.__closure;const listeners=new Map();let value=initial;const mutable={get value(){return value;},set value(newValue){valueSetter(mutable,newValue);},get _value(){return value;},set _value(newValue){value=newValue;listeners.forEach(function(listener){listener(newValue);});},modify:function(modifier,forceUpdate=true){valueSetter(mutable,modifier!==undefined?modifier(value):value,forceUpdate);},addListener:function(id,listener){listeners.set(id,listener);},removeListener:function(id){listeners.delete(id);},_animation:null,_isReanimatedSharedValue:true};hideInternalValueProp(mutable);addCompilerSafeGetAndSet(mutable);return mutable;}"},v=e.makeMutableUI=(function(){var t=function(t){var n=new Map,u=t,l={get value(){return u},set value(t){(0,r(d[2]).valueSetter)(l,t)},get _value(){return u},set _value(t){u=t,n.forEach((function(n){n(t)}))},modify:function(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];(0,r(d[2]).valueSetter)(l,void 0!==t?t(u):u,n)},addListener:function(t,u){n.set(t,u)},removeListener:function(t){n.delete(t)},_animation:null,_isReanimatedSharedValue:!0};return c(l),o(l),l};return t.__closure={valueSetter:r(d[2]).valueSetter,hideInternalValueProp:c,addCompilerSafeGetAndSet:o},t.__workletHash=707446125789,t.__initData=f,t})(),_={code:"function reactNativeReanimated_mutablesTs4(){const{makeMutableUI,initial}=this.__closure;return makeMutableUI(initial);}"},b={code:"function reactNativeReanimated_mutablesTs5(sv){return sv.value;}"},h={code:"function reactNativeReanimated_mutablesTs6(){const{mutable,newValue}=this.__closure;mutable.value=newValue;}"},p={code:"function reactNativeReanimated_mutablesTs7(){const{mutable,modifier,forceUpdate}=this.__closure;mutable.modify(modifier,forceUpdate);}"};e.makeMutable=t?function(t){var l=t,s=new Map,f={get value(){return n(),l},set value(t){u(),(0,r(d[2]).valueSetter)(f,t)},get _value(){return l},set _value(t){l=t,s.forEach((function(n){n(t)}))},modify:function(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];(0,r(d[2]).valueSetter)(f,void 0!==t?t(f.value):f.value,n)},addListener:function(t,n){s.set(t,n)},removeListener:function(t){s.delete(t)},_isReanimatedSharedValue:!0};return c(f),o(f),f}:function(t){var l,s=(0,r(d[3]).makeShareableCloneRecursive)({__init:(l=function(){return v(t)},l.__closure={makeMutableUI:v,initial:t},l.__workletHash=3966278464115,l.__initData=_,l)}),f={get value(){var t;return n(),(0,r(d[4]).executeOnUIRuntimeSync)(((t=function(t){return t.value}).__closure={},t.__workletHash=9106207498854,t.__initData=b,t))(f)},set value(t){var n;u(),(0,r(d[4]).runOnUI)(((n=function(){f.value=t}).__closure={mutable:f,newValue:t},n.__workletHash=0xe5827801102,n.__initData=h,n))()},get _value(){throw new(r(d[5]).ReanimatedError)('Reading from `_value` directly is only possible on the UI runtime. Perhaps you passed an Animated Style to a non-animated component?')},set _value(t){throw new(r(d[5]).ReanimatedError)('Setting `_value` directly is only possible on the UI runtime. Perhaps you want to assign to `value` instead?')},modify:function(t){var n,u=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];(0,r(d[4]).runOnUI)(((n=function(){f.modify(t,u)}).__closure={mutable:f,modifier:t,forceUpdate:u},n.__workletHash=0xf0d1f206964,n.__initData=p,n))()},addListener:function(){throw new(r(d[5]).ReanimatedError)('Adding listeners is only possible on the UI runtime.')},removeListener:function(){throw new(r(d[5]).ReanimatedError)('Removing listeners is only possible on the UI runtime.')},_isReanimatedSharedValue:!0};return c(f),o(f),r(d[6]).shareableMappingCache.set(f,s),f}}),248,[249,250,253,254,266,256,255]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.isAndroid=function(){return'android'===t.Platform.OS},e.isChromeDebugger=u,e.isFabric=function(){return!!g._IS_FABRIC},e.isJest=o,e.isReact19=function(){return n.version.startsWith('19.')},e.isWeb=s,e.isWindowAvailable=function(){return'undefined'!=typeof window},e.shouldBeUseWeb=function(){return o()||u()||s()||'windows'===t.Platform.OS};var n=r(d[0]),t=r(d[1]);function o(){return!!process.env.JEST_WORKER_ID}function u(){return!(g.nativeCallSyncHook&&!g.__REMOTEDEV__||g.RN$Bridgeless)}function s(){return'web'===t.Platform.OS}}),249,[178,2]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),Object.keys(r(d[0])).forEach((function(t){"default"!==t&&"__esModule"!==t&&(t in e&&e[t]===r(d[0])[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return r(d[0])[t]}}))})),Object.keys(r(d[1])).forEach((function(t){"default"!==t&&"__esModule"!==t&&(t in e&&e[t]===r(d[1])[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return r(d[1])[t]}}))}))}),250,[251,252]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.addLogBoxLog=void 0;var o,n,l=r(d[0]).LogBox;e.addLogBoxLog=null!=(o=null==l||null==(n=l.addLog)?void 0:n.bind(l))?o:function(){}}),251,[2]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.LogLevel=e.DEFAULT_LOGGER_CONFIG=void 0,e.logToLogBoxAndConsole=function(o){(0,r(d[0]).addLogBoxLog)(o),s(o)},e.updateLoggerConfig=e.replaceLoggerImplementation=e.registerLoggerConfig=e.logger=void 0;var o="If you don't want to see this message, you can disable the `strict` mode. Refer to:\nhttps://docs.swmansion.com/react-native-reanimated/docs/debugging/logger-configuration for more details.",t=e.LogLevel=(function(o){return o[o.warn=1]="warn",o[o.error=2]="error",o})({}),n={code:"function logToConsole_reactNativeReanimated_loggerTs1(data){switch(data.level){case'warn':console.warn(data.message.content);break;case'error':case'fatal':case'syntax':console.error(data.message.content);break;}}"},s=(function(){var o=function(o){switch(o.level){case'warn':console.warn(o.message.content);break;case'error':case'fatal':case'syntax':console.error(o.message.content)}};return o.__closure={},o.__workletHash=8210553843770,o.__initData=n,o})(),c=e.DEFAULT_LOGGER_CONFIG={logFunction:s,level:t.warn,strict:!0},l={code:"function formatMessage_reactNativeReanimated_loggerTs2(message){return\"[Reanimated] \"+message;}"},_=(function(){var o=function(o){return`[Reanimated] ${o}`};return o.__closure={},o.__workletHash=0xd659afaceb7,o.__initData=l,o})(),u={code:"function createLog_reactNativeReanimated_loggerTs3(level,message){const{formatMessage}=this.__closure;const formattedMessage=formatMessage(message);return{level:level,message:{content:formattedMessage,substitutions:[]},category:formattedMessage,componentStack:[],componentStackType:null,stack:new Error().stack};}"},f=(function(){var o=function(o,t){var n=_(t);return{level:o,message:{content:n,substitutions:[]},category:n,componentStack:[],componentStackType:null,stack:(new Error).stack}};return o.__closure={formatMessage:_},o.__workletHash=0xe4987d379bc,o.__initData=u,o})();var v,L,p={code:"function registerLoggerConfig_reactNativeReanimated_loggerTs4(config){global.__reanimatedLoggerConfig=config;}"},C=e.registerLoggerConfig=(function(){var o=function(o){g.__reanimatedLoggerConfig=o};return o.__closure={},o.__workletHash=0xd06c250252f,o.__initData=p,o})(),h={code:"function replaceLoggerImplementation_reactNativeReanimated_loggerTs5(logFunction){const{registerLoggerConfig}=this.__closure;registerLoggerConfig({...global.__reanimatedLoggerConfig,logFunction:logFunction});}"},w=(e.replaceLoggerImplementation=(function(){var o=function(o){C(Object.assign({},g.__reanimatedLoggerConfig,{logFunction:o}))};return o.__closure={registerLoggerConfig:C},o.__workletHash=0xe3dcff3d64b,o.__initData=h,o})(),{code:"function updateLoggerConfig_reactNativeReanimated_loggerTs6(options){const{registerLoggerConfig,DEFAULT_LOGGER_CONFIG}=this.__closure;var _options$level,_options$strict;registerLoggerConfig({...global.__reanimatedLoggerConfig,level:(_options$level=options===null||options===void 0?void 0:options.level)!==null&&_options$level!==void 0?_options$level:DEFAULT_LOGGER_CONFIG.level,strict:(_options$strict=options===null||options===void 0?void 0:options.strict)!==null&&_options$strict!==void 0?_options$strict:DEFAULT_LOGGER_CONFIG.strict});}"}),E=(e.updateLoggerConfig=(function(){var o=function(o){var t,n;C(Object.assign({},g.__reanimatedLoggerConfig,{level:null!=(t=null==o?void 0:o.level)?t:c.level,strict:null!=(n=null==o?void 0:o.strict)?n:c.strict}))};return o.__closure={registerLoggerConfig:C,DEFAULT_LOGGER_CONFIG:c},o.__workletHash=8817718149339,o.__initData=w,o})(),{code:"function handleLog_reactNativeReanimated_loggerTs7(level,message,options){const{LogLevel,DOCS_REFERENCE,createLog}=this.__closure;const config=global.__reanimatedLoggerConfig;if(options.strict&&!config.strict||LogLevel[level]1&&void 0!==arguments[1]?arguments[1]:{})},L.__closure={handleLog:R},L.__workletHash=5002261531216,L.__initData=F,L),error:(v=function(o){R('error',o,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{})},v.__closure={handleLog:R},v.__workletHash=0xbcb3b16a971,v.__initData=b,v)}}),252,[251]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.valueSetter=void 0;var t={code:"function valueSetter_reactNativeReanimated_valueSetterTs1(mutable,value,forceUpdate=false){const previousAnimation=mutable._animation;if(previousAnimation){previousAnimation.cancelled=true;mutable._animation=null;}if(typeof value==='function'||value!==null&&typeof value==='object'&&value.onFrame!==undefined){const animation=typeof value==='function'?value():value;if(mutable._value===animation.current&&!animation.isHigherOrder&&!forceUpdate){animation.callback&&animation.callback(true);return;}const initializeAnimation=function(timestamp){animation.onStart(animation,mutable.value,timestamp,previousAnimation);};const currentTimestamp=global.__frameTimestamp||global._getAnimationTimestamp();initializeAnimation(currentTimestamp);const step=function(newTimestamp){const timestamp=newTimestamp<(animation.timestamp||0)?animation.timestamp:newTimestamp;if(animation.cancelled){animation.callback&&animation.callback(false);return;}const finished=animation.onFrame(animation,timestamp);animation.finished=true;animation.timestamp=timestamp;mutable._value=animation.current;if(finished){animation.callback&&animation.callback(true);}else{requestAnimationFrame(step);}};mutable._animation=animation;step(currentTimestamp);}else{if(mutable._value===value&&!forceUpdate){return;}mutable._value=value;}}"};e.valueSetter=(function(){var n=function(t,n){var l,o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],u=t._animation;if(u&&(u.cancelled=!0,t._animation=null),'function'==typeof n||null!==n&&'object'==typeof n&&void 0!==n.onFrame){var c='function'==typeof n?n():n;if(t._value===c.current&&!c.isHigherOrder&&!o)return void(c.callback&&c.callback(!0));var s=g.__frameTimestamp||g._getAnimationTimestamp();l=s,c.onStart(c,t.value,l,u);var v=function(n){var l=n<(c.timestamp||0)?c.timestamp:n;if(c.cancelled)c.callback&&c.callback(!1);else{var o=c.onFrame(c,l);c.finished=!0,c.timestamp=l,t._value=c.current,o?c.callback&&c.callback(!0):requestAnimationFrame(v)}};t._animation=c,v(s)}else{if(t._value===n&&!o)return;t._value=n}};return n.__closure={},n.__workletHash=0x93b869c9528,n.__initData=t,n})()}),253,[]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.makeShareableCloneRecursive=e.makeShareableCloneOnUIRecursive=e.makeShareable=void 0;var n=t(r(d[1])),o=(0,r(d[2]).shouldBeUseWeb)(),c='REANIMATED_MAGIC_KEY',u={code:"function isHostObject_reactNativeReanimated_shareablesTs1(value){const{MAGIC_KEY}=this.__closure;return MAGIC_KEY in value;}"},s=(function(){var t=function(t){return c in t};return t.__closure={MAGIC_KEY:c},t.__workletHash=0x9e5276d7e8d,t.__initData=u,t})();function l(t){return Object.getPrototypeOf(t)===Object.prototype}function _(t){var n=r(d[3]).shareableMappingCache.get(t);return n===r(d[3]).shareableMappingFlag?t:n}var f,h,v={code:"function reactNativeReanimated_shareablesTs2(){return new Proxy({},{get:function(_,prop){if(prop==='_isReanimatedSharedValue'||prop==='__remoteFunction'){return false;}throw new ReanimatedError(\"Trying to access property `\"+String(prop)+\"` of an object which cannot be sent to the UI runtime.\");},set:function(){throw new ReanimatedError('Trying to write to an object which cannot be sent to the UI runtime.');}});}"},b={__init:(f=function(){return new Proxy({},{get:function(t,n){if('_isReanimatedSharedValue'===n||'__remoteFunction'===n)return!1;throw new(r(d[4]).ReanimatedError)(`Trying to access property \`${String(n)}\` of an object which cannot be sent to the UI runtime.`)},set:function(){throw new(r(d[4]).ReanimatedError)('Trying to write to an object which cannot be sent to the UI runtime.')}})},f.__closure={},f.__workletHash=662766982118,f.__initData=v,f)},p=['Int8Array','Uint8Array','Uint8ClampedArray','Int16Array','Uint16Array','Int32Array','Uint32Array','Float32Array','Float64Array','BigInt64Array','BigUint64Array','DataView'];var k=e.makeShareableCloneRecursive=o?function(t){return t}:function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;y(t,o);var c='function'==typeof t;if(!('object'==typeof t)&&!c||null===t)return C(t,n);var u=_(t);return void 0!==u?u:Array.isArray(t)?w(t,n,o):c&&!(0,r(d[5]).isWorkletFunction)(t)?R(t,n):s(t)?A(t,n):l(t)&&t.__workletContextObjectFactory?E(t):(l(t)||c)&&(0,r(d[5]).isWorkletFunction)(t)?S(t,n,o):l(t)||c?D(t,n,o):t instanceof RegExp?I(t):t instanceof Error?F(t):t instanceof ArrayBuffer?N(t,n):ArrayBuffer.isView(t)?x(t):H(t)};function y(t,n){if(n>=30){if(30===n)h=t;else if(t===h)throw new(r(d[4]).ReanimatedError)('Trying to convert a cyclic object to a shareable. This is not supported.')}else h=void 0}function C(t,n){return r(d[6]).WorkletsModule.makeShareableClone(t,n)}function w(t,n,o){var c=t.map((function(t){return k(t,n,o+1)})),u=r(d[6]).WorkletsModule.makeShareableClone(c,n,t);return r(d[3]).shareableMappingCache.set(t,u),r(d[3]).shareableMappingCache.set(u),B(t),u}function R(t,n){var o=r(d[6]).WorkletsModule.makeShareableClone(t,n,t);return r(d[3]).shareableMappingCache.set(t,o),r(d[3]).shareableMappingCache.set(o),B(t),o}function A(t,n){var o=r(d[6]).WorkletsModule.makeShareableClone(t,n,t);return r(d[3]).shareableMappingCache.set(t,o),r(d[3]).shareableMappingCache.set(o),o}function S(t,o,c){t.__stackDetails&&delete t.__stackDetails;var u={};for(var s of(u.__initData=k(t.__initData,!0,c+1),Object.entries(t))){var l=(0,n.default)(s,2),_=l[0],f=l[1];'__initData'===_&&void 0!==u.__initData||(u[_]=k(f,o,c+1))}var h=r(d[6]).WorkletsModule.makeShareableClone(u,!0,t);return r(d[3]).shareableMappingCache.set(t,h),r(d[3]).shareableMappingCache.set(h),B(t),h}var M={code:"function reactNativeReanimated_shareablesTs3(){const{workletContextObjectFactory}=this.__closure;return workletContextObjectFactory();}"};function E(t){var n,o=t.__workletContextObjectFactory,c=k({__init:(n=function(){return o()},n.__closure={workletContextObjectFactory:o},n.__workletHash=741691373305,n.__initData=M,n)});return r(d[3]).shareableMappingCache.set(t,c),c}function D(t,o,c){var u={};for(var s of Object.entries(t)){var l=(0,n.default)(s,2),_=l[0],f=l[1];'__initData'===_&&void 0!==u.__initData||(u[_]=k(f,o,c+1))}var h=r(d[6]).WorkletsModule.makeShareableClone(u,o,t);return r(d[3]).shareableMappingCache.set(t,h),r(d[3]).shareableMappingCache.set(h),B(t),h}var j={code:"function reactNativeReanimated_shareablesTs4(){const{pattern,flags}=this.__closure;return new RegExp(pattern,flags);}"};function I(t){var n,o=t.source,c=t.flags,u=k({__init:(n=function(){return new RegExp(o,c)},n.__closure={pattern:o,flags:c},n.__workletHash=0xcdeecb2d2bf,n.__initData=j,n)});return r(d[3]).shareableMappingCache.set(t,u),u}var O={code:"function reactNativeReanimated_shareablesTs5(){const{name,message,stack}=this.__closure;const error=new Error();error.name=name;error.message=message;error.stack=stack;return error;}"};function F(t){var n,o=t.name,c=t.message,u=t.stack,s=k({__init:(n=function(){var t=new Error;return t.name=o,t.message=c,t.stack=u,t},n.__closure={name:o,message:c,stack:u},n.__workletHash=0xe7d49d3b20a,n.__initData=O,n)});return r(d[3]).shareableMappingCache.set(t,s),s}function N(t,n){var o=r(d[6]).WorkletsModule.makeShareableClone(t,n,t);return r(d[3]).shareableMappingCache.set(t,o),r(d[3]).shareableMappingCache.set(o),o}var U={code:"function reactNativeReanimated_shareablesTs6(){const{VALID_ARRAY_VIEWS_NAMES,typeName,buffer}=this.__closure;if(!VALID_ARRAY_VIEWS_NAMES.includes(typeName)){throw new ReanimatedError(\"[Reanimated] Invalid array view name `\"+typeName+\"`.\");}const constructor=global[typeName];if(constructor===undefined){throw new ReanimatedError(\"[Reanimated] Constructor for `\"+typeName+\"` not found.\");}return new constructor(buffer);}"};function x(t){var n,o=t.buffer,c=t.constructor.name,u=k({__init:(n=function(){if(!p.includes(c))throw new(r(d[4]).ReanimatedError)(`[Reanimated] Invalid array view name \`${c}\`.`);var t=g[c];if(void 0===t)throw new(r(d[4]).ReanimatedError)(`[Reanimated] Constructor for \`${c}\` not found.`);return new t(o)},n.__closure={VALID_ARRAY_VIEWS_NAMES:p,typeName:c,buffer:o},n.__workletHash=0xf586f7e61cd,n.__initData=U,n)});return r(d[3]).shareableMappingCache.set(t,u),u}function H(t){var n=k(b);return r(d[3]).shareableMappingCache.set(t,n),n}var T={code:"function isRemoteFunction_reactNativeReanimated_shareablesTs7(value){return!!value.__remoteFunction;}"},W=(function(){var t=function(t){return!!t.__remoteFunction};return t.__closure={},t.__workletHash=0xe7e5387862b,t.__initData=T,t})();function B(t){}var V={code:"function makeShareableCloneOnUIRecursive_reactNativeReanimated_shareablesTs8(value){const{SHOULD_BE_USE_WEB,isHostObject,isRemoteFunction}=this.__closure;if(SHOULD_BE_USE_WEB){return value;}function cloneRecursive(value){if(typeof value==='object'&&value!==null||typeof value==='function'){if(isHostObject(value)){return global._makeShareableClone(value,undefined);}if(isRemoteFunction(value)){return value.__remoteFunction;}if(Array.isArray(value)){return global._makeShareableClone(value.map(cloneRecursive),undefined);}const toAdapt={};for(const[key,element]of Object.entries(value)){toAdapt[key]=cloneRecursive(element);}return global._makeShareableClone(toAdapt,value);}return global._makeShareableClone(value,undefined);}return cloneRecursive(value);}"};e.makeShareableCloneOnUIRecursive=(function(){var t=function(t){if(o)return t;return(function t(o){if('object'==typeof o&&null!==o||'function'==typeof o){if(s(o))return g._makeShareableClone(o,void 0);if(W(o))return o.__remoteFunction;if(Array.isArray(o))return g._makeShareableClone(o.map(t),void 0);var c={};for(var u of Object.entries(o)){var l=(0,n.default)(u,2),_=l[0],f=l[1];c[_]=t(f)}return g._makeShareableClone(c,o)}return g._makeShareableClone(o,void 0)})(t)};return t.__closure={SHOULD_BE_USE_WEB:o,isHostObject:s,isRemoteFunction:W},t.__workletHash=0xba0b6a4663d,t.__initData=V,t})();var Y={code:"function reactNativeReanimated_shareablesTs9(){const{value}=this.__closure;return value;}"};e.makeShareable=o?function(t){return t}:function(t){if(r(d[3]).shareableMappingCache.get(t))return t;var n,o=k({__init:(n=function(){return t},n.__closure={value:t},n.__workletHash=0xe97af18bdd2,n.__initData=Y,n)});return r(d[3]).shareableMappingCache.set(t,o),t}}),254,[1,38,249,255,256,247,257,250]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.shareableMappingFlag=e.shareableMappingCache=void 0;var n=(0,r(d[0]).shouldBeUseWeb)(),l=e.shareableMappingFlag=Symbol('shareable flag'),t=n?null:new WeakMap;e.shareableMappingCache=n?{set:function(){},get:function(){return null}}:{set:function(n,s){t.set(n,s||l)},get:t.get.bind(t)}}),255,[249]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.registerReanimatedError=e.ReanimatedError=void 0,e.registerWorkletStackDetails=function(t,n){l.set(t,n)},e.reportFatalErrorOnJS=function(t){var n=t.message,o=t.stack,s=new Error;s.message=n,s.stack=o?f(o):void 0,s.name='ReanimatedError',s.jsEngine='reanimated',g.ErrorUtils.reportFatalError(s)};var n,o=t(r(d[1])),s={code:"function ReanimatedError_reactNativeReanimated_errorsTs1(message){const prefix='[Reanimated]';const errorInstance=new Error(message?prefix+\" \"+message:prefix);errorInstance.name='ReanimatedError';return errorInstance;}"},u=e.ReanimatedError=((n=function(t){var n='[Reanimated]',o=new Error(t?`${n} ${t}`:n);return o.name='ReanimatedError',o}).__closure={},n.__workletHash=9724124290349,n.__initData=s,n),c={code:"function registerReanimatedError_reactNativeReanimated_errorsTs2(){const{ReanimatedErrorConstructor}=this.__closure;if(!_WORKLET){throw new Error('[Reanimated] registerReanimatedError() must be called on Worklet runtime');}global.ReanimatedError=ReanimatedErrorConstructor;}"},l=(e.registerReanimatedError=(function(){var t=function(){if(!_WORKLET)throw new Error('[Reanimated] registerReanimatedError() must be called on Worklet runtime');g.ReanimatedError=u};return t.__closure={ReanimatedErrorConstructor:u},t.__workletHash=0x9e1aaaff08c,t.__initData=c,t})(),new Map);function E(t){var n,s=null==(n=t.stack)||null==(n=n.split('\n'))?void 0:n[0];if(s){var u=/@([^@]+):(\d+):(\d+)/.exec(s);if(u){var c=(0,o.default)(u,4),l=c[1],E=c[2],f=c[3];return[l,Number(E),Number(f)]}}return['unknown',0,0]}function f(t){var n=t.match(/worklet_(\d+):(\d+):(\d+)/g),s=t;return null==n||n.forEach((function(t){var n=t.split(/:|_/).map(Number),u=(0,o.default)(n,4),c=u[1],f=u[2],_=u[3],R=l.get(c);if(R){var v=(0,o.default)(R,3),w=v[0],k=v[1],p=v[2],b=E(w),h=(0,o.default)(b,3),x=h[0],N=f+h[1]+k,W=_+h[2]+p;s=s.replace(t,`${x}:${N}:${W}`)}})),s}}),256,[1,38]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"WorkletsModule",{enumerable:!0,get:function(){return r(d[0]).WorkletsModule}})}),257,[258]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"WorkletsModule",{enumerable:!0,get:function(){return r(d[0]).WorkletsModule}})}),258,[259]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.WorkletsModule=void 0;e.WorkletsModule=(0,r(d[0]).shouldBeUseWeb)()?(0,r(d[1]).createJSWorkletsModule)():(0,r(d[2]).createNativeWorkletsModule)()}),259,[249,260,261]); +__d((function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.createJSWorkletsModule=function(){return new o};var t=n(r(d[1])),l=n(r(d[2]));var o=(function(){return(0,l.default)((function n(){(0,t.default)(this,n)}),[{key:"makeShareableClone",value:function(){throw new(r(d[3]).ReanimatedError)('makeShareableClone should never be called in JSWorklets.')}}])})()}),260,[1,12,13,256]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.createNativeWorkletsModule=function(){return new s};var o=t(r(d[1])),l=t(r(d[2])),n=t(r(d[3]));var u=(0,t(r(d[4])).default)("workletsModuleProxy"),s=(function(){return(0,l.default)((function t(){if((0,o.default)(this,t),Object.defineProperty(this,u,{writable:!0,value:void 0}),void 0===g.__workletsModuleProxy){var l=(0,r(d[5]).getValueUnpackerCode)();null==r(d[6]).WorkletsTurboModule||r(d[6]).WorkletsTurboModule.installTurboModule(l)}if(void 0===g.__workletsModuleProxy)throw new(r(d[7]).ReanimatedError)("Native part of Reanimated doesn't seem to be initialized (Worklets).\nSee https://docs.swmansion.com/react-native-reanimated/docs/guides/troubleshooting#native-part-of-reanimated-doesnt-seem-to-be-initialized for more details.");(0,n.default)(this,u)[u]=g.__workletsModuleProxy}),[{key:"makeShareableClone",value:function(t,o,l){return(0,n.default)(this,u)[u].makeShareableClone(t,o,l)}}])})()}),261,[1,12,13,31,32,262,263,256]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.getValueUnpackerCode=getValueUnpackerCode;var _worklet_303159334415_init_data={code:"function valueUnpacker_reactNativeReanimated_valueUnpackerTs1(objectToUnpack,category,remoteFunctionName){let workletsCache=global.__workletsCache;let handleCache=global.__handleCache;if(workletsCache===undefined){workletsCache=global.__workletsCache=new Map();handleCache=global.__handleCache=new WeakMap();}const workletHash=objectToUnpack.__workletHash;if(workletHash!==undefined){let workletFun=workletsCache.get(workletHash);if(workletFun===undefined){const initData=objectToUnpack.__initData;if(global.evalWithSourceMap){workletFun=global.evalWithSourceMap('('+initData.code+'\\n)',initData.location,initData.sourceMap);}else if(global.evalWithSourceUrl){workletFun=global.evalWithSourceUrl('('+initData.code+'\\n)',\"worklet_\"+workletHash);}else{workletFun=eval('('+initData.code+'\\n)');}workletsCache.set(workletHash,workletFun);}const functionInstance=workletFun.bind(objectToUnpack);objectToUnpack._recur=functionInstance;return functionInstance;}else if(objectToUnpack.__init!==undefined){let value=handleCache.get(objectToUnpack);if(value===undefined){value=objectToUnpack.__init();handleCache.set(objectToUnpack,value);}return value;}else if(category==='RemoteFunction'){const fun=function(){const label=remoteFunctionName?\"function `\"+remoteFunctionName+\"`\":'anonymous function';throw new Error(\"[Reanimated] Tried to synchronously call a non-worklet \"+label+\" on the UI thread.\\nSee https://docs.swmansion.com/react-native-reanimated/docs/guides/troubleshooting#tried-to-synchronously-call-a-non-worklet-function-on-the-ui-thread for more details.\");};fun.__remoteFunction=objectToUnpack;return fun;}else{throw new Error(\"[Reanimated] Data type in category \\\"\"+category+\"\\\" not recognized by value unpacker: \\\"\"+_toString(objectToUnpack)+\"\\\".\");}}"},valueUnpacker=(function(){var valueUnpacker=function valueUnpacker(objectToUnpack,category,remoteFunctionName){var workletsCache=g.__workletsCache,handleCache=g.__handleCache;void 0===workletsCache&&(workletsCache=g.__workletsCache=new Map,handleCache=g.__handleCache=new WeakMap);var workletHash=objectToUnpack.__workletHash;if(void 0!==workletHash){var workletFun=workletsCache.get(workletHash);if(void 0===workletFun){var initData=objectToUnpack.__initData;workletFun=g.evalWithSourceMap?g.evalWithSourceMap('('+initData.code+'\n)',initData.location,initData.sourceMap):g.evalWithSourceUrl?g.evalWithSourceUrl('('+initData.code+'\n)',`worklet_${workletHash}`):eval('('+initData.code+'\n)'),workletsCache.set(workletHash,workletFun)}var functionInstance=workletFun.bind(objectToUnpack);return objectToUnpack._recur=functionInstance,functionInstance}if(void 0!==objectToUnpack.__init){var value=handleCache.get(objectToUnpack);return void 0===value&&(value=objectToUnpack.__init(),handleCache.set(objectToUnpack,value)),value}if('RemoteFunction'===category){var fun=function(){throw new Error(`[Reanimated] Tried to synchronously call a non-worklet ${remoteFunctionName?`function \`${remoteFunctionName}\``:'anonymous function'} on the UI thread.\nSee https://docs.swmansion.com/react-native-reanimated/docs/guides/troubleshooting#tried-to-synchronously-call-a-non-worklet-function-on-the-ui-thread for more details.`)};return fun.__remoteFunction=objectToUnpack,fun}throw new Error(`[Reanimated] Data type in category "${category}" not recognized by value unpacker: "${_toString(objectToUnpack)}".`)};return valueUnpacker.__closure={},valueUnpacker.__workletHash=303159334415,valueUnpacker.__initData=_worklet_303159334415_init_data,valueUnpacker})(),_worklet_4407688582110_init_data={code:"function reactNativeReanimated_valueUnpackerTs2(){}"};function getValueUnpackerCode(){return valueUnpacker.__initData.code}}),262,[]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"ReanimatedTurboModule",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(e,"WorkletsTurboModule",{enumerable:!0,get:function(){return n.default}});var u=t(r(d[1])),n=t(r(d[2]))}),263,[1,264,265]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=r(d[0]);e.default=t.TurboModuleRegistry.get('ReanimatedModule')}),264,[2]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=r(d[0]);e.default=t.TurboModuleRegistry.get('WorkletsModule')}),265,[2]); +__d((function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.callMicrotasks=void 0,e.executeOnUIRuntimeSync=function(n){return function(){for(var t=arguments.length,o=new Array(t),u=0;u1?t-1:0),u=1;u0?makeShareableCloneOnUIRecursive(args):undefined);};}"};e.runOnJS=(w=function(n){if(c||!_WORKLET)return function(){for(var t=arguments.length,o=new Array(t),u=0;u0?(0,r(d[5]).makeShareableCloneOnUIRecursive)(u):void 0)}},w.__closure={SHOULD_BE_USE_WEB:c,isWorkletFunction:r(d[6]).isWorkletFunction,runWorkletOnJS:E,makeShareableCloneOnUIRecursive:r(d[5]).makeShareableCloneOnUIRecursive},w.__workletHash=7462027857001,w.__initData=b,w)}),266,[1,6,38,249,267,254,247]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"ReanimatedModule",{enumerable:!0,get:function(){return r(d[0]).ReanimatedModule}})}),267,[268]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.ReanimatedModule=void 0;e.ReanimatedModule=(0,r(d[0]).shouldBeUseWeb)()?(0,r(d[1]).createJSReanimatedModule)():(0,r(d[2]).createNativeReanimatedModule)()}),268,[249,269,274]); +__d((function(g,r,i,a,_m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e._updatePropsJS=void 0,Object.defineProperty(e,"createJSReanimatedModule",{enumerable:!0,get:function(){return r(d[1]).createJSReanimatedModule}});var o=t(r(d[2]));g._makeShareableClone=function(){throw new(r(d[3]).ReanimatedError)('`_makeShareableClone` should never be called from React runtime.')},g._scheduleHostFunctionOnJS=function(){throw new(r(d[3]).ReanimatedError)('`_scheduleOnJS` should never be called from React runtime.')},g._scheduleOnRuntime=function(){throw new(r(d[3]).ReanimatedError)('`_scheduleOnRuntime` should never be called from React runtime.')};e._updatePropsJS=function(t,l,u){if(l){var c=l.getAnimatableRef?l.getAnimatableRef():l,f=Object.keys(t).reduce((function(o,n){var s=t[n];return o['function'==typeof s?1:0][n]=s,o}),[{},{}]),v=(0,o.default)(f,1)[0];if('function'==typeof c.setNativeProps)n(c,v,u);else if(void 0!==r(d[4]).createReactDOMStyle&&void 0!==c.style)s(c,v,u);else if(Object.keys(c.props).length>0)Object.keys(c.props).forEach((function(t){if(v[t]){var o=t.replace(/[A-Z]/g,(function(t){return'-'+t.toLowerCase()}));c._touchableNode.setAttribute(o,v[t])}}));else{var S='className'in c?null==c?void 0:c.className:'';r(d[5]).logger.warn(`It's not possible to manipulate the component ${S}`)}}};var n=function(t,o,n){if(n){var s={};for(var l in o)u=l,r(d[6]).PropsAllowlists.NATIVE_THREAD_PROPS_WHITELIST[u]&&(s[l]=o[l]);null==t.setNativeProps||t.setNativeProps(s)}var u,c=t.previousStyle?t.previousStyle:{},f=Object.assign({},c,o);t.previousStyle=f,null==t.setNativeProps||t.setNativeProps({style:f})},s=function(t,o,n){var s=t.previousStyle?t.previousStyle:{},l=Object.assign({},s,o);t.previousStyle=l;var u=(0,r(d[4]).createReactDOMStyle)(l);for(var c in Array.isArray(u.transform)&&void 0!==r(d[4]).createTransformValue&&(u.transform=(0,r(d[4]).createTransformValue)(u.transform)),void 0!==r(d[4]).createTextShadowValue&&(u.textShadowColor||u.textShadowRadius||u.textShadowOffset)&&(u.textShadow=(0,r(d[4]).createTextShadowValue)({textShadowColor:u.textShadowColor,textShadowOffset:u.textShadowOffset,textShadowRadius:u.textShadowRadius})),u)n?'INPUT'===t.nodeName&&'text'===c?t.value=u[c]:t.setAttribute(c,u[c]):t.style[c]=u[c]}}),269,[1,270,38,256,272,250,273]); +__d((function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.Platform=void 0,e.createJSReanimatedModule=function(){return new v};var t=n(r(d[1])),o=n(r(d[2])),s=n(r(d[3])),u=n(r(d[4]));var l=(0,r(d[5]).isJest)()||!globalThis.requestAnimationFrame?r(d[6]).mockedRequestAnimationFrame:globalThis.requestAnimationFrame,c=(0,u.default)("workletsModule"),v=(function(){return(0,s.default)((function n(){var s=this;(0,o.default)(this,n),Object.defineProperty(this,c,{writable:!0,value:r(d[7]).WorkletsModule}),this.nextSensorId=0,this.sensors=new Map,this.platform=void 0,this.getSensorCallback=function(n,o,u){switch(o){case r(d[8]).SensorType.ACCELEROMETER:case r(d[8]).SensorType.GRAVITY:return function(){var t=n.x,o=n.y,l=n.z;if(s.platform===w.WEB_ANDROID){var c=[-t,-o,-l];t=c[0],o=c[1],l=c[2]}u({x:t,y:o,z:l,interfaceOrientation:0})};case r(d[8]).SensorType.GYROSCOPE:case r(d[8]).SensorType.MAGNETIC_FIELD:return function(){var t=n.x,o=n.y,s=n.z;u({x:t,y:o,z:s,interfaceOrientation:0})};case r(d[8]).SensorType.ROTATION:return function(){var o=(0,t.default)(n.quaternion,4),l=o[0],c=o[1],v=o[2],y=o[3];if(s.platform===w.WEB_ANDROID){var f=[y,-v];v=f[0],y=f[1]}var h=-Math.atan2(2*(v*y+l*c),l*l-c*c-v*v+y*y),b=Math.sin(-2*(c*y-l*v)),S=-Math.atan2(2*(c*v+l*y),l*l+c*c-v*v-y*y);u({qw:l,qx:c,qy:v,qz:y,yaw:h,pitch:b,roll:S,interfaceOrientation:0})}}}}),[{key:"scheduleOnUI",value:function(n){l(n)}},{key:"createWorkletRuntime",value:function(n,t){throw new(r(d[9]).ReanimatedError)('createWorkletRuntime is not available in JSReanimated.')}},{key:"scheduleOnRuntime",value:function(){throw new(r(d[9]).ReanimatedError)('scheduleOnRuntime is not available in JSReanimated.')}},{key:"registerEventHandler",value:function(n,t,o){throw new(r(d[9]).ReanimatedError)('registerEventHandler is not available in JSReanimated.')}},{key:"unregisterEventHandler",value:function(n){throw new(r(d[9]).ReanimatedError)('unregisterEventHandler is not available in JSReanimated.')}},{key:"enableLayoutAnimations",value:function(){(0,r(d[5]).isWeb)()?r(d[10]).logger.warn('Layout Animations are not supported on web yet.'):(0,r(d[5]).isJest)()?r(d[10]).logger.warn('Layout Animations are no-ops when using Jest.'):(0,r(d[5]).isChromeDebugger)()?r(d[10]).logger.warn('Layout Animations are no-ops when using Chrome Debugger.'):r(d[10]).logger.warn('Layout Animations are not supported on this configuration.')}},{key:"configureLayoutAnimationBatch",value:function(){}},{key:"setShouldAnimateExitingForTag",value:function(){}},{key:"registerSensor",value:function(n,t,o,s){if(!(0,r(d[5]).isWindowAvailable)())return-1;if(void 0===this.platform&&this.detectPlatform(),!(this.getSensorName(n)in window))return r(d[10]).logger.warn('Sensor is not available.'+((0,r(d[5]).isWeb)()&&'https:'!==location.protocol?' Make sure you use secure origin with `npx expo start --web --https`.':'')+(this.platform===w.WEB_IOS?' For iOS web, you will also have to also grant permission in the browser: https://dev.to/li/how-to-requestpermission-for-devicemotion-and-deviceorientation-events-in-ios-13-46g2.':'')),-1;void 0===this.platform&&this.detectPlatform();var u=this.initializeSensor(n,t);return u.addEventListener('reading',this.getSensorCallback(u,n,s)),u.start(),this.sensors.set(this.nextSensorId,u),this.nextSensorId++}},{key:"unregisterSensor",value:function(n){var t=this.sensors.get(n);void 0!==t&&(t.stop(),this.sensors.delete(n))}},{key:"subscribeForKeyboardEvents",value:function(n){return(0,r(d[5]).isWeb)()?r(d[10]).logger.warn('useAnimatedKeyboard is not available on web yet.'):(0,r(d[5]).isJest)()?r(d[10]).logger.warn('useAnimatedKeyboard is not available when using Jest.'):(0,r(d[5]).isChromeDebugger)()?r(d[10]).logger.warn('useAnimatedKeyboard is not available when using Chrome Debugger.'):r(d[10]).logger.warn('useAnimatedKeyboard is not available on this configuration.'),-1}},{key:"unsubscribeFromKeyboardEvents",value:function(n){}},{key:"initializeSensor",value:function(n,t){var o=t<=0?{referenceFrame:'device'}:{frequency:1e3/t};switch(n){case r(d[8]).SensorType.ACCELEROMETER:return new window.Accelerometer(o);case r(d[8]).SensorType.GYROSCOPE:return new window.Gyroscope(o);case r(d[8]).SensorType.GRAVITY:return new window.GravitySensor(o);case r(d[8]).SensorType.MAGNETIC_FIELD:return new window.Magnetometer(o);case r(d[8]).SensorType.ROTATION:return new window.AbsoluteOrientationSensor(o)}}},{key:"getSensorName",value:function(n){switch(n){case r(d[8]).SensorType.ACCELEROMETER:return'Accelerometer';case r(d[8]).SensorType.GRAVITY:return'GravitySensor';case r(d[8]).SensorType.GYROSCOPE:return'Gyroscope';case r(d[8]).SensorType.MAGNETIC_FIELD:return'Magnetometer';case r(d[8]).SensorType.ROTATION:return'AbsoluteOrientationSensor'}}},{key:"detectPlatform",value:function(){var n=navigator.userAgent||navigator.vendor||window.opera;void 0===n?this.platform=w.UNKNOWN:/iPad|iPhone|iPod/.test(n)?this.platform=w.WEB_IOS:/android/i.test(n)?this.platform=w.WEB_ANDROID:this.platform=w.WEB}},{key:"getViewProp",value:function(n,t,o,s){throw new(r(d[9]).ReanimatedError)('getViewProp is not available in JSReanimated.')}},{key:"configureProps",value:function(){throw new(r(d[9]).ReanimatedError)('configureProps is not available in JSReanimated.')}},{key:"executeOnUIRuntimeSync",value:function(n){throw new(r(d[9]).ReanimatedError)('`executeOnUIRuntimeSync` is not available in JSReanimated.')}},{key:"markNodeAsRemovable",value:function(n){throw new(r(d[9]).ReanimatedError)('markNodeAsRemovable is not available in JSReanimated.')}},{key:"unmarkNodeAsRemovable",value:function(n){throw new(r(d[9]).ReanimatedError)('unmarkNodeAsRemovable is not available in JSReanimated.')}}])})(),w=e.Platform=(function(n){return n.WEB_IOS="web iOS",n.WEB_ANDROID="web Android",n.WEB="web",n.UNKNOWN="unknown",n})({})}),270,[1,38,12,13,32,249,271,257,247,256,250]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.mockedRequestAnimationFrame=function(n){return setTimeout((function(){return n(performance.now())}),0)}}),271,[]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.createTransformValue=e.createTextShadowValue=e.createReactDOMStyle=void 0}),272,[]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.PropsAllowlists=void 0;e.PropsAllowlists={UI_THREAD_PROPS_WHITELIST:{opacity:!0,transform:!0,backgroundColor:!0,borderRightColor:!0,borderBottomColor:!0,borderColor:!0,borderEndColor:!0,borderLeftColor:!0,borderStartColor:!0,borderTopColor:!0,shadowOpacity:!0,shadowRadius:!0,scaleX:!0,scaleY:!0,translateX:!0,translateY:!0},NATIVE_THREAD_PROPS_WHITELIST:{borderBottomWidth:!0,borderEndWidth:!0,borderLeftWidth:!0,borderRightWidth:!0,borderStartWidth:!0,borderTopWidth:!0,borderWidth:!0,bottom:!0,boxShadow:!0,flex:!0,flexGrow:!0,flexShrink:!0,height:!0,left:!0,margin:!0,marginBottom:!0,marginEnd:!0,marginHorizontal:!0,marginLeft:!0,marginRight:!0,marginStart:!0,marginTop:!0,marginVertical:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,padding:!0,paddingBottom:!0,paddingEnd:!0,paddingHorizontal:!0,paddingLeft:!0,paddingRight:!0,paddingStart:!0,paddingTop:!0,paddingVertical:!0,right:!0,start:!0,top:!0,width:!0,zIndex:!0,borderBottomEndRadius:!0,borderBottomLeftRadius:!0,borderBottomRightRadius:!0,borderBottomStartRadius:!0,borderRadius:!0,borderTopEndRadius:!0,borderTopLeftRadius:!0,borderTopRightRadius:!0,borderTopStartRadius:!0,elevation:!0,fontSize:!0,lineHeight:!0,textShadowRadius:!0,textShadowOffset:!0,letterSpacing:!0,aspectRatio:!0,columnGap:!0,end:!0,flexBasis:!0,gap:!0,rowGap:!0,display:!0,backfaceVisibility:!0,overflow:!0,resizeMode:!0,fontStyle:!0,fontWeight:!0,textAlign:!0,textDecorationLine:!0,fontFamily:!0,textAlignVertical:!0,fontVariant:!0,textDecorationStyle:!0,textTransform:!0,writingDirection:!0,alignContent:!0,alignItems:!0,alignSelf:!0,direction:!0,flexDirection:!0,flexWrap:!0,justifyContent:!0,position:!0,color:!0,tintColor:!0,shadowColor:!0,placeholderTextColor:!0}}}),273,[]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.createNativeReanimatedModule=function(){return new c};var n=t(r(d[1])),u=t(r(d[2])),o=t(r(d[3])),l=t(r(d[4]));var s=(0,l.default)("workletsModule"),f=(0,l.default)("reanimatedModuleProxy"),c=(function(){return(0,u.default)((function t(){if((0,n.default)(this,t),Object.defineProperty(this,s,{writable:!0,value:void 0}),Object.defineProperty(this,f,{writable:!0,value:void 0}),(0,o.default)(this,s)[s]=r(d[5]).WorkletsModule,g._REANIMATED_VERSION_JS=r(d[6]).jsVersion,void 0!==g.__reanimatedModuleProxy||!r(d[7]).ReanimatedTurboModule||r(d[7]).ReanimatedTurboModule.installTurboModule()){if(void 0===g.__reanimatedModuleProxy)throw new(r(d[8]).ReanimatedError)("Native part of Reanimated doesn't seem to be initialized.\nSee https://docs.swmansion.com/react-native-reanimated/docs/guides/troubleshooting#native-part-of-reanimated-doesnt-seem-to-be-initialized for more details.");(0,o.default)(this,f)[f]=g.__reanimatedModuleProxy}else(0,o.default)(this,f)[f]=new v}),[{key:"scheduleOnUI",value:function(t){return(0,o.default)(this,f)[f].scheduleOnUI(t)}},{key:"executeOnUIRuntimeSync",value:function(t){return(0,o.default)(this,f)[f].executeOnUIRuntimeSync(t)}},{key:"createWorkletRuntime",value:function(t,n){return(0,o.default)(this,f)[f].createWorkletRuntime(t,n)}},{key:"scheduleOnRuntime",value:function(t,n){return(0,o.default)(this,f)[f].scheduleOnRuntime(t,n)}},{key:"registerSensor",value:function(t,n,u,l){return(0,o.default)(this,f)[f].registerSensor(t,n,u,l)}},{key:"unregisterSensor",value:function(t){return(0,o.default)(this,f)[f].unregisterSensor(t)}},{key:"registerEventHandler",value:function(t,n,u){return(0,o.default)(this,f)[f].registerEventHandler(t,n,u)}},{key:"unregisterEventHandler",value:function(t){return(0,o.default)(this,f)[f].unregisterEventHandler(t)}},{key:"getViewProp",value:function(t,n,u,l){var s;return(0,r(d[9]).isFabric)()?(s=(0,r(d[10]).getShadowNodeWrapperFromRef)(u),(0,o.default)(this,f)[f].getViewProp(s,n,l)):(0,o.default)(this,f)[f].getViewProp(t,n,l)}},{key:"configureLayoutAnimationBatch",value:function(t){(0,o.default)(this,f)[f].configureLayoutAnimationBatch(t)}},{key:"setShouldAnimateExitingForTag",value:function(t,n){(0,o.default)(this,f)[f].setShouldAnimateExitingForTag(t,n)}},{key:"enableLayoutAnimations",value:function(t){(0,o.default)(this,f)[f].enableLayoutAnimations(t)}},{key:"configureProps",value:function(t,n){(0,o.default)(this,f)[f].configureProps(t,n)}},{key:"subscribeForKeyboardEvents",value:function(t,n,u){return(0,o.default)(this,f)[f].subscribeForKeyboardEvents(t,n,u)}},{key:"unsubscribeFromKeyboardEvents",value:function(t){(0,o.default)(this,f)[f].unsubscribeFromKeyboardEvents(t)}},{key:"markNodeAsRemovable",value:function(t){(0,o.default)(this,f)[f].markNodeAsRemovable(t)}},{key:"unmarkNodeAsRemovable",value:function(t){(0,o.default)(this,f)[f].unmarkNodeAsRemovable(t)}}])})(),v=(function(){return(0,u.default)((function t(){(0,n.default)(this,t)}),[{key:"scheduleOnUI",value:function(){}},{key:"executeOnUIRuntimeSync",value:function(){return null}},{key:"createWorkletRuntime",value:function(){return null}},{key:"scheduleOnRuntime",value:function(){}},{key:"configureLayoutAnimationBatch",value:function(){}},{key:"setShouldAnimateExitingForTag",value:function(){}},{key:"enableLayoutAnimations",value:function(){}},{key:"configureProps",value:function(){}},{key:"subscribeForKeyboardEvents",value:function(){return-1}},{key:"unsubscribeFromKeyboardEvents",value:function(){}},{key:"markNodeAsRemovable",value:function(){}},{key:"unmarkNodeAsRemovable",value:function(){}},{key:"registerSensor",value:function(){return-1}},{key:"unregisterSensor",value:function(){}},{key:"registerEventHandler",value:function(){return-1}},{key:"unregisterEventHandler",value:function(){}},{key:"getViewProp",value:function(){return null}}])})()}),274,[1,12,13,31,32,257,275,263,256,249,276]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.jsVersion=void 0;e.jsVersion='3.17.2'}),275,[]); +__d((function(g,r,i,a,m,_e,d){'use strict';var e;Object.defineProperty(_e,"__esModule",{value:!0}),_e.getShadowNodeWrapperFromRef=function(n,l){var t,o;if(void 0===e)try{var c;e=null!=(c=r(d[0]).getInternalInstanceHandleFromPublicInstance)?c:function(e){return e._internalInstanceHandle}}catch(n){e=function(e){return e._internalInstanceHandle}}var u,s=null==n||null==n.getScrollResponder||null==(t=n.getScrollResponder())||null==t.getNativeScrollRef?void 0:t.getNativeScrollRef(),f=null==n||null==n.getNativeScrollRef?void 0:n.getNativeScrollRef(),v=null==n||null==(o=n.__internalInstanceHandle)||null==(o=o.stateNode)?void 0:o.node;if(s)u=s.__internalInstanceHandle.stateNode.node;else if(f)u=f.__internalInstanceHandle.stateNode.node;else if(v)u=v;else{var _=null!=l?l:(0,r(d[1]).findHostInstance)(n);u=e(_).stateNode.node}return u}}),276,[277,295]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.createPublicInstance=function(n,t,a){null==e&&(e=r.enableAccessToHostTreeInFabric()?_r(d[1]).default:_r(d[2]).default);return new e(n,t,a)},_e.createPublicTextInstance=function(e){null==n&&(n=_r(d[3]).default);return new n(e)},_e.getInternalInstanceHandleFromPublicInstance=function(e){if(null!=e._internalInstanceHandle)return e._internalInstanceHandle;return e.__internalInstanceHandle},_e.getNativeTagFromPublicInstance=function(e){return e.__nativeTag},_e.getNodeFromPublicInstance=function(e){if(null==e.__internalInstanceHandle)return null;null==t&&(t=_r(d[4]));return t.getNodeFromInternalInstanceHandle(e.__internalInstanceHandle)};var e,n,t,r=(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=a(n);if(t&&t.has(e))return t.get(e);var r={__proto__:null},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var c=l?Object.getOwnPropertyDescriptor(e,u):null;c&&(c.get||c.set)?Object.defineProperty(r,u,c):r[u]=e[u]}return r.default=e,t&&t.set(e,r),r})(_r(d[0]));function a(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,t=new WeakMap;return(a=function(e){return e?t:n})(e)}}),277,[106,278,292,293,57]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),n=e(_r(d[2])),u=e(_r(d[3])),a=e(_r(d[4])),r=e(_r(d[5])),o=e(_r(d[6])),f=e(_r(d[7])),l=e(_r(d[8])),i=(e(_r(d[9])),y(_r(d[10]))),c=y(_r(d[11])),s=e(_r(d[12])),v=e(_r(d[13]));function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(h=function(e){return e?n:t})(e)}function y(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=h(t);if(n&&n.has(e))return n.get(e);var u={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in e)if("default"!==r&&{}.hasOwnProperty.call(e,r)){var o=a?Object.getOwnPropertyDescriptor(e,r):null;o&&(o.get||o.set)?Object.defineProperty(u,r,o):u[r]=e[r]}return u.default=e,n&&n.set(e,u),u}function p(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(p=function(){return!!e})()}var w=function(){},b=(0,f.default)("viewConfig");_e.default=(function(e){function f(e,n,r){var l,i,c,s;return(0,t.default)(this,f),i=this,c=f,s=[r],c=(0,a.default)(c),l=(0,u.default)(i,p()?Reflect.construct(c,s||[],(0,a.default)(i).constructor):c.apply(i,s)),Object.defineProperty(l,b,{writable:!0,value:void 0}),l.__nativeTag=e,l.__internalInstanceHandle=r,(0,o.default)(l,b)[b]=n,l}return(0,r.default)(f,e),(0,n.default)(f,[{key:"offsetHeight",get:function(){return Math.round((0,i.getBoundingClientRect)(this,{includeTransform:!1}).height)}},{key:"offsetLeft",get:function(){var e=(0,c.getShadowNode)(this);if(null!=e){var t=s.default.getOffset(e);return Math.round(t[2])}return 0}},{key:"offsetParent",get:function(){var e=(0,c.getShadowNode)(this);if(null!=e){var t=s.default.getOffset(e);if(null!=t[0]){var n=t[0];return(0,c.getPublicInstanceFromInternalInstanceHandle)(n)}}return null}},{key:"offsetTop",get:function(){var e=(0,c.getShadowNode)(this);if(null!=e){var t=s.default.getOffset(e);return Math.round(t[1])}return 0}},{key:"offsetWidth",get:function(){return Math.round((0,i.getBoundingClientRect)(this,{includeTransform:!1}).width)}},{key:"blur",value:function(){l.default.blurTextInput(this)}},{key:"focus",value:function(){l.default.focusTextInput(this)}},{key:"measure",value:function(e){var t=(0,c.getShadowNode)(this);null!=t&&(0,v.default)((0,_r(d[14]).getFabricUIManager)()).measure(t,e)}},{key:"measureInWindow",value:function(e){var t=(0,c.getShadowNode)(this);null!=t&&(0,v.default)((0,_r(d[14]).getFabricUIManager)()).measureInWindow(t,e)}},{key:"measureLayout",value:function(e,t,n){if(e instanceof c.default){var u=(0,c.getShadowNode)(this),a=(0,c.getShadowNode)(e);null!=u&&null!=a&&(0,v.default)((0,_r(d[14]).getFabricUIManager)()).measureLayout(u,a,null!=n?n:w,null!=t?t:w)}}},{key:"setNativeProps",value:function(e){var t=(0,_r(d[15]).create)(e,(0,o.default)(this,b)[b].validAttributes),n=(0,c.getShadowNode)(this);null!=n&&null!=t&&(0,v.default)((0,_r(d[14]).getFabricUIManager)()).setNativeProps(n,t)}}])})(i.default)}),278,[1,12,13,23,25,28,31,32,279,281,282,283,284,45,47,289]); +__d((function(g,r,i,a,m,e,d){r(d[0]);var n=null,u=new Set;function t(u){n!==u&&null!=u&&(n=u)}function o(u){n===u&&null!=u&&(n=null)}m.exports={currentlyFocusedInput:function(){return n},focusInput:t,blurInput:o,currentlyFocusedField:function(){return r(d[1]).findNodeHandle(n)},focusField:function(n){},blurField:function(n){},focusTextInput:function(u){if('number'!=typeof u&&null!=u){var o;if(!(n!==u&&!1!==(null==(o=u.currentProps)?void 0:o.editable)))return;t(u),r(d[2]).Commands.focus(u)}},blurTextInput:function(u){'number'!=typeof u&&n===u&&null!=u&&(o(u),r(d[2]).Commands.blur(u))},registerInput:function(n){'number'!=typeof n&&u.add(n)},unregisterInput:function(n){'number'!=typeof n&&u.delete(n)},isTextInput:function(n){return'number'!=typeof n&&u.has(n)}}}),279,[178,57,280]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=_e.__INTERNAL_VIEW_CONFIG=_e.Commands=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var o=r(t);if(o&&o.has(e))return o.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var u=a?Object.getOwnPropertyDescriptor(e,i):null;u&&(u.get||u.set)?Object.defineProperty(n,i,u):n[i]=e[i]}return n.default=e,o&&o.set(e,n),n})(_r(d[1])),o=e(_r(d[2]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,o=new WeakMap;return(r=function(e){return e?o:t})(e)}_e.Commands=(0,o.default)({supportedCommands:['focus','blur','setTextAndSelection']});var n=_e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'AndroidTextInput',bubblingEventTypes:{topBlur:{phasedRegistrationNames:{bubbled:'onBlur',captured:'onBlurCapture'}},topEndEditing:{phasedRegistrationNames:{bubbled:'onEndEditing',captured:'onEndEditingCapture'}},topFocus:{phasedRegistrationNames:{bubbled:'onFocus',captured:'onFocusCapture'}},topKeyPress:{phasedRegistrationNames:{bubbled:'onKeyPress',captured:'onKeyPressCapture'}},topSubmitEditing:{phasedRegistrationNames:{bubbled:'onSubmitEditing',captured:'onSubmitEditingCapture'}}},directEventTypes:{topScroll:{registrationName:'onScroll'}},validAttributes:{maxFontSizeMultiplier:!0,adjustsFontSizeToFit:!0,minimumFontScale:!0,autoFocus:!0,placeholder:!0,inlineImagePadding:!0,contextMenuHidden:!0,textShadowColor:{process:_r(d[3]).default},maxLength:!0,selectTextOnFocus:!0,textShadowRadius:!0,underlineColorAndroid:{process:_r(d[3]).default},textDecorationLine:!0,submitBehavior:!0,textAlignVertical:!0,fontStyle:!0,textShadowOffset:!0,selectionColor:{process:_r(d[3]).default},selectionHandleColor:{process:_r(d[3]).default},placeholderTextColor:{process:_r(d[3]).default},importantForAutofill:!0,lineHeight:!0,textTransform:!0,returnKeyType:!0,keyboardType:!0,multiline:!0,color:{process:_r(d[3]).default},autoComplete:!0,numberOfLines:!0,letterSpacing:!0,returnKeyLabel:!0,fontSize:!0,onKeyPress:!0,cursorColor:{process:_r(d[3]).default},text:!0,showSoftInputOnFocus:!0,textAlign:!0,autoCapitalize:!0,autoCorrect:!0,caretHidden:!0,secureTextEntry:!0,textBreakStrategy:!0,onScroll:!0,onContentSizeChange:!0,disableFullscreenUI:!0,includeFontPadding:!0,fontWeight:!0,fontFamily:!0,allowFontScaling:!0,onSelectionChange:!0,mostRecentEventCount:!0,inlineImageLeft:!0,editable:!0,fontVariant:!0,borderBottomRightRadius:!0,borderBottomColor:{process:_r(d[3]).default},borderRadius:!0,borderRightColor:{process:_r(d[3]).default},borderColor:{process:_r(d[3]).default},borderTopRightRadius:!0,borderStyle:!0,borderBottomLeftRadius:!0,borderLeftColor:{process:_r(d[3]).default},borderTopLeftRadius:!0,borderTopColor:{process:_r(d[3]).default}}},a=t.get('AndroidTextInput',(function(){return n}));_e.default=a}),280,[1,185,222,188]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(n,t){}}),281,[]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0,_e.getBoundingClientRect=v;var t=e(_r(d[1])),n=e(_r(d[2])),r=e(_r(d[3])),u=e(_r(d[4])),l=e(_r(d[5])),o=e(_r(d[6])),i=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=f(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var o=u?Object.getOwnPropertyDescriptor(e,l):null;o&&(o.get||o.set)?Object.defineProperty(r,l,o):r[l]=e[l]}return r.default=e,n&&n.set(e,r),r})(_r(d[7])),a=e(_r(d[8]));function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(f=function(e){return e?n:t})(e)}function c(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(c=function(){return!!e})()}var s=_e.default=(function(e){function o(){return(0,t.default)(this,o),e=this,n=o,l=arguments,n=(0,u.default)(n),(0,r.default)(e,c()?Reflect.construct(n,l||[],(0,u.default)(e).constructor):n.apply(e,l));var e,n,l}return(0,l.default)(o,e),(0,n.default)(o,[{key:"childElementCount",get:function(){return h(this).length}},{key:"children",get:function(){return(0,_r(d[9]).createHTMLCollection)(h(this))}},{key:"clientHeight",get:function(){var e=(0,i.getShadowNode)(this);return null!=e?a.default.getInnerSize(e)[1]:0}},{key:"clientLeft",get:function(){var e=(0,i.getShadowNode)(this);return null!=e?a.default.getBorderWidth(e)[3]:0}},{key:"clientTop",get:function(){var e=(0,i.getShadowNode)(this);return null!=e?a.default.getBorderWidth(e)[0]:0}},{key:"clientWidth",get:function(){var e=(0,i.getShadowNode)(this);return null!=e?a.default.getInnerSize(e)[0]:0}},{key:"firstElementChild",get:function(){var e=h(this);return 0===e.length?null:e[0]}},{key:"id",get:function(){var e,t,n,r=(0,i.getInstanceHandle)(this),u=null==r||null==(e=r.stateNode)||null==(e=e.canonical)?void 0:e.currentProps;return null!=(t=null!=(n=null==u?void 0:u.id)?n:null==u?void 0:u.nativeID)?t:''}},{key:"lastElementChild",get:function(){var e=h(this);return 0===e.length?null:e[e.length-1]}},{key:"nextElementSibling",get:function(){return(0,_r(d[10]).getElementSibling)(this,'next')}},{key:"nodeName",get:function(){return this.tagName}},{key:"nodeType",get:function(){return i.default.ELEMENT_NODE}},{key:"nodeValue",get:function(){return null},set:function(e){}},{key:"previousElementSibling",get:function(){return(0,_r(d[10]).getElementSibling)(this,'previous')}},{key:"scrollHeight",get:function(){var e=(0,i.getShadowNode)(this);return null!=e?a.default.getScrollSize(e)[1]:0}},{key:"scrollLeft",get:function(){var e=(0,i.getShadowNode)(this);return null!=e?a.default.getScrollPosition(e)[0]:0}},{key:"scrollTop",get:function(){var e=(0,i.getShadowNode)(this);return null!=e?a.default.getScrollPosition(e)[1]:0}},{key:"scrollWidth",get:function(){var e=(0,i.getShadowNode)(this);return null!=e?a.default.getScrollSize(e)[0]:0}},{key:"tagName",get:function(){var e=(0,i.getShadowNode)(this);return null!=e?a.default.getTagName(e):''}},{key:"textContent",get:function(){var e=(0,i.getShadowNode)(this);return null!=e?a.default.getTextContent(e):''}},{key:"getBoundingClientRect",value:function(){return v(this,{includeTransform:!0})}},{key:"hasPointerCapture",value:function(e){var t=(0,i.getShadowNode)(this);return null!=t&&a.default.hasPointerCapture(t,e)}},{key:"setPointerCapture",value:function(e){var t=(0,i.getShadowNode)(this);null!=t&&a.default.setPointerCapture(t,e)}},{key:"releasePointerCapture",value:function(e){var t=(0,i.getShadowNode)(this);null!=t&&a.default.releasePointerCapture(t,e)}}])})(i.default);function h(e){return(0,i.getChildNodes)(e).filter((function(e){return e instanceof s}))}function v(e,t){var n=t.includeTransform,r=(0,i.getShadowNode)(e);if(null!=r){var u=a.default.getBoundingClientRect(r,n);return new o.default(u[0],u[1],u[2],u[3])}return new o.default(0,0,0,0)}}),282,[1,12,13,23,25,28,65,283,284,287,288]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0,e.getChildNodes=T,e.getInstanceHandle=c,e.getPublicInstanceFromInternalInstanceHandle=I,e.getShadowNode=E;var t,l=n(r(d[1])),u=n(r(d[2])),o=n(r(d[3])),N=n(r(d[4])),s=e.default=(function(){function n(t){var l;(0,u.default)(this,n),l=t,this[O]=l}return(0,o.default)(n,[{key:"childNodes",get:function(){var n=T(this);return(0,r(d[5]).createNodeList)(n)}},{key:"firstChild",get:function(){var n=T(this);return 0===n.length?null:n[0]}},{key:"isConnected",get:function(){var n=E(this);return null!=n&&N.default.isConnected(n)}},{key:"lastChild",get:function(){var n=T(this);return 0===n.length?null:n[n.length-1]}},{key:"nextSibling",get:function(){var n=f(this),t=(0,l.default)(n,2),u=t[0],o=t[1];return o===u.length-1?null:u[o+1]}},{key:"nodeName",get:function(){throw new TypeError('`nodeName` is abstract and must be implemented in a subclass of `ReadOnlyNode`')}},{key:"nodeType",get:function(){throw new TypeError('`nodeType` is abstract and must be implemented in a subclass of `ReadOnlyNode`')}},{key:"nodeValue",get:function(){throw new TypeError('`nodeValue` is abstract and must be implemented in a subclass of `ReadOnlyNode`')}},{key:"parentElement",get:function(){var n=this.parentNode;return null==t&&(t=r(d[6]).default),n instanceof t?n:null}},{key:"parentNode",get:function(){var n,t=E(this);if(null==t)return null;var l=N.default.getParentNode(t);return null==l?null:null!=(n=I(l))?n:null}},{key:"previousSibling",get:function(){var n=f(this),t=(0,l.default)(n,2),u=t[0],o=t[1];return 0===o?null:u[o-1]}},{key:"textContent",get:function(){throw new TypeError('`textContent` is abstract and must be implemented in a subclass of `ReadOnlyNode`')}},{key:"compareDocumentPosition",value:function(t){if(t===this)return 0;var l=E(this),u=E(t);return null==l||null==u?n.DOCUMENT_POSITION_DISCONNECTED:N.default.compareDocumentPosition(l,u)}},{key:"contains",value:function(t){return t===this||!!(this.compareDocumentPosition(t)&n.DOCUMENT_POSITION_CONTAINED_BY)}},{key:"getRootNode",value:function(){for(var n=this,t=this.parentNode;null!=t;)n=t,t=t.parentNode;return n}},{key:"hasChildNodes",value:function(){return T(this).length>0}}])})();s.ELEMENT_NODE=1,s.ATTRIBUTE_NODE=2,s.TEXT_NODE=3,s.CDATA_SECTION_NODE=4,s.ENTITY_REFERENCE_NODE=5,s.ENTITY_NODE=6,s.PROCESSING_INSTRUCTION_NODE=7,s.COMMENT_NODE=8,s.DOCUMENT_NODE=9,s.DOCUMENT_TYPE_NODE=10,s.DOCUMENT_FRAGMENT_NODE=11,s.NOTATION_NODE=12,s.DOCUMENT_POSITION_DISCONNECTED=1,s.DOCUMENT_POSITION_PRECEDING=2,s.DOCUMENT_POSITION_FOLLOWING=4,s.DOCUMENT_POSITION_CONTAINS=8,s.DOCUMENT_POSITION_CONTAINED_BY=16,s.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC=32;var O=Symbol('internalInstanceHandle');function c(n){return n[O]}function E(n){return r(d[7]).getNodeFromInternalInstanceHandle(c(n))}function T(n){var t=E(n);return null==t?[]:N.default.getChildNodes(t).map((function(n){return I(n)})).filter(Boolean)}function f(n){var t=n.parentNode;if(null==t)return[[n],0];var l=T(t),u=l.indexOf(n);if(-1===u)throw new TypeError("Missing node in parent's child node list");return[l,u]}function I(n){return r(d[7]).getPublicInstanceFromInternalInstanceHandle(n)}}),283,[1,38,12,13,284,285,282,57]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(u,a,i):u[a]=e[a]}return u.default=e,n&&n.set(e,u),u})(_r(d[1])),n=e(_r(d[2]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}var u=t.get('NativeDOMCxx'),o={getParentNode:function(e){return(0,n.default)(u).getParentNode(e)},getChildNodes:function(e){return(0,n.default)(u).getChildNodes(e)},isConnected:function(e){return(0,n.default)(u).isConnected(e)},compareDocumentPosition:function(e,t){return(0,n.default)(u).compareDocumentPosition(e,t)},getTextContent:function(e){return(0,n.default)(u).getTextContent(e)},getBoundingClientRect:function(e,t){return(0,n.default)(u).getBoundingClientRect(e,t)},getOffset:function(e){return(0,n.default)(u).getOffset(e)},getScrollPosition:function(e){return(0,n.default)(u).getScrollPosition(e)},getScrollSize:function(e){return(0,n.default)(u).getScrollSize(e)},getInnerSize:function(e){return(0,n.default)(u).getInnerSize(e)},getBorderWidth:function(e){return(0,n.default)(u).getBorderWidth(e)},getTagName:function(e){return(0,n.default)(u).getTagName(e)},hasPointerCapture:function(e,t){return(0,n.default)(u).hasPointerCapture(e,t)},setPointerCapture:function(e,t){return(0,n.default)(u).setPointerCapture(e,t)},releasePointerCapture:function(e,t){return(0,n.default)(u).releasePointerCapture(e,t)},measure:function(e,t){return(0,n.default)(u).measure(e,t)},measureInWindow:function(e,t){return(0,n.default)(u).measureInWindow(e,t)},measureLayout:function(e,t,r,o){return(0,n.default)(u).measureLayout(e,t,r,o)}};_e.default=o}),284,[1,36,45]); +__d((function(g,r,_i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.createNodeList=function(t){return new f(t)},e.default=void 0;var u=t(r(d[1])),n=t(r(d[2])),i=t(r(d[3])),l=(0,t(r(d[4])).default)("length"),f=e.default=(function(){return(0,n.default)((function t(n){(0,u.default)(this,t),Object.defineProperty(this,l,{writable:!0,value:void 0});for(var f=0;f=(0,i.default)(this,l)[l])return null;return this[t]}},{key:"entries",value:function(){return(0,r(d[5]).createEntriesIterator)(this)}},{key:"forEach",value:function(t,u){for(var n=0;n<(0,i.default)(this,l)[l];n++)null==u?t(this[n],n,this):t.call(u,this[n],n,this)}},{key:"keys",value:function(){return(0,r(d[5]).createKeyIterator)(this)}},{key:"values",value:function(){return(0,r(d[5]).createValueIterator)(this)}},{key:Symbol.iterator,value:function(){return(0,r(d[5]).createValueIterator)(this)}}])})()}),285,[1,12,13,31,32,286]); +__d((function(g,r,_i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.createEntriesIterator=function*(t){for(var n=0;n=(0,l.default)(this,i)[i])return null;return this[t]}},{key:"namedItem",value:function(t){return null}},{key:Symbol.iterator,value:function(){return(0,r(d[5]).createValueIterator)(this)}}])})()}),287,[1,12,13,31,32,286]); +__d((function(g,r,i,a,m,e,d){var n;Object.defineProperty(e,"__esModule",{value:!0}),e.getElementSibling=function(l,u){var t,f=l.parentNode;if(null==f)return null;var o=(0,r(d[0]).getChildNodes)(f),v=o.indexOf(l);if(-1===v)return null;var c='next'===u?1:-1,_=v+c;null==n&&(n=r(d[1]).default);for(;null!=o[_]&&!(o[_]instanceof n);)_+=c;return null!=(t=o[_])?t:null}}),288,[283,282]); +__d((function(g,r,_i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.create=function(n,f){return b(null,n,f)},e.diff=function(n,f,o){return h(null,n,f,o)};var f=n(r(d[1])),o=n(r(d[2])),t={},i=null,u=0,c={unsafelyIgnoreFunctions:!0};function l(n,f){return'object'!=typeof f||null===f||(0,o.default)(n,f,c)}function y(n,f,o){if(Array.isArray(f))for(var t=f.length;t--&&u>0;)y(n,f[t],o);else if(f&&u>0){var c=f;for(var l in i)if(i[l]){var s=c[l];if(void 0!==s){var p=o[l];if(p){if('function'==typeof s&&(s=!0),void 0===s&&(s=null),'object'!=typeof p)n[l]=s;else if('function'==typeof p.diff||'function'==typeof p.process){var v='function'==typeof p.process?p.process(s):s;n[l]=v}i[l]=!1,u--}}}}}function s(n,f,o,t){var i,u=f.length0&&n&&(y(n,s,c),i=null);for(var _ in f)void 0===o[_]&&(c=t[_])&&(n&&void 0!==n[_]||void 0!==(v=f[_])&&('object'!=typeof c||'function'==typeof c.diff||'function'==typeof c.process?((n||(n={}))[_]=null,i||(i={}),i[_]||(i[_]=!0,u++)):n=A(n,v,c)));return n}function b(n,f,o){return h(n,t,f,o)}function j(n,f,o){return h(n,f,t,o)}}),289,[1,290,291]); +__d((function(g,r,_i,a,m,e,d){'use strict';m.exports=function t(n){if(null!==n&&'object'==typeof n){if(!Array.isArray(n))return n;for(var f={},i=0,o=n.length;i2&&void 0!==arguments[2]?arguments[2]:-1,s='number'==typeof f?arguments.length>3?arguments[3]:void 0:f,c='number'==typeof f?f:-1;if(0===c)return!0;if(o===u)return!1;if('function'==typeof o&&'function'==typeof u){var l=null==s?void 0:s.unsafelyIgnoreFunctions;return null==l&&(!n||!n.onDifferentFunctionsIgnored||s&&'unsafelyIgnoreFunctions'in s||n.onDifferentFunctionsIgnored(o.name,u.name),l=!0),!l}if('object'!=typeof o||null===o)return o!==u;if('object'!=typeof u||null===u)return!0;if(o.constructor!==u.constructor)return!0;if(Array.isArray(o)){var v=o.length;if(u.length!==v)return!0;for(var y=0;yn.length)throw new TypeError(`Failed to execute 'substringData' on 'CharacterData': The offset ${t} is greater than the node's length (${n.length}).`);var r=e<0||e>n.length?n.length:e;return n.slice(t,t+r)}}])})(o.default)}),294,[1,12,13,23,25,28,283,284,288]); +__d((function(g,r,i,a,m,_e,d){'use strict';function n(n){if(n)return n.__internalInstanceHandle&&n.__nativeTag&&n._viewConfig||n._nativeTag&&n.viewConfig?n:void 0}function e(){if(void 0===t)if((0,r(d[0]).isFabric)())try{var n,e,o=r(d[1]);t=null!=(n=null==o||null==(e=o.default)?void 0:e.findHostInstance_DEPRECATED)?n:null==o?void 0:o.findHostInstance_DEPRECATED}catch(n){throw new(r(d[2]).ReanimatedError)('Failed to resolve findHostInstance_DEPRECATED')}else{var l,f,s=r(d[3]);t=null!=(l=null==s||null==(f=s.default)?void 0:f.findHostInstance_DEPRECATED)?l:null==s?void 0:s.findHostInstance_DEPRECATED}}var t;Object.defineProperty(_e,"__esModule",{value:!0}),_e.findHostInstance=function(o){var l=n(o._componentRef);if(void 0!==l)return l;return e(),t(!(0,r(d[0]).isFabric)()||o._hasAnimatedRef?o._componentRef:o)}}),295,[249,59,256,296]); +__d((function(g,r,i,a,m,e,d){'use strict';var t;t=r(d[0]),m.exports=t}),296,[297]); +__d((function(e,n,t,r,l,a,i){"use strict";n(i[0]);var u=n(i[1]),o=Array.isArray,s=!1,c=null,f=null,d=null,p=null;function h(e,n,t){e.currentTarget=p(t);try{n(e)}catch(e){s||(s=!0,c=e)}e.currentTarget=null}function g(e){var n=e._dispatchListeners,t=e._dispatchInstances;if(o(n))throw Error("Invalid `event`.");return e.currentTarget=n?p(t):null,n=n?n(e):null,e.currentTarget=null,e._dispatchListeners=null,e._dispatchInstances=null,n}var m=Object.assign;function v(){return!0}function b(){return!1}function y(e,n,t,r){for(var l in this.dispatchConfig=e,this._targetInst=n,this.nativeEvent=t,this._dispatchInstances=this._dispatchListeners=null,e=this.constructor.Interface)e.hasOwnProperty(l)&&((n=e[l])?this[l]=n(t):"target"===l?this.target=r:this[l]=t[l]);return this.isDefaultPrevented=(null!=t.defaultPrevented?t.defaultPrevented:!1===t.returnValue)?v:b,this.isPropagationStopped=b,this}function S(e,n,t,r){if(this.eventPool.length){var l=this.eventPool.pop();return this.call(l,e,n,t,r),l}return new this(e,n,t,r)}function k(e){if(!(e instanceof this))throw Error("Trying to release an event instance into a pool of a different type.");e.destructor(),10>this.eventPool.length&&this.eventPool.push(e)}function w(e){e.getPooled=S,e.eventPool=[],e.release=k}m(y.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=v)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=v)},persist:function(){this.isPersistent=v},isPersistent:b,destructor:function(){var e,n=this.constructor.Interface;for(e in n)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=b,this._dispatchInstances=this._dispatchListeners=null}}),y.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},y.extend=function(e){function n(){}function t(){return r.apply(this,arguments)}var r=this;n.prototype=r.prototype;var l=new n;return m(l,t.prototype),t.prototype=l,t.prototype.constructor=t,t.Interface=m({},r.Interface,e),t.extend=r.extend,w(t),t},w(y);var _=y.extend({touchHistory:function(){return null}});function P(e){return"topTouchStart"===e}function T(e){return"topTouchMove"===e}var E=["topTouchStart"],R=["topTouchMove"],x=["topTouchCancel","topTouchEnd"],z=[],C={touchBank:z,numberActiveTouches:0,indexOfSingleActiveTouch:-1,mostRecentTimeStamp:0};function N(e){return e.timeStamp||e.timestamp}function I(e){if(null==(e=e.identifier))throw Error("Touch object is missing identifier.");return e}function L(e){var n=I(e),t=z[n];t?(t.touchActive=!0,t.startPageX=e.pageX,t.startPageY=e.pageY,t.startTimeStamp=N(e),t.currentPageX=e.pageX,t.currentPageY=e.pageY,t.currentTimeStamp=N(e),t.previousPageX=e.pageX,t.previousPageY=e.pageY,t.previousTimeStamp=N(e)):(t={touchActive:!0,startPageX:e.pageX,startPageY:e.pageY,startTimeStamp:N(e),currentPageX:e.pageX,currentPageY:e.pageY,currentTimeStamp:N(e),previousPageX:e.pageX,previousPageY:e.pageY,previousTimeStamp:N(e)},z[n]=t),C.mostRecentTimeStamp=N(e)}function U(e){var n=z[I(e)];n&&(n.touchActive=!0,n.previousPageX=n.currentPageX,n.previousPageY=n.currentPageY,n.previousTimeStamp=n.currentTimeStamp,n.currentPageX=e.pageX,n.currentPageY=e.pageY,n.currentTimeStamp=N(e),C.mostRecentTimeStamp=N(e))}function F(e){var n=z[I(e)];n&&(n.touchActive=!1,n.previousPageX=n.currentPageX,n.previousPageY=n.currentPageY,n.previousTimeStamp=n.currentTimeStamp,n.currentPageX=e.pageX,n.currentPageY=e.pageY,n.currentTimeStamp=N(e),C.mostRecentTimeStamp=N(e))}var M,D={instrument:function(e){M=e},recordTouchTrack:function(e,n){if(null!=M&&M(e,n),T(e))n.changedTouches.forEach(U);else if(P(e))n.changedTouches.forEach(L),C.numberActiveTouches=n.touches.length,1===C.numberActiveTouches&&(C.indexOfSingleActiveTouch=n.touches[0].identifier);else if(("topTouchEnd"===e||"topTouchCancel"===e)&&(n.changedTouches.forEach(F),C.numberActiveTouches=n.touches.length,1===C.numberActiveTouches))for(e=0;e=t)throw Error("EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `"+e+"`.");if(!re[t]){if(!n.extractEvents)throw Error("EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `"+e+"` does not.");for(var r in re[t]=n,t=n.eventTypes){var l=void 0,a=t[r];if(le.hasOwnProperty(r))throw Error("EventPluginRegistry: More than one plugin attempted to publish the same event name, `"+r+"`.");le[r]=a;var i=a.phasedRegistrationNames;if(i){for(l in i)i.hasOwnProperty(l)&&te(i[l],n);l=!0}else a.registrationName?(te(a.registrationName,n),l=!0):l=!1;if(!l)throw Error("EventPluginRegistry: Failed to publish event `"+r+"` for plugin `"+e+"`.")}}}}function te(e,n){if(ae[e])throw Error("EventPluginRegistry: More than one plugin attempted to publish the same registration name, `"+e+"`.");ae[e]=n}var re=[],le={},ae={};function ie(e,n){if(null===(e=e.stateNode))return null;if(null===(e=f(e)))return null;if((e=e[n])&&"function"!=typeof e)throw Error("Expected `"+n+"` listener to be a function, instead got a value of `"+typeof e+"` type.");return e}var ue=n(i[2]).ReactNativeViewConfigRegistry.customBubblingEventTypes,oe=n(i[2]).ReactNativeViewConfigRegistry.customDirectEventTypes;function se(e,n,t){(n=ie(e,t.dispatchConfig.phasedRegistrationNames[n]))&&(t._dispatchListeners=A(t._dispatchListeners,n),t._dispatchInstances=A(t._dispatchInstances,e))}function ce(e,n,t,r){for(var l=[];e;){l.push(e);do{e=e.return}while(e&&5!==e.tag);e=e||null}for(e=l.length;0i||(a=i),Ee(a,e,l)}}}),f=function(e){return be.get(e._nativeTag)||null},d=ye,p=function(e){var n=(e=e.stateNode)._nativeTag;if(void 0===n&&null!=e.canonical&&(n=e.canonical.nativeTag,e=e.canonical.publicInstance),!n)throw Error("All native instances should have a tag.");return e},J.injection.injectGlobalResponderHandler({onChange:function(e,t,r){null!==t?n(i[2]).UIManager.setJSResponder(t.stateNode._nativeTag,r):n(i[2]).UIManager.clearJSResponder()}});var Re=u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,xe=Symbol.for("react.element"),ze=Symbol.for("react.portal"),Ce=Symbol.for("react.fragment"),Ne=Symbol.for("react.strict_mode"),Ie=Symbol.for("react.profiler"),Le=Symbol.for("react.provider"),Ue=Symbol.for("react.consumer"),Fe=Symbol.for("react.context"),Me=Symbol.for("react.forward_ref"),De=Symbol.for("react.suspense"),Qe=Symbol.for("react.suspense_list"),Ae=Symbol.for("react.memo"),je=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var Be=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var Ve=Symbol.iterator;function Oe(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=Ve&&e[Ve]||e["@@iterator"])?e:null}function He(e){var n=e,t=e;if(e.alternate)for(;n.return;)n=n.return;else{e=n;do{!!(4098&(n=e).flags)&&(t=n.return),e=n.return}while(e)}return 3===n.tag?t:null}function We(e){if(He(e)!==e)throw Error("Unable to find node on an unmounted component.")}function Ye(e){var n=e.alternate;if(!n){if(null===(n=He(e)))throw Error("Unable to find node on an unmounted component.");return n!==e?null:e}for(var t=e,r=n;;){var l=t.return;if(null===l)break;var a=l.alternate;if(null===a){if(null!==(r=l.return)){t=r;continue}break}if(l.child===a.child){for(a=l.child;a;){if(a===t)return We(l),e;if(a===r)return We(l),n;a=a.sibling}throw Error("Unable to find node on an unmounted component.")}if(t.return!==r.return)t=l,r=a;else{for(var i=!1,u=l.child;u;){if(u===t){i=!0,t=l,r=a;break}if(u===r){i=!0,r=l,t=a;break}u=u.sibling}if(!i){for(u=a.child;u;){if(u===t){i=!0,t=a,r=l;break}if(u===r){i=!0,r=a,t=l;break}u=u.sibling}if(!i)throw Error("Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.")}}if(t.alternate!==r)throw Error("Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.")}if(3!==t.tag)throw Error("Unable to find node on an unmounted component.");return t.stateNode.current===t?e:n}function $e(e){return null!==(e=Ye(e))?qe(e):null}function qe(e){var n=e.tag;if(5===n||26===n||27===n||6===n)return e;for(e=e.child;null!==e;){if(null!==(n=qe(e)))return n;e=e.sibling}return null}Symbol.for("react.client.reference");var Xe={},Ge=null,Ke=0,Je={unsafelyIgnoreFunctions:!0};function Ze(e,t){return"object"!=typeof t||null===t||n(i[2]).deepDiffer(e,t,Je)}function en(e,n,t){if(o(n))for(var r=n.length;r--&&0>>=0)?32:31-(dn(e)/pn|0)|0},dn=Math.log,pn=Math.LN2;var hn=128,gn=4194304;function mn(e){var n=42&e;if(0!==n)return n;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194176&e;case 4194304:case 8388608:case 16777216:case 33554432:return 62914560&e;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function vn(e,n){var t=e.pendingLanes;if(0===t)return 0;var r=0,l=e.suspendedLanes;e=e.pingedLanes;var a=134217727&t;return 0!==a?0!==(t=a&~l)?r=mn(t):0!==(e&=a)&&(r=mn(e)):0!==(t&=~l)?r=mn(t):0!==e&&(r=mn(e)),0===r?0:0!==n&&n!==r&&!(n&l)&&((l=r&-r)>=(e=n&-n)||32===l&&4194176&e)?n:r}function bn(e,n){switch(e){case 1:case 2:case 4:case 8:return n+250;case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n+5e3;default:return-1}}function yn(e,n){return e.errorRecoveryDisabledLanes&n?0:0!==(e=-536870913&e.pendingLanes)?e:536870912&e?536870912:0}function Sn(){var e=hn;return!(4194176&(hn<<=1))&&(hn=128),e}function kn(){var e=gn;return!(62914560&(gn<<=1))&&(gn=4194304),e}function wn(e){for(var n=[],t=0;31>t;t++)n.push(e);return n}function _n(e,n){e.pendingLanes|=n,268435456!==n&&(e.suspendedLanes=0,e.pingedLanes=0)}function Pn(e,n,t){var r=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0,n=e.entanglements;for(var l=e.expirationTimes,a=e.hiddenUpdates;0An||(e.current=Qn[An],Qn[An]=null,An--)}function Vn(e,n){An++,Qn[An]=e.current,e.current=n}var On={};var Hn="function"==typeof Object.is?Object.is:function(e,n){return e===n&&(0!==e||1/e==1/n)||e!=e&&n!=n},Wn=jn(null),Yn=jn(null),$n=jn(null);function qn(e,n){Vn($n,n),Vn(Yn,e),Vn(Wn,null),Bn(Wn),Vn(Wn,{isInAParentText:!1})}function Xn(){Bn(Wn),Bn(Yn),Bn($n)}function Gn(e){var n=Wn.current,t=e.type;t="AndroidTextInput"===t||"RCTMultilineTextInputView"===t||"RCTSinglelineTextInputView"===t||"RCTText"===t||"RCTVirtualText"===t,n!==(t=n.isInAParentText!==t?{isInAParentText:t}:n)&&(Vn(Yn,e),Vn(Wn,t))}function Kn(e){Yn.current===e&&(Bn(Wn),Bn(Yn))}var Jn=null,Zn=[],et=0,nt=0;function tt(){for(var e=et,n=nt=et=0;ng?(m=f,f=null):m=f.sibling;var v=p(l,f,u[g],o);if(null===v){null===f&&(f=m);break}e&&f&&null===v.alternate&&n(l,f),i=a(v,i,g),null===c?s=v:c.sibling=v,c=v,f=m}if(g===u.length)return t(l,f),s;if(null===f){for(;gg?(m=f,f=null):m=f.sibling;var b=p(l,f,v.value,o);if(null===b){null===f&&(f=m);break}e&&f&&null===b.alternate&&n(l,f),i=a(b,i,g),null===c?s=b:c.sibling=b,c=b,f=m}if(v.done)return t(l,f),s;if(null===f){for(;!v.done;g++,v=u.next())null!==(v=d(l,v.value,o))&&(i=a(v,i,g),null===c?s=v:c.sibling=v,c=v);return s}for(f=r(f);!v.done;g++,v=u.next())null!==(v=h(f,l,g,v.value,o))&&(e&&null!==v.alternate&&f.delete(null===v.key?g:v.key),i=a(v,i,g),null===c?s=v:c.sibling=v,c=v);return e&&f.forEach((function(e){return n(l,e)})),s}function v(e,r,a,u){if("object"==typeof a&&null!==a&&a.type===Ce&&null===a.key&&(a=a.props.children),"object"==typeof a&&null!==a){switch(a.$$typeof){case xe:e:{for(var s=a.key,c=r;null!==c;){if(c.key===s){if((s=a.type)===Ce){if(7===c.tag){t(e,c.sibling),(r=l(c,a.props.children)).return=e,e=r;break e}}else if(c.elementType===s||"object"==typeof s&&null!==s&&s.$$typeof===je&&Xt(s)===c.type){t(e,c.sibling),$t(e,c,r=l(c,a.props),a),r.return=e,e=r;break e}t(e,c);break}n(e,c),c=c.sibling}a.type===Ce?((r=Cu(a.props.children,e.mode,u,a.key)).return=e,e=r):($t(e,r,u=zu(a.type,a.key,a.props,null,e.mode,u),a),u.return=e,e=u)}return i(e);case ze:e:{for(c=a.key;null!==r;){if(r.key===c){if(4===r.tag&&r.stateNode.containerInfo===a.containerInfo&&r.stateNode.implementation===a.implementation){t(e,r.sibling),(r=l(r,a.children||[])).return=e,e=r;break e}t(e,r);break}n(e,r),r=r.sibling}(r=Lu(a,e.mode,u)).return=e,e=r}return i(e);case je:return v(e,r,(c=a._init)(a._payload),u)}if(o(a))return g(e,r,a,u);if(Oe(a))return m(e,r,a,u);if("function"==typeof a.then)return v(e,r,Wt(a),u);if(a.$$typeof===Fe)return v(e,r,ha(e,a,u),u);qt(e,a)}return"string"==typeof a&&""!==a||"number"==typeof a?(a=""+a,null!==r&&6===r.tag?(t(e,r.sibling),(r=l(r,a)).return=e,e=r):(t(e,r),(r=Iu(a,e.mode,u)).return=e,e=r),i(e)):t(e,r)}return function(e,n,t,r){return Ht=0,e=v(e,n,t,r),Ot=null,e}}var Kt=Gt(!0),Jt=Gt(!1),Zt=jn(null),er=jn(0);function nr(e,n){Vn(er,e=Pi),Vn(Zt,n),Pi=e|n.baseLanes}function tr(){Vn(er,Pi),Vn(Zt,Zt.current)}function rr(){Pi=er.current,Bn(Zt),Bn(er)}var lr=jn(null),ar=null;function ir(e){var n=e.alternate;Vn(cr,1&cr.current),Vn(lr,e),null===ar&&(null===n||null!==Zt.current||null!==n.memoizedState)&&(ar=e)}function ur(e){if(22===e.tag){if(Vn(cr,cr.current),Vn(lr,e),null===ar){var n=e.alternate;null!==n&&null!==n.memoizedState&&(ar=e)}}else or()}function or(){Vn(cr,cr.current),Vn(lr,lr.current)}function sr(e){Bn(lr),ar===e&&(ar=null),Bn(cr)}var cr=jn(0);function fr(e){for(var n=e;null!==n;){if(13===n.tag){var t=n.memoizedState;if(null!==t&&(null===t.dehydrated||zn()||zn()))return n}else if(19===n.tag&&void 0!==n.memoizedProps.revealOrder){if(128&n.flags)return n}else if(null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}var dr=Re.ReactCurrentDispatcher,pr=Re.ReactCurrentBatchConfig,hr=0,gr=null,mr=null,vr=null,br=!1,yr=!1,Sr=!1,kr=0,wr=null,_r=0;function Pr(){throw Error("Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.")}function Tr(e,n){if(null===n)return!1;for(var t=0;ta?a:8;var i=pr.transition,u={_callbacks:new Set};pr.transition=null,sl(e,n,t),pr.transition=u;try{sl(e,n,r),l()}catch(e){throw e}finally{Rn=a,pr.transition=i}}function ul(){return Ir().memoizedState}function ol(e,n,t){var r=Wi(e);t={lane:r,revertLane:0,action:t,hasEagerState:!1,eagerState:null,next:null},cl(e)?fl(n,t):(rt(e,n,t,r),null!==(t=it(e))&&($i(t,e,r),dl(t,n,r)))}function sl(e,n,t){var r=Wi(e),l={lane:r,revertLane:0,action:t,hasEagerState:!1,eagerState:null,next:null};if(cl(e))fl(n,l);else{var a=e.alternate;if(0===e.lanes&&(null===a||0===a.lanes)&&null!==(a=n.lastRenderedReducer))try{var i=n.lastRenderedState,u=a(i,t);if(l.hasEagerState=!0,l.eagerState=u,Hn(u,i))return rt(e,n,l,0),void(null===bi&&tt())}catch(e){}rt(e,n,l,r),null!==(t=it(e))&&($i(t,e,r),dl(t,n,r))}}function cl(e){var n=e.alternate;return e===gr||null!==n&&n===gr}function fl(e,n){yr=br=!0;var t=e.pending;null===t?n.next=n:(n.next=t.next,t.next=n),e.pending=n}function dl(e,n,t){if(4194176&t){var r=n.lanes;t|=r&=e.pendingLanes,n.lanes=t,En(e,t)}}var pl={readContext:pa,use:Ur,useCallback:Pr,useContext:Pr,useEffect:Pr,useImperativeHandle:Pr,useInsertionEffect:Pr,useLayoutEffect:Pr,useMemo:Pr,useReducer:Pr,useRef:Pr,useState:Pr,useDebugValue:Pr,useDeferredValue:Pr,useTransition:Pr,useSyncExternalStore:Pr,useId:Pr},hl={readContext:pa,use:Ur,useCallback:function(e,n){return Nr().memoizedState=[e,void 0===n?null:n],e},useContext:pa,useEffect:Xr,useImperativeHandle:function(e,n,t){t=null!=t?t.concat([e]):null,$r(4194308,4,Zr.bind(null,n,e),t)},useLayoutEffect:function(e,n){return $r(4194308,4,e,n)},useInsertionEffect:function(e,n){$r(4,2,e,n)},useMemo:function(e,n){var t=Nr();n=void 0===n?null:n;var r=e();return Sr&&e(),t.memoizedState=[r,n],r},useReducer:function(e,n,t){var r=Nr();if(void 0!==t){var l=t(n);Sr&&t(n)}else l=n;return r.memoizedState=r.baseState=l,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:l},r.queue=e,e=e.dispatch=ol.bind(null,gr,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Nr().memoizedState=e},useState:function(e){var n=(e=Hr(e)).queue,t=sl.bind(null,gr,n);return n.dispatch=t,[e.memoizedState,t]},useDebugValue:nl,useDeferredValue:function(e,n){return ll(Nr(),e,n)},useTransition:function(){var e=Hr(!1);return e=il.bind(null,gr,e.queue,!0,!1),Nr().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,n){var t=gr,r=Nr(),l=n();if(null===bi)throw Error("Expected a work-in-progress root. This is a bug in React. Please file an issue.");60&Si||Ar(t,n,l),r.memoizedState=l;var a={value:l,getSnapshot:n};return r.queue=a,Xr(Br.bind(null,t,a,e),[e]),t.flags|=2048,Wr(9,jr.bind(null,t,a,l,n),{destroy:void 0},null),l},useId:function(){var e=Nr(),n=bi.identifierPrefix;return n=":"+n+"r"+(_r++).toString(32)+":",e.memoizedState=n}},gl={readContext:pa,use:Ur,useCallback:tl,useContext:pa,useEffect:Gr,useImperativeHandle:el,useInsertionEffect:Kr,useLayoutEffect:Jr,useMemo:rl,useReducer:Mr,useRef:Yr,useState:function(){return Mr(Fr)},useDebugValue:nl,useDeferredValue:function(e,n){return al(Ir(),mr.memoizedState,e,n)},useTransition:function(){var e=Mr(Fr)[0],n=Ir().memoizedState;return["boolean"==typeof e?e:Lr(e),n]},useSyncExternalStore:Qr,useId:ul},ml={readContext:pa,use:Ur,useCallback:tl,useContext:pa,useEffect:Gr,useImperativeHandle:el,useInsertionEffect:Kr,useLayoutEffect:Jr,useMemo:rl,useReducer:Dr,useRef:Yr,useState:function(){return Dr(Fr)},useDebugValue:nl,useDeferredValue:function(e,n){var t=Ir();return null===mr?ll(t,e,n):al(t,mr.memoizedState,e,n)},useTransition:function(){var e=Dr(Fr)[0],n=Ir().memoizedState;return["boolean"==typeof e?e:Lr(e),n]},useSyncExternalStore:Qr,useId:ul};function vl(e,n){if(e&&e.defaultProps){for(var t in n=m({},n),e=e.defaultProps)void 0===n[t]&&(n[t]=e[t]);return n}return n}function bl(e,n,t,r){t=null==(t=t(r,n=e.memoizedState))?n:m({},n,t),e.memoizedState=t,0===e.lanes&&(e.updateQueue.baseState=t)}var yl={isMounted:function(e){return!!(e=e._reactInternals)&&He(e)===e},enqueueSetState:function(e,n,t){var r=Wi(e=e._reactInternals),l=kt(r);l.payload=n,null!=t&&(l.callback=t),null!==(n=wt(e,l,r))&&($i(n,e,r),_t(n,e,r))},enqueueReplaceState:function(e,n,t){var r=Wi(e=e._reactInternals),l=kt(r);l.tag=1,l.payload=n,null!=t&&(l.callback=t),null!==(n=wt(e,l,r))&&($i(n,e,r),_t(n,e,r))},enqueueForceUpdate:function(e,n){var t=Wi(e=e._reactInternals),r=kt(t);r.tag=2,null!=n&&(r.callback=n),null!==(n=wt(e,r,t))&&($i(n,e,t),_t(n,e,t))}};function Sl(e,n,t,r,l,a,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,i):!n.prototype||!n.prototype.isPureReactComponent||(!zt(t,r)||!zt(l,a))}function kl(e,n,t){var r=On,l=n.contextType;return"object"==typeof l&&null!==l&&(r=pa(l)),n=new n(t,r),e.memoizedState=null!==n.state&&void 0!==n.state?n.state:null,n.updater=yl,e.stateNode=n,n._reactInternals=e,n}function wl(e,n,t,r){e=n.state,"function"==typeof n.componentWillReceiveProps&&n.componentWillReceiveProps(t,r),"function"==typeof n.UNSAFE_componentWillReceiveProps&&n.UNSAFE_componentWillReceiveProps(t,r),n.state!==e&&yl.enqueueReplaceState(n,n.state,null)}function _l(e,n,t,r){var l=e.stateNode;l.props=t,l.state=e.memoizedState,l.refs={},yt(e);var a=n.contextType;l.context="object"==typeof a&&null!==a?pa(a):On,l.state=e.memoizedState,"function"==typeof(a=n.getDerivedStateFromProps)&&(bl(e,n,a,t),l.state=e.memoizedState),"function"==typeof n.getDerivedStateFromProps||"function"==typeof l.getSnapshotBeforeUpdate||"function"!=typeof l.UNSAFE_componentWillMount&&"function"!=typeof l.componentWillMount||(n=l.state,"function"==typeof l.componentWillMount&&l.componentWillMount(),"function"==typeof l.UNSAFE_componentWillMount&&l.UNSAFE_componentWillMount(),n!==l.state&&yl.enqueueReplaceState(l,l.state,null),Tt(e,t,l,r),l.state=e.memoizedState),"function"==typeof l.componentDidMount&&(e.flags|=4194308)}var Pl=new WeakMap;function Tl(e,n){if("object"==typeof e&&null!==e){var t=Pl.get(e);"string"!=typeof t&&(t=Lt(n),Pl.set(e,t))}else t=Lt(n);return{value:e,source:n,stack:t,digest:null}}function El(e,n,t){return"string"==typeof t&&Pl.set(e,t),{value:e,source:null,stack:null!=t?t:null,digest:null!=n?n:null}}if("function"!=typeof n(i[2]).ReactFiberErrorDialog.showErrorDialog)throw Error("Expected ReactFiberErrorDialog.showErrorDialog to be a function.");function Rl(e,t){try{!1!==n(i[2]).ReactFiberErrorDialog.showErrorDialog({componentStack:null!==t.stack?t.stack:"",error:t.value,errorBoundary:null!==e&&1===e.tag?e.stateNode:null})&&console.error(t.value)}catch(e){setTimeout((function(){throw e}))}}function xl(e,n,t){(t=kt(t)).tag=3,t.payload={element:null};var r=n.value;return t.callback=function(){Di||(Di=!0,Qi=r),Rl(e,n)},t}function zl(e,n,t){(t=kt(t)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var l=n.value;t.payload=function(){return r(l)},t.callback=function(){Rl(e,n)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(t.callback=function(){Rl(e,n),"function"!=typeof r&&(null===Ai?Ai=new Set([this]):Ai.add(this));var t=n.stack;this.componentDidCatch(n.value,{componentStack:null!==t?t:""})}),t}function Cl(e,n,t,r,l){if(t.flags|=32768,null!==r&&"object"==typeof r&&"function"==typeof r.then){var a=t.tag;if(1&t.mode||0!==a&&11!==a&&15!==a||((a=t.alternate)?(t.updateQueue=a.updateQueue,t.memoizedState=a.memoizedState,t.lanes=a.lanes):(t.updateQueue=null,t.memoizedState=null)),null!==(a=lr.current)){switch(a.tag){case 13:return 1&t.mode&&(null===ar?lu():null===a.alternate&&0===Ti&&(Ti=3)),a.flags&=-257,1&a.mode?(a.flags|=65536,a.lanes=l):a===n?a.flags|=65536:(a.flags|=128,t.flags|=131072,t.flags&=-52805,1===t.tag&&(null===t.alternate?t.tag=17:((n=kt(2)).tag=2,wt(t,n,2))),t.lanes|=2),r===Mt?a.flags|=16384:(null===(n=a.updateQueue)?a.updateQueue=new Set([r]):n.add(r),1&a.mode&&bu(e,r,l)),!1;case 22:if(1&a.mode)return a.flags|=65536,r===Mt?a.flags|=16384:(null===(n=a.updateQueue)?(n={transitions:null,markerInstances:null,retryQueue:new Set([r])},a.updateQueue=n):null===(t=n.retryQueue)?n.retryQueue=new Set([r]):t.add(r),bu(e,r,l)),!1}throw Error("Unexpected Suspense handler tag ("+a.tag+"). This is a bug in React.")}if(1===e.tag)return bu(e,r,l),lu(),!1;r=Error("A component suspended while responding to synchronous input. This will cause the UI to be replaced with a loading indicator. To fix, updates that suspend should be wrapped with startTransition.")}if(e=r=Tl(r,t),4!==Ti&&(Ti=2),null===Ni?Ni=[e]:Ni.push(e),null===n)return!0;e=n;do{switch(e.tag){case 3:return e.flags|=65536,l&=-l,e.lanes|=l,Pt(e,l=xl(e,r,l)),!1;case 1:if(n=r,t=e.type,a=e.stateNode,!(128&e.flags||"function"!=typeof t.getDerivedStateFromError&&(null===a||"function"!=typeof a.componentDidCatch||null!==Ai&&Ai.has(a))))return e.flags|=65536,l&=-l,e.lanes|=l,Pt(e,l=zl(e,n,l)),!1}e=e.return}while(null!==e);return!1}var Nl=Re.ReactCurrentOwner,Il=Error("This is not a real error. It's an implementation detail of React's selective hydration feature. If this leaks into userspace, it's a bug in React. Please file an issue."),Ll=!1;function Ul(e,n,t,r){n.child=null===e?Jt(n,null,t,r):Kt(n,e.child,t,r)}function Fl(e,n,t,r,l){t=t.render;var a=n.ref;return da(n,l),r=Er(e,n,t,r,a,l),null===e||Ll?(n.flags|=1,Ul(e,n,r,l),n.child):(zr(e,n,l),ta(e,n,l))}function Ml(e,n,t,r,l){if(null===e){var a=t.type;return"function"!=typeof a||Tu(a)||void 0!==a.defaultProps||null!==t.compare||void 0!==t.defaultProps?((e=zu(t.type,null,r,n,n.mode,l)).ref=n.ref,e.return=n,n.child=e):(n.tag=15,n.type=a,Dl(e,n,a,r,l))}if(a=e.child,!(e.lanes&l)){var i=a.memoizedProps;if((t=null!==(t=t.compare)?t:zt)(i,r)&&e.ref===n.ref)return ta(e,n,l)}return n.flags|=1,(e=Ru(a,r)).ref=n.ref,e.return=n,n.child=e}function Dl(e,n,t,r,l){if(null!==e){var a=e.memoizedProps;if(zt(a,r)&&e.ref===n.ref){if(Ll=!1,n.pendingProps=r=a,!(e.lanes&l))return n.lanes=e.lanes,ta(e,n,l);131072&e.flags&&(Ll=!0)}}return Bl(e,n,t,r,l)}function Ql(e,n,t){var r=n.pendingProps,l=r.children,a=!!(2&n.stateNode._pendingVisibility),i=null!==e?e.memoizedState:null;if(jl(e,n),"hidden"===r.mode||a){if(128&n.flags){if(t=null!==i?i.baseLanes|t:t,null!==e){for(r=n.child=e.child,l=0;null!==r;)l=l|r.lanes|r.childLanes,r=r.sibling;n.childLanes=l&~t}else n.childLanes=0,n.child=null;return Al(e,n,t)}if(1&n.mode){if(!(536870912&t))return n.lanes=n.childLanes=536870912,Al(e,n,null!==i?i.baseLanes|t:t);n.memoizedState={baseLanes:0,cachePool:null},null!==i?nr(n,i):tr()}else n.memoizedState={baseLanes:0,cachePool:null},tr();ur(n)}else null!==i?(nr(n,i),or(),n.memoizedState=null):(tr(),or());return Ul(e,n,l,t),n.child}function Al(e,n,t){return n.memoizedState={baseLanes:t,cachePool:null},tr(),ur(n),null}function jl(e,n){var t=n.ref;if(null===t)null!==e&&null!==e.ref&&(n.flags|=2097664);else{if("function"!=typeof t&&"object"!=typeof t)throw Error("Expected ref to be a function, an object returned by React.createRef(), or undefined/null.");null!==e&&e.ref===t||(n.flags|=2097664)}}function Bl(e,n,t,r,l){return da(n,l),t=Er(e,n,t,r,void 0,l),null===e||Ll?(n.flags|=1,Ul(e,n,t,l),n.child):(zr(e,n,l),ta(e,n,l))}function Vl(e,n,t,r,l,a){return da(n,a),t=xr(n,r,t,l),Rr(),null===e||Ll?(n.flags|=1,Ul(e,n,t,a),n.child):(zr(e,n,a),ta(e,n,a))}function Ol(e,n,t,r,l){if(da(n,l),null===n.stateNode)na(e,n),kl(n,t,r),_l(n,t,r,l),r=!0;else if(null===e){var a=n.stateNode,i=n.memoizedProps;a.props=i;var u=a.context,o=t.contextType,s=On;"object"==typeof o&&null!==o&&(s=pa(o));var c=t.getDerivedStateFromProps;(o="function"==typeof c||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(i!==r||u!==s)&&wl(n,a,r,s),bt=!1;var f=n.memoizedState;a.state=f,Tt(n,r,a,l),u=n.memoizedState,i!==r||f!==u||bt?("function"==typeof c&&(bl(n,t,c,r),u=n.memoizedState),(i=bt||Sl(n,t,i,r,f,u,s))?(o||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(n.flags|=4194308)):("function"==typeof a.componentDidMount&&(n.flags|=4194308),n.memoizedProps=r,n.memoizedState=u),a.props=r,a.state=u,a.context=s,r=i):("function"==typeof a.componentDidMount&&(n.flags|=4194308),r=!1)}else{a=n.stateNode,St(e,n),s=n.memoizedProps,o=n.type===n.elementType?s:vl(n.type,s),a.props=o,c=n.pendingProps;var d=a.context;u=t.contextType,i=On,"object"==typeof u&&null!==u&&(i=pa(u)),(u="function"==typeof(f=t.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(s!==c||d!==i)&&wl(n,a,r,i),bt=!1,d=n.memoizedState,a.state=d,Tt(n,r,a,l);var p=n.memoizedState;s!==c||d!==p||bt?("function"==typeof f&&(bl(n,t,f,r),p=n.memoizedState),(o=bt||Sl(n,t,o,r,d,p,i)||!1)?(u||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(r,p,i),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,p,i)),"function"==typeof a.componentDidUpdate&&(n.flags|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(n.flags|=1024)):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&d===e.memoizedState||(n.flags|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&d===e.memoizedState||(n.flags|=1024),n.memoizedProps=r,n.memoizedState=p),a.props=r,a.state=p,a.context=i,r=o):("function"!=typeof a.componentDidUpdate||s===e.memoizedProps&&d===e.memoizedState||(n.flags|=4),"function"!=typeof a.getSnapshotBeforeUpdate||s===e.memoizedProps&&d===e.memoizedState||(n.flags|=1024),r=!1)}return Hl(e,n,t,r,!1,l)}function Hl(e,n,t,r,l,a){return jl(e,n),l=!!(128&n.flags),r||l?(r=n.stateNode,Nl.current=n,t=l&&"function"!=typeof t.getDerivedStateFromError?null:r.render(),n.flags|=1,null!==e&&l?(n.child=Kt(n,e.child,null,a),n.child=Kt(n,null,t,a)):Ul(e,n,t,a),n.memoizedState=r.state,n.child):ta(e,n,a)}var Wl={dehydrated:null,treeContext:null,retryLane:0};function Yl(e){return{baseLanes:e,cachePool:null}}function $l(e,n,t){return e=null!==e?e.childLanes&~t:0,n&&(e|=Ci),e}function ql(e,n,t){var r,l=n.pendingProps,a=!1,i=!!(128&n.flags);if((r=i)||(r=(null===e||null!==e.memoizedState)&&!!(2&cr.current)),r&&(a=!0,n.flags&=-129),r=!!(32&n.flags),n.flags&=-33,null===e){if(i=l.children,l=l.fallback,a){or(),a=n.mode;var u=n.child;return i={mode:"hidden",children:i},1&a||null===u?u=Nu(i,a,0,null):(u.childLanes=0,u.pendingProps=i),l=Cu(l,a,t,null),u.return=n,l.return=n,u.sibling=l,n.child=u,(a=n.child).memoizedState=Yl(t),a.childLanes=$l(e,r,t),n.memoizedState=Wl,l}return ir(n),Xl(n,i)}if(null!==(u=e.memoizedState)){var o=u.dehydrated;if(null!==o)return Kl(e,n,i,r,l,o,u,t)}if(a){or(),a=l.fallback,i=n.mode,o=(u=e.child).sibling;var s={mode:"hidden",children:l.children};return 1&i||n.child===u?(l=Ru(u,s)).subtreeFlags=31457280&u.subtreeFlags:((l=n.child).childLanes=0,l.pendingProps=s,n.deletions=null),null!==o?a=Ru(o,a):(a=Cu(a,i,t,null)).flags|=2,a.return=n,l.return=n,l.sibling=a,n.child=l,l=a,a=n.child,i=null===(i=e.child.memoizedState)?Yl(t):{baseLanes:i.baseLanes|t,cachePool:null},a.memoizedState=i,a.childLanes=$l(e,r,t),n.memoizedState=Wl,l}return ir(n),e=(r=e.child).sibling,r=Ru(r,{mode:"visible",children:l.children}),!(1&n.mode)&&(r.lanes=t),r.return=n,r.sibling=null,null!==e&&(null===(t=n.deletions)?(n.deletions=[e],n.flags|=16):t.push(e)),n.child=r,n.memoizedState=null,r}function Xl(e,n){return(n=Nu({mode:"visible",children:n},e.mode,0,null)).return=e,e.child=n}function Gl(e,n,t,r){return null!==r&&(null===Jn?Jn=[r]:Jn.push(r)),Kt(n,e.child,null,t),(e=Xl(n,n.pendingProps.children)).flags|=2,n.memoizedState=null,e}function Kl(e,n,t,r,l,a,i,u){if(t)return 256&n.flags?(ir(n),n.flags&=-257,Gl(e,n,u,r=El(Error("There was an error while hydrating this Suspense boundary. Switched to client rendering.")))):null!==n.memoizedState?(or(),n.child=e.child,n.flags|=128,null):(or(),i=l.fallback,t=n.mode,l=Nu({mode:"visible",children:l.children},t,0,null),(i=Cu(i,t,u,null)).flags|=2,l.return=n,i.return=n,l.sibling=i,n.child=l,1&n.mode&&Kt(n,e.child,null,u),(l=n.child).memoizedState=Yl(u),l.childLanes=$l(e,r,u),n.memoizedState=Wl,i);if(ir(n),!(1&n.mode))return Gl(e,n,u,null);if(zn())return r=zn().digest,(i=Error("The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering.")).digest=r,Gl(e,n,u,r=El(i,r,void 0));if(r=!!(u&e.childLanes),Ll||r){if(null!==(r=bi)){if(42&(l=u&-u))l=1;else switch(l){case 2:l=1;break;case 8:l=4;break;case 32:l=16;break;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:l=64;break;case 268435456:l=134217728;break;default:l=0}if(0!==(l=l&(r.suspendedLanes|u)?0:l)&&l!==i.retryLane)throw i.retryLane=l,lt(e,l),$i(r,e,l),Il}return zn()||lu(),Gl(e,n,u,null)}return zn()?(n.flags|=128,n.child=e.child,ku.bind(null,e),zn(),null):((e=Xl(n,l.children)).flags|=4096,e)}function Jl(e,n,t){e.lanes|=n;var r=e.alternate;null!==r&&(r.lanes|=n),fa(e.return,n,t)}function Zl(e,n,t,r,l){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:r,tail:t,tailMode:l}:(a.isBackwards=n,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=t,a.tailMode=l)}function ea(e,n,t){var r=n.pendingProps,l=r.revealOrder,a=r.tail;if(Ul(e,n,r.children,t),2&(r=cr.current))r=1&r|2,n.flags|=128;else{if(null!==e&&128&e.flags)e:for(e=n.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Jl(e,t,n);else if(19===e.tag)Jl(e,t,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===n)break e;for(;null===e.sibling;){if(null===e.return||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Vn(cr,r),1&n.mode)switch(l){case"forwards":for(t=n.child,l=null;null!==t;)null!==(e=t.alternate)&&null===fr(e)&&(l=t),t=t.sibling;null===(t=l)?(l=n.child,n.child=null):(l=t.sibling,t.sibling=null),Zl(n,!1,l,t,a);break;case"backwards":for(t=null,l=n.child,n.child=null;null!==l;){if(null!==(e=l.alternate)&&null===fr(e)){n.child=l;break}e=l.sibling,l.sibling=t,t=l,l=e}Zl(n,!0,t,null,a);break;case"together":Zl(n,!1,null,null,void 0);break;default:n.memoizedState=null}else n.memoizedState=null;return n.child}function na(e,n){!(1&n.mode)&&null!==e&&(e.alternate=null,n.alternate=null,n.flags|=2)}function ta(e,n,t){if(null!==e&&(n.dependencies=e.dependencies),Ri|=n.lanes,!(t&n.childLanes))return null;if(null!==e&&n.child!==e.child)throw Error("Resuming work not yet implemented.");if(null!==n.child){for(t=Ru(e=n.child,e.pendingProps),n.child=t,t.return=n;null!==e.sibling;)e=e.sibling,(t=t.sibling=Ru(e,e.pendingProps)).return=n;t.sibling=null}return n.child}function ra(e,n,t){switch(n.tag){case 3:case 4:qn(n,n.stateNode.containerInfo);break;case 27:case 5:Gn(n);break;case 10:var r=n.memoizedProps.value,l=n.type._context;Vn(aa,l._currentValue),l._currentValue=r;break;case 13:if(null!==(r=n.memoizedState))return null!==r.dehydrated?(ir(n),n.flags|=128,null):t&n.child.childLanes?ql(e,n,t):(ir(n),null!==(e=ta(e,n,t))?e.sibling:null);ir(n);break;case 19:if(r=!!(t&n.childLanes),128&e.flags){if(r)return ea(e,n,t);n.flags|=128}if(null!==(l=n.memoizedState)&&(l.rendering=null,l.tail=null,l.lastEffect=null),Vn(cr,cr.current),r)break;return null;case 22:case 23:return n.lanes=0,Ql(e,n,t)}return ta(e,n,t)}function la(e,n,t){if(null!==e)if(e.memoizedProps!==n.pendingProps)Ll=!0;else{if(!(e.lanes&t||128&n.flags))return Ll=!1,ra(e,n,t);Ll=!!(131072&e.flags)}else Ll=!1;switch(n.lanes=0,n.tag){case 2:var r=n.type;na(e,n),e=n.pendingProps,da(n,t);var l=Er(null,n,r,e,void 0,t);return n.flags|=1,"object"==typeof l&&null!==l&&"function"==typeof l.render&&void 0===l.$$typeof?(n.tag=1,n.memoizedState=null,n.updateQueue=null,n.memoizedState=null!==l.state&&void 0!==l.state?l.state:null,yt(n),l.updater=yl,n.stateNode=l,l._reactInternals=n,_l(n,r,e,t),n=Hl(null,n,r,!0,!1,t)):(n.tag=0,Ul(null,n,l,t),n=n.child),n;case 16:r=n.elementType;e:{switch(na(e,n),e=n.pendingProps,r=(l=r._init)(r._payload),n.type=r,l=n.tag=Eu(r),e=vl(r,e),l){case 0:n=Bl(null,n,r,e,t);break e;case 1:n=Ol(null,n,r,e,t);break e;case 11:n=Fl(null,n,r,e,t);break e;case 14:n=Ml(null,n,r,vl(r.type,e),t);break e}throw Error("Element type is invalid. Received a promise that resolves to: "+r+". Lazy element type must resolve to a class or function.")}return n;case 0:return r=n.type,l=n.pendingProps,Bl(e,n,r,l=n.elementType===r?l:vl(r,l),t);case 1:return r=n.type,l=n.pendingProps,Ol(e,n,r,l=n.elementType===r?l:vl(r,l),t);case 3:if(qn(n,n.stateNode.containerInfo),null===e)throw Error("Should have a current fiber. This is a bug in React.");return l=n.pendingProps,r=n.memoizedState.element,St(e,n),Tt(n,l,null,t),(l=n.memoizedState.element)===r?n=ta(e,n,t):(Ul(e,n,l,t),n=n.child),n;case 26:case 27:case 5:return Gn(n),r=n.pendingProps.children,jl(e,n),Ul(e,n,r,t),n.child;case 6:return null;case 13:return ql(e,n,t);case 4:return qn(n,n.stateNode.containerInfo),r=n.pendingProps,null===e?n.child=Kt(n,null,r,t):Ul(e,n,r,t),n.child;case 11:return r=n.type,l=n.pendingProps,Fl(e,n,r,l=n.elementType===r?l:vl(r,l),t);case 7:return Ul(e,n,n.pendingProps,t),n.child;case 8:case 12:return Ul(e,n,n.pendingProps.children,t),n.child;case 10:e:{r=n.type._context,l=n.pendingProps;var a=n.memoizedProps,i=l.value;if(Vn(aa,r._currentValue),r._currentValue=i,null!==a)if(Hn(a.value,i)){if(a.children===l.children){n=ta(e,n,t);break e}}else for(null!==(a=n.child)&&(a.return=n);null!==a;){var u=a.dependencies;if(null!==u){i=a.child;for(var o=u.firstContext;null!==o;){if(o.context===r){if(1===a.tag){(o=kt(t&-t)).tag=2;var s=a.updateQueue;if(null!==s){var c=(s=s.shared).pending;null===c?o.next=o:(o.next=c.next,c.next=o),s.pending=o}}a.lanes|=t,null!==(o=a.alternate)&&(o.lanes|=t),fa(a.return,t,n),u.lanes|=t;break}o=o.next}}else if(10===a.tag)i=a.type===n.type?null:a.child;else if(18===a.tag){if(null===(i=a.return))throw Error("We just came from a parent so we must have had a parent. This is a bug in React.");i.lanes|=t,null!==(u=i.alternate)&&(u.lanes|=t),fa(i,t,n),i=a.sibling}else i=a.child;if(null!==i)i.return=a;else for(i=a;null!==i;){if(i===n){i=null;break}if(null!==(a=i.sibling)){a.return=i.return,i=a;break}i=i.return}a=i}Ul(e,n,l.children,t),n=n.child}return n;case 9:return l=n.type,r=n.pendingProps.children,da(n,t),r=r(l=pa(l)),n.flags|=1,Ul(e,n,r,t),n.child;case 14:return l=vl(r=n.type,n.pendingProps),Ml(e,n,r,l=vl(r.type,l),t);case 15:return Dl(e,n,n.type,n.pendingProps,t);case 17:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:vl(r,l),na(e,n),n.tag=1,da(n,t),kl(n,r,l),_l(n,r,l,t),Hl(null,n,r,!0,!1,t);case 19:return ea(e,n,t);case 22:return Ql(e,n,t)}throw Error("Unknown unit of work tag ("+n.tag+"). This error is likely caused by a bug in React. Please file an issue.")}var aa=jn(null),ia=null,ua=null,oa=null;function sa(){oa=ua=ia=null}function ca(e){e._currentValue=aa.current,Bn(aa)}function fa(e,n,t){for(;null!==e;){var r=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,null!==r&&(r.childLanes|=n)):null!==r&&(r.childLanes&n)!==n&&(r.childLanes|=n),e===t)break;e=e.return}}function da(e,n){ia=e,oa=ua=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(!!(e.lanes&n)&&(Ll=!0),e.firstContext=null)}function pa(e){return ga(ia,e)}function ha(e,n,t){return null===ia&&da(e,t),ga(e,n)}function ga(e,n){var t=n._currentValue;if(oa!==n)if(n={context:n,memoizedValue:t,next:null},null===ua){if(null===e)throw Error("Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().");ua=n,e.dependencies={lanes:0,firstContext:n}}else ua=ua.next=n;return t}var ma=Re.ReactCurrentBatchConfig;function va(){}function ba(e,n){null!==n?e.flags|=4:16384&e.flags&&(n=22!==e.tag?kn():536870912,e.lanes|=n)}function ya(e,n){switch(e.tailMode){case"hidden":n=e.tail;for(var t=null;null!==n;)null!==n.alternate&&(t=n),n=n.sibling;null===t?e.tail=null:t.sibling=null;break;case"collapsed":t=e.tail;for(var r=null;null!==t;)null!==t.alternate&&(r=t),t=t.sibling;null===r?n||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Sa(e){var n=null!==e.alternate&&e.alternate.child===e.child,t=0,r=0;if(n)for(var l=e.child;null!==l;)t|=l.lanes|l.childLanes,r|=31457280&l.subtreeFlags,r|=31457280&l.flags,l.return=e,l=l.sibling;else for(l=e.child;null!==l;)t|=l.lanes|l.childLanes,r|=l.subtreeFlags,r|=l.flags,l.return=e,l=l.sibling;return e.subtreeFlags|=r,e.childLanes=t,n}function ka(e,t,r){var l=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:case 1:case 17:return Sa(t),null;case 3:return r=t.stateNode,Xn(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||null===e||e.memoizedState.isDehydrated&&!(256&t.flags)||(t.flags|=1024,null!==Jn&&(Gi(Jn),Jn=null)),Sa(t),null;case 26:case 27:case 5:Kn(t);var a=t.type;if(null!==e&&null!=t.stateNode)e.memoizedProps!==l&&(t.flags|=4);else{if(!l){if(null===t.stateNode)throw Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");return Sa(t),null}e=$n.current,r=In(),a=Cn(a);var u=ln(null,Xe,l,a.validAttributes);n(i[2]).UIManager.createView(r,a.uiViewClassName,e,u),e=new un(r,a,t),ve.set(r,t),be.set(r,l);e:for(r=t.child;null!==r;){if(5===r.tag||6===r.tag)e._children.push(r.stateNode);else if(4!==r.tag&&null!==r.child){r.child.return=r,r=r.child;continue}if(r===t)break e;for(;null===r.sibling;){if(null===r.return||r.return===t)break e;r=r.return}r.sibling.return=r.return,r=r.sibling}t.stateNode=e,Un(e)&&(t.flags|=4)}return Sa(t),t.flags&=-16777217,null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==l&&(t.flags|=4);else{if("string"!=typeof l&&null===t.stateNode)throw Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");if(r=$n.current,!Wn.current.isInAParentText)throw Error("Text strings must be rendered within a component.");e=In(),n(i[2]).UIManager.createView(e,"RCTRawText",r,{text:l}),ve.set(e,t),t.stateNode=e}return Sa(t),null;case 13:if(l=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(null!==l&&null!==l.dehydrated){if(null===e)throw Error("A dehydrated suspense component was completed without a hydrated node. This is probably a bug in React.");!(128&t.flags)&&(t.memoizedState=null),t.flags|=4,Sa(t),a=!1}else null!==Jn&&(Gi(Jn),Jn=null),a=!0;if(!a)return 256&t.flags?(sr(t),t):(sr(t),null)}return sr(t),128&t.flags?(t.lanes=r,t):((r=null!==l)!==(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192),ba(t,t.updateQueue),Sa(t),null);case 4:return Xn(),Sa(t),null;case 10:return ca(t.type._context),Sa(t),null;case 19:if(Bn(cr),null===(a=t.memoizedState))return Sa(t),null;if(l=!!(128&t.flags),null===(u=a.rendering))if(l)ya(a,!1);else{if(0!==Ti||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(u=fr(e))){for(t.flags|=128,ya(a,!1),e=u.updateQueue,t.updateQueue=e,ba(t,e),t.subtreeFlags=0,e=t.child;null!==e;)xu(e,r),e=e.sibling;return Vn(cr,1&cr.current|2),t.child}e=e.sibling}null!==a.tail&&n(i[3]).unstable_now()>Fi&&(t.flags|=128,l=!0,ya(a,!1),t.lanes=4194304)}else{if(!l)if(null!==(e=fr(u))){if(t.flags|=128,l=!0,r=e.updateQueue,t.updateQueue=r,ba(t,r),ya(a,!0),null===a.tail&&"hidden"===a.tailMode&&!u.alternate)return Sa(t),null}else 2*n(i[3]).unstable_now()-a.renderingStartTime>Fi&&536870912!==r&&(t.flags|=128,l=!0,ya(a,!1),t.lanes=4194304);a.isBackwards?(u.sibling=t.child,t.child=u):(null!==(r=a.last)?r.sibling=u:t.child=u,a.last=u)}return null!==a.tail?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=n(i[3]).unstable_now(),t.sibling=null,r=cr.current,Vn(cr,l?1&r|2:1&r),t):(Sa(t),null);case 22:case 23:return sr(t),rr(),l=null!==t.memoizedState,null!==e?null!==e.memoizedState!==l&&(t.flags|=8192):l&&(t.flags|=8192),l&&1&t.mode?!!(536870912&r)&&!(128&t.flags)&&(Sa(t),6&t.subtreeFlags&&(t.flags|=8192)):Sa(t),null!==(r=t.updateQueue)&&ba(t,r.retryQueue),null;case 24:case 25:return null}throw Error("Unknown unit of work tag ("+t.tag+"). This error is likely caused by a bug in React. Please file an issue.")}function wa(e,n){switch(n.tag){case 1:return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 3:return Xn(),65536&(e=n.flags)&&!(128&e)?(n.flags=-65537&e|128,n):null;case 26:case 27:case 5:return Kn(n),null;case 13:if(sr(n),null!==(e=n.memoizedState)&&null!==e.dehydrated&&null===n.alternate)throw Error("Threw in newly mounted dehydrated component. This is likely a bug in React. Please file an issue.");return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 19:return Bn(cr),null;case 4:return Xn(),null;case 10:return ca(n.type._context),null;case 22:case 23:return sr(n),rr(),65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;default:return null}}function _a(e,n){switch(n.tag){case 3:case 4:Xn();break;case 26:case 27:case 5:Kn(n);break;case 13:sr(n);break;case 19:Bn(cr);break;case 10:ca(n.type._context);break;case 22:case 23:sr(n),rr()}}var Pa=!1,Ta=!1,Ea="function"==typeof WeakSet?WeakSet:Set,Ra=null;function xa(e,n){try{var t=e.ref;if(null!==t){var r=e.stateNode;switch(e.tag){case 26:case 27:case 5:var l=Fn(r);break;default:l=r}"function"==typeof t?e.refCleanup=t(l):t.current=l}}catch(t){vu(e,n,t)}}function za(e,n){var t=e.ref,r=e.refCleanup;if(null!==t)if("function"==typeof r)try{r()}catch(t){vu(e,n,t)}finally{e.refCleanup=null,null!=(e=e.alternate)&&(e.refCleanup=null)}else if("function"==typeof t)try{t(null)}catch(t){vu(e,n,t)}else t.current=null}function Ca(e,n,t){try{t()}catch(t){vu(e,n,t)}}var Na=!1;function Ia(e,n){for(Ra=n;null!==Ra;)if(n=(e=Ra).child,1028&e.subtreeFlags&&null!==n)n.return=e,Ra=n;else for(;null!==Ra;){e=Ra;try{var t=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 15:case 3:case 5:case 26:case 27:case 6:case 4:case 17:break;case 1:if(1024&r&&null!==t){var l=t.memoizedProps,a=t.memoizedState,i=e.stateNode,u=i.getSnapshotBeforeUpdate(e.elementType===e.type?l:vl(e.type,l),a);i.__reactInternalSnapshotBeforeUpdate=u}break;default:if(1024&r)throw Error("This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.")}}catch(n){vu(e,e.return,n)}if(null!==(n=e.sibling)){n.return=e.return,Ra=n;break}Ra=e.return}return t=Na,Na=!1,t}function La(e,n,t){var r=n.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var l=r=r.next;do{if((l.tag&e)===e){var a=l.inst,i=a.destroy;void 0!==i&&(a.destroy=void 0,Ca(n,t,i))}l=l.next}while(l!==r)}}function Ua(e,n){if(null!==(n=null!==(n=n.updateQueue)?n.lastEffect:null)){var t=n=n.next;do{if((t.tag&e)===e){var r=t.create,l=t.inst;r=r(),l.destroy=r}t=t.next}while(t!==n)}}function Fa(e,n){try{Ua(n,e)}catch(n){vu(e,e.return,n)}}function Ma(e){var n=e.updateQueue;if(null!==n){var t=e.stateNode;try{Rt(n,t)}catch(n){vu(e,e.return,n)}}}function Da(e,n,t){var r=t.flags;switch(t.tag){case 0:case 11:case 15:Ja(e,t),4&r&&Fa(t,5);break;case 1:if(Ja(e,t),4&r)if(e=t.stateNode,null===n)try{e.componentDidMount()}catch(e){vu(t,t.return,e)}else{var l=t.elementType===t.type?n.memoizedProps:vl(t.type,n.memoizedProps);n=n.memoizedState;try{e.componentDidUpdate(l,n,e.__reactInternalSnapshotBeforeUpdate)}catch(e){vu(t,t.return,e)}}64&r&&Ma(t),512&r&&xa(t,t.return);break;case 3:if(Ja(e,t),64&r&&null!==(r=t.updateQueue)){if(e=null,null!==t.child)switch(t.child.tag){case 27:case 5:e=Fn(t.child.stateNode);break;case 1:e=t.child.stateNode}try{Rt(r,e)}catch(e){vu(t,t.return,e)}}break;case 26:case 27:case 5:Ja(e,t),512&r&&xa(t,t.return);break;case 12:case 13:default:Ja(e,t);break;case 22:if(1&t.mode){if(!(l=null!==t.memoizedState||Pa)){n=null!==n&&null!==n.memoizedState||Ta;var a=Pa,i=Ta;Pa=l,(Ta=n)&&!i?ei(e,t,!!(8772&t.subtreeFlags)):Ja(e,t),Pa=a,Ta=i}}else Ja(e,t);512&r&&("manual"===t.memoizedProps.mode?xa(t,t.return):za(t,t.return))}}function Qa(e){var n=e.alternate;null!==n&&(e.alternate=null,Qa(n)),e.child=null,e.deletions=null,e.sibling=null,e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Aa(e){return 5===e.tag||3===e.tag||4===e.tag}function ja(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||Aa(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function Ba(e,t,r){var l=e.tag;if(5===l||6===l)if(e=e.stateNode,t){if("number"==typeof r)throw Error("Container does not support insertBefore operation")}else n(i[2]).UIManager.setChildren(r,["number"==typeof e?e:e._nativeTag]);else if(4!==l&&null!==(e=e.child))for(Ba(e,t,r),e=e.sibling;null!==e;)Ba(e,t,r),e=e.sibling}function Va(e,t,r){var l=e.tag;if(5===l||6===l)if(e=e.stateNode,t){var a=(l=r._children).indexOf(e);0<=a?(l.splice(a,1),t=l.indexOf(t),l.splice(t,0,e),n(i[2]).UIManager.manageChildren(r._nativeTag,[a],[t],[],[],[])):(t=l.indexOf(t),l.splice(t,0,e),n(i[2]).UIManager.manageChildren(r._nativeTag,[],[],["number"==typeof e?e:e._nativeTag],[t],[]))}else t="number"==typeof e?e:e._nativeTag,0<=(a=(l=r._children).indexOf(e))?(l.splice(a,1),l.push(e),n(i[2]).UIManager.manageChildren(r._nativeTag,[a],[l.length-1],[],[],[])):(l.push(e),n(i[2]).UIManager.manageChildren(r._nativeTag,[],[],[t],[l.length-1],[]));else if(4!==l&&null!==(e=e.child))for(Va(e,t,r),e=e.sibling;null!==e;)Va(e,t,r),e=e.sibling}var Oa=null,Ha=!1;function Wa(e,n,t){for(t=t.child;null!==t;)Ya(e,n,t),t=t.sibling}function Ya(e,t,r){if(sn&&"function"==typeof sn.onCommitFiberUnmount)try{sn.onCommitFiberUnmount(on,r)}catch(e){}switch(r.tag){case 26:case 27:case 5:Ta||za(r,t);case 6:var l=Oa,a=Ha;Oa=null,Wa(e,t,r),Ha=a,null!==(Oa=l)&&(Ha?(e=Oa,Ln(r.stateNode),n(i[2]).UIManager.manageChildren(e,[],[],[],[],[0])):(e=Oa,Ln(t=r.stateNode),t=(r=e._children).indexOf(t),r.splice(t,1),n(i[2]).UIManager.manageChildren(e._nativeTag,[],[],[],[],[t])));break;case 18:null!==Oa&&zn();break;case 4:l=Oa,a=Ha,Oa=r.stateNode.containerInfo,Ha=!0,Wa(e,t,r),Oa=l,Ha=a;break;case 0:case 11:case 14:case 15:if(!Ta&&(null!==(l=r.updateQueue)&&null!==(l=l.lastEffect))){a=l=l.next;do{var u=a.tag,o=a.inst,s=o.destroy;void 0!==s&&(2&u||4&u)&&(o.destroy=void 0,Ca(r,t,s)),a=a.next}while(a!==l)}Wa(e,t,r);break;case 1:if(!Ta&&(za(r,t),"function"==typeof(l=r.stateNode).componentWillUnmount))try{l.props=r.memoizedProps,l.state=r.memoizedState,l.componentWillUnmount()}catch(e){vu(r,t,e)}Wa(e,t,r);break;case 21:Wa(e,t,r);break;case 22:za(r,t),1&r.mode?(Ta=(l=Ta)||null!==r.memoizedState,Wa(e,t,r),Ta=l):Wa(e,t,r);break;default:Wa(e,t,r)}}function $a(e){switch(e.tag){case 13:case 19:var n=e.stateNode;return null===n&&(n=e.stateNode=new Ea),n;case 22:return null===(n=(e=e.stateNode)._retryCache)&&(n=e._retryCache=new Ea),n;default:throw Error("Unexpected Suspense handler tag ("+e.tag+"). This is a bug in React.")}}function qa(e,n){var t=$a(e);n.forEach((function(n){var r=wu.bind(null,e,n);t.has(n)||(t.add(n),n.then(r,r))}))}function Xa(e,n){var t=n.deletions;if(null!==t)for(var r=0;re?32:e,null===Bi)var r=!1;else{if(e=Bi,Bi=null,Vi=0,6&vi)throw Error("Cannot flush passive effects while already rendering.");var l=vi;if(vi|=4,ci(e.current),ri(e,e.current),vi=l,ht(!1),sn&&"function"==typeof sn.onPostCommitFiberRoot)try{sn.onPostCommitFiberRoot(on,e)}catch(e){}r=!0}return r}finally{Rn=t,mi.transition=n}}return!1}function mu(e,n,t){null!==(e=wt(e,n=xl(e,n=Tl(t,n),2),2))&&(_n(e,2),pt(e))}function vu(e,n,t){if(3===e.tag)mu(e,e,t);else for(;null!==n;){if(3===n.tag){mu(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Ai||!Ai.has(r))){null!==(n=wt(n,e=zl(n,e=Tl(t,e),2),2))&&(_n(n,2),pt(n));break}}n=n.return}}function bu(e,n,t){var r=e.pingCache;if(null===r){r=e.pingCache=new pi;var l=new Set;r.set(n,l)}else void 0===(l=r.get(n))&&(l=new Set,r.set(n,l));l.has(t)||(_i=!0,l.add(t),e=yu.bind(null,e,n,t),n.then(e,e))}function yu(e,t,r){var l=e.pingCache;null!==l&&l.delete(t),e.pingedLanes|=e.suspendedLanes&r,bi===e&&(Si&r)===r&&(4===Ti||3===Ti&&(62914560&Si)===Si&&300>n(i[3]).unstable_now()-Ui?!(2&vi)&&nu(e,0):zi|=r),pt(e)}function Su(e,n){0===n&&(n=1&e.mode?kn():2),null!==(e=lt(e,n))&&(_n(e,n),pt(e))}function ku(e){var n=e.memoizedState,t=0;null!==n&&(t=n.retryLane),Su(e,t)}function wu(e,n){var t=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;null!==l&&(t=l.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error("Pinged unknown suspense boundary type. This is probably a bug in React.")}null!==r&&r.delete(n),Su(e,t)}function _u(e,n,t,r){this.tag=e,this.key=t,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Pu(e,n,t,r){return new _u(e,n,t,r)}function Tu(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Eu(e){if("function"==typeof e)return Tu(e)?1:0;if(null!=e){if((e=e.$$typeof)===Me)return 11;if(e===Ae)return 14}return 2}function Ru(e,n){var t=e.alternate;return null===t?((t=Pu(e.tag,n,e.key,e.mode)).elementType=e.elementType,t.type=e.type,t.stateNode=e.stateNode,t.alternate=e,e.alternate=t):(t.pendingProps=n,t.type=e.type,t.flags=0,t.subtreeFlags=0,t.deletions=null),t.flags=31457280&e.flags,t.childLanes=e.childLanes,t.lanes=e.lanes,t.child=e.child,t.memoizedProps=e.memoizedProps,t.memoizedState=e.memoizedState,t.updateQueue=e.updateQueue,n=e.dependencies,t.dependencies=null===n?null:{lanes:n.lanes,firstContext:n.firstContext},t.sibling=e.sibling,t.index=e.index,t.ref=e.ref,t.refCleanup=e.refCleanup,t}function xu(e,n){e.flags&=31457282;var t=e.alternate;return null===t?(e.childLanes=0,e.lanes=n,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=t.childLanes,e.lanes=t.lanes,e.child=t.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=t.memoizedProps,e.memoizedState=t.memoizedState,e.updateQueue=t.updateQueue,e.type=t.type,n=t.dependencies,e.dependencies=null===n?null:{lanes:n.lanes,firstContext:n.firstContext}),e}function zu(e,n,t,r,l,a){var i=2;if(r=e,"function"==typeof e)Tu(e)&&(i=1);else if("string"==typeof e)i=5;else e:switch(e){case Ce:return Cu(t.children,l,a,n);case Ne:i=8,1&(l|=8)&&(l|=16);break;case Ie:return(e=Pu(12,t,n,2|l)).elementType=Ie,e.lanes=a,e;case De:return(e=Pu(13,t,n,l)).elementType=De,e.lanes=a,e;case Qe:return(e=Pu(19,t,n,l)).elementType=Qe,e.lanes=a,e;case Be:return Nu(t,l,a,n);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case Le:i=10;break e;case Fe:i=9;break e;case Ue:case Me:i=11;break e;case Ae:i=14;break e;case je:i=16,r=null;break e}throw Error("Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: "+(null==e?e:typeof e)+".")}return(n=Pu(i,t,n,l)).elementType=e,n.type=r,n.lanes=a,n}function Cu(e,n,t,r){return(e=Pu(7,e,r,n)).lanes=t,e}function Nu(e,n,t,r){(e=Pu(22,e,r,n)).elementType=Be,e.lanes=t;var l={_visibility:1,_pendingVisibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null,_current:null,detach:function(){var e=l._current;if(null===e)throw Error("Calling Offscreen.detach before instance handle has been set.");if(!(2&l._pendingVisibility)){var n=lt(e,2);null!==n&&(l._pendingVisibility|=2,$i(n,e,2))}},attach:function(){var e=l._current;if(null===e)throw Error("Calling Offscreen.detach before instance handle has been set.");if(2&l._pendingVisibility){var n=lt(e,2);null!==n&&(l._pendingVisibility&=-3,$i(n,e,2))}}};return e.stateNode=l,e}function Iu(e,n,t){return(e=Pu(6,e,null,n)).lanes=t,e}function Lu(e,n,t){return(n=Pu(4,null!==e.children?e.children:[],e.key,n)).lanes=t,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function Uu(e,n,t,r,l,a){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=wn(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.finishedLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=wn(0),this.hiddenUpdates=wn(null),this.identifierPrefix=r,this.onRecoverableError=l,this.formState=a,this.incompleteTransitions=new Map}function Fu(e,n,t){var r=3>>1,r=e[l];if(!(0>>1;lu(c,t))fu(s,c)?(e[l]=s,e[f]=t,l=f):(e[l]=c,e[o]=t,l=o);else{if(!(fu(s,t)))break e;e[l]=s,e[f]=t,l=f}}}return n}function u(e,n){var t=e.sortIndex-n.sortIndex;return 0!==t?t:e.id-n.id}var l;if("object"==typeof performance&&"function"==typeof performance.now){var r=performance;l=function(){return r.now()}}else{var a=Date,o=a.now();l=function(){return a.now()-o}}var c=[],f=[],s=1,d=null,v=3,b=!1,m=!1,p=!1,y="function"==typeof setTimeout?setTimeout:null,h="function"==typeof clearTimeout?clearTimeout:null,_="undefined"!=typeof setImmediate?setImmediate:null;function g(u){for(var l=n(f);null!==l;){if(null===l.callback)t(f);else{if(!(l.startTime<=u))break;t(f),l.sortIndex=l.expirationTime,e(c,l)}l=n(f)}}function R(e){if(p=!1,g(e),!m)if(null!==n(c))m=!0,I=k,P||(P=!0,S());else{var t=n(f);null!==t&&E(R,t.startTime-e)}}function k(e,u){m=!1,p&&(p=!1,h(x),x=-1),b=!0;var r=v;try{e:{for(g(u),d=n(c);null!==d&&(!(d.expirationTime>u)||e&&!T());){var a=d.callback;if("function"==typeof a){d.callback=null,v=d.priorityLevel;var o=a(d.expirationTime<=u);if(u=l(),"function"==typeof o){d.callback=o,g(u);var s=!0;break e}d===n(c)&&t(c),g(u)}else t(c);d=n(c)}if(null!==d)s=!0;else{var y=n(f);null!==y&&E(R,y.startTime-u),s=!1}}return s}finally{d=null,v=r,b=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var S,P=!1,I=null,x=-1,w=-1;function T(){return!(5>l()-w)}function C(){if(null!==I){var e=l();w=e;var n=!0;try{n=I(!0,e)}finally{n?S():(P=!1,I=null)}}else P=!1}if("function"==typeof _)S=function(){_(C)};else if("undefined"!=typeof MessageChannel){var L=new MessageChannel,N=L.port2;L.port1.onmessage=C,S=function(){N.postMessage(null)}}else S=function(){y(C,0)};function E(e,n){x=y((function(){e(l())}),n)}var M="undefined"!=typeof nativeRuntimeScheduler?nativeRuntimeScheduler.unstable_UserBlockingPriority:2,j="undefined"!=typeof nativeRuntimeScheduler?nativeRuntimeScheduler.unstable_NormalPriority:3,q="undefined"!=typeof nativeRuntimeScheduler?nativeRuntimeScheduler.unstable_LowPriority:4,B="undefined"!=typeof nativeRuntimeScheduler?nativeRuntimeScheduler.unstable_ImmediatePriority:1,F="undefined"!=typeof nativeRuntimeScheduler?nativeRuntimeScheduler.unstable_scheduleCallback:function(t,u,r){var a=l();switch("object"==typeof r&&null!==r?r="number"==typeof(r=r.delay)&&0a?(t.sortIndex=r,e(f,t),null===n(c)&&t===n(f)&&(p?(h(x),x=-1):p=!0,E(R,r-a))):(t.sortIndex=o,e(c,t),m||b||(m=!0,I=k,P||(P=!0,S()))),t},U="undefined"!=typeof nativeRuntimeScheduler?nativeRuntimeScheduler.unstable_cancelCallback:function(e){e.callback=null},Y="undefined"!=typeof nativeRuntimeScheduler?nativeRuntimeScheduler.unstable_getCurrentPriorityLevel:function(){return v},D="undefined"!=typeof nativeRuntimeScheduler?nativeRuntimeScheduler.unstable_shouldYield:T,W="undefined"!=typeof nativeRuntimeScheduler?nativeRuntimeScheduler.unstable_requestPaint:function(){},z="undefined"!=typeof nativeRuntimeScheduler?nativeRuntimeScheduler.unstable_now:l;function A(){throw Error("Not implemented.")}_e.unstable_IdlePriority="undefined"!=typeof nativeRuntimeScheduler?nativeRuntimeScheduler.unstable_IdlePriority:5,_e.unstable_ImmediatePriority=B,_e.unstable_LowPriority=q,_e.unstable_NormalPriority=j,_e.unstable_Profiling=null,_e.unstable_UserBlockingPriority=M,_e.unstable_cancelCallback=U,_e.unstable_continueExecution=A,_e.unstable_forceFrameRate=A,_e.unstable_getCurrentPriorityLevel=Y,_e.unstable_getFirstCallbackNode=A,_e.unstable_next=A,_e.unstable_now=z,_e.unstable_pauseExecution=A,_e.unstable_requestPaint=W,_e.unstable_runWithPriority=A,_e.unstable_scheduleCallback=F,_e.unstable_shouldYield=D,_e.unstable_wrapCallback=A}),306,[]); +__d((function(g,r,_i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.withStyleAnimation=void 0;var t={code:"function resolvePath_reactNativeReanimated_styleAnimationTs1(obj,path){const keys=Array.isArray(path)?path:[path];return keys.reduce(function(acc,current){if(Array.isArray(acc)&&typeof current==='number'){return acc[current];}else if(acc!==null&&typeof acc==='object'&¤t in acc){return acc[current];}return undefined;},obj);}"},n=(function(){var n=function(t,n){return(Array.isArray(n)?n:[n]).reduce((function(t,n){return Array.isArray(t)&&'number'==typeof n||null!==t&&'object'==typeof t&&n in t?t[n]:void 0}),t)};return n.__closure={},n.__workletHash=3633598475652,n.__initData=t,n})(),i={code:"function setPath_reactNativeReanimated_styleAnimationTs2(obj,path,value){const keys=Array.isArray(path)?path:[path];let currObj=obj;for(let i=0;i0){const currentEntry=entriesToCheck.pop();if(Array.isArray(currentEntry.value)){for(let index=0;index0){const currentEntry=entriesToCheck.pop();if(Array.isArray(currentEntry.value)){for(let index=0;index0){const currentAnimation=animationsToCheck.pop();if(Array.isArray(currentAnimation)){for(const element of currentAnimation){animationsToCheck.push(element);}}else if(typeof currentAnimation==='object'&¤tAnimation.onStart===undefined){for(const value of Object.values(currentAnimation)){animationsToCheck.push(value);}}else{const currentStyleAnimation=currentAnimation;if(!currentStyleAnimation.finished&¤tStyleAnimation.callback){currentStyleAnimation.callback(false);}}}}};return{isHigherOrder:true,onFrame:onFrame,onStart:onStart,current:{},styleAnimations:styleAnimations,callback:callback};});}"},u={code:"function reactNativeReanimated_styleAnimationTs4(){const{ColorProperties,setPath,processColor,styleAnimations,resolvePath,__DEV__,logger,isValidLayoutAnimationProp,withTiming}=this.__closure;const onFrame=function(animation,now){let stillGoing=false;const entriesToCheck=[{value:animation.styleAnimations,path:[]}];while(entriesToCheck.length>0){const currentEntry=entriesToCheck.pop();if(Array.isArray(currentEntry.value)){for(let index=0;index0){const currentEntry=entriesToCheck.pop();if(Array.isArray(currentEntry.value)){for(let index=0;index0){const currentAnimation=animationsToCheck.pop();if(Array.isArray(currentAnimation)){for(const element of currentAnimation){animationsToCheck.push(element);}}else if(typeof currentAnimation==='object'&¤tAnimation.onStart===undefined){for(const value of Object.values(currentAnimation)){animationsToCheck.push(value);}}else{const currentStyleAnimation=currentAnimation;if(!currentStyleAnimation.finished&¤tStyleAnimation.callback){currentStyleAnimation.callback(false);}}}}};return{isHigherOrder:true,onFrame:onFrame,onStart:onStart,current:{},styleAnimations:styleAnimations,callback:callback};}"};e.withStyleAnimation=(function(){var t=function(t){return(0,r(d[0]).defineAnimation)({},((i=function(){return{isHigherOrder:!0,onFrame:function(t,n){for(var i=!1,c=[{value:t.styleAnimations,path:[]}];c.length>0;){var u=c.pop();if(Array.isArray(u.value))for(var l=0;l0;){var y=s.pop();if(Array.isArray(y.value))for(var p=0;p0;){var o=i.pop();if(Array.isArray(o))for(var c of o)i.push(c);else if('object'==typeof o&&void 0===o.onStart)for(var u of Object.values(o))i.push(u);else{var l=o;!l.finished&&l.callback&&l.callback(!1)}}}}}).__closure={ColorProperties:r(d[1]).ColorProperties,setPath:o,processColor:r(d[1]).processColor,styleAnimations:t,resolvePath:n,__DEV__:!1,logger:r(d[3]).logger,isValidLayoutAnimationProp:r(d[0]).isValidLayoutAnimationProp,withTiming:r(d[2]).withTiming},i.__workletHash=7200670419559,i.__initData=u,i));var i};return t.__closure={defineAnimation:r(d[0]).defineAnimation,ColorProperties:r(d[1]).ColorProperties,setPath:o,processColor:r(d[1]).processColor,resolvePath:n,__DEV__:!1,logger:r(d[3]).logger,isValidLayoutAnimationProp:r(d[0]).isValidLayoutAnimationProp,withTiming:r(d[2]).withTiming},t.__workletHash=0xae1afe77944,t.__initData=c,t})()}),307,[308,311,320,250]); +__d((function(g,r,_i,_a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.getReduceMotionFromConfig=e.getReduceMotionForAnimation=e.defineAnimation=e.cancelAnimation=e.assertEasingIsWorklet=void 0,e.initialUpdaterRun=function(t){n=!0;var i=t();return n=!1,i},e.recognizePrefixSuffix=e.isValidLayoutAnimationProp=void 0;var i=t(r(d[1])),n=!1,a=(0,r(d[2]).shouldBeUseWeb)(),o={originX:!0,originY:!0,width:!0,heigth:!0,borderRadius:!0,globalOriginX:!0,globalOriginY:!0,opacity:!0,transform:!0},u={code:"function isValidLayoutAnimationProp_reactNativeReanimated_utilTs1(prop){const{LAYOUT_ANIMATION_SUPPORTED_PROPS}=this.__closure;return prop in LAYOUT_ANIMATION_SUPPORTED_PROPS;}"},s=(e.isValidLayoutAnimationProp=(function(){var t=function(t){return t in o};return t.__closure={LAYOUT_ANIMATION_SUPPORTED_PROPS:o},t.__workletHash=0xb21085ddeef,t.__initData=u,t})(),{code:"function assertEasingIsWorklet_reactNativeReanimated_utilTs2(easing){const{SHOULD_BE_USE_WEB,isWorkletFunction}=this.__closure;if(_WORKLET){return;}if(SHOULD_BE_USE_WEB){return;}if(easing!==null&&easing!==void 0&&easing.factory){return;}if(!isWorkletFunction(easing)){throw new ReanimatedError('The easing function is not a worklet. Please make sure you import `Easing` from react-native-reanimated.');}}"});e.assertEasingIsWorklet=(function(){var t=function(t){if(!_WORKLET&&!a&&!(null!=t&&t.factory||(0,r(d[3]).isWorkletFunction)(t)))throw new(r(d[4]).ReanimatedError)('The easing function is not a worklet. Please make sure you import `Easing` from react-native-reanimated.')};return t.__closure={SHOULD_BE_USE_WEB:a,isWorkletFunction:r(d[3]).isWorkletFunction},t.__workletHash=0xe9c9eef356c,t.__initData=s,t})();var c={code:"function recognizePrefixSuffix_reactNativeReanimated_utilTs3(value){if(typeof value==='string'){var _match$;const match=value.match(/([A-Za-z]*)(-?\\d*\\.?\\d*)([eE][-+]?[0-9]+)?([A-Za-z%]*)/);if(!match){throw new ReanimatedError(\"Couldn't parse animation value.\");}const prefix=match[1];const suffix=match[4];const number=match[2]+((_match$=match[3])!==null&&_match$!==void 0?_match$:'');return{prefix:prefix,suffix:suffix,strippedValue:parseFloat(number)};}else{return{strippedValue:value};}}"},l=e.recognizePrefixSuffix=(function(){var t=function(t){if('string'==typeof t){var i,n=t.match(/([A-Za-z]*)(-?\d*\.?\d*)([eE][-+]?[0-9]+)?([A-Za-z%]*)/);if(!n)throw new(r(d[4]).ReanimatedError)("Couldn't parse animation value.");var a=n[1],o=n[4],u=n[2]+(null!=(i=n[3])?i:'');return{prefix:a,suffix:o,strippedValue:parseFloat(u)}}return{strippedValue:t}};return t.__closure={},t.__workletHash=17595515017998,t.__initData=c,t})(),f=r(d[5]).ReducedMotionManager.uiValue,p={code:"function getReduceMotionFromConfig_reactNativeReanimated_utilTs4(config){const{ReduceMotion,isReduceMotionOnUI}=this.__closure;return!config||config===ReduceMotion.System?isReduceMotionOnUI.value:config===ReduceMotion.Always;}"},_=e.getReduceMotionFromConfig=(function(){var t=function(t){return t&&t!==r(d[3]).ReduceMotion.System?t===r(d[3]).ReduceMotion.Always:f.value};return t.__closure={ReduceMotion:r(d[3]).ReduceMotion,isReduceMotionOnUI:f},t.__workletHash=0xfde8cb7f723,t.__initData=p,t})(),v={code:"function getReduceMotionForAnimation_reactNativeReanimated_utilTs5(config){const{getReduceMotionFromConfig}=this.__closure;if(!config){return undefined;}return getReduceMotionFromConfig(config);}"},A=(e.getReduceMotionForAnimation=(function(){var t=function(t){if(t)return _(t)};return t.__closure={getReduceMotionFromConfig:_},t.__workletHash=5439379416061,t.__initData=v,t})(),{code:"function applyProgressToMatrix_reactNativeReanimated_utilTs6(progress,a,b){const{addMatrices,scaleMatrix,subtractMatrices}=this.__closure;return addMatrices(a,scaleMatrix(subtractMatrices(b,a),progress));}"}),x=(function(){var t=function(t,i,n){return(0,r(d[6]).addMatrices)(i,(0,r(d[6]).scaleMatrix)((0,r(d[6]).subtractMatrices)(n,i),t))};return t.__closure={addMatrices:r(d[6]).addMatrices,scaleMatrix:r(d[6]).scaleMatrix,subtractMatrices:r(d[6]).subtractMatrices},t.__workletHash=0xbb707911597,t.__initData=A,t})(),M={code:"function applyProgressToNumber_reactNativeReanimated_utilTs7(progress,a,b){return a+progress*(b-a);}"},R=(function(){var t=function(t,i,n){return i+t*(n-i)};return t.__closure={},t.__workletHash=7363110474386,t.__initData=M,t})(),S={code:"function decorateAnimation_reactNativeReanimated_utilTs8(animation){const{getReduceMotionFromConfig,recognizePrefixSuffix,isColor,toLinearSpace,convertToRGBA,clampRGBA,rgbaArrayToRGBAColor,toGammaSpace,decomposeMatrixIntoMatricesAndAngles,applyProgressToMatrix,applyProgressToNumber,getRotationMatrix,multiplyMatrices,flatten,isAffineMatrixFlat}=this.__closure;const baseOnStart=animation.onStart;const baseOnFrame=animation.onFrame;if(animation.isHigherOrder){animation.onStart=function(animation,value,timestamp,previousAnimation){if(animation.reduceMotion===undefined){animation.reduceMotion=getReduceMotionFromConfig();}return baseOnStart(animation,value,timestamp,previousAnimation);};return;}const animationCopy=Object.assign({},animation);delete animationCopy.callback;const prefNumberSuffOnStart=function(animation,value,timestamp,previousAnimation){var _animation$__prefix,_animation$__suffix;const{prefix:prefix,suffix:suffix,strippedValue:strippedValue}=recognizePrefixSuffix(value);animation.__prefix=prefix;animation.__suffix=suffix;animation.strippedCurrent=strippedValue;const{strippedValue:strippedToValue}=recognizePrefixSuffix(animation.toValue);animation.current=strippedValue;animation.startValue=strippedValue;animation.toValue=strippedToValue;if(previousAnimation&&previousAnimation!==animation){const{prefix:paPrefix,suffix:paSuffix,strippedValue:paStrippedValue}=recognizePrefixSuffix(previousAnimation.current);previousAnimation.current=paStrippedValue;previousAnimation.__prefix=paPrefix;previousAnimation.__suffix=paSuffix;}baseOnStart(animation,strippedValue,timestamp,previousAnimation);animation.current=((_animation$__prefix=animation.__prefix)!==null&&_animation$__prefix!==void 0?_animation$__prefix:'')+animation.current+((_animation$__suffix=animation.__suffix)!==null&&_animation$__suffix!==void 0?_animation$__suffix:'');if(previousAnimation&&previousAnimation!==animation){var _previousAnimation$__,_previousAnimation$__2;previousAnimation.current=((_previousAnimation$__=previousAnimation.__prefix)!==null&&_previousAnimation$__!==void 0?_previousAnimation$__:'')+previousAnimation.current+((_previousAnimation$__2=previousAnimation.__suffix)!==null&&_previousAnimation$__2!==void 0?_previousAnimation$__2:'');}};const prefNumberSuffOnFrame=function(animation,timestamp){var _animation$__prefix2,_animation$__suffix2;animation.current=animation.strippedCurrent;const res=baseOnFrame(animation,timestamp);animation.strippedCurrent=animation.current;animation.current=((_animation$__prefix2=animation.__prefix)!==null&&_animation$__prefix2!==void 0?_animation$__prefix2:'')+animation.current+((_animation$__suffix2=animation.__suffix)!==null&&_animation$__suffix2!==void 0?_animation$__suffix2:'');return res;};const tab=['R','G','B','A'];const colorOnStart=function(animation,value,timestamp,previousAnimation){let RGBAValue;let RGBACurrent;let RGBAToValue;const res=[];if(isColor(value)){RGBACurrent=toLinearSpace(convertToRGBA(animation.current));RGBAValue=toLinearSpace(convertToRGBA(value));if(animation.toValue){RGBAToValue=toLinearSpace(convertToRGBA(animation.toValue));}}tab.forEach(function(i,index){animation[i]=Object.assign({},animationCopy);animation[i].current=RGBACurrent[index];animation[i].toValue=RGBAToValue?RGBAToValue[index]:undefined;animation[i].onStart(animation[i],RGBAValue[index],timestamp,previousAnimation?previousAnimation[i]:undefined);res.push(animation[i].current);});clampRGBA(res);animation.current=rgbaArrayToRGBAColor(toGammaSpace(res));};const colorOnFrame=function(animation,timestamp){const RGBACurrent=toLinearSpace(convertToRGBA(animation.current));const res=[];let finished=true;tab.forEach(function(i,index){animation[i].current=RGBACurrent[index];const result=animation[i].onFrame(animation[i],timestamp);finished=finished&&result;res.push(animation[i].current);});clampRGBA(res);animation.current=rgbaArrayToRGBAColor(toGammaSpace(res));return finished;};const transformationMatrixOnStart=function(animation,value,timestamp,previousAnimation){const toValue=animation.toValue;animation.startMatrices=decomposeMatrixIntoMatricesAndAngles(value);animation.stopMatrices=decomposeMatrixIntoMatricesAndAngles(toValue);animation[0]=Object.assign({},animationCopy);animation[0].current=0;animation[0].toValue=100;animation[0].onStart(animation[0],0,timestamp,previousAnimation?previousAnimation[0]:undefined);animation.current=value;};const transformationMatrixOnFrame=function(animation,timestamp){let finished=true;const result=animation[0].onFrame(animation[0],timestamp);finished=finished&&result;const progress=animation[0].current/100;const transforms=['translationMatrix','scaleMatrix','skewMatrix'];const mappedTransforms=[];transforms.forEach(function(key,_){return mappedTransforms.push(applyProgressToMatrix(progress,animation.startMatrices[key],animation.stopMatrices[key]));});const[currentTranslation,currentScale,skewMatrix]=mappedTransforms;const rotations=['x','y','z'];const mappedRotations=[];rotations.forEach(function(key,_){const angle=applyProgressToNumber(progress,animation.startMatrices['r'+key],animation.stopMatrices['r'+key]);mappedRotations.push(getRotationMatrix(angle,key));});const[rotationMatrixX,rotationMatrixY,rotationMatrixZ]=mappedRotations;const rotationMatrix=multiplyMatrices(rotationMatrixX,multiplyMatrices(rotationMatrixY,rotationMatrixZ));const updated=flatten(multiplyMatrices(multiplyMatrices(currentScale,multiplyMatrices(skewMatrix,rotationMatrix)),currentTranslation));animation.current=updated;return finished;};const arrayOnStart=function(animation,value,timestamp,previousAnimation){value.forEach(function(v,i){animation[i]=Object.assign({},animationCopy);animation[i].current=v;animation[i].toValue=animation.toValue[i];animation[i].onStart(animation[i],v,timestamp,previousAnimation?previousAnimation[i]:undefined);});animation.current=[...value];};const arrayOnFrame=function(animation,timestamp){let finished=true;animation.current.forEach(function(_,i){const result=animation[i].onFrame(animation[i],timestamp);finished=finished&&result;animation.current[i]=animation[i].current;});return finished;};const objectOnStart=function(animation,value,timestamp,previousAnimation){for(const key in value){animation[key]=Object.assign({},animationCopy);animation[key].onStart=animation.onStart;animation[key].current=value[key];animation[key].toValue=animation.toValue[key];animation[key].onStart(animation[key],value[key],timestamp,previousAnimation?previousAnimation[key]:undefined);}animation.current=value;};const objectOnFrame=function(animation,timestamp){let finished=true;const newObject={};for(const key in animation.current){const result=animation[key].onFrame(animation[key],timestamp);finished=finished&&result;newObject[key]=animation[key].current;}animation.current=newObject;return finished;};animation.onStart=function(animation,value,timestamp,previousAnimation){if(animation.reduceMotion===undefined){animation.reduceMotion=getReduceMotionFromConfig();}if(animation.reduceMotion){if(animation.toValue!==undefined){animation.current=animation.toValue;}else{baseOnStart(animation,value,timestamp,previousAnimation);}animation.startTime=0;animation.onFrame=function(){return true;};return;}if(isColor(value)){colorOnStart(animation,value,timestamp,previousAnimation);animation.onFrame=colorOnFrame;return;}else if(isAffineMatrixFlat(value)){transformationMatrixOnStart(animation,value,timestamp,previousAnimation);animation.onFrame=transformationMatrixOnFrame;return;}else if(Array.isArray(value)){arrayOnStart(animation,value,timestamp,previousAnimation);animation.onFrame=arrayOnFrame;return;}else if(typeof value==='string'){prefNumberSuffOnStart(animation,value,timestamp,previousAnimation);animation.onFrame=prefNumberSuffOnFrame;return;}else if(typeof value==='object'&&value!==null){objectOnStart(animation,value,timestamp,previousAnimation);animation.onFrame=objectOnFrame;return;}baseOnStart(animation,value,timestamp,previousAnimation);};}"},h=(function(){var t=function(t){var n=t.onStart,a=t.onFrame;if(t.isHigherOrder)t.onStart=function(t,i,a,o){return void 0===t.reduceMotion&&(t.reduceMotion=_()),n(t,i,a,o)};else{var o=Object.assign({},t);delete o.callback;var u=function(t,i,a,o){var u,s,c=l(i),f=c.prefix,p=c.suffix,_=c.strippedValue;t.__prefix=f,t.__suffix=p,t.strippedCurrent=_;var v,A,x=l(t.toValue).strippedValue;if(t.current=_,t.startValue=_,t.toValue=x,o&&o!==t){var M=l(o.current),R=M.prefix,S=M.suffix,h=M.strippedValue;o.current=h,o.__prefix=R,o.__suffix=S}(n(t,_,a,o),t.current=(null!=(u=t.__prefix)?u:'')+t.current+(null!=(s=t.__suffix)?s:''),o&&o!==t)&&(o.current=(null!=(v=o.__prefix)?v:'')+o.current+(null!=(A=o.__suffix)?A:''))},s=function(t,i){var n,o;t.current=t.strippedCurrent;var u=a(t,i);return t.strippedCurrent=t.current,t.current=(null!=(n=t.__prefix)?n:'')+t.current+(null!=(o=t.__suffix)?o:''),u},c=['R','G','B','A'],f=function(t,i,n,a){var u,s,l,f=[];(0,r(d[7]).isColor)(i)&&(s=(0,r(d[7]).toLinearSpace)((0,r(d[7]).convertToRGBA)(t.current)),u=(0,r(d[7]).toLinearSpace)((0,r(d[7]).convertToRGBA)(i)),t.toValue&&(l=(0,r(d[7]).toLinearSpace)((0,r(d[7]).convertToRGBA)(t.toValue)))),c.forEach((function(i,c){t[i]=Object.assign({},o),t[i].current=s[c],t[i].toValue=l?l[c]:void 0,t[i].onStart(t[i],u[c],n,a?a[i]:void 0),f.push(t[i].current)})),(0,r(d[7]).clampRGBA)(f),t.current=(0,r(d[7]).rgbaArrayToRGBAColor)((0,r(d[7]).toGammaSpace)(f))},p=function(t,i){var n=(0,r(d[7]).toLinearSpace)((0,r(d[7]).convertToRGBA)(t.current)),a=[],o=!0;return c.forEach((function(u,s){t[u].current=n[s];var c=t[u].onFrame(t[u],i);o=o&&c,a.push(t[u].current)})),(0,r(d[7]).clampRGBA)(a),t.current=(0,r(d[7]).rgbaArrayToRGBAColor)((0,r(d[7]).toGammaSpace)(a)),o},v=function(t,i,n,a){var u=t.toValue;t.startMatrices=(0,r(d[6]).decomposeMatrixIntoMatricesAndAngles)(i),t.stopMatrices=(0,r(d[6]).decomposeMatrixIntoMatricesAndAngles)(u),t[0]=Object.assign({},o),t[0].current=0,t[0].toValue=100,t[0].onStart(t[0],0,n,a?a[0]:void 0),t.current=i},A=function(t,i){var n=!0,a=t[0].onFrame(t[0],i);n=n&&a;var o=t[0].current/100,u=[];['translationMatrix','scaleMatrix','skewMatrix'].forEach((function(i,n){return u.push(x(o,t.startMatrices[i],t.stopMatrices[i]))}));var s=u[0],c=u[1],l=u[2],f=[];['x','y','z'].forEach((function(i,n){var a=R(o,t.startMatrices['r'+i],t.stopMatrices['r'+i]);f.push((0,r(d[6]).getRotationMatrix)(a,i))}));var p=f[0],_=f[1],v=f[2],A=(0,r(d[6]).multiplyMatrices)(p,(0,r(d[6]).multiplyMatrices)(_,v)),M=(0,r(d[6]).flatten)((0,r(d[6]).multiplyMatrices)((0,r(d[6]).multiplyMatrices)(c,(0,r(d[6]).multiplyMatrices)(l,A)),s));return t.current=M,n},M=function(t,n,a,u){n.forEach((function(i,n){t[n]=Object.assign({},o),t[n].current=i,t[n].toValue=t.toValue[n],t[n].onStart(t[n],i,a,u?u[n]:void 0)})),t.current=(0,i.default)(n)},S=function(t,i){var n=!0;return t.current.forEach((function(a,o){var u=t[o].onFrame(t[o],i);n=n&&u,t.current[o]=t[o].current})),n},h=function(t,i,n,a){for(var u in i)t[u]=Object.assign({},o),t[u].onStart=t.onStart,t[u].current=i[u],t[u].toValue=t.toValue[u],t[u].onStart(t[u],i[u],n,a?a[u]:void 0);t.current=i},y=function(t,i){var n=!0,a={};for(var o in t.current){var u=t[o].onFrame(t[o],i);n=n&&u,a[o]=t[o].current}return t.current=a,n};t.onStart=function(t,i,a,o){return void 0===t.reduceMotion&&(t.reduceMotion=_()),t.reduceMotion?(void 0!==t.toValue?t.current=t.toValue:n(t,i,a,o),t.startTime=0,void(t.onFrame=function(){return!0})):(0,r(d[7]).isColor)(i)?(f(t,i,a,o),void(t.onFrame=p)):(0,r(d[6]).isAffineMatrixFlat)(i)?(v(t,i,a,o),void(t.onFrame=A)):Array.isArray(i)?(M(t,i,a,o),void(t.onFrame=S)):'string'==typeof i?(u(t,i,a,o),void(t.onFrame=s)):'object'==typeof i&&null!==i?(h(t,i,a,o),void(t.onFrame=y)):void n(t,i,a,o)}}};return t.__closure={getReduceMotionFromConfig:_,recognizePrefixSuffix:l,isColor:r(d[7]).isColor,toLinearSpace:r(d[7]).toLinearSpace,convertToRGBA:r(d[7]).convertToRGBA,clampRGBA:r(d[7]).clampRGBA,rgbaArrayToRGBAColor:r(d[7]).rgbaArrayToRGBAColor,toGammaSpace:r(d[7]).toGammaSpace,decomposeMatrixIntoMatricesAndAngles:r(d[6]).decomposeMatrixIntoMatricesAndAngles,applyProgressToMatrix:x,applyProgressToNumber:R,getRotationMatrix:r(d[6]).getRotationMatrix,multiplyMatrices:r(d[6]).multiplyMatrices,flatten:r(d[6]).flatten,isAffineMatrixFlat:r(d[6]).isAffineMatrixFlat},t.__workletHash=0xc2789761553,t.__initData=S,t})(),y={code:"function defineAnimation_reactNativeReanimated_utilTs9(starting,factory){const{IN_STYLE_UPDATER,decorateAnimation,SHOULD_BE_USE_WEB}=this.__closure;if(IN_STYLE_UPDATER){return starting;}const create=function(){'worklet';const animation=factory();decorateAnimation(animation);return animation;};if(_WORKLET||SHOULD_BE_USE_WEB){return create();}create.__isAnimationDefinition=true;return create;}"},O={code:"function reactNativeReanimated_utilTs10(){const{factory,decorateAnimation}=this.__closure;const animation=factory();decorateAnimation(animation);return animation;}"},T=(e.defineAnimation=(function(){var t=function(t,i){if(n)return t;var o,u=((o=function(){var t=i();return h(t),t}).__closure={factory:i,decorateAnimation:h},o.__workletHash=9384490839e3,o.__initData=O,o);return _WORKLET||a?u():(u.__isAnimationDefinition=!0,u)};return t.__closure={IN_STYLE_UPDATER:n,decorateAnimation:h,SHOULD_BE_USE_WEB:a},t.__workletHash=0xffa79328df9,t.__initData=y,t})(),{code:"function cancelAnimationNative_reactNativeReanimated_utilTs11(sharedValue){const{runOnUI}=this.__closure;if(_WORKLET){sharedValue.value=sharedValue.value;}else{runOnUI(function(){'worklet';sharedValue.value=sharedValue.value;})();}}"}),V={code:"function reactNativeReanimated_utilTs12(){const{sharedValue}=this.__closure;sharedValue.value=sharedValue.value;}"},b=(function(){var t=function(t){var i;_WORKLET?t.value=t.value:(0,r(d[8]).runOnUI)(((i=function(){t.value=t.value}).__closure={sharedValue:t},i.__workletHash=4509742497773,i.__initData=V,i))()};return t.__closure={runOnUI:r(d[8]).runOnUI},t.__workletHash=2369508093485,t.__initData=T,t})();e.cancelAnimation=a?function(t){t.value=t.value}:b}),308,[1,6,249,247,256,309,310,311,266]); +__d((function(g,r,i,a,m,e,d){'use strict';function u(){return(0,r(d[0]).isWeb)()?!!(0,r(d[0]).isWindowAvailable)()&&window.matchMedia('(prefers-reduced-motion: reduce)').matches:!!g._REANIMATED_IS_REDUCED_MOTION}Object.defineProperty(e,"__esModule",{value:!0}),e.ReducedMotionManager=void 0,e.isReducedMotionEnabledInSystem=u;var n=u(),t=e.ReducedMotionManager={jsValue:n,uiValue:(0,r(d[1]).makeMutable)(n),setEnabled:function(u){t.jsValue=u,t.uiValue.value=u}}}),309,[249,248]); +__d((function(g,r,_i,_a,_m,_e,d){'use strict';var t=r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.unflatten=_e.subtractMatrices=_e.scaleMatrix=_e.multiplyMatrices=_e.isAffineMatrixFlat=_e.isAffineMatrix=_e.getRotationMatrix=_e.flatten=_e.decomposeMatrixIntoMatricesAndAngles=_e.decomposeMatrix=_e.addMatrices=void 0;var a=t(r(d[1])),e={code:"function isAffineMatrixFlat_reactNativeReanimated_matrixUtilsTsx1(x){return Array.isArray(x)&&x.length===16&&x.every(function(element){return typeof element==='number'&&!isNaN(element);});}"},n=_e.isAffineMatrixFlat=(function(){var t=function(t){return Array.isArray(t)&&16===t.length&&t.every((function(t){return'number'==typeof t&&!isNaN(t)}))};return t.__closure={},t.__workletHash=0xe25956e1f35,t.__initData=e,t})(),i={code:"function isAffineMatrix_reactNativeReanimated_matrixUtilsTsx2(x){return Array.isArray(x)&&x.length===4&&x.every(function(row){return Array.isArray(row)&&row.length===4&&row.every(function(element){return typeof element==='number'&&!isNaN(element);});});}"},o=_e.isAffineMatrix=(function(){var t=function(t){return Array.isArray(t)&&4===t.length&&t.every((function(t){return Array.isArray(t)&&4===t.length&&t.every((function(t){return'number'==typeof t&&!isNaN(t)}))}))};return t.__closure={},t.__workletHash=3255481902002,t.__initData=i,t})(),s={code:"function flatten_reactNativeReanimated_matrixUtilsTsx3(matrix){return matrix.flat();}"},c=_e.flatten=(function(){var t=function(t){return t.flat()};return t.__closure={},t.__workletHash=9419609223755,t.__initData=s,t})(),u={code:"function unflatten_reactNativeReanimated_matrixUtilsTsx4(m){return[[m[0],m[1],m[2],m[3]],[m[4],m[5],m[6],m[7]],[m[8],m[9],m[10],m[11]],[m[12],m[13],m[14],m[15]]];}"},x=_e.unflatten=(function(){var t=function(t){return[[t[0],t[1],t[2],t[3]],[t[4],t[5],t[6],t[7]],[t[8],t[9],t[10],t[11]],[t[12],t[13],t[14],t[15]]]};return t.__closure={},t.__workletHash=0xce0044de8c0,t.__initData=u,t})(),l={code:"function maybeFlattenMatrix_reactNativeReanimated_matrixUtilsTsx5(matrix){const{isAffineMatrix,flatten}=this.__closure;return isAffineMatrix(matrix)?flatten(matrix):matrix;}"},_=(function(){var t=function(t){return o(t)?c(t):t};return t.__closure={isAffineMatrix:o,flatten:c},t.__workletHash=31377339073,t.__initData=l,t})(),m={code:"function multiplyMatrices_reactNativeReanimated_matrixUtilsTsx6(a,b){return[[a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]+a[0][3]*b[3][0],a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1]+a[0][3]*b[3][1],a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2]+a[0][3]*b[3][2],a[0][0]*b[0][3]+a[0][1]*b[1][3]+a[0][2]*b[2][3]+a[0][3]*b[3][3]],[a[1][0]*b[0][0]+a[1][1]*b[1][0]+a[1][2]*b[2][0]+a[1][3]*b[3][0],a[1][0]*b[0][1]+a[1][1]*b[1][1]+a[1][2]*b[2][1]+a[1][3]*b[3][1],a[1][0]*b[0][2]+a[1][1]*b[1][2]+a[1][2]*b[2][2]+a[1][3]*b[3][2],a[1][0]*b[0][3]+a[1][1]*b[1][3]+a[1][2]*b[2][3]+a[1][3]*b[3][3]],[a[2][0]*b[0][0]+a[2][1]*b[1][0]+a[2][2]*b[2][0]+a[2][3]*b[3][0],a[2][0]*b[0][1]+a[2][1]*b[1][1]+a[2][2]*b[2][1]+a[2][3]*b[3][1],a[2][0]*b[0][2]+a[2][1]*b[1][2]+a[2][2]*b[2][2]+a[2][3]*b[3][2],a[2][0]*b[0][3]+a[2][1]*b[1][3]+a[2][2]*b[2][3]+a[2][3]*b[3][3]],[a[3][0]*b[0][0]+a[3][1]*b[1][0]+a[3][2]*b[2][0]+a[3][3]*b[3][0],a[3][0]*b[0][1]+a[3][1]*b[1][1]+a[3][2]*b[2][1]+a[3][3]*b[3][1],a[3][0]*b[0][2]+a[3][1]*b[1][2]+a[3][2]*b[2][2]+a[3][3]*b[3][2],a[3][0]*b[0][3]+a[3][1]*b[1][3]+a[3][2]*b[2][3]+a[3][3]*b[3][3]]];}"},f=(_e.multiplyMatrices=(function(){var t=function(t,a){return[[t[0][0]*a[0][0]+t[0][1]*a[1][0]+t[0][2]*a[2][0]+t[0][3]*a[3][0],t[0][0]*a[0][1]+t[0][1]*a[1][1]+t[0][2]*a[2][1]+t[0][3]*a[3][1],t[0][0]*a[0][2]+t[0][1]*a[1][2]+t[0][2]*a[2][2]+t[0][3]*a[3][2],t[0][0]*a[0][3]+t[0][1]*a[1][3]+t[0][2]*a[2][3]+t[0][3]*a[3][3]],[t[1][0]*a[0][0]+t[1][1]*a[1][0]+t[1][2]*a[2][0]+t[1][3]*a[3][0],t[1][0]*a[0][1]+t[1][1]*a[1][1]+t[1][2]*a[2][1]+t[1][3]*a[3][1],t[1][0]*a[0][2]+t[1][1]*a[1][2]+t[1][2]*a[2][2]+t[1][3]*a[3][2],t[1][0]*a[0][3]+t[1][1]*a[1][3]+t[1][2]*a[2][3]+t[1][3]*a[3][3]],[t[2][0]*a[0][0]+t[2][1]*a[1][0]+t[2][2]*a[2][0]+t[2][3]*a[3][0],t[2][0]*a[0][1]+t[2][1]*a[1][1]+t[2][2]*a[2][1]+t[2][3]*a[3][1],t[2][0]*a[0][2]+t[2][1]*a[1][2]+t[2][2]*a[2][2]+t[2][3]*a[3][2],t[2][0]*a[0][3]+t[2][1]*a[1][3]+t[2][2]*a[2][3]+t[2][3]*a[3][3]],[t[3][0]*a[0][0]+t[3][1]*a[1][0]+t[3][2]*a[2][0]+t[3][3]*a[3][0],t[3][0]*a[0][1]+t[3][1]*a[1][1]+t[3][2]*a[2][1]+t[3][3]*a[3][1],t[3][0]*a[0][2]+t[3][1]*a[1][2]+t[3][2]*a[2][2]+t[3][3]*a[3][2],t[3][0]*a[0][3]+t[3][1]*a[1][3]+t[3][2]*a[2][3]+t[3][3]*a[3][3]]]};return t.__closure={},t.__workletHash=0xe8b7f2c9461,t.__initData=m,t})(),{code:"function subtractMatrices_reactNativeReanimated_matrixUtilsTsx7(maybeFlatA,maybeFlatB){const{isAffineMatrixFlat,maybeFlattenMatrix,unflatten}=this.__closure;const isFlatOnStart=isAffineMatrixFlat(maybeFlatA);const a=maybeFlattenMatrix(maybeFlatA);const b=maybeFlattenMatrix(maybeFlatB);const c=a.map(function(_,i){return a[i]-b[i];});return isFlatOnStart?c:unflatten(c);}"}),M=(_e.subtractMatrices=(function(){var t=function(t,a){var e=n(t),i=_(t),o=_(a),s=i.map((function(t,a){return i[a]-o[a]}));return e?s:x(s)};return t.__closure={isAffineMatrixFlat:n,maybeFlattenMatrix:_,unflatten:x},t.__workletHash=6627182100671,t.__initData=f,t})(),{code:"function addMatrices_reactNativeReanimated_matrixUtilsTsx8(maybeFlatA,maybeFlatB){const{isAffineMatrixFlat,maybeFlattenMatrix,unflatten}=this.__closure;const isFlatOnStart=isAffineMatrixFlat(maybeFlatA);const a=maybeFlattenMatrix(maybeFlatA);const b=maybeFlattenMatrix(maybeFlatB);const c=a.map(function(_,i){return a[i]+b[i];});return isFlatOnStart?c:unflatten(c);}"}),b=(_e.addMatrices=(function(){var t=function(t,a){var e=n(t),i=_(t),o=_(a),s=i.map((function(t,a){return i[a]+o[a]}));return e?s:x(s)};return t.__closure={isAffineMatrixFlat:n,maybeFlattenMatrix:_,unflatten:x},t.__workletHash=0xcdfe055f723,t.__initData=M,t})(),{code:"function scaleMatrix_reactNativeReanimated_matrixUtilsTsx9(maybeFlatA,scalar){const{isAffineMatrixFlat,maybeFlattenMatrix,unflatten}=this.__closure;const isFlatOnStart=isAffineMatrixFlat(maybeFlatA);const a=maybeFlattenMatrix(maybeFlatA);const b=a.map(function(x){return x*scalar;});return isFlatOnStart?b:unflatten(b);}"}),h=(_e.scaleMatrix=(function(){var t=function(t,a){var e=n(t),i=_(t).map((function(t){return t*a}));return e?i:x(i)};return t.__closure={isAffineMatrixFlat:n,maybeFlattenMatrix:_,unflatten:x},t.__workletHash=2686901073094,t.__initData=b,t})(),{code:"function getRotationMatrix_reactNativeReanimated_matrixUtilsTsx10(angle,axis='z'){const cos=Math.cos(angle);const sin=Math.sin(angle);switch(axis){case'z':return[[cos,sin,0,0],[-sin,cos,0,0],[0,0,1,0],[0,0,0,1]];case'y':return[[cos,0,-sin,0],[0,1,0,0],[sin,0,cos,0],[0,0,0,1]];case'x':return[[1,0,0,0],[0,cos,sin,0],[0,-sin,cos,0],[0,0,0,1]];}}"}),y=(_e.getRotationMatrix=(function(){var t=function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:'z',e=Math.cos(t),n=Math.sin(t);switch(a){case'z':return[[e,n,0,0],[-n,e,0,0],[0,0,1,0],[0,0,0,1]];case'y':return[[e,0,-n,0],[0,1,0,0],[n,0,e,0],[0,0,0,1]];case'x':return[[1,0,0,0],[0,e,n,0],[0,-n,e,0],[0,0,0,1]]}};return t.__closure={},t.__workletHash=5407153467837,t.__initData=h,t})(),{code:"function norm3d_reactNativeReanimated_matrixUtilsTsx11(x,y,z){return Math.sqrt(x*x+y*y+z*z);}"}),v=(function(){var t=function(t,a,e){return Math.sqrt(t*t+a*a+e*e)};return t.__closure={},t.__workletHash=0xefdf5b296b,t.__initData=y,t})(),w={code:"function transposeMatrix_reactNativeReanimated_matrixUtilsTsx12(matrix){const{flatten}=this.__closure;const m=flatten(matrix);return[[m[0],m[4],m[8],m[12]],[m[1],m[5],m[9],m[13]],[m[2],m[6],m[10],m[14]],[m[3],m[7],m[11],m[15]]];}"},A=(function(){var t=function(t){var a=c(t);return[[a[0],a[4],a[8],a[12]],[a[1],a[5],a[9],a[13]],[a[2],a[6],a[10],a[14]],[a[3],a[7],a[11],a[15]]]};return t.__closure={flatten:c},t.__workletHash=7878923469978,t.__initData=w,t})(),p={code:"function assertVectorsHaveEqualLengths_reactNativeReanimated_matrixUtilsTsx13(a,b){const{__DEV__}=this.__closure;if(__DEV__&&a.length!==b.length){throw new ReanimatedError(\"Cannot calculate inner product of two vectors of different lengths. Length of \"+a.toString()+\" is \"+a.length+\" and length of \"+b.toString()+\" is \"+b.length+\".\");}}"},F=(function(){var t=function(t,a){};return t.__closure={__DEV__:!1},t.__workletHash=3891131781244,t.__initData=p,t})(),k={code:"function innerProduct_reactNativeReanimated_matrixUtilsTsx14(a,b){const{assertVectorsHaveEqualLengths}=this.__closure;assertVectorsHaveEqualLengths(a,b);return a.reduce(function(acc,_,i){return acc+a[i]*b[i];},0);}"},R=(function(){var t=function(t,a){return F(t,a),t.reduce((function(e,n,i){return e+t[i]*a[i]}),0)};return t.__closure={assertVectorsHaveEqualLengths:F},t.__workletHash=2500695369804,t.__initData=k,t})(),H={code:"function projection_reactNativeReanimated_matrixUtilsTsx15(u,a){const{assertVectorsHaveEqualLengths,innerProduct}=this.__closure;assertVectorsHaveEqualLengths(u,a);const s=innerProduct(u,a)/innerProduct(u,u);return u.map(function(e){return e*s;});}"},N=(function(){var t=function(t,a){F(t,a);var e=R(t,a)/R(t,t);return t.map((function(t){return t*e}))};return t.__closure={assertVectorsHaveEqualLengths:F,innerProduct:R},t.__workletHash=0xe8dc63f940e,t.__initData=H,t})(),V={code:"function subtractVectors_reactNativeReanimated_matrixUtilsTsx16(a,b){const{assertVectorsHaveEqualLengths}=this.__closure;assertVectorsHaveEqualLengths(a,b);return a.map(function(_,i){return a[i]-b[i];});}"},D=(function(){var t=function(t,a){return F(t,a),t.map((function(e,n){return t[n]-a[n]}))};return t.__closure={assertVectorsHaveEqualLengths:F},t.__workletHash=5264626187493,t.__initData=V,t})(),T={code:"function scaleVector_reactNativeReanimated_matrixUtilsTsx17(u,a){return u.map(function(e){return e*a;});}"},U=(function(){var t=function(t,a){return t.map((function(t){return t*a}))};return t.__closure={},t.__workletHash=2059959224558,t.__initData=T,t})(),P={code:"function gramSchmidtAlgorithm_reactNativeReanimated_matrixUtilsTsx18(matrix){const{subtractVectors,projection,scaleVector,innerProduct,transposeMatrix}=this.__closure;const[a0,a1,a2,a3]=matrix;const u0=a0;const u1=subtractVectors(a1,projection(u0,a1));const u2=subtractVectors(subtractVectors(a2,projection(u0,a2)),projection(u1,a2));const u3=subtractVectors(subtractVectors(subtractVectors(a3,projection(u0,a3)),projection(u1,a3)),projection(u2,a3));const[e0,e1,e2,e3]=[u0,u1,u2,u3].map(function(u){return scaleVector(u,1/Math.sqrt(innerProduct(u,u)));});const rotationMatrix=[[e0[0],e1[0],e2[0],e3[0]],[e0[1],e1[1],e2[1],e3[1]],[e0[2],e1[2],e2[2],e3[2]],[e0[3],e1[3],e2[3],e3[3]]];const skewMatrix=[[innerProduct(e0,a0),innerProduct(e0,a1),innerProduct(e0,a2),innerProduct(e0,a3)],[0,innerProduct(e1,a1),innerProduct(e1,a2),innerProduct(e1,a3)],[0,0,innerProduct(e2,a2),innerProduct(e2,a3)],[0,0,0,innerProduct(e3,a3)]];return{rotationMatrix:transposeMatrix(rotationMatrix),skewMatrix:transposeMatrix(skewMatrix)};}"},z=(function(){var t=function(t){var e=(0,a.default)(t,4),n=e[0],i=e[1],o=e[2],s=e[3],c=n,u=D(i,N(c,i)),x=D(D(o,N(c,o)),N(u,o)),l=[c,u,x,D(D(D(s,N(c,s)),N(u,s)),N(x,s))].map((function(t){return U(t,1/Math.sqrt(R(t,t)))})),_=(0,a.default)(l,4),m=_[0],f=_[1],M=_[2],b=_[3],h=[[m[0],f[0],M[0],b[0]],[m[1],f[1],M[1],b[1]],[m[2],f[2],M[2],b[2]],[m[3],f[3],M[3],b[3]]],y=[[R(m,n),R(m,i),R(m,o),R(m,s)],[0,R(f,i),R(f,o),R(f,s)],[0,0,R(M,o),R(M,s)],[0,0,0,R(b,s)]];return{rotationMatrix:A(h),skewMatrix:A(y)}};return t.__closure={subtractVectors:D,projection:N,scaleVector:U,innerProduct:R,transposeMatrix:A},t.__workletHash=827372645680,t.__initData=P,t})(),E={code:"function decomposeMatrix_reactNativeReanimated_matrixUtilsTsx19(unknownTypeMatrix){const{maybeFlattenMatrix,norm3d,gramSchmidtAlgorithm}=this.__closure;const matrix=maybeFlattenMatrix(unknownTypeMatrix);if(matrix[15]===0){throw new ReanimatedError('Invalid transform matrix.');}matrix.forEach(function(_,i){return matrix[i]/=matrix[15];});const translationMatrix=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[matrix[12],matrix[13],matrix[14],1]];const sx=matrix[15]*norm3d(matrix[0],matrix[4],matrix[8]);const sy=matrix[15]*norm3d(matrix[1],matrix[5],matrix[9]);const sz=matrix[15]*norm3d(matrix[2],matrix[6],matrix[10]);const scaleMatrix=[[sx,0,0,0],[0,sy,0,0],[0,0,sz,0],[0,0,0,1]];const rotationAndSkewMatrix=[[matrix[0]/sx,matrix[1]/sx,matrix[2]/sx,0],[matrix[4]/sy,matrix[5]/sy,matrix[6]/sy,0],[matrix[8]/sz,matrix[9]/sz,matrix[10]/sz,0],[0,0,0,1]];const{rotationMatrix:rotationMatrix,skewMatrix:skewMatrix}=gramSchmidtAlgorithm(rotationAndSkewMatrix);return{translationMatrix:translationMatrix,scaleMatrix:scaleMatrix,rotationMatrix:rotationMatrix,skewMatrix:skewMatrix};}"},q=_e.decomposeMatrix=(function(){var t=function(t){var a=_(t);if(0===a[15])throw new(r(d[2]).ReanimatedError)('Invalid transform matrix.');a.forEach((function(t,e){return a[e]/=a[15]}));var e=[[1,0,0,0],[0,1,0,0],[0,0,1,0],[a[12],a[13],a[14],1]],n=a[15]*v(a[0],a[4],a[8]),i=a[15]*v(a[1],a[5],a[9]),o=a[15]*v(a[2],a[6],a[10]),s=[[n,0,0,0],[0,i,0,0],[0,0,o,0],[0,0,0,1]],c=[[a[0]/n,a[1]/n,a[2]/n,0],[a[4]/i,a[5]/i,a[6]/i,0],[a[8]/o,a[9]/o,a[10]/o,0],[0,0,0,1]],u=z(c);return{translationMatrix:e,scaleMatrix:s,rotationMatrix:u.rotationMatrix,skewMatrix:u.skewMatrix}};return t.__closure={maybeFlattenMatrix:_,norm3d:v,gramSchmidtAlgorithm:z},t.__workletHash=2076609522926,t.__initData=E,t})(),S={code:"function decomposeMatrixIntoMatricesAndAngles_reactNativeReanimated_matrixUtilsTsx20(matrix){const{decomposeMatrix}=this.__closure;const{scaleMatrix:scaleMatrix,rotationMatrix:rotationMatrix,translationMatrix:translationMatrix,skewMatrix:skewMatrix}=decomposeMatrix(matrix);const sinRy=-rotationMatrix[0][2];const ry=Math.asin(sinRy);let rx;let rz;if(sinRy===1||sinRy===-1){rz=0;rx=Math.atan2(sinRy*rotationMatrix[0][1],sinRy*rotationMatrix[0][2]);}else{rz=Math.atan2(rotationMatrix[0][1],rotationMatrix[0][0]);rx=Math.atan2(rotationMatrix[1][2],rotationMatrix[2][2]);}return{scaleMatrix:scaleMatrix,rotationMatrix:rotationMatrix,translationMatrix:translationMatrix,skewMatrix:skewMatrix,rx:rx||0,ry:ry||0,rz:rz||0};}"};_e.decomposeMatrixIntoMatricesAndAngles=(function(){var t=function(t){var a,e,n=q(t),i=n.scaleMatrix,o=n.rotationMatrix,s=n.translationMatrix,c=n.skewMatrix,u=-o[0][2],x=Math.asin(u);return 1===u||-1===u?(e=0,a=Math.atan2(u*o[0][1],u*o[0][2])):(e=Math.atan2(o[0][1],o[0][0]),a=Math.atan2(o[1][2],o[2][2])),{scaleMatrix:i,rotationMatrix:o,translationMatrix:s,skewMatrix:c,rx:a||0,ry:x||0,rz:e||0}};return t.__closure={decomposeMatrix:q},t.__workletHash=0xd5401186c06,t.__initData=S,t})()}),310,[1,38,256]); +__d((function(_g,_r,_i,_a,m,e,_d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.toLinearSpace=e.toGammaSpace=e.rgbaColor=e.rgbaArrayToRGBAColor=e.red=e.processColorsInProps=e.processColor=e.opacity=e.normalizeColor=e.isColor=e.hsvToColor=e.green=e.convertToRGBA=e.clampRGBA=e.blue=e.RGBtoHSV=e.ColorProperties=void 0;var r='[-+]?\\d*\\.?\\d+',o="[-+]?\\d*\\.?\\d+%";function t(){for(var r=arguments.length,o=new Array(r),t=0;t1){t-=1;}if(t<1/6){return p+(q-p)*6*t;}if(t<1/2){return q;}if(t<2/3){return p+(q-p)*(2/3-t)*6;}return p;}"},p=(function(){var r=function(r,o,t){return t<0&&(t+=1),t>1&&(t-=1),t<.16666666666666666?r+6*(o-r)*t:t<.5?o:t<.6666666666666666?r+(o-r)*(.6666666666666666-t)*6:r};return r.__closure={},r.__workletHash=7159052357590,r.__initData=_,r})(),f={code:"function hslToRgb_reactNativeReanimated_ColorsTs2(h,s,l){const{hue2rgb}=this.__closure;const q=l<0.5?l*(1+s):l+s-l*s;const p=2*l-q;const r=hue2rgb(p,q,h+1/3);const g=hue2rgb(p,q,h);const b=hue2rgb(p,q,h-1/3);return Math.round(r*255)<<24|Math.round(g*255)<<16|Math.round(b*255)<<8;}"},b=(function(){var r=function(r,o,t){var a=t<.5?t*(1+o):t+o-t*o,n=2*t-a,l=p(n,a,r+.3333333333333333),s=p(n,a,r),i=p(n,a,r-.3333333333333333);return Math.round(255*l)<<24|Math.round(255*s)<<16|Math.round(255*i)<<8};return r.__closure={hue2rgb:p},r.__workletHash=8187234922164,r.__initData=f,r})(),g={code:"function hwbToRgb_reactNativeReanimated_ColorsTs3(h,w,b){const{hue2rgb}=this.__closure;if(w+b>=1){const gray=Math.round(w*255/(w+b));return gray<<24|gray<<16|gray<<8;}const red=hue2rgb(0,1,h+1/3)*(1-w-b)+w;const green=hue2rgb(0,1,h)*(1-w-b)+w;const blue=hue2rgb(0,1,h-1/3)*(1-w-b)+w;return Math.round(red*255)<<24|Math.round(green*255)<<16|Math.round(blue*255)<<8;}"},C=(function(){var r=function(r,o,t){if(o+t>=1){var a=Math.round(255*o/(o+t));return a<<24|a<<16|a<<8}var n=p(0,1,r+.3333333333333333)*(1-o-t)+o,l=p(0,1,r)*(1-o-t)+o,s=p(0,1,r-.3333333333333333)*(1-o-t)+o;return Math.round(255*n)<<24|Math.round(255*l)<<16|Math.round(255*s)<<8};return r.__closure={hue2rgb:p},r.__workletHash=9535259482974,r.__initData=g,r})(),v={code:"function parse255_reactNativeReanimated_ColorsTs4(str){const int=Number.parseInt(str,10);if(int<0){return 0;}if(int>255){return 255;}return int;}"},k=(function(){var r=function(r){var o=Number.parseInt(r,10);return o<0?0:o>255?255:o};return r.__closure={},r.__workletHash=8095544411271,r.__initData=v,r})(),R={code:"function parse360_reactNativeReanimated_ColorsTs5(str){const int=Number.parseFloat(str);return(int%360+360)%360/360;}"},w=(function(){var r=function(r){return(Number.parseFloat(r)%360+360)%360/360};return r.__closure={},r.__workletHash=5461866352744,r.__initData=R,r})(),y={code:"function parse1_reactNativeReanimated_ColorsTs6(str){const num=Number.parseFloat(str);if(num<0){return 0;}if(num>1){return 255;}return Math.round(num*255);}"},x=(function(){var r=function(r){var o=Number.parseFloat(r);return o<0?0:o>1?255:Math.round(255*o)};return r.__closure={},r.__workletHash=4796460910094,r.__initData=y,r})(),A={code:"function parsePercentage_reactNativeReanimated_ColorsTs7(str){const int=Number.parseFloat(str);if(int<0){return 0;}if(int>100){return 1;}return int/100;}"},T=(function(){var r=function(r){var o=Number.parseFloat(r);return o<0?0:o>100?1:o/100};return r.__closure={},r.__workletHash=2774481844158,r.__initData=A,r})(),M={code:"function clampRGBA_reactNativeReanimated_ColorsTs8(RGBA){for(let i=0;i<4;i++){RGBA[i]=Math.max(0,Math.min(RGBA[i],1));}}"},N=(e.clampRGBA=(function(){var r=function(r){for(var o=0;o<4;o++)r[o]=Math.max(0,Math.min(r[o],1))};return r.__closure={},r.__workletHash=8349066252220,r.__initData=M,r})(),(0,_r(_d[0]).makeShareable)({transparent:0,aliceblue:4042850303,antiquewhite:4209760255,aqua:16777215,aquamarine:2147472639,azure:4043309055,beige:4126530815,bisque:4293182719,black:255,blanchedalmond:4293643775,blue:65535,blueviolet:2318131967,brown:2771004159,burlywood:3736635391,burntsienna:3934150143,cadetblue:1604231423,chartreuse:2147418367,chocolate:3530104575,coral:4286533887,cornflowerblue:1687547391,cornsilk:4294499583,crimson:3692313855,cyan:16777215,darkblue:35839,darkcyan:9145343,darkgoldenrod:3095792639,darkgray:2846468607,darkgreen:6553855,darkgrey:2846468607,darkkhaki:3182914559,darkmagenta:2332068863,darkolivegreen:1433087999,darkorange:4287365375,darkorchid:2570243327,darkred:2332033279,darksalmon:3918953215,darkseagreen:2411499519,darkslateblue:1211993087,darkslategray:793726975,darkslategrey:793726975,darkturquoise:13554175,darkviolet:2483082239,deeppink:4279538687,deepskyblue:12582911,dimgray:1768516095,dimgrey:1768516095,dodgerblue:512819199,firebrick:2988581631,floralwhite:4294635775,forestgreen:579543807,fuchsia:4278255615,gainsboro:3705462015,ghostwhite:4177068031,gold:4292280575,goldenrod:3668254975,gray:2155905279,green:8388863,greenyellow:2919182335,grey:2155905279,honeydew:4043305215,hotpink:4285117695,indianred:3445382399,indigo:1258324735,ivory:4294963455,khaki:4041641215,lavender:3873897215,lavenderblush:4293981695,lawngreen:2096890111,lemonchiffon:4294626815,lightblue:2916673279,lightcoral:4034953471,lightcyan:3774873599,lightgoldenrodyellow:4210742015,lightgray:3553874943,lightgreen:2431553791,lightgrey:3553874943,lightpink:4290167295,lightsalmon:4288707327,lightseagreen:548580095,lightskyblue:2278488831,lightslategray:2005441023,lightslategrey:2005441023,lightsteelblue:2965692159,lightyellow:4294959359,lime:16711935,limegreen:852308735,linen:4210091775,magenta:4278255615,maroon:2147483903,mediumaquamarine:1724754687,mediumblue:52735,mediumorchid:3126187007,mediumpurple:2473647103,mediumseagreen:1018393087,mediumslateblue:2070474495,mediumspringgreen:16423679,mediumturquoise:1221709055,mediumvioletred:3340076543,midnightblue:421097727,mintcream:4127193855,mistyrose:4293190143,moccasin:4293178879,navajowhite:4292783615,navy:33023,oldlace:4260751103,olive:2155872511,olivedrab:1804477439,orange:4289003775,orangered:4282712319,orchid:3664828159,palegoldenrod:4008225535,palegreen:2566625535,paleturquoise:2951671551,palevioletred:3681588223,papayawhip:4293907967,peachpuff:4292524543,peru:3448061951,pink:4290825215,plum:3718307327,powderblue:2967529215,purple:2147516671,rebeccapurple:1714657791,red:4278190335,rosybrown:3163525119,royalblue:1097458175,saddlebrown:2336560127,salmon:4202722047,sandybrown:4104413439,seagreen:780883967,seashell:4294307583,sienna:2689740287,silver:3233857791,skyblue:2278484991,slateblue:1784335871,slategray:1887473919,slategrey:1887473919,snow:4294638335,springgreen:16744447,steelblue:1182971135,tan:3535047935,teal:8421631,thistle:3636451583,tomato:4284696575,turquoise:1088475391,violet:4001558271,wheat:4125012991,white:4294967295,whitesmoke:4126537215,yellow:4294902015,yellowgreen:2597139199})),H=e.ColorProperties=(0,_r(_d[0]).makeShareable)(['backgroundColor','borderBottomColor','borderColor','borderLeftColor','borderRightColor','borderTopColor','borderStartColor','borderEndColor','borderBlockColor','borderBlockEndColor','borderBlockStartColor','color','outlineColor','shadowColor','textDecorationColor','tintColor','textShadowColor','overlayColor','fill','floodColor','lightingColor','stopColor','stroke']),G=(0,_r(_d[0]).makeShareable)({boxShadow:'color'}),B={code:"function normalizeColor_reactNativeReanimated_ColorsTs9(color){const{MATCHERS,names,parse255,parse1,hslToRgb,parse360,parsePercentage,hwbToRgb}=this.__closure;if(typeof color==='number'){if(color>>>0===color&&color>=0&&color<=0xffffffff){return color;}return null;}if(typeof color!=='string'){return null;}let match;if(match=MATCHERS.hex6.exec(color)){return Number.parseInt(match[1]+'ff',16)>>>0;}if(names[color]!==undefined){return names[color];}if(match=MATCHERS.rgb.exec(color)){return((parse255(match[1])<<24|parse255(match[2])<<16|parse255(match[3])<<8|0x000000ff)>>>0);}if(match=MATCHERS.rgba.exec(color)){if(match[6]!==undefined){return(parse255(match[6])<<24|parse255(match[7])<<16|parse255(match[8])<<8|parse1(match[9]))>>>0;}return(parse255(match[2])<<24|parse255(match[3])<<16|parse255(match[4])<<8|parse1(match[5]))>>>0;}if(match=MATCHERS.hex3.exec(color)){return Number.parseInt(match[1]+match[1]+match[2]+match[2]+match[3]+match[3]+'ff',16)>>>0;}if(match=MATCHERS.hex8.exec(color)){return Number.parseInt(match[1],16)>>>0;}if(match=MATCHERS.hex4.exec(color)){return Number.parseInt(match[1]+match[1]+match[2]+match[2]+match[3]+match[3]+match[4]+match[4],16)>>>0;}if(match=MATCHERS.hsl.exec(color)){return(hslToRgb(parse360(match[1]),parsePercentage(match[2]),parsePercentage(match[3]))|0x000000ff)>>>0;}if(match=MATCHERS.hsla.exec(color)){if(match[6]!==undefined){return(hslToRgb(parse360(match[6]),parsePercentage(match[7]),parsePercentage(match[8]))|parse1(match[9]))>>>0;}return(hslToRgb(parse360(match[2]),parsePercentage(match[3]),parsePercentage(match[4]))|parse1(match[5]))>>>0;}if(match=MATCHERS.hwb.exec(color)){return(hwbToRgb(parse360(match[1]),parsePercentage(match[2]),parsePercentage(match[3]))|0x000000ff)>>>0;}return null;}"},S=e.normalizeColor=(function(){var r=function(r){return'number'==typeof r?r>>>0===r&&r>=0&&r<=4294967295?r:null:'string'!=typeof r?null:(o=d.hex6.exec(r))?Number.parseInt(o[1]+'ff',16)>>>0:void 0!==N[r]?N[r]:(o=d.rgb.exec(r))?(k(o[1])<<24|k(o[2])<<16|k(o[3])<<8|255)>>>0:(o=d.rgba.exec(r))?void 0!==o[6]?(k(o[6])<<24|k(o[7])<<16|k(o[8])<<8|x(o[9]))>>>0:(k(o[2])<<24|k(o[3])<<16|k(o[4])<<8|x(o[5]))>>>0:(o=d.hex3.exec(r))?Number.parseInt(o[1]+o[1]+o[2]+o[2]+o[3]+o[3]+'ff',16)>>>0:(o=d.hex8.exec(r))?Number.parseInt(o[1],16)>>>0:(o=d.hex4.exec(r))?Number.parseInt(o[1]+o[1]+o[2]+o[2]+o[3]+o[3]+o[4]+o[4],16)>>>0:(o=d.hsl.exec(r))?(255|b(w(o[1]),T(o[2]),T(o[3])))>>>0:(o=d.hsla.exec(r))?void 0!==o[6]?(b(w(o[6]),T(o[7]),T(o[8]))|x(o[9]))>>>0:(b(w(o[2]),T(o[3]),T(o[4]))|x(o[5]))>>>0:(o=d.hwb.exec(r))?(255|C(w(o[1]),T(o[2]),T(o[3])))>>>0:null;var o};return r.__closure={MATCHERS:d,names:N,parse255:k,parse1:x,hslToRgb:b,parse360:w,parsePercentage:T,hwbToRgb:C},r.__workletHash=0xad6283b538b,r.__initData=B,r})(),D={code:"function reactNativeReanimated_ColorsTs10(c){return(c>>24&255)/255;}"},I=(e.opacity=((l=function(r){return(r>>24&255)/255}).__closure={},l.__workletHash=0xfe8fb755402,l.__initData=D,l),{code:"function reactNativeReanimated_ColorsTs11(c){return c>>16&255;}"}),P=(e.red=((s=function(r){return r>>16&255}).__closure={},s.__workletHash=1146204191038,s.__initData=I,s),{code:"function reactNativeReanimated_ColorsTs12(c){return c>>8&255;}"}),q=(e.green=((i=function(r){return r>>8&255}).__closure={},i.__workletHash=0xced7d8c53c2,i.__initData=P,i),{code:"function reactNativeReanimated_ColorsTs13(c){return c&255;}"}),z=(e.blue=((c=function(r){return 255&r}).__closure={},c.__workletHash=5068782060955,c.__initData=q,c),{code:"function reactNativeReanimated_ColorsTs14(r,g,b,alpha=1){const safeAlpha=alpha<0.001?0:alpha;return\"rgba(\"+r+\", \"+g+\", \"+b+\", \"+safeAlpha+\")\";}"}),E=e.rgbaColor=(u=function(r,o,t){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return`rgba(${r}, ${o}, ${t}, ${a<.001?0:a})`},u.__closure={},u.__workletHash=3290844101186,u.__initData=z,u),F={code:"function RGBtoHSV_reactNativeReanimated_ColorsTs15(r,g,b){const max=Math.max(r,g,b);const min=Math.min(r,g,b);const d=max-min;const s=max===0?0:d/max;const v=max/255;let h=0;switch(max){case min:break;case r:h=g-b+d*(g>>8)>>>0;return normalizedColor;}"}),O=(function(){var r=function(r){if(null==r||'number'==typeof r)return r;var o=S(r);return null!=o?'number'!=typeof o?null:o=(o<<24|o>>>8)>>>0:void 0};return r.__closure={normalizeColor:S},r.__workletHash=4390309998545,r.__initData=j,r})(),J={code:"function isColor_reactNativeReanimated_ColorsTs19(value){const{processColorInitially}=this.__closure;if(typeof value!=='string'){return false;}return processColorInitially(value)!=null;}"},K=(e.isColor=(function(){var r=function(r){return'string'==typeof r&&null!=O(r)};return r.__closure={processColorInitially:O},r.__workletHash=6721589531501,r.__initData=J,r})(),(0,_r(_d[1]).isAndroid)()),Q={code:"function processColor_reactNativeReanimated_ColorsTs20(color){const{processColorInitially,IS_ANDROID}=this.__closure;let normalizedColor=processColorInitially(color);if(normalizedColor===null||normalizedColor===undefined){return undefined;}if(typeof normalizedColor!=='number'){return null;}if(IS_ANDROID){normalizedColor=normalizedColor|0x0;}return normalizedColor;}"},U=e.processColor=(function(){var r=function(r){var o=O(r);if(null!=o)return'number'!=typeof o?null:(K&&(o|=0),o)};return r.__closure={processColorInitially:O,IS_ANDROID:K},r.__workletHash=0xac4b9c720e9,r.__initData=Q,r})(),W={code:"function processColorsInProps_reactNativeReanimated_ColorsTs21(props){const{ColorProperties,processColor,NestedColorProperties}=this.__closure;for(const key in props){if(ColorProperties.includes(key)){props[key]=processColor(props[key]);}else if(NestedColorProperties[key]){const propGroupList=props[key];for(const propGroup of propGroupList){const nestedPropertyName=NestedColorProperties[key];if(propGroup[nestedPropertyName]!==undefined){propGroup[nestedPropertyName]=processColor(propGroup[nestedPropertyName]);}}}}}"},X=(e.processColorsInProps=(function(){var r=function(r){for(var o in r)if(H.includes(o))r[o]=U(r[o]);else if(G[o]){var t=r[o];for(var a of t){var n=G[o];void 0!==a[n]&&(a[n]=U(a[n]))}}};return r.__closure={ColorProperties:H,processColor:U,NestedColorProperties:G},r.__workletHash=0xe457684488c,r.__initData=W,r})(),{code:"function convertToRGBA_reactNativeReanimated_ColorsTs22(color){const{processColorInitially}=this.__closure;const processedColor=processColorInitially(color);const a=(processedColor>>>24)/255;const r=(processedColor<<8>>>24)/255;const g=(processedColor<<16>>>24)/255;const b=(processedColor<<24>>>24)/255;return[r,g,b,a];}"}),Y=(e.convertToRGBA=(function(){var r=function(r){var o=O(r);return[(o<<8>>>24)/255,(o<<16>>>24)/255,(o<<24>>>24)/255,(o>>>24)/255]};return r.__closure={processColorInitially:O},r.__workletHash=0xf49e9168552,r.__initData=X,r})(),{code:"function rgbaArrayToRGBAColor_reactNativeReanimated_ColorsTs23(RGBA){const alpha=RGBA[3]<0.001?0:RGBA[3];return\"rgba(\"+Math.round(RGBA[0]*255)+\", \"+Math.round(RGBA[1]*255)+\", \"+Math.round(RGBA[2]*255)+\", \"+alpha+\")\";}"}),Z=(e.rgbaArrayToRGBAColor=(function(){var r=function(r){var o=r[3]<.001?0:r[3];return`rgba(${Math.round(255*r[0])}, ${Math.round(255*r[1])}, ${Math.round(255*r[2])}, ${o})`};return r.__closure={},r.__workletHash=0xc57abdec4c2,r.__initData=Y,r})(),{code:"function toLinearSpace_reactNativeReanimated_ColorsTs24(RGBA,gamma=2.2){const res=[];for(let i=0;i<3;++i){res.push(Math.pow(RGBA[i],gamma));}res.push(RGBA[3]);return res;}"}),rr=(e.toLinearSpace=(function(){var r=function(r){for(var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2.2,t=[],a=0;a<3;++a)t.push(Math.pow(r[a],o));return t.push(r[3]),t};return r.__closure={},r.__workletHash=0x993fbc0c5d1,r.__initData=Z,r})(),{code:"function toGammaSpace_reactNativeReanimated_ColorsTs25(RGBA,gamma=2.2){const res=[];for(let i=0;i<3;++i){res.push(Math.pow(RGBA[i],1/gamma));}res.push(RGBA[3]);return res;}"});e.toGammaSpace=(function(){var r=function(r){for(var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2.2,t=[],a=0;a<3;++a)t.push(Math.pow(r[a],1/o));return t.push(r[3]),t};return r.__closure={},r.__workletHash=310643028628,r.__initData=rr,r})()}),311,[312,249]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.configureLayoutAnimationBatch=function(n){r(d[8]).ReanimatedModule.configureLayoutAnimationBatch(n)},Object.defineProperty(e,"createWorkletRuntime",{enumerable:!0,get:function(){return r(d[0]).createWorkletRuntime}}),e.enableLayoutAnimations=function(n){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t?(c={enableLayoutAnimations:n,setByUser:!0},r(d[8]).ReanimatedModule.enableLayoutAnimations(n)):c.setByUser||c.enableLayoutAnimations===n||(c.enableLayoutAnimations=n,r(d[8]).ReanimatedModule.enableLayoutAnimations(n))},Object.defineProperty(e,"executeOnUIRuntimeSync",{enumerable:!0,get:function(){return r(d[1]).executeOnUIRuntimeSync}}),e.getViewProp=function(n,t,o){if((0,r(d[6]).isFabric)()&&!o)throw new(r(d[7]).ReanimatedError)('Function `getViewProp` requires a component to be passed as an argument on Fabric.');return new Promise((function(u,s){return r(d[8]).ReanimatedModule.getViewProp(n,t,o,(function(n){'string'==typeof n&&'error:'===n.substr(0,6)?s(n):u(n)}))}))},e.initializeSensor=function(n,t){return u().initializeSensor(n,t)},e.isReanimated3=e.isConfigured=void 0,e.jsiConfigureProps=function(n,o){t||r(d[8]).ReanimatedModule.configureProps(n,o)},Object.defineProperty(e,"makeMutable",{enumerable:!0,get:function(){return r(d[2]).makeMutable}}),Object.defineProperty(e,"makeShareable",{enumerable:!0,get:function(){return r(d[3]).makeShareable}}),Object.defineProperty(e,"makeShareableCloneRecursive",{enumerable:!0,get:function(){return r(d[3]).makeShareableCloneRecursive}}),e.markNodeAsRemovable=function(n){r(d[8]).ReanimatedModule.markNodeAsRemovable(n)},e.registerEventHandler=function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-1,u=(function(){var t=function(t,o){g.__frameTimestamp=t,n(o),g.__flushAnimationFrame(t),g.__frameTimestamp=void 0};return t.__closure={eventHandler:n},t.__workletHash=3306720828011,t.__initData=s,t})();return r(d[8]).ReanimatedModule.registerEventHandler((0,r(d[3]).makeShareableCloneRecursive)(u),t,o)},e.registerSensor=function(n,t,o){return u().registerSensor(n,t,(0,r(d[3]).makeShareableCloneRecursive)(o))},Object.defineProperty(e,"runOnJS",{enumerable:!0,get:function(){return r(d[1]).runOnJS}}),Object.defineProperty(e,"runOnRuntime",{enumerable:!0,get:function(){return r(d[0]).runOnRuntime}}),Object.defineProperty(e,"runOnUI",{enumerable:!0,get:function(){return r(d[1]).runOnUI}}),e.setShouldAnimateExitingForTag=function(n,t){r(d[8]).ReanimatedModule.setShouldAnimateExitingForTag(n,t)},Object.defineProperty(e,"startMapper",{enumerable:!0,get:function(){return r(d[4]).startMapper}}),Object.defineProperty(e,"stopMapper",{enumerable:!0,get:function(){return r(d[4]).stopMapper}}),e.subscribeForKeyboardEvents=function(t,o){var u,s,c=(function(){var n=function(n,o){var u=g._getAnimationTimestamp();g.__frameTimestamp=u,t(n,o),g.__flushAnimationFrame(u),g.__frameTimestamp=void 0};return n.__closure={eventHandler:t},n.__workletHash=0xa8b8c1f12c6,n.__initData=l,n})();return r(d[8]).ReanimatedModule.subscribeForKeyboardEvents((0,r(d[3]).makeShareableCloneRecursive)(c),n||null!=(u=o.isStatusBarTranslucentAndroid)&&u,n||null!=(s=o.isNavigationBarTranslucentAndroid)&&s)},e.unmarkNodeAsRemovable=function(n){r(d[8]).ReanimatedModule.unmarkNodeAsRemovable(n)},e.unregisterEventHandler=function(n){return r(d[8]).ReanimatedModule.unregisterEventHandler(n)},e.unregisterSensor=function(n){return u().unregisterSensor(n)},e.unsubscribeFromKeyboardEvents=function(n){return r(d[8]).ReanimatedModule.unsubscribeFromKeyboardEvents(n)};var n=(0,r(d[5]).isEdgeToEdge)(),t=(0,r(d[6]).shouldBeUseWeb)(),o=e.isReanimated3=function(){return!0};e.isConfigured=o;function u(){return g.__sensorContainer||(g.__sensorContainer=new(r(d[9]).SensorContainer)),g.__sensorContainer}var s={code:"function handleAndFlushAnimationFrame_reactNativeReanimated_coreTs1(eventTimestamp,event){const{eventHandler}=this.__closure;global.__frameTimestamp=eventTimestamp;eventHandler(event);global.__flushAnimationFrame(eventTimestamp);global.__frameTimestamp=undefined;}"};var l={code:"function handleAndFlushAnimationFrame_reactNativeReanimated_coreTs2(state,height){const{eventHandler}=this.__closure;const now=global._getAnimationTimestamp();global.__frameTimestamp=now;eventHandler(state,height);global.__flushAnimationFrame(now);global.__frameTimestamp=undefined;}"};(0,r(d[10]).initializeUIRuntime)(r(d[8]).ReanimatedModule);var c={enableLayoutAnimations:!1,setByUser:!1}}),312,[313,266,248,254,315,317,249,256,267,318,314]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.createWorkletRuntime=function(t,o){var l=__reanimatedLoggerConfig;return r(d[1]).ReanimatedModule.createWorkletRuntime(t,(0,r(d[2]).makeShareableCloneRecursive)((u=function(){(0,r(d[3]).registerReanimatedError)(),(0,r(d[4]).registerLoggerConfig)(l),(0,r(d[5]).setupCallGuard)(),(0,r(d[5]).setupConsole)(),null==o||o()},u.__closure={registerReanimatedError:r(d[3]).registerReanimatedError,registerLoggerConfig:r(d[4]).registerLoggerConfig,config:l,setupCallGuard:r(d[5]).setupCallGuard,setupConsole:r(d[5]).setupConsole,initializer:o},u.__workletHash=4731807293563,u.__initData=n,u)));var u},e.runOnRuntime=void 0;var t=(0,r(d[0]).shouldBeUseWeb)(),n={code:"function reactNativeReanimated_runtimesTs1(){const{registerReanimatedError,registerLoggerConfig,config,setupCallGuard,setupConsole,initializer}=this.__closure;var _initializer;registerReanimatedError();registerLoggerConfig(config);setupCallGuard();setupConsole();(_initializer=initializer)===null||_initializer===void 0||_initializer();}"};var o={code:"function runOnRuntime_reactNativeReanimated_runtimesTs2(workletRuntime,worklet){const{__DEV__,SHOULD_BE_USE_WEB,isWorkletFunction,makeShareableCloneOnUIRecursive,ReanimatedModule,makeShareableCloneRecursive}=this.__closure;if(__DEV__&&!SHOULD_BE_USE_WEB&&!isWorkletFunction(worklet)){throw new ReanimatedError('The function passed to `runOnRuntime` is not a worklet.'+(_WORKLET?' Please make sure that `processNestedWorklets` option in Reanimated Babel plugin is enabled.':''));}if(_WORKLET){return function(...args){return global._scheduleOnRuntime(workletRuntime,makeShareableCloneOnUIRecursive(function(){'worklet';worklet(...args);}));};}return function(...args){return ReanimatedModule.scheduleOnRuntime(workletRuntime,makeShareableCloneRecursive(function(){'worklet';worklet(...args);}));};}"},l={code:"function reactNativeReanimated_runtimesTs3(){const{worklet,args}=this.__closure;worklet(...args);}"},u={code:"function reactNativeReanimated_runtimesTs4(){const{worklet,args}=this.__closure;worklet(...args);}"};e.runOnRuntime=(function(){var n=function(t,n){return _WORKLET?function(){for(var o=arguments.length,u=new Array(o),s=0;s1?n-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:[],u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],f=n+=1;return(0,r(d[2]).runOnUI)((function(){var n=function(){var n=g.__mapperRegistry;void 0===n&&(n=g.__mapperRegistry=s()),n.start(f,t,p,u)};return n.__closure={createMapperRegistry:s,mapperID:f,worklet:t,inputs:p,outputs:u},n.__workletHash=9660765174658,n.__initData=o,n})())(),f},e.stopMapper=function(t){(0,r(d[2]).runOnUI)((p=function(){var p=g.__mapperRegistry;null==p||p.stop(t)},p.__closure={mapperID:t},p.__workletHash=7172044021294,p.__initData=u,p))();var p};var t=(0,r(d[0]).isJest)(),p={code:"function createMapperRegistry_reactNativeReanimated_mappersTs1(){const{IS_JEST,isSharedValue}=this.__closure;const mappers=new Map();let sortedMappers=[];let runRequested=false;let processingMappers=false;function updateMappersOrder(){const pre=new Map();mappers.forEach(function(mapper){if(mapper.outputs){for(const output of mapper.outputs){const preMappers=pre.get(output);if(preMappers===undefined){pre.set(output,[mapper]);}else{preMappers.push(mapper);}}}});const visited=new Set();const newOrder=[];function dfs(mapper){visited.add(mapper);for(const input of mapper.inputs){const preMappers=pre.get(input);if(preMappers){for(const preMapper of preMappers){if(!visited.has(preMapper)){dfs(preMapper);}}}}newOrder.push(mapper);}mappers.forEach(function(mapper){if(!visited.has(mapper)){dfs(mapper);}});sortedMappers=newOrder;}function mapperRun(){runRequested=false;if(processingMappers){return;}try{processingMappers=true;if(mappers.size!==sortedMappers.length){updateMappersOrder();}for(const mapper of sortedMappers){if(mapper.dirty){mapper.dirty=false;mapper.worklet();}}}finally{processingMappers=false;}}function maybeRequestUpdates(){if(IS_JEST){mapperRun();}else if(!runRequested){if(processingMappers){requestAnimationFrame(mapperRun);}else{queueMicrotask(mapperRun);}runRequested=true;}}function extractInputs(inputs,resultArray){if(Array.isArray(inputs)){for(const input of inputs){input&&extractInputs(input,resultArray);}}else if(isSharedValue(inputs)){resultArray.push(inputs);}else if(Object.getPrototypeOf(inputs)===Object.prototype){for(const element of Object.values(inputs)){element&&extractInputs(element,resultArray);}}return resultArray;}return{start:function(mapperID,worklet,inputs,outputs){const mapper={id:mapperID,dirty:true,worklet:worklet,inputs:extractInputs(inputs,[]),outputs:outputs};mappers.set(mapper.id,mapper);sortedMappers=[];for(const sv of mapper.inputs){sv.addListener(mapper.id,function(){mapper.dirty=true;maybeRequestUpdates();});}maybeRequestUpdates();},stop:function(mapperID){const mapper=mappers.get(mapperID);if(mapper){mappers.delete(mapper.id);sortedMappers=[];for(const sv of mapper.inputs){sv.removeListener(mapper.id);}}}};}"},s=(function(){var s=function(){var p=new Map,s=[],n=!1,o=!1;function u(){var t=new Map;p.forEach((function(p){if(p.outputs)for(var s of p.outputs){var n=t.get(s);void 0===n?t.set(s,[p]):n.push(p)}}));var n=new Set,o=[];function u(p){for(var s of(n.add(p),p.inputs)){var f=t.get(s);if(f)for(var c of f)n.has(c)||u(c)}o.push(p)}p.forEach((function(t){n.has(t)||u(t)})),s=o}function f(){if(n=!1,!o)try{for(var t of(o=!0,p.size!==s.length&&u(),s))t.dirty&&(t.dirty=!1,t.worklet())}finally{o=!1}}function c(){t?f():n||(o?requestAnimationFrame(f):queueMicrotask(f),n=!0)}function l(t,p){if(Array.isArray(t))for(var s of t)s&&l(s,p);else if((0,r(d[1]).isSharedValue)(t))p.push(t);else if(Object.getPrototypeOf(t)===Object.prototype)for(var n of Object.values(t))n&&l(n,p);return p}return{start:function(t,n,o,u){var f={id:t,dirty:!0,worklet:n,inputs:l(o,[]),outputs:u};for(var y of(p.set(f.id,f),s=[],f.inputs))y.addListener(f.id,(function(){f.dirty=!0,c()}));c()},stop:function(t){var n=p.get(t);if(n)for(var o of(p.delete(n.id),s=[],n.inputs))o.removeListener(n.id)}}};return s.__closure={IS_JEST:t,isSharedValue:r(d[1]).isSharedValue},s.__workletHash=6094846488348,s.__initData=p,s})(),n=9999,o={code:"function reactNativeReanimated_mappersTs2(){const{createMapperRegistry,mapperID,worklet,inputs,outputs}=this.__closure;let mapperRegistry=global.__mapperRegistry;if(mapperRegistry===undefined){mapperRegistry=global.__mapperRegistry=createMapperRegistry();}mapperRegistry.start(mapperID,worklet,inputs,outputs);}"};var u={code:"function reactNativeReanimated_mappersTs3(){const{mapperID}=this.__closure;const mapperRegistry=global.__mapperRegistry;mapperRegistry===null||mapperRegistry===void 0||mapperRegistry.stop(mapperID);}"}}),315,[249,316,266]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.isSharedValue=void 0;var u={code:"function isSharedValue_reactNativeReanimated_isSharedValueTs1(value){return(value===null||value===void 0?void 0:value._isReanimatedSharedValue)===true;}"};e.isSharedValue=(function(){var t=function(u){return!0===(null==u?void 0:u._isReanimatedSharedValue)};return t.__closure={},t.__workletHash=8647565488568,t.__initData=u,t})()}),316,[]); +__d((function(g,r,i,a,m,e,d){'use strict';r(d[0]);var n=r(d[1]);new Set;e.controlEdgeToEdgeValues=function(n){},e.isEdgeToEdge=function(){return null!=n.TurboModuleRegistry.get("RNEdgeToEdge")}}),317,[38,2]); +__d((function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.SensorContainer=void 0;var t=n(r(d[1])),s=n(r(d[2])),u=n(r(d[3]));e.SensorContainer=(function(){return(0,s.default)((function n(){(0,t.default)(this,n),this.nativeSensors=new Map}),[{key:"getSensorId",value:function(n,t){return 100*n+10*t.iosReferenceFrame+Number(t.adjustToInterfaceOrientation)}},{key:"initializeSensor",value:function(n,t){var s=this.getSensorId(n,t);if(!this.nativeSensors.has(s)){var o=new u.default(n,t);this.nativeSensors.set(s,o)}return this.nativeSensors.get(s).getSharedValue()}},{key:"registerSensor",value:function(n,t,s){var u=this.getSensorId(n,t);if(!this.nativeSensors.has(u))return-1;var o=this.nativeSensors.get(u);return o&&o.isAvailable()&&(o.isRunning()||o.register(s))?(o.listenersNumber++,u):-1}},{key:"unregisterSensor",value:function(n){if(this.nativeSensors.has(n)){var t=this.nativeSensors.get(n);t&&t.isRunning()&&(t.listenersNumber--,0===t.listenersNumber&&t.unregister())}}}])})()}),318,[1,12,13,319]); +__d((function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=n(r(d[1])),s=n(r(d[2]));function u(n){return n===r(d[3]).SensorType.ROTATION?(0,r(d[4]).makeMutable)({qw:0,qx:0,qy:0,qz:0,yaw:0,pitch:0,roll:0,interfaceOrientation:0}):(0,r(d[4]).makeMutable)({x:0,y:0,z:0,interfaceOrientation:0})}e.default=(function(){return(0,s.default)((function n(s,o){(0,t.default)(this,n),this.listenersNumber=0,this.sensorId=null,this.sensorType=s,this.config=o,this.data=u(s)}),[{key:"register",value:function(n){var t=this.config,s=this.sensorType;return this.sensorId=r(d[5]).ReanimatedModule.registerSensor(s,'auto'===t.interval?-1:t.interval,t.iosReferenceFrame,n),-1!==this.sensorId}},{key:"isRunning",value:function(){return-1!==this.sensorId&&null!==this.sensorId}},{key:"isAvailable",value:function(){return-1!==this.sensorId}},{key:"getSharedValue",value:function(){return this.data}},{key:"unregister",value:function(){null!==this.sensorId&&-1!==this.sensorId&&r(d[5]).ReanimatedModule.unregisterSensor(this.sensorId),this.sensorId=null}}])})()}),319,[1,12,13,247,248,267]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.withTiming=void 0;var t,n={code:"function reactNativeReanimated_timingTs1(toValue,userConfig,callback){const{__DEV__,assertEasingIsWorklet,defineAnimation,Easing,getReduceMotionForAnimation}=this.__closure;if(__DEV__&&userConfig!==null&&userConfig!==void 0&&userConfig.easing){assertEasingIsWorklet(userConfig.easing);}return defineAnimation(toValue,function(){'worklet';const config={duration:300,easing:Easing.inOut(Easing.quad)};if(userConfig){Object.keys(userConfig).forEach(function(key){return config[key]=userConfig[key];});}function timing(animation,now){const{toValue:toValue,startTime:startTime,startValue:startValue}=animation;const runtime=now-startTime;if(runtime>=config.duration){animation.startTime=0;animation.current=toValue;return true;}const progress=animation.easing(runtime/config.duration);animation.current=startValue+(toValue-startValue)*progress;return false;}function onStart(animation,value,now,previousAnimation){if(previousAnimation&&previousAnimation.type==='timing'&&previousAnimation.toValue===toValue&&previousAnimation.startTime){animation.startTime=previousAnimation.startTime;animation.startValue=previousAnimation.startValue;}else{animation.startTime=now;animation.startValue=value;}animation.current=value;if(typeof config.easing==='object'){animation.easing=config.easing.factory();}else{animation.easing=config.easing;}}return{type:'timing',onFrame:timing,onStart:onStart,progress:0,toValue:toValue,startValue:0,startTime:0,easing:function(){return 0;},current:toValue,callback:callback,reduceMotion:getReduceMotionForAnimation(userConfig===null||userConfig===void 0?void 0:userConfig.reduceMotion)};});}"},o={code:"function reactNativeReanimated_timingTs2(){const{Easing,userConfig,toValue,callback,getReduceMotionForAnimation}=this.__closure;var _userConfig;const config={duration:300,easing:Easing.inOut(Easing.quad)};if(userConfig){Object.keys(userConfig).forEach(function(key){return config[key]=userConfig[key];});}function timing(animation,now){const{toValue:toValue,startTime:startTime,startValue:startValue}=animation;const runtime=now-startTime;if(runtime>=config.duration){animation.startTime=0;animation.current=toValue;return true;}const progress=animation.easing(runtime/config.duration);animation.current=startValue+(toValue-startValue)*progress;return false;}function onStart(animation,value,now,previousAnimation){if(previousAnimation&&previousAnimation.type==='timing'&&previousAnimation.toValue===toValue&&previousAnimation.startTime){animation.startTime=previousAnimation.startTime;animation.startValue=previousAnimation.startValue;}else{animation.startTime=now;animation.startValue=value;}animation.current=value;if(typeof config.easing==='object'){animation.easing=config.easing.factory();}else{animation.easing=config.easing;}}return{type:'timing',onFrame:timing,onStart:onStart,progress:0,toValue:toValue,startValue:0,startTime:0,easing:function(){return 0;},current:toValue,callback:callback,reduceMotion:getReduceMotionForAnimation((_userConfig=userConfig)===null||_userConfig===void 0?void 0:_userConfig.reduceMotion)};}"};e.withTiming=((t=function(t,n,u){return(0,r(d[0]).defineAnimation)(t,((s=function(){var o={duration:300,easing:r(d[1]).Easing.inOut(r(d[1]).Easing.quad)};return n&&Object.keys(n).forEach((function(t){return o[t]=n[t]})),{type:'timing',onFrame:function(t,n){var u=t.toValue,s=t.startTime,c=t.startValue,l=n-s;if(l>=o.duration)return t.startTime=0,t.current=u,!0;var f=t.easing(l/o.duration);return t.current=c+(u-c)*f,!1},onStart:function(n,u,s,c){c&&'timing'===c.type&&c.toValue===t&&c.startTime?(n.startTime=c.startTime,n.startValue=c.startValue):(n.startTime=s,n.startValue=u),n.current=u,'object'==typeof o.easing?n.easing=o.easing.factory():n.easing=o.easing},progress:0,toValue:t,startValue:0,startTime:0,easing:function(){return 0},current:t,callback:u,reduceMotion:(0,r(d[0]).getReduceMotionForAnimation)(null==n?void 0:n.reduceMotion)}}).__closure={Easing:r(d[1]).Easing,userConfig:n,toValue:t,callback:u,getReduceMotionForAnimation:r(d[0]).getReduceMotionForAnimation},s.__workletHash=0x9fcab350344,s.__initData=o,s));var s}).__closure={__DEV__:!1,assertEasingIsWorklet:r(d[0]).assertEasingIsWorklet,defineAnimation:r(d[0]).defineAnimation,Easing:r(d[1]).Easing,getReduceMotionForAnimation:r(d[0]).getReduceMotionForAnimation},t.__workletHash=0xf71051207e6,t.__initData=n,t)}),320,[308,321]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.EasingNameSymbol=e.Easing=void 0;var n=t(r(d[1])),o={code:"function linear_reactNativeReanimated_EasingTs1(t){return t;}"},u=(function(){var t=function(t){return t};return t.__closure={},t.__workletHash=0xc7cf9108727,t.__initData=o,t})(),c={code:"function ease_reactNativeReanimated_EasingTs2(t){const{Bezier}=this.__closure;return Bezier(0.42,0,1,1)(t);}"},_=(function(){var t=function(t){return(0,r(d[2]).Bezier)(.42,0,1,1)(t)};return t.__closure={Bezier:r(d[2]).Bezier},t.__workletHash=397453832499,t.__initData=c,t})(),s={code:"function quad_reactNativeReanimated_EasingTs3(t){return t*t;}"},f=(function(){var t=function(t){return t*t};return t.__closure={},t.__workletHash=2328552319815,t.__initData=s,t})(),l={code:"function cubic_reactNativeReanimated_EasingTs4(t){return t*t*t;}"},h=(function(){var t=function(t){return t*t*t};return t.__closure={},t.__workletHash=0xd1dd1c96241,t.__initData=l,t})(),v={code:"function poly_reactNativeReanimated_EasingTs5(n){return function(t){'worklet';return Math.pow(t,n);};}"},w={code:"function reactNativeReanimated_EasingTs6(t){const{n}=this.__closure;return Math.pow(t,n);}"},M=(function(){var t=function(t){return(n=function(n){return Math.pow(n,t)}).__closure={n:t},n.__workletHash=9479398951205,n.__initData=w,n;var n};return t.__closure={},t.__workletHash=1647103012412,t.__initData=v,t})(),x={code:"function sin_reactNativeReanimated_EasingTs7(t){return 1-Math.cos(t*Math.PI/2);}"},k=(function(){var t=function(t){return 1-Math.cos(t*Math.PI/2)};return t.__closure={},t.__workletHash=3652802661892,t.__initData=x,t})(),N={code:"function circle_reactNativeReanimated_EasingTs8(t){return 1-Math.sqrt(1-t*t);}"},b=(function(){var t=function(t){return 1-Math.sqrt(1-t*t)};return t.__closure={},t.__workletHash=0xc2006cc7724,t.__initData=N,t})(),T={code:"function exp_reactNativeReanimated_EasingTs9(t){return Math.pow(2,10*(t-1));}"},E=(function(){var t=function(t){return Math.pow(2,10*(t-1))};return t.__closure={},t.__workletHash=8053592854880,t.__initData=T,t})(),p={code:"function elastic_reactNativeReanimated_EasingTs10(bounciness=1){const p=bounciness*Math.PI;return function(t){'worklet';return 1-Math.pow(Math.cos(t*Math.PI/2),3)*Math.cos(t*p);};}"},D={code:"function reactNativeReanimated_EasingTs11(t){const{p}=this.__closure;return 1-Math.pow(Math.cos(t*Math.PI/2),3)*Math.cos(t*p);}"},H=(function(){var t=function(){var t,n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:1)*Math.PI;return(t=function(t){return 1-Math.pow(Math.cos(t*Math.PI/2),3)*Math.cos(t*n)}).__closure={p:n},t.__workletHash=0xa5440a8d598,t.__initData=D,t};return t.__closure={},t.__workletHash=0xfcf72c7f44e,t.__initData=p,t})(),R={code:"function back_reactNativeReanimated_EasingTs12(s=1.70158){return function(t){'worklet';return t*t*((s+1)*t-s);};}"},y={code:"function reactNativeReanimated_EasingTs13(t){const{s}=this.__closure;return t*t*((s+1)*t-s);}"},z=(function(){var t=function(){var t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1.70158;return(t=function(t){return t*t*((n+1)*t-n)}).__closure={s:n},t.__workletHash=0x99fbe510384,t.__initData=y,t};return t.__closure={},t.__workletHash=9287428249671,t.__initData=R,t})(),B={code:"function bounce_reactNativeReanimated_EasingTs14(t){if(t<1/2.75){return 7.5625*t*t;}if(t<2/2.75){const t2=t-1.5/2.75;return 7.5625*t2*t2+0.75;}if(t<2.5/2.75){const t2=t-2.25/2.75;return 7.5625*t2*t2+0.9375;}const t2=t-2.625/2.75;return 7.5625*t2*t2+0.984375;}"},P=(function(){var t=function(t){if(t<.36363636363636365)return 7.5625*t*t;if(t<.7272727272727273){var n=t-.5454545454545454;return 7.5625*n*n+.75}if(t<.9090909090909091){var o=t-.8181818181818182;return 7.5625*o*o+.9375}var u=t-.9545454545454546;return 7.5625*u*u+.984375};return t.__closure={},t.__workletHash=0xa51e5cb2c6a,t.__initData=B,t})(),S={code:"function bezier_reactNativeReanimated_EasingTs15(x1,y1,x2,y2){const{Bezier}=this.__closure;return{factory:function(){'worklet';return Bezier(x1,y1,x2,y2);}};}"},I={code:"function reactNativeReanimated_EasingTs16(){const{Bezier,x1,y1,x2,y2}=this.__closure;return Bezier(x1,y1,x2,y2);}"},O=(function(){var t=function(t,n,o,u){return{factory:(c=function(){return(0,r(d[2]).Bezier)(t,n,o,u)},c.__closure={Bezier:r(d[2]).Bezier,x1:t,y1:n,x2:o,y2:u},c.__workletHash=4742622225666,c.__initData=I,c)};var c};return t.__closure={Bezier:r(d[2]).Bezier},t.__workletHash=0xfd700dbdbaa,t.__initData=S,t})(),q={code:"function bezierFn_reactNativeReanimated_EasingTs17(x1,y1,x2,y2){const{Bezier}=this.__closure;return Bezier(x1,y1,x2,y2);}"},j=(function(){var t=function(t,n,o,u){return(0,r(d[2]).Bezier)(t,n,o,u)};return t.__closure={Bezier:r(d[2]).Bezier},t.__workletHash=8230945052923,t.__initData=q,t})(),F={code:"function in__reactNativeReanimated_EasingTs18(easing){return easing;}"},A=(function(){var t=function(t){return t};return t.__closure={},t.__workletHash=9473900712954,t.__initData=F,t})(),C={code:"function out_reactNativeReanimated_EasingTs19(easing){return function(t){'worklet';return 1-easing(1-t);};}"},G={code:"function reactNativeReanimated_EasingTs20(t){const{easing}=this.__closure;return 1-easing(1-t);}"},J=(function(){var t=function(t){return(n=function(n){return 1-t(1-n)}).__closure={easing:t},n.__workletHash=0xd805f8ee5cb,n.__initData=G,n;var n};return t.__closure={},t.__workletHash=2681164668447,t.__initData=C,t})(),K={code:"function inOut_reactNativeReanimated_EasingTs21(easing){return function(t){'worklet';if(t<0.5){return easing(t*2)/2;}return 1-easing((1-t)*2)/2;};}"},L={code:"function reactNativeReanimated_EasingTs22(t){const{easing}=this.__closure;if(t<0.5){return easing(t*2)/2;}return 1-easing((1-t)*2)/2;}"},Q=(function(){var t=function(t){return(n=function(n){return n<.5?t(2*n)/2:1-t(2*(1-n))/2}).__closure={easing:t},n.__workletHash=0xd753f8d6b50,n.__initData=L,n;var n};return t.__closure={},t.__workletHash=1416640793482,t.__initData=K,t})(),U={code:"function steps_reactNativeReanimated_EasingTs23(n=10,roundToNextStep=true){return function(t){'worklet';const value=Math.min(Math.max(t,0),1)*n;if(roundToNextStep){return Math.ceil(value)/n;}return Math.floor(value)/n;};}"},V={code:"function reactNativeReanimated_EasingTs24(t){const{n,roundToNextStep}=this.__closure;const value=Math.min(Math.max(t,0),1)*n;if(roundToNextStep){return Math.ceil(value)/n;}return Math.floor(value)/n;}"},W=(function(){var t=function(){var t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,o=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return(t=function(t){var u=Math.min(Math.max(t,0),1)*n;return o?Math.ceil(u)/n:Math.floor(u)/n}).__closure={n:n,roundToNextStep:o},t.__workletHash=0xb8bfe39e75d,t.__initData=V,t};return t.__closure={},t.__workletHash=88097827036,t.__initData=U,t})(),X={linear:u,ease:_,quad:f,cubic:h,poly:M,sin:k,circle:b,exp:E,elastic:H,back:z,bounce:P,bezier:O,bezierFn:j,steps:W,in:A,out:J,inOut:Q},Y=e.EasingNameSymbol=Symbol('easingName');for(var Z of Object.entries(X)){var $=(0,n.default)(Z,2),tt=$[0],et=$[1];Object.defineProperty(et,Y,{value:tt,configurable:!1,enumerable:!1,writable:!1})}e.Easing=X}),321,[1,38,322]); +__d((function(g,r,_i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.Bezier=void 0;var t=.001,n=.1,i={code:"function A_reactNativeReanimated_BezierTs1(aA1,aA2){return 1.0-3.0*aA2+3.0*aA1;}"},l=(function(){var t=function(t,n){return 1-3*n+3*t};return t.__closure={},t.__workletHash=4367271601962,t.__initData=i,t})(),u={code:"function B_reactNativeReanimated_BezierTs2(aA1,aA2){return 3.0*aA2-6.0*aA1;}"},o=(function(){var t=function(t,n){return 3*n-6*t};return t.__closure={},t.__workletHash=9454990785451,t.__initData=u,t})(),c={code:"function C_reactNativeReanimated_BezierTs3(aA1){return 3.0*aA1;}"},s=(function(){var t=function(t){return 3*t};return t.__closure={},t.__workletHash=0xf4368479e28,t.__initData=c,t})(),S={code:"function calcBezier_reactNativeReanimated_BezierTs4(aT,aA1,aA2){const{A,B,C}=this.__closure;return((A(aA1,aA2)*aT+B(aA1,aA2))*aT+C(aA1))*aT;}"},_=(function(){var t=function(t,n,i){return((l(n,i)*t+o(n,i))*t+s(n))*t};return t.__closure={A:l,B:o,C:s},t.__workletHash=0x9e431c0a320,t.__initData=S,t})(),p={code:"function getSlope_reactNativeReanimated_BezierTs5(aT,aA1,aA2){const{A,B,C}=this.__closure;return 3.0*A(aA1,aA2)*aT*aT+2.0*B(aA1,aA2)*aT+C(aA1);}"},T=(function(){var t=function(t,n,i){return 3*l(n,i)*t*t+2*o(n,i)*t+s(n)};return t.__closure={A:l,B:o,C:s},t.__workletHash=268514889981,t.__initData=p,t})(),X={code:"function binarySubdivide_reactNativeReanimated_BezierTs6(aX,aA,aB,mX1,mX2){const{calcBezier,SUBDIVISION_PRECISION,SUBDIVISION_MAX_ITERATIONS}=this.__closure;let currentX;let currentT;let i=0;do{currentT=aA+(aB-aA)/2.0;currentX=calcBezier(currentT,mX1,mX2)-aX;if(currentX>0.0){aB=currentT;}else{aA=currentT;}}while(Math.abs(currentX)>SUBDIVISION_PRECISION&&++i0?i=c:n=c}while(Math.abs(o)>1e-7&&++s<10);return c};return t.__closure={calcBezier:_,SUBDIVISION_PRECISION:1e-7,SUBDIVISION_MAX_ITERATIONS:10},t.__workletHash=521490805193,t.__initData=X,t})(),v={code:"function newtonRaphsonIterate_reactNativeReanimated_BezierTs7(aX,aGuessT,mX1,mX2){const{NEWTON_ITERATIONS,getSlope,calcBezier}=this.__closure;for(let i=0;i=0&&mX1<=1&&mX2>=0&&mX2<=1)){throw new ReanimatedError('Bezier x values must be in [0, 1] range.');}if(mX1===mY1&&mX2===mY2){return LinearEasing;}const sampleValues=new Array(kSplineTableSize);for(let i=0;i=NEWTON_MIN_SLOPE){return newtonRaphsonIterate(aX,guessForT,mX1,mX2);}else if(initialSlope===0.0){return guessForT;}else{return binarySubdivide(aX,intervalStart,intervalStart+kSampleStepSize,mX1,mX2);}}return function Bezier_reactNativeReanimated_BezierTs8(x){'worklet';if(mX1===mY1&&mX2===mY2){return x;}if(x===0){return 0;}if(x===1){return 1;}return calcBezier(getTForX(x),mY1,mY2);};}"},B={code:"function LinearEasing_reactNativeReanimated_BezierTs9(x){return x;}"},I={code:"function getTForX_reactNativeReanimated_BezierTs10(aX){const{kSplineTableSize,sampleValues,kSampleStepSize,getSlope,mX1,mX2,NEWTON_MIN_SLOPE,newtonRaphsonIterate,binarySubdivide}=this.__closure;let intervalStart=0.0;let currentSample=1;const lastSample=kSplineTableSize-1;for(;currentSample!==lastSample&&sampleValues[currentSample]<=aX;++currentSample){intervalStart+=kSampleStepSize;}--currentSample;const dist=(aX-sampleValues[currentSample])/(sampleValues[currentSample+1]-sampleValues[currentSample]);const guessForT=intervalStart+dist*kSampleStepSize;const initialSlope=getSlope(guessForT,mX1,mX2);if(initialSlope>=NEWTON_MIN_SLOPE){return newtonRaphsonIterate(aX,guessForT,mX1,mX2);}else if(initialSlope===0.0){return guessForT;}else{return binarySubdivide(aX,intervalStart,intervalStart+kSampleStepSize,mX1,mX2);}}"},A={code:"function BezierEasing_reactNativeReanimated_BezierTs11(x){const{mX1,mY1,mX2,mY2,calcBezier,getTForX}=this.__closure;if(mX1===mY1&&mX2===mY2){return x;}if(x===0){return 0;}if(x===1){return 1;}return calcBezier(getTForX(x),mY1,mY2);}"};e.Bezier=(function(){var i=function(i,l,u,o){var c=(function(){var t=function(t){return t};return t.__closure={},t.__workletHash=9002002139084,t.__initData=B,t})();if(!(i>=0&&i<=1&&u>=0&&u<=1))throw new(r(d[0]).ReanimatedError)('Bezier x values must be in [0, 1] range.');if(i===l&&u===o)return c;for(var s=new Array(11),S=0;S<11;++S)s[S]=_(S*n,i,u);var p,X=(function(){var l=function(l){for(var o=0,c=1;10!==c&&s[c]<=l;++c)o+=n;--c;var S=o+(l-s[c])/(s[c+1]-s[c])*n,_=T(S,i,u);return _>=t?z(l,S,i,u):0===_?S:f(l,o,o+n,i,u)};return l.__closure={kSplineTableSize:11,sampleValues:s,kSampleStepSize:n,getSlope:T,mX1:i,mX2:u,NEWTON_MIN_SLOPE:t,newtonRaphsonIterate:z,binarySubdivide:f},l.__workletHash=582111972461,l.__initData=I,l})();return(p=function(t){return i===l&&u===o?t:0===t?0:1===t?1:_(X(t),l,o)}).__closure={mX1:i,mY1:l,mX2:u,mY2:o,calcBezier:_,getTForX:X},p.__workletHash=5253683607097,p.__initData=A,p};return i.__closure={kSplineTableSize:11,calcBezier:_,kSampleStepSize:n,getSlope:T,NEWTON_MIN_SLOPE:t,newtonRaphsonIterate:z,binarySubdivide:f},i.__workletHash=4651979895956,i.__initData=N,i})()}),322,[256]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"BaseAnimationBuilder",{enumerable:!0,get:function(){return r(d[0]).BaseAnimationBuilder}}),Object.defineProperty(e,"ComplexAnimationBuilder",{enumerable:!0,get:function(){return r(d[1]).ComplexAnimationBuilder}}),Object.defineProperty(e,"Keyframe",{enumerable:!0,get:function(){return r(d[2]).Keyframe}})}),323,[324,337,338]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.BaseAnimationBuilder=void 0;var n=t(r(d[1])),o=t(r(d[2])),u={code:"function reactNativeReanimated_BaseAnimationBuilderTs1(delay,animation){const{withDelay,reduceMotion}=this.__closure;return withDelay(delay,animation,reduceMotion);}"},c={code:"function reactNativeReanimated_BaseAnimationBuilderTs2(_,animation){const{getReduceMotionFromConfig,reduceMotion}=this.__closure;animation.reduceMotion=getReduceMotionFromConfig(reduceMotion);return animation;}"};e.BaseAnimationBuilder=(function(){return(0,o.default)((function t(){(0,n.default)(this,t),this.reduceMotionV=r(d[3]).ReduceMotion.System,this.randomizeDelay=!1,this.build=function(){throw new(r(d[4]).ReanimatedError)('Unimplemented method in child class.')}}),[{key:"duration",value:function(t){return this.durationV=t,this}},{key:"delay",value:function(t){return this.delayV=t,this}},{key:"withCallback",value:function(t){return this.callbackV=t,this}},{key:"reduceMotion",value:function(t){return this.reduceMotionV=t,this}},{key:"getDuration",value:function(){var t;return null!=(t=this.durationV)?t:300}},{key:"randomDelay",value:function(){return this.randomizeDelay=!0,this}},{key:"getDelay",value:function(){var t,n;return this.randomizeDelay?Math.random()*(null!=(t=this.delayV)?t:1e3):null!=(n=this.delayV)?n:0}},{key:"getReduceMotion",value:function(){return this.reduceMotionV}},{key:"getDelayFunction",value:function(){var t,n,o=this.randomizeDelay||this.delayV,l=this.getReduceMotion();return o?((n=function(t,n){return(0,r(d[5]).withDelay)(t,n,l)}).__closure={withDelay:r(d[5]).withDelay,reduceMotion:l},n.__workletHash=0xa300d5b19cd,n.__initData=u,n):((t=function(t,n){return n.reduceMotion=(0,r(d[6]).getReduceMotionFromConfig)(l),n}).__closure={getReduceMotionFromConfig:r(d[6]).getReduceMotionFromConfig,reduceMotion:l},t.__workletHash=0xd0a623df051,t.__initData=c,t)}}],[{key:"duration",value:function(t){return this.createInstance().duration(t)}},{key:"delay",value:function(t){return this.createInstance().delay(t)}},{key:"withCallback",value:function(t){return this.createInstance().withCallback(t)}},{key:"reduceMotion",value:function(t){return this.createInstance().reduceMotion(t)}},{key:"getDuration",value:function(){return 300}},{key:"randomDelay",value:function(){return this.createInstance().randomDelay()}},{key:"build",value:function(){return this.createInstance().build()}}])})()}),324,[1,12,13,247,256,325,308]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"cancelAnimation",{enumerable:!0,get:function(){return r(d[0]).cancelAnimation}}),Object.defineProperty(e,"defineAnimation",{enumerable:!0,get:function(){return r(d[0]).defineAnimation}}),Object.defineProperty(e,"initialUpdaterRun",{enumerable:!0,get:function(){return r(d[0]).initialUpdaterRun}}),Object.defineProperty(e,"withClamp",{enumerable:!0,get:function(){return r(d[1]).withClamp}}),Object.defineProperty(e,"withDecay",{enumerable:!0,get:function(){return r(d[2]).withDecay}}),Object.defineProperty(e,"withDelay",{enumerable:!0,get:function(){return r(d[3]).withDelay}}),Object.defineProperty(e,"withRepeat",{enumerable:!0,get:function(){return r(d[4]).withRepeat}}),Object.defineProperty(e,"withSequence",{enumerable:!0,get:function(){return r(d[5]).withSequence}}),Object.defineProperty(e,"withSpring",{enumerable:!0,get:function(){return r(d[6]).withSpring}}),Object.defineProperty(e,"withStyleAnimation",{enumerable:!0,get:function(){return r(d[7]).withStyleAnimation}}),Object.defineProperty(e,"withTiming",{enumerable:!0,get:function(){return r(d[8]).withTiming}})}),325,[308,326,327,332,333,334,335,307,320]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.withClamp=void 0;var n,o={code:"function reactNativeReanimated_clampTs1(config,_animationToClamp){const{defineAnimation,recognizePrefixSuffix,logger,getReduceMotionForAnimation}=this.__closure;return defineAnimation(_animationToClamp,function(){'worklet';const animationToClamp=typeof _animationToClamp==='function'?_animationToClamp():_animationToClamp;const strippedMin=config.min===undefined?undefined:recognizePrefixSuffix(config.min).strippedValue;const strippedMax=config.max===undefined?undefined:recognizePrefixSuffix(config.max).strippedValue;function clampOnFrame(animation,now){const finished=animationToClamp.onFrame(animationToClamp,now);if(animationToClamp.current===undefined){logger.warn(\"Error inside 'withClamp' animation, the inner animation has invalid current value\");return true;}else{const{prefix:prefix,strippedValue:strippedValue,suffix:suffix}=recognizePrefixSuffix(animationToClamp.current);let newValue;if(strippedMax!==undefined&&strippedMaxstrippedValue){newValue=strippedMin;}else{newValue=strippedValue;}animation.current=typeof animationToClamp.current==='number'?newValue:\"\"+(prefix===undefined?'':prefix)+newValue+(suffix===undefined?'':suffix);}return finished;}function onStart(animation,value,now,previousAnimation){animation.current=value;animation.previousAnimation=animationToClamp;const animationBeforeClamped=previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.previousAnimation;if(config.max!==undefined&&config.min!==undefined&&config.maxstrippedValue){newValue=strippedMin;}else{newValue=strippedValue;}animation.current=typeof animationToClamp.current==='number'?newValue:\"\"+(prefix===undefined?'':prefix)+newValue+(suffix===undefined?'':suffix);}return finished;}function onStart(animation,value,now,previousAnimation){animation.current=value;animation.previousAnimation=animationToClamp;const animationBeforeClamped=previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.previousAnimation;if(config.max!==undefined&&config.min!==undefined&&config.maxx?u:x,n.current='number'==typeof t.current?p:`${void 0===s?'':s}${p}${void 0===v?'':v}`,l},onStart:function(o,u,f,l){o.current=u,o.previousAnimation=t;var p=null==l?void 0:l.previousAnimation;void 0!==n.max&&void 0!==n.min&&n.maxconfig.clamp[1]){animation.current=config.clamp[1];}}}return{onFrame:decay,onStart:onStart,callback:callback,velocity:(_config$velocity=config.velocity)!==null&&_config$velocity!==void 0?_config$velocity:0,initialVelocity:0,current:undefined,lastTimestamp:0,startTimestamp:0,reduceMotion:getReduceMotionForAnimation(config.reduceMotion)};});}"},l={code:"function reactNativeReanimated_decayTs3(){const{userConfig,isValidRubberBandConfig,rubberBandDecay,rigidDecay,validateConfig,callback,getReduceMotionForAnimation}=this.__closure;var _config$velocity;const config={deceleration:0.998,velocityFactor:1,velocity:0,rubberBandFactor:0.6};if(userConfig){Object.keys(userConfig).forEach(function(key){return config[key]=userConfig[key];});}const decay=isValidRubberBandConfig(config)?function(animation,now){return rubberBandDecay(animation,now,config);}:function(animation,now){return rigidDecay(animation,now,config);};function onStart(animation,value,now){const initialVelocity=config.velocity;animation.current=value;animation.lastTimestamp=now;animation.startTimestamp=now;animation.initialVelocity=initialVelocity;animation.velocity=initialVelocity;validateConfig(config);if(animation.reduceMotion&&config.clamp){if(valueconfig.clamp[1]){animation.current=config.clamp[1];}}}return{onFrame:decay,onStart:onStart,callback:callback,velocity:(_config$velocity=config.velocity)!==null&&_config$velocity!==void 0?_config$velocity:0,initialVelocity:0,current:undefined,lastTimestamp:0,startTimestamp:0,reduceMotion:getReduceMotionForAnimation(config.reduceMotion)};}"};e.withDecay=((n=function(n,t){return(0,r(d[1]).defineAnimation)(0,((c=function(){var c,l={deceleration:.998,velocityFactor:1,velocity:0,rubberBandFactor:.6};return n&&Object.keys(n).forEach((function(t){return l[t]=n[t]})),{onFrame:(0,r(d[2]).isValidRubberBandConfig)(l)?function(n,t){return(0,r(d[3]).rubberBandDecay)(n,t,l)}:function(n,t){return(0,r(d[4]).rigidDecay)(n,t,l)},onStart:function(n,t,c){var f=l.velocity;n.current=t,n.lastTimestamp=c,n.startTimestamp=c,n.initialVelocity=f,n.velocity=f,o(l),n.reduceMotion&&l.clamp&&(tl.clamp[1]&&(n.current=l.clamp[1]))},callback:t,velocity:null!=(c=l.velocity)?c:0,initialVelocity:0,current:void 0,lastTimestamp:0,startTimestamp:0,reduceMotion:(0,r(d[1]).getReduceMotionForAnimation)(l.reduceMotion)}}).__closure={userConfig:n,isValidRubberBandConfig:r(d[2]).isValidRubberBandConfig,rubberBandDecay:r(d[3]).rubberBandDecay,rigidDecay:r(d[4]).rigidDecay,validateConfig:o,callback:t,getReduceMotionForAnimation:r(d[1]).getReduceMotionForAnimation},c.__workletHash=0xc0ff44d7407,c.__initData=l,c));var c}).__closure={defineAnimation:r(d[1]).defineAnimation,isValidRubberBandConfig:r(d[2]).isValidRubberBandConfig,rubberBandDecay:r(d[3]).rubberBandDecay,rigidDecay:r(d[4]).rigidDecay,validateConfig:o,getReduceMotionForAnimation:r(d[1]).getReduceMotionForAnimation},n.__workletHash=6879223746280,n.__initData=c,n)}),328,[256,308,329,330,331]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.isValidRubberBandConfig=e.VELOCITY_EPS=e.SLOPE_FACTOR=void 0;var n=(0,r(d[0]).isWeb)(),t=(e.VELOCITY_EPS=n?.05:1,e.SLOPE_FACTOR=.1,{code:"function isValidRubberBandConfig_reactNativeReanimated_utilsTs1(config){return!!config.rubberBandEffect&&Array.isArray(config.clamp)&&config.clamp.length===2;}"});e.isValidRubberBandConfig=(function(){var n=function(n){return!!n.rubberBandEffect&&Array.isArray(n.clamp)&&2===n.clamp.length};return n.__closure={},n.__workletHash=2431003556525,n.__initData=t,n})()}),329,[249]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.rubberBandDecay=void 0;var t={code:"function rubberBandDecay_reactNativeReanimated_rubberBandDecayTs1(animation,now,config){const{SLOPE_FACTOR,DERIVATIVE_EPS,VELOCITY_EPS}=this.__closure;const{lastTimestamp:lastTimestamp,startTimestamp:startTimestamp,current:current,velocity:velocity}=animation;const deltaTime=Math.min(now-lastTimestamp,64);const clampIndex=Math.abs(current-config.clamp[0])config.clamp[1]){derivative=current-config.clamp[clampIndex];}const v=velocity*Math.exp(-(1-config.deceleration)*(now-startTimestamp)*SLOPE_FACTOR)-derivative*config.rubberBandFactor;if(Math.abs(derivative)>DERIVATIVE_EPS){animation.springActive=true;}else if(animation.springActive){animation.current=config.clamp[clampIndex];return true;}else if(Math.abs(v)c.clamp[1])&&(_=l-c.clamp[v]);var T=u*Math.exp(-(1-c.deceleration)*(n-s)*r(d[0]).SLOPE_FACTOR)-_*c.rubberBandFactor;if(Math.abs(_)>.1)t.springActive=!0;else{if(t.springActive)return t.current=c.clamp[v],!0;if(Math.abs(T)0&&animation.current>=config.clamp[1]){animation.current=config.clamp[1];return true;}}return Math.abs(v)0&&t.current>=c.clamp[1])return t.current=c.clamp[1],!0}return Math.abs(T)=delayMs||animation.reduceMotion){if(!started){nextAnimation.onStart(nextAnimation,current,now,previousAnimation);animation.previousAnimation=null;animation.started=true;}const finished=nextAnimation.onFrame(nextAnimation,now);animation.current=nextAnimation.current;return finished;}else if(previousAnimation){const finished=previousAnimation.finished||previousAnimation.onFrame(previousAnimation,now);animation.current=previousAnimation.current;if(finished){animation.previousAnimation=null;}}return false;}function onStart(animation,value,now,previousAnimation){animation.startTime=now;animation.started=false;animation.current=value;if(previousAnimation===animation){animation.previousAnimation=previousAnimation.previousAnimation;}else{animation.previousAnimation=previousAnimation;}if(nextAnimation.reduceMotion===undefined){nextAnimation.reduceMotion=animation.reduceMotion;}}const callback=function(finished){if(nextAnimation.callback){nextAnimation.callback(finished);}};return{isHigherOrder:true,onFrame:delay,onStart:onStart,current:nextAnimation.current,callback:callback,previousAnimation:null,startTime:0,started:false,reduceMotion:getReduceMotionForAnimation(reduceMotion)};});}"},o={code:"function reactNativeReanimated_delayTs2(){const{_nextAnimation,delayMs,getReduceMotionForAnimation,reduceMotion}=this.__closure;const nextAnimation=typeof _nextAnimation==='function'?_nextAnimation():_nextAnimation;function delay(animation,now){const{startTime:startTime,started:started,previousAnimation:previousAnimation}=animation;const current=animation.current;if(now-startTime>=delayMs||animation.reduceMotion){if(!started){nextAnimation.onStart(nextAnimation,current,now,previousAnimation);animation.previousAnimation=null;animation.started=true;}const finished=nextAnimation.onFrame(nextAnimation,now);animation.current=nextAnimation.current;return finished;}else if(previousAnimation){const finished=previousAnimation.finished||previousAnimation.onFrame(previousAnimation,now);animation.current=previousAnimation.current;if(finished){animation.previousAnimation=null;}}return false;}function onStart(animation,value,now,previousAnimation){animation.startTime=now;animation.started=false;animation.current=value;if(previousAnimation===animation){animation.previousAnimation=previousAnimation.previousAnimation;}else{animation.previousAnimation=previousAnimation;}if(nextAnimation.reduceMotion===undefined){nextAnimation.reduceMotion=animation.reduceMotion;}}const callback=function(finished){if(nextAnimation.callback){nextAnimation.callback(finished);}};return{isHigherOrder:true,onFrame:delay,onStart:onStart,current:nextAnimation.current,callback:callback,previousAnimation:null,startTime:0,started:false,reduceMotion:getReduceMotionForAnimation(reduceMotion)};}"};e.withDelay=((n=function(n,t,u){return(0,r(d[0]).defineAnimation)(t,((s=function(){var o='function'==typeof t?t():t;return{isHigherOrder:!0,onFrame:function(t,u){var s=t.startTime,c=t.started,A=t.previousAnimation,l=t.current;if(u-s>=n||t.reduceMotion){c||(o.onStart(o,l,u,A),t.previousAnimation=null,t.started=!0);var f=o.onFrame(o,u);return t.current=o.current,f}if(A){var v=A.finished||A.onFrame(A,u);t.current=A.current,v&&(t.previousAnimation=null)}return!1},onStart:function(n,t,u,s){n.startTime=u,n.started=!1,n.current=t,n.previousAnimation=s===n?s.previousAnimation:s,void 0===o.reduceMotion&&(o.reduceMotion=n.reduceMotion)},current:o.current,callback:function(n){o.callback&&o.callback(n)},previousAnimation:null,startTime:0,started:!1,reduceMotion:(0,r(d[0]).getReduceMotionForAnimation)(u)}}).__closure={_nextAnimation:t,delayMs:n,getReduceMotionForAnimation:r(d[0]).getReduceMotionForAnimation,reduceMotion:u},s.__workletHash=7709183711075,s.__initData=o,s));var s}).__closure={defineAnimation:r(d[0]).defineAnimation,getReduceMotionForAnimation:r(d[0]).getReduceMotionForAnimation},n.__workletHash=0xe87e9e7f5b0,n.__initData=t,n)}),332,[308]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.withRepeat=void 0;var n,t={code:"function reactNativeReanimated_repeatTs1(_nextAnimation,numberOfReps=2,reverse=false,callback,reduceMotion){const{defineAnimation,getReduceMotionForAnimation}=this.__closure;return defineAnimation(_nextAnimation,function(){'worklet';const nextAnimation=typeof _nextAnimation==='function'?_nextAnimation():_nextAnimation;function repeat(animation,now){const finished=nextAnimation.onFrame(nextAnimation,now);animation.current=nextAnimation.current;if(finished){animation.reps+=1;if(nextAnimation.callback){nextAnimation.callback(true,animation.current);}if(animation.reduceMotion||numberOfReps>0&&animation.reps>=numberOfReps){return true;}const startValue=reverse?nextAnimation.current:animation.startValue;if(reverse){nextAnimation.toValue=animation.startValue;animation.startValue=startValue;}nextAnimation.onStart(nextAnimation,startValue,now,nextAnimation.previousAnimation);return false;}return false;}const repCallback=function(finished){if(callback){callback(finished);}if(!finished&&nextAnimation.callback){nextAnimation.callback(false);}};function onStart(animation,value,now,previousAnimation){animation.startValue=value;animation.reps=0;if(nextAnimation.reduceMotion===undefined){nextAnimation.reduceMotion=animation.reduceMotion;}if(animation.reduceMotion&&reverse&&(numberOfReps<=0||numberOfReps%2===0)){animation.current=animation.startValue;animation.onFrame=function(){return true;};}else{nextAnimation.onStart(nextAnimation,value,now,previousAnimation);}}return{isHigherOrder:true,onFrame:repeat,onStart:onStart,reps:0,current:nextAnimation.current,callback:repCallback,startValue:0,reduceMotion:getReduceMotionForAnimation(reduceMotion)};});}"},o={code:"function reactNativeReanimated_repeatTs2(){const{_nextAnimation,numberOfReps,reverse,callback,getReduceMotionForAnimation,reduceMotion}=this.__closure;const nextAnimation=typeof _nextAnimation==='function'?_nextAnimation():_nextAnimation;function repeat(animation,now){const finished=nextAnimation.onFrame(nextAnimation,now);animation.current=nextAnimation.current;if(finished){animation.reps+=1;if(nextAnimation.callback){nextAnimation.callback(true,animation.current);}if(animation.reduceMotion||numberOfReps>0&&animation.reps>=numberOfReps){return true;}const startValue=reverse?nextAnimation.current:animation.startValue;if(reverse){nextAnimation.toValue=animation.startValue;animation.startValue=startValue;}nextAnimation.onStart(nextAnimation,startValue,now,nextAnimation.previousAnimation);return false;}return false;}const repCallback=function(finished){if(callback){callback(finished);}if(!finished&&nextAnimation.callback){nextAnimation.callback(false);}};function onStart(animation,value,now,previousAnimation){animation.startValue=value;animation.reps=0;if(nextAnimation.reduceMotion===undefined){nextAnimation.reduceMotion=animation.reduceMotion;}if(animation.reduceMotion&&reverse&&(numberOfReps<=0||numberOfReps%2===0)){animation.current=animation.startValue;animation.onFrame=function(){return true;};}else{nextAnimation.onStart(nextAnimation,value,now,previousAnimation);}}return{isHigherOrder:true,onFrame:repeat,onStart:onStart,reps:0,current:nextAnimation.current,callback:repCallback,startValue:0,reduceMotion:getReduceMotionForAnimation(reduceMotion)};}"};e.withRepeat=(n=function(n){var t,u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2,c=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=arguments.length>3?arguments[3]:void 0,l=arguments.length>4?arguments[4]:void 0;return(0,r(d[0]).defineAnimation)(n,((t=function(){var t='function'==typeof n?n():n;return{isHigherOrder:!0,onFrame:function(n,o){var s=t.onFrame(t,o);if(n.current=t.current,s){if(n.reps+=1,t.callback&&t.callback(!0,n.current),n.reduceMotion||u>0&&n.reps>=u)return!0;var l=c?t.current:n.startValue;return c&&(t.toValue=n.startValue,n.startValue=l),t.onStart(t,l,o,t.previousAnimation),!1}return!1},onStart:function(n,o,s,l){n.startValue=o,n.reps=0,void 0===t.reduceMotion&&(t.reduceMotion=n.reduceMotion),n.reduceMotion&&c&&(u<=0||u%2==0)?(n.current=n.startValue,n.onFrame=function(){return!0}):t.onStart(t,o,s,l)},reps:0,current:t.current,callback:function(n){s&&s(n),!n&&t.callback&&t.callback(!1)},startValue:0,reduceMotion:(0,r(d[0]).getReduceMotionForAnimation)(l)}}).__closure={_nextAnimation:n,numberOfReps:u,reverse:c,callback:s,getReduceMotionForAnimation:r(d[0]).getReduceMotionForAnimation,reduceMotion:l},t.__workletHash=0xbbb1884f42c,t.__initData=o,t))},n.__closure={defineAnimation:r(d[0]).defineAnimation,getReduceMotionForAnimation:r(d[0]).getReduceMotionForAnimation},n.__workletHash=225063988400,n.__initData=t,n)}),333,[308]); +__d((function(g,r,i,_a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.withSequence=void 0;var n={code:"function withSequence_reactNativeReanimated_sequenceTs1(_reduceMotionOrFirstAnimation,..._animations){const{logger,defineAnimation,getReduceMotionForAnimation}=this.__closure;let reduceMotion;if(_reduceMotionOrFirstAnimation){if(typeof _reduceMotionOrFirstAnimation==='string'){reduceMotion=_reduceMotionOrFirstAnimation;}else{_animations.unshift(_reduceMotionOrFirstAnimation);}}if(_animations.length===0){logger.warn('No animation was provided for the sequence');return defineAnimation(0,function(){'worklet';return{onStart:function(animation,value){return animation.current=value;},onFrame:function(){return true;},current:0,animationIndex:0,reduceMotion:getReduceMotionForAnimation(reduceMotion)};});}return defineAnimation(_animations[0],function(){'worklet';const animations=_animations.map(function(a){const result=typeof a==='function'?a():a;result.finished=false;return result;});function findNextNonReducedMotionAnimationIndex(index){while(index1?a-1:0),c=1;c=config.duration){animation.current=toValue;animation.lastTimestamp=0;return true;}if(config.skipAnimation){animation.current=toValue;animation.lastTimestamp=0;return true;}const{lastTimestamp:lastTimestamp,velocity:velocity}=animation;const deltaTime=Math.min(now-lastTimestamp,64);animation.lastTimestamp=now;const t=deltaTime/1000;const v0=-velocity;const x0=toValue-current;const{zeta:zeta,omega0:omega0,omega1:omega1}=animation;const{position:newPosition,velocity:newVelocity}=zeta<1?underDampedSpringCalculations(animation,{zeta:zeta,v0:v0,x0:x0,omega0:omega0,omega1:omega1,t:t}):criticallyDampedSpringCalculations(animation,{v0:v0,x0:x0,omega0:omega0,t:t});animation.current=newPosition;animation.velocity=newVelocity;const{isOvershooting:isOvershooting,isVelocity:isVelocity,isDisplacement:isDisplacement}=isAnimationTerminatingCalculation(animation,config);const springIsNotInMove=isOvershooting||isVelocity&&isDisplacement;if(!config.useDuration&&springIsNotInMove){animation.velocity=0;animation.current=toValue;animation.lastTimestamp=0;return true;}return false;}function isTriggeredTwice(previousAnimation,animation){return(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.lastTimestamp)&&(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.startTimestamp)&&(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.toValue)===animation.toValue&&(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.duration)===animation.duration&&(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.dampingRatio)===animation.dampingRatio;}function onStart(animation,value,now,previousAnimation){animation.current=value;animation.startValue=value;let mass=config.mass;const triggeredTwice=isTriggeredTwice(previousAnimation,animation);const duration=config.duration;const x0=triggeredTwice?previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.startValue:Number(animation.toValue)-value;if(previousAnimation){animation.velocity=(triggeredTwice?previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.velocity:(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.velocity)+config.velocity)||0;}else{animation.velocity=config.velocity||0;}if(triggeredTwice){animation.zeta=(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.zeta)||0;animation.omega0=(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.omega0)||0;animation.omega1=(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.omega1)||0;}else{if(config.useDuration){const actualDuration=triggeredTwice?duration-(((previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.lastTimestamp)||0)-((previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.startTimestamp)||0)):duration;config.duration=actualDuration;mass=calculateNewMassToMatchDuration(x0,config,animation.velocity);}const{zeta:zeta,omega0:omega0,omega1:omega1}=initialCalculations(mass,config);animation.zeta=zeta;animation.omega0=omega0;animation.omega1=omega1;if(config.clamp!==undefined){animation.zeta=scaleZetaToMatchClamps(animation,config.clamp);}}animation.lastTimestamp=(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.lastTimestamp)||now;animation.startTimestamp=triggeredTwice?(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.startTimestamp)||now:now;}return{onFrame:springOnFrame,onStart:onStart,toValue:toValue,velocity:config.velocity||0,current:toValue,startValue:0,callback:callback,lastTimestamp:0,startTimestamp:0,zeta:0,omega0:0,omega1:0,reduceMotion:getReduceMotionForAnimation(config.reduceMotion)};});}"},t={code:"function reactNativeReanimated_springTs2(){const{userConfig,checkIfConfigIsValid,underDampedSpringCalculations,criticallyDampedSpringCalculations,isAnimationTerminatingCalculation,calculateNewMassToMatchDuration,initialCalculations,scaleZetaToMatchClamps,toValue,callback,getReduceMotionForAnimation}=this.__closure;var _userConfig,_userConfig2;const defaultConfig={damping:10,mass:1,stiffness:100,overshootClamping:false,restDisplacementThreshold:0.01,restSpeedThreshold:2,velocity:0,duration:2000,dampingRatio:0.5,reduceMotion:undefined,clamp:undefined};const config={...defaultConfig,...userConfig,useDuration:!!((_userConfig=userConfig)!==null&&_userConfig!==void 0&&_userConfig.duration||(_userConfig2=userConfig)!==null&&_userConfig2!==void 0&&_userConfig2.dampingRatio),skipAnimation:false};config.skipAnimation=!checkIfConfigIsValid(config);if(config.duration===0){config.skipAnimation=true;}function springOnFrame(animation,now){const{toValue:toValue,startTimestamp:startTimestamp,current:current}=animation;const timeFromStart=now-startTimestamp;if(config.useDuration&&timeFromStart>=config.duration){animation.current=toValue;animation.lastTimestamp=0;return true;}if(config.skipAnimation){animation.current=toValue;animation.lastTimestamp=0;return true;}const{lastTimestamp:lastTimestamp,velocity:velocity}=animation;const deltaTime=Math.min(now-lastTimestamp,64);animation.lastTimestamp=now;const t=deltaTime/1000;const v0=-velocity;const x0=toValue-current;const{zeta:zeta,omega0:omega0,omega1:omega1}=animation;const{position:newPosition,velocity:newVelocity}=zeta<1?underDampedSpringCalculations(animation,{zeta:zeta,v0:v0,x0:x0,omega0:omega0,omega1:omega1,t:t}):criticallyDampedSpringCalculations(animation,{v0:v0,x0:x0,omega0:omega0,t:t});animation.current=newPosition;animation.velocity=newVelocity;const{isOvershooting:isOvershooting,isVelocity:isVelocity,isDisplacement:isDisplacement}=isAnimationTerminatingCalculation(animation,config);const springIsNotInMove=isOvershooting||isVelocity&&isDisplacement;if(!config.useDuration&&springIsNotInMove){animation.velocity=0;animation.current=toValue;animation.lastTimestamp=0;return true;}return false;}function isTriggeredTwice(previousAnimation,animation){return(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.lastTimestamp)&&(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.startTimestamp)&&(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.toValue)===animation.toValue&&(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.duration)===animation.duration&&(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.dampingRatio)===animation.dampingRatio;}function onStart(animation,value,now,previousAnimation){animation.current=value;animation.startValue=value;let mass=config.mass;const triggeredTwice=isTriggeredTwice(previousAnimation,animation);const duration=config.duration;const x0=triggeredTwice?previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.startValue:Number(animation.toValue)-value;if(previousAnimation){animation.velocity=(triggeredTwice?previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.velocity:(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.velocity)+config.velocity)||0;}else{animation.velocity=config.velocity||0;}if(triggeredTwice){animation.zeta=(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.zeta)||0;animation.omega0=(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.omega0)||0;animation.omega1=(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.omega1)||0;}else{if(config.useDuration){const actualDuration=triggeredTwice?duration-(((previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.lastTimestamp)||0)-((previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.startTimestamp)||0)):duration;config.duration=actualDuration;mass=calculateNewMassToMatchDuration(x0,config,animation.velocity);}const{zeta:zeta,omega0:omega0,omega1:omega1}=initialCalculations(mass,config);animation.zeta=zeta;animation.omega0=omega0;animation.omega1=omega1;if(config.clamp!==undefined){animation.zeta=scaleZetaToMatchClamps(animation,config.clamp);}}animation.lastTimestamp=(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.lastTimestamp)||now;animation.startTimestamp=triggeredTwice?(previousAnimation===null||previousAnimation===void 0?void 0:previousAnimation.startTimestamp)||now:now;}return{onFrame:springOnFrame,onStart:onStart,toValue:toValue,velocity:config.velocity||0,current:toValue,startValue:0,callback:callback,lastTimestamp:0,startTimestamp:0,zeta:0,omega0:0,omega1:0,reduceMotion:getReduceMotionForAnimation(config.reduceMotion)};}"};e.withSpring=((n=function(n,o,s){return(0,r(d[0]).defineAnimation)(n,((l=function(){var t={damping:10,mass:1,stiffness:100,overshootClamping:!1,restDisplacementThreshold:.01,restSpeedThreshold:2,velocity:0,duration:2e3,dampingRatio:.5,reduceMotion:void 0,clamp:void 0},l=Object.assign({},t,o,{useDuration:!!(null!=o&&o.duration||null!=o&&o.dampingRatio),skipAnimation:!1});function u(n,o){return(null==n?void 0:n.lastTimestamp)&&(null==n?void 0:n.startTimestamp)&&(null==n?void 0:n.toValue)===o.toValue&&(null==n?void 0:n.duration)===o.duration&&(null==n?void 0:n.dampingRatio)===o.dampingRatio}return l.skipAnimation=!(0,r(d[1]).checkIfConfigIsValid)(l),0===l.duration&&(l.skipAnimation=!0),{onFrame:function(n,o){var t=n.toValue,s=n.startTimestamp,u=n.current,c=o-s;if(l.useDuration&&c>=l.duration)return n.current=t,n.lastTimestamp=0,!0;if(l.skipAnimation)return n.current=t,n.lastTimestamp=0,!0;var v=n.lastTimestamp,p=n.velocity,f=Math.min(o-v,64);n.lastTimestamp=o;var A=f/1e3,T=-p,C=t-u,y=n.zeta,V=n.omega0,h=n.omega1,D=y<1?(0,r(d[1]).underDampedSpringCalculations)(n,{zeta:y,v0:T,x0:C,omega0:V,omega1:h,t:A}):(0,r(d[1]).criticallyDampedSpringCalculations)(n,{v0:T,x0:C,omega0:V,t:A}),w=D.position,M=D.velocity;n.current=w,n.velocity=M;var z=(0,r(d[1]).isAnimationTerminatingCalculation)(n,l),S=z.isOvershooting,k=z.isVelocity,_=z.isDisplacement,I=S||k&&_;return!(l.useDuration||!I||(n.velocity=0,n.current=t,n.lastTimestamp=0,0))},onStart:function(n,o,t,s){n.current=o,n.startValue=o;var c=l.mass,v=u(s,n),p=l.duration,f=v?null==s?void 0:s.startValue:Number(n.toValue)-o;if(n.velocity=s?(v?null==s?void 0:s.velocity:(null==s?void 0:s.velocity)+l.velocity)||0:l.velocity||0,v)n.zeta=(null==s?void 0:s.zeta)||0,n.omega0=(null==s?void 0:s.omega0)||0,n.omega1=(null==s?void 0:s.omega1)||0;else{if(l.useDuration){var A=v?p-(((null==s?void 0:s.lastTimestamp)||0)-((null==s?void 0:s.startTimestamp)||0)):p;l.duration=A,c=(0,r(d[1]).calculateNewMassToMatchDuration)(f,l,n.velocity)}var T=(0,r(d[1]).initialCalculations)(c,l),C=T.zeta,y=T.omega0,V=T.omega1;n.zeta=C,n.omega0=y,n.omega1=V,void 0!==l.clamp&&(n.zeta=(0,r(d[1]).scaleZetaToMatchClamps)(n,l.clamp))}n.lastTimestamp=(null==s?void 0:s.lastTimestamp)||t,n.startTimestamp=v&&(null==s?void 0:s.startTimestamp)||t},toValue:n,velocity:l.velocity||0,current:n,startValue:0,callback:s,lastTimestamp:0,startTimestamp:0,zeta:0,omega0:0,omega1:0,reduceMotion:(0,r(d[0]).getReduceMotionForAnimation)(l.reduceMotion)}}).__closure={userConfig:o,checkIfConfigIsValid:r(d[1]).checkIfConfigIsValid,underDampedSpringCalculations:r(d[1]).underDampedSpringCalculations,criticallyDampedSpringCalculations:r(d[1]).criticallyDampedSpringCalculations,isAnimationTerminatingCalculation:r(d[1]).isAnimationTerminatingCalculation,calculateNewMassToMatchDuration:r(d[1]).calculateNewMassToMatchDuration,initialCalculations:r(d[1]).initialCalculations,scaleZetaToMatchClamps:r(d[1]).scaleZetaToMatchClamps,toValue:n,callback:s,getReduceMotionForAnimation:r(d[0]).getReduceMotionForAnimation},l.__workletHash=0xd05eca94f23,l.__initData=t,l));var l}).__closure={defineAnimation:r(d[0]).defineAnimation,checkIfConfigIsValid:r(d[1]).checkIfConfigIsValid,underDampedSpringCalculations:r(d[1]).underDampedSpringCalculations,criticallyDampedSpringCalculations:r(d[1]).criticallyDampedSpringCalculations,isAnimationTerminatingCalculation:r(d[1]).isAnimationTerminatingCalculation,calculateNewMassToMatchDuration:r(d[1]).calculateNewMassToMatchDuration,initialCalculations:r(d[1]).initialCalculations,scaleZetaToMatchClamps:r(d[1]).scaleZetaToMatchClamps,getReduceMotionForAnimation:r(d[0]).getReduceMotionForAnimation},n.__workletHash=4113653166044,n.__initData=o,n)}),335,[308,336]); +__d((function(g,r,i,a,_m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.underDampedSpringCalculations=e.scaleZetaToMatchClamps=e.isAnimationTerminatingCalculation=e.initialCalculations=e.criticallyDampedSpringCalculations=e.checkIfConfigIsValid=e.calculateNewMassToMatchDuration=e.bisectRoot=void 0;var n=t(r(d[1])),o=t(r(d[2])),s={code:"function checkIfConfigIsValid_reactNativeReanimated_springUtilsTs1(config){const{logger}=this.__closure;var _config$clamp,_config$clamp2;let errorMessage='';['stiffness','damping','dampingRatio','restDisplacementThreshold','restSpeedThreshold','mass'].forEach(function(prop){const value=config[prop];if(value<=0){errorMessage+=\", \"+prop+\" must be grater than zero but got \"+value;}});if(config.duration<0){errorMessage+=\", duration can't be negative, got \"+config.duration;}if((_config$clamp=config.clamp)!==null&&_config$clamp!==void 0&&_config$clamp.min&&(_config$clamp2=config.clamp)!==null&&_config$clamp2!==void 0&&_config$clamp2.max&&config.clamp.min>config.clamp.max){errorMessage+=\", clamp.min should be lower than clamp.max, got clamp: {min: \"+config.clamp.min+\", max: \"+config.clamp.max+\"} \";}if(errorMessage!==''){logger.warn('Invalid spring config'+errorMessage);}return errorMessage==='';}"},c=(e.checkIfConfigIsValid=(function(){var t=function(t){var n,o,s='';return['stiffness','damping','dampingRatio','restDisplacementThreshold','restSpeedThreshold','mass'].forEach((function(n){var o=t[n];o<=0&&(s+=`, ${n} must be grater than zero but got ${o}`)})),t.duration<0&&(s+=`, duration can't be negative, got ${t.duration}`),null!=(n=t.clamp)&&n.min&&null!=(o=t.clamp)&&o.max&&t.clamp.min>t.clamp.max&&(s+=`, clamp.min should be lower than clamp.max, got clamp: {min: ${t.clamp.min}, max: ${t.clamp.max}} `),''!==s&&r(d[3]).logger.warn('Invalid spring config'+s),''===s};return t.__closure={logger:r(d[3]).logger},t.__workletHash=0x939f8ae60e0,t.__initData=s,t})(),{code:"function bisectRoot_reactNativeReanimated_springUtilsTs2({min:min,max:max,func:func,maxIterations=20}){const ACCURACY=0.00005;let idx=maxIterations;let current=(max+min)/2;while(Math.abs(func(current))>ACCURACY&&idx>0){idx-=1;if(func(current)<0){min=current;}else{max=current;}current=(min+max)/2;}return current;}"}),l=e.bisectRoot=(function(){var t=function(t){for(var n=t.min,o=t.max,s=t.func,c=t.maxIterations,l=void 0===c?20:c,u=(o+n)/2;Math.abs(s(u))>5e-5&&l>0;)l-=1,s(u)<0?n=u:o=u,u=(n+o)/2;return u};return t.__closure={},t.__workletHash=5648054256871,t.__initData=c,t})(),u={code:"function initialCalculations_reactNativeReanimated_springUtilsTs3(mass=0,config){if(config.skipAnimation){return{zeta:0,omega0:0,omega1:0};}if(config.useDuration){const{stiffness:k,dampingRatio:zeta}=config;const omega0=Math.sqrt(k/mass);const omega1=omega0*Math.sqrt(1-zeta**2);return{zeta:zeta,omega0:omega0,omega1:omega1};}else{const{damping:c,mass:m,stiffness:k}=config;const zeta=c/(2*Math.sqrt(k*m));const omega0=Math.sqrt(k/m);const omega1=omega0*Math.sqrt(1-zeta**2);return{zeta:zeta,omega0:omega0,omega1:omega1};}}"},m=(e.initialCalculations=(function(){var t=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1?arguments[1]:void 0;if(n.skipAnimation)return{zeta:0,omega0:0,omega1:0};if(n.useDuration){var o=n.stiffness,s=n.dampingRatio,c=Math.sqrt(o/t);return{zeta:s,omega0:c,omega1:c*Math.sqrt(1-s**2)}}var l=n.damping,u=n.mass,m=n.stiffness,p=l/(2*Math.sqrt(m*u)),f=Math.sqrt(m/u);return{zeta:p,omega0:f,omega1:f*Math.sqrt(1-p**2)}};return t.__closure={},t.__workletHash=4157634151051,t.__initData=u,t})(),{code:"function scaleZetaToMatchClamps_reactNativeReanimated_springUtilsTs4(animation,clamp){const{zeta:zeta,toValue:toValue,startValue:startValue}=animation;const toValueNum=Number(toValue);if(toValueNum===startValue){return zeta;}const[firstBound,secondBound]=toValueNum-startValue>0?[clamp.min,clamp.max]:[clamp.max,clamp.min];const relativeExtremum1=secondBound!==undefined?Math.abs((secondBound-toValueNum)/(toValueNum-startValue)):undefined;const relativeExtremum2=firstBound!==undefined?Math.abs((firstBound-toValueNum)/(toValueNum-startValue)):undefined;const newZeta1=relativeExtremum1!==undefined?Math.abs(Math.log(relativeExtremum1)/Math.PI):undefined;const newZeta2=relativeExtremum2!==undefined?Math.abs(Math.log(relativeExtremum2)/(2*Math.PI)):undefined;const zetaSatisfyingClamp=[newZeta1,newZeta2].filter(function(x){return x!==undefined;});return Math.max(...zetaSatisfyingClamp,zeta);}"}),p=(e.scaleZetaToMatchClamps=(function(){var t=function(t,s){var c=t.zeta,l=t.toValue,u=t.startValue,m=Number(l);if(m===u)return c;var p=m-u>0?[s.min,s.max]:[s.max,s.min],f=(0,o.default)(p,2),h=f[0],v=f[1],_=void 0!==v?Math.abs((v-m)/(m-u)):void 0,M=void 0!==h?Math.abs((h-m)/(m-u)):void 0,x=[void 0!==_?Math.abs(Math.log(_)/Math.PI):void 0,void 0!==M?Math.abs(Math.log(M)/(2*Math.PI)):void 0].filter((function(t){return void 0!==t}));return Math.max.apply(Math,(0,n.default)(x).concat([c]))};return t.__closure={},t.__workletHash=0xc0b41b76f18,t.__initData=m,t})(),{code:"function calculateNewMassToMatchDuration_reactNativeReanimated_springUtilsTs5(x0,config,v0){const{bisectRoot}=this.__closure;if(config.skipAnimation){return 0;}const{stiffness:k,dampingRatio:zeta,restSpeedThreshold:threshold,duration:duration}=config;const durationForMass=function(mass){'worklet';const amplitude=(mass*v0*v0+k*x0*x0)/(Math.exp(1-0.5*zeta)*k);const c=zeta*2*Math.sqrt(k*mass);return 1000*(-2*mass/c)*Math.log(threshold*0.01/amplitude)-duration;};return bisectRoot({min:0,max:100,func:durationForMass});}"}),f={code:"function reactNativeReanimated_springUtilsTs6(mass){const{v0,k,x0,zeta,threshold,duration}=this.__closure;const amplitude=(mass*v0*v0+k*x0*x0)/(Math.exp(1-0.5*zeta)*k);const c=zeta*2*Math.sqrt(k*mass);return 1000*(-2*mass/c)*Math.log(threshold*0.01/amplitude)-duration;}"},h=(e.calculateNewMassToMatchDuration=(function(){var t=function(t,n,o){if(n.skipAnimation)return 0;var s,c=n.stiffness,u=n.dampingRatio,m=n.restSpeedThreshold,p=n.duration,h=((s=function(n){var s=(n*o*o+c*t*t)/(Math.exp(1-.5*u)*c);return-2*n/(2*u*Math.sqrt(c*n))*1e3*Math.log(.01*m/s)-p}).__closure={v0:o,k:c,x0:t,zeta:u,threshold:m,duration:p},s.__workletHash=2588271284915,s.__initData=f,s);return l({min:0,max:100,func:h})};return t.__closure={bisectRoot:l},t.__workletHash=6359222544220,t.__initData=p,t})(),{code:"function criticallyDampedSpringCalculations_reactNativeReanimated_springUtilsTs7(animation,precalculatedValues){const{toValue:toValue}=animation;const{v0:v0,x0:x0,omega0:omega0,t:t}=precalculatedValues;const criticallyDampedEnvelope=Math.exp(-omega0*t);const criticallyDampedPosition=toValue-criticallyDampedEnvelope*(x0+(v0+omega0*x0)*t);const criticallyDampedVelocity=criticallyDampedEnvelope*(v0*(t*omega0-1)+t*x0*omega0*omega0);return{position:criticallyDampedPosition,velocity:criticallyDampedVelocity};}"}),v=(e.criticallyDampedSpringCalculations=(function(){var t=function(t,n){var o=t.toValue,s=n.v0,c=n.x0,l=n.omega0,u=n.t,m=Math.exp(-l*u);return{position:o-m*(c+(s+l*c)*u),velocity:m*(s*(u*l-1)+u*c*l*l)}};return t.__closure={},t.__workletHash=3106110703769,t.__initData=h,t})(),{code:"function underDampedSpringCalculations_reactNativeReanimated_springUtilsTs8(animation,precalculatedValues){const{toValue:toValue,current:current,velocity:velocity}=animation;const{zeta:zeta,t:t,omega0:omega0,omega1:omega1}=precalculatedValues;const v0=-velocity;const x0=toValue-current;const sin1=Math.sin(omega1*t);const cos1=Math.cos(omega1*t);const underDampedEnvelope=Math.exp(-zeta*omega0*t);const underDampedFrag1=underDampedEnvelope*(sin1*((v0+zeta*omega0*x0)/omega1)+x0*cos1);const underDampedPosition=toValue-underDampedFrag1;const underDampedVelocity=zeta*omega0*underDampedFrag1-underDampedEnvelope*(cos1*(v0+zeta*omega0*x0)-omega1*x0*sin1);return{position:underDampedPosition,velocity:underDampedVelocity};}"}),_=(e.underDampedSpringCalculations=(function(){var t=function(t,n){var o=t.toValue,s=t.current,c=t.velocity,l=n.zeta,u=n.t,m=n.omega0,p=n.omega1,f=-c,h=o-s,v=Math.sin(p*u),_=Math.cos(p*u),M=Math.exp(-l*m*u),x=M*(v*((f+l*m*h)/p)+h*_);return{position:o-x,velocity:l*m*x-M*(_*(f+l*m*h)-p*h*v)}};return t.__closure={},t.__workletHash=9270865231826,t.__initData=v,t})(),{code:"function isAnimationTerminatingCalculation_reactNativeReanimated_springUtilsTs9(animation,config){const{toValue:toValue,velocity:velocity,startValue:startValue,current:current}=animation;const isOvershooting=config.overshootClamping?current>toValue&&startValuetoValue:false;const isVelocity=Math.abs(velocity)o&&co),isVelocity:Math.abs(s)100)throw new(r(d[8]).ReanimatedError)('Keyframe should be in between range 0 - 100.');var a=n.definitions[t],o=a.easing;delete a.easing;var s=function(n,a){return u({key:n,value:a,currentKeyPoint:t,easing:o})};Object.keys(a).forEach((function(n){if('transform'===n){if(!Array.isArray(a.transform))return;a.transform.forEach((function(n,t){Object.keys(n).forEach((function(a){s(h(t,a),n[a])}))}))}else s(n,a[n])}))})),{initialValues:a,keyframes:t}}},{key:"duration",value:function(n){return this.durationV=n,this}},{key:"delay",value:function(n){return this.delayV=n,this}},{key:"withCallback",value:function(n){return this.callbackV=n,this}},{key:"reduceMotion",value:function(n){return this.reduceMotionV=n,this}},{key:"getDelayFunction",value:function(){var n,t,a=this.delayV,o=this.reduceMotionV;return a?(t=function(n,t){return(0,r(d[6]).withDelay)(n,t,o)},t.__closure={withDelay:r(d[6]).withDelay,reduceMotion:o},t.__workletHash=5892710172582,t.__initData=u,t):((n=function(n,t){return t.reduceMotion=(0,r(d[9]).getReduceMotionFromConfig)(o),t}).__closure={getReduceMotionFromConfig:r(d[9]).getReduceMotionFromConfig,reduceMotion:o},n.__workletHash=5109046473464,n.__initData=c,n)}}])})(),y={code:"function makeKeyframeKey_reactNativeReanimated_KeyframeTs4(index,transformProp){return index+\"_transform:\"+transformProp;}"},h=(function(){var n=function(n,t){return`${n}_transform:${t}`};return n.__closure={},n.__workletHash=0xfce38b046f8,n.__initData=y,n})();e.Keyframe=l}),338,[1,198,6,12,13,247,325,321,256,308]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),Object.keys(r(d[0])).forEach((function(t){"default"!==t&&"__esModule"!==t&&(t in e&&e[t]===r(d[0])[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return r(d[0])[t]}}))})),Object.keys(r(d[1])).forEach((function(t){"default"!==t&&"__esModule"!==t&&(t in e&&e[t]===r(d[1])[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return r(d[1])[t]}}))})),Object.keys(r(d[2])).forEach((function(t){"default"!==t&&"__esModule"!==t&&(t in e&&e[t]===r(d[2])[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return r(d[2])[t]}}))})),Object.keys(r(d[3])).forEach((function(t){"default"!==t&&"__esModule"!==t&&(t in e&&e[t]===r(d[3])[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return r(d[3])[t]}}))})),Object.keys(r(d[4])).forEach((function(t){"default"!==t&&"__esModule"!==t&&(t in e&&e[t]===r(d[4])[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return r(d[4])[t]}}))})),Object.keys(r(d[5])).forEach((function(t){"default"!==t&&"__esModule"!==t&&(t in e&&e[t]===r(d[5])[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return r(d[5])[t]}}))})),Object.keys(r(d[6])).forEach((function(t){"default"!==t&&"__esModule"!==t&&(t in e&&e[t]===r(d[6])[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return r(d[6])[t]}}))})),Object.keys(r(d[7])).forEach((function(t){"default"!==t&&"__esModule"!==t&&(t in e&&e[t]===r(d[7])[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return r(d[7])[t]}}))})),Object.keys(r(d[8])).forEach((function(t){"default"!==t&&"__esModule"!==t&&(t in e&&e[t]===r(d[8])[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return r(d[8])[t]}}))})),Object.keys(r(d[9])).forEach((function(t){"default"!==t&&"__esModule"!==t&&(t in e&&e[t]===r(d[9])[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return r(d[9])[t]}}))}))}),339,[340,341,342,343,344,345,346,347,348,349]); +__d((function(g,r,i,a,m,_e,d){'use strict';var n=r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.BounceOutUp=_e.BounceOutRight=_e.BounceOutLeft=_e.BounceOutDown=_e.BounceOut=_e.BounceInUp=_e.BounceInRight=_e.BounceInLeft=_e.BounceInDown=_e.BounceIn=void 0;var t=n(r(d[1])),e=n(r(d[2])),u=n(r(d[3])),l=n(r(d[4])),o=n(r(d[5]));function c(n,t,e){return t=(0,l.default)(t),(0,u.default)(n,s()?Reflect.construct(t,e||[],(0,l.default)(n).constructor):t.apply(n,e))}function s(){try{var n=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(n){}return(s=function(){return!!n})()}var h={code:"function reactNativeReanimated_BounceTs1(){const{delayFunction,delay,withSequence,withTiming,duration,initialValues,callback}=this.__closure;return{animations:{transform:[{scale:delayFunction(delay,withSequence(withTiming(1.2,{duration:duration*0.55}),withTiming(0.9,{duration:duration*0.15}),withTiming(1.1,{duration:duration*0.15}),withTiming(1,{duration:duration*0.15})))}]},initialValues:{transform:[{scale:0}],...initialValues},callback:callback};}"},w=_e.BounceIn=(function(n){function u(){var n;(0,t.default)(this,u);for(var e=arguments.length,l=new Array(e),o=0;o1&&void 0!==arguments[1])||arguments[1];this.unregisterEventHandlers(),(0,r(d[4]).runOnUIImmediately)(((s=function(){g.ProgressTransitionRegister.removeProgressAnimation(n,t)}).__closure={viewTag:n,isUnmounting:t},s.__workletHash=2517882764538,s.__initData=T,s))()}},{key:"registerEventHandlers",value:function(){this._sharedElementCount++;var n,s,t,o,u,T=this._eventHandler;if(!T.isRegistered){T.isRegistered=!0;var R=l?'on':'top',w=-1;T.onTransitionProgress=(0,r(d[5]).registerEventHandler)(((u=function(n){var s=n.progress;s!==w&&(w=s,g.ProgressTransitionRegister.frame(s))}).__closure={lastProgressValue:w},u.__workletHash=8786389637541,u.__initData=f,u),R+'TransitionProgress'),T.onAppear=(0,r(d[5]).registerEventHandler)(((o=function(){g.ProgressTransitionRegister.onTransitionEnd()}).__closure={},o.__workletHash=0xd488cab63cc,o.__initData=v,o),R+'Appear'),l?T.onDisappear=(0,r(d[5]).registerEventHandler)(((t=function(){g.ProgressTransitionRegister.onAndroidFinishTransitioning()}).__closure={},t.__workletHash=1996066144170,t.__initData=_,t),'onFinishTransitioning'):'ios'===c.Platform.OS&&(T.onDisappear=(0,r(d[5]).registerEventHandler)(((s=function(){g.ProgressTransitionRegister.onTransitionEnd(!0)}).__closure={},s.__workletHash=2175464135288,s.__initData=p,s),'topDisappear'),T.onSwipeDismiss=(0,r(d[5]).registerEventHandler)(((n=function(){g.ProgressTransitionRegister.onTransitionEnd()}).__closure={},n.__workletHash=0xeb62469234f,n.__initData=P,n),'topGestureCancel'))}}},{key:"unregisterEventHandlers",value:function(){if(this._sharedElementCount--,0===this._sharedElementCount){var n=this._eventHandler;n.isRegistered=!1,-1!==n.onTransitionProgress&&((0,r(d[5]).unregisterEventHandler)(n.onTransitionProgress),n.onTransitionProgress=-1),-1!==n.onAppear&&((0,r(d[5]).unregisterEventHandler)(n.onAppear),n.onAppear=-1),-1!==n.onDisappear&&((0,r(d[5]).unregisterEventHandler)(n.onDisappear),n.onDisappear=-1),-1!==n.onSwipeDismiss&&((0,r(d[5]).unregisterEventHandler)(n.onSwipeDismiss),n.onSwipeDismiss=-1)}}}])})(),{code:"function createProgressTransitionRegister_reactNativeReanimated_ProgressTransitionManagerTs8(){const{IS_ANDROID}=this.__closure;const progressAnimations=new Map();const snapshots=new Map();const currentTransitions=new Set();const toRemove=new Set();let skipCleaning=false;let isTransitionRestart=false;const progressTransitionManager={addProgressAnimation:function(viewTag,progressAnimation){if(currentTransitions.size>0&&!progressAnimations.has(viewTag)){isTransitionRestart=!IS_ANDROID;}progressAnimations.set(viewTag,progressAnimation);},removeProgressAnimation:function(viewTag,isUnmounting){if(currentTransitions.size>0){isTransitionRestart=!IS_ANDROID;}if(isUnmounting){toRemove.add(viewTag);}else{progressAnimations.delete(viewTag);}},onTransitionStart:function(viewTag,snapshot){skipCleaning=isTransitionRestart;snapshots.set(viewTag,snapshot);currentTransitions.add(viewTag);progressTransitionManager.frame(0);},frame:function(progress){for(const viewTag of currentTransitions){const progressAnimation=progressAnimations.get(viewTag);if(!progressAnimation){continue;}const snapshot=snapshots.get(viewTag);progressAnimation(viewTag,snapshot,progress);}},onAndroidFinishTransitioning:function(){if(toRemove.size>0){progressTransitionManager.onTransitionEnd();}},onTransitionEnd:function(removeViews=false){if(currentTransitions.size===0){toRemove.clear();return;}if(skipCleaning){skipCleaning=false;isTransitionRestart=false;return;}for(const viewTag of currentTransitions){global._notifyAboutEnd(viewTag,removeViews);}currentTransitions.clear();if(isTransitionRestart){return;}snapshots.clear();if(toRemove.size>0){for(const viewTag of toRemove){progressAnimations.delete(viewTag);global._notifyAboutEnd(viewTag,removeViews);}toRemove.clear();}}};return progressTransitionManager;}"}),w=(function(){var n=function(){var n=new Map,s=new Map,t=new Set,o=new Set,c=!1,u=!1,T={addProgressAnimation:function(s,o){t.size>0&&!n.has(s)&&(u=!l),n.set(s,o)},removeProgressAnimation:function(s,c){t.size>0&&(u=!l),c?o.add(s):n.delete(s)},onTransitionStart:function(n,o){c=u,s.set(n,o),t.add(n),T.frame(0)},frame:function(o){for(var c of t){var l=n.get(c);if(l)l(c,s.get(c),o)}},onAndroidFinishTransitioning:function(){o.size>0&&T.onTransitionEnd()},onTransitionEnd:function(){var l=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(0!==t.size){if(c)return c=!1,void(u=!1);for(var T of t)g._notifyAboutEnd(T,l);if(t.clear(),!u&&(s.clear(),o.size>0)){for(var f of o)n.delete(f),g._notifyAboutEnd(f,l);o.clear()}}else o.clear()}};return T};return n.__closure={IS_ANDROID:l},n.__workletHash=5092284602633,n.__initData=R,n})(),h={code:"function reactNativeReanimated_ProgressTransitionManagerTs9(){const{createProgressTransitionRegister}=this.__closure;global.ProgressTransitionRegister=createProgressTransitionRegister();}"};if((0,r(d[6]).shouldBeUseWeb)()){var A=function(){if(!(0,r(d[6]).isJest)())throw new(r(d[7]).ReanimatedError)('`ProgressTransitionRegister` is not available on non-native platform.')};g.ProgressTransitionRegister=new Proxy({},{get:A,set:function(){return A(),!1}})}else(0,r(d[4]).runOnUIImmediately)(((s=function(){g.ProgressTransitionRegister=w()}).__closure={createProgressTransitionRegister:w},s.__workletHash=0xc251488872f,s.__initData=h,s))()}),358,[1,12,13,2,266,312,249,256]); +__d((function(g,r,_i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.SharedTransition=void 0;var i=t(r(d[1])),n=t(r(d[2])),o=['width','height','originX','originY','transform','borderRadius','borderTopLeftRadius','borderTopRightRadius','borderBottomLeftRadius','borderBottomRightRadius'],s={code:"function reactNativeReanimated_SharedTransitionTs1(viewTag,values,progress){const{progressAnimationCallback}=this.__closure;const newStyles=progressAnimationCallback(values,progress);global._notifyAboutProgress(viewTag,newStyles,true);}"},u={code:"function reactNativeReanimated_SharedTransitionTs2(values){const{animationFactory,SUPPORTED_PROPS,withTiming,reduceMotion,transitionDuration}=this.__closure;let animations={};const initialValues={};if(animationFactory){animations=animationFactory(values);for(const key in animations){if(!SUPPORTED_PROPS.includes(key)){throw new ReanimatedError(\"The prop '\"+key+\"' is not supported yet.\");}}}else{for(const propName of SUPPORTED_PROPS){if(propName==='transform'){const matrix=values.targetTransformMatrix;animations.transformMatrix=withTiming(matrix,{reduceMotion:reduceMotion,duration:transitionDuration});}else{const capitalizedPropName=\"\"+propName.charAt(0).toUpperCase()+propName.slice(1);const keyToTargetValue=\"target\"+capitalizedPropName;animations[propName]=withTiming(values[keyToTargetValue],{reduceMotion:reduceMotion,duration:transitionDuration});}}}for(const propName in animations){if(propName==='transform'){initialValues.transformMatrix=values.currentTransformMatrix;}else{const capitalizedPropName=propName.charAt(0).toUpperCase()+propName.slice(1);const keyToCurrentValue=\"current\"+capitalizedPropName;initialValues[propName]=values[keyToCurrentValue];}}return{initialValues:initialValues,animations:animations};}"},c={code:"function reactNativeReanimated_SharedTransitionTs3(viewTag,values,progress){const{SUPPORTED_PROPS}=this.__closure;const newStyles={};for(const propertyName of SUPPORTED_PROPS){if(propertyName==='transform'){const currentMatrix=values.currentTransformMatrix;const targetMatrix=values.targetTransformMatrix;const newMatrix=new Array(9);for(let i=0;i<9;i++){newMatrix[i]=progress*(targetMatrix[i]-currentMatrix[i])+currentMatrix[i];}newStyles.transformMatrix=newMatrix;}else{const PropertyName=propertyName.charAt(0).toUpperCase()+propertyName.slice(1);const currentPropertyName=\"current\"+PropertyName;const targetPropertyName=\"target\"+PropertyName;const currentValue=values[currentPropertyName];const targetValue=values[targetPropertyName];newStyles[propertyName]=progress*(targetValue-currentValue)+currentValue;}}global._notifyAboutProgress(viewTag,newStyles,true);}"},l=e.SharedTransition=(function(){function t(){(0,i.default)(this,t),this._customAnimationFactory=null,this._animation=null,this._transitionDuration=500,this._reduceMotion=r(d[3]).ReduceMotion.System,this._customProgressAnimation=void 0,this._progressAnimation=void 0,this._defaultTransitionType=void 0}return(0,n.default)(t,[{key:"custom",value:function(t){return this._customAnimationFactory=t,this}},{key:"progressAnimation",value:function(t){var i;return this._customProgressAnimation=((i=function(i,n,o){var s=t(n,o);g._notifyAboutProgress(i,s,!0)}).__closure={progressAnimationCallback:t},i.__workletHash=2188622308146,i.__initData=s,i),this}},{key:"duration",value:function(t){return this._transitionDuration=t,this}},{key:"reduceMotion",value:function(t){return this._reduceMotion=t,this}},{key:"defaultTransitionType",value:function(t){return this._defaultTransitionType=t,this}},{key:"registerTransition",value:function(i,n){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!(0,r(d[4]).getReduceMotionFromConfig)(this.getReduceMotion())){var s=this.getTransitionAnimation(),u=this.getProgressAnimation();this._defaultTransitionType||(this._customAnimationFactory&&!this._customProgressAnimation?this._defaultTransitionType=r(d[3]).SharedTransitionType.ANIMATION:this._defaultTransitionType=r(d[3]).SharedTransitionType.PROGRESS_ANIMATION);var c=this._defaultTransitionType===r(d[3]).SharedTransitionType.ANIMATION?r(d[3]).LayoutAnimationType.SHARED_ELEMENT_TRANSITION:r(d[3]).LayoutAnimationType.SHARED_ELEMENT_TRANSITION_PROGRESS;(0,r(d[5]).updateLayoutAnimations)(i,c,s,n,o),t._progressTransitionManager.addProgressAnimation(i,u)}}},{key:"unregisterTransition",value:function(i){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],o=this._defaultTransitionType===r(d[3]).SharedTransitionType.ANIMATION?r(d[3]).LayoutAnimationType.SHARED_ELEMENT_TRANSITION:r(d[3]).LayoutAnimationType.SHARED_ELEMENT_TRANSITION_PROGRESS;(0,r(d[5]).updateLayoutAnimations)(i,o,void 0,void 0,n),t._progressTransitionManager.removeProgressAnimation(i,n)}},{key:"getReduceMotion",value:function(){return this._reduceMotion}},{key:"getTransitionAnimation",value:function(){return this._animation||this.buildAnimation(),this._animation}},{key:"getProgressAnimation",value:function(){return this._progressAnimation||this.buildProgressAnimation(),this._progressAnimation}},{key:"buildAnimation",value:function(){var t,i=this._customAnimationFactory,n=this._transitionDuration,s=this._reduceMotion;this._animation=((t=function(t){var u={},c={};if(i){for(var l in u=i(t))if(!o.includes(l))throw new(r(d[6]).ReanimatedError)(`The prop '${l}' is not supported yet.`)}else for(var p of o)if('transform'===p){var T=t.targetTransformMatrix;u.transformMatrix=(0,r(d[7]).withTiming)(T,{reduceMotion:s,duration:n})}else{var f=`target${p.charAt(0).toUpperCase()}${p.slice(1)}`;u[p]=(0,r(d[7]).withTiming)(t[f],{reduceMotion:s,duration:n})}for(var _ in u)if('transform'===_)c.transformMatrix=t.currentTransformMatrix;else{var y=`current${_.charAt(0).toUpperCase()+_.slice(1)}`;c[_]=t[y]}return{initialValues:c,animations:u}}).__closure={animationFactory:i,SUPPORTED_PROPS:o,withTiming:r(d[7]).withTiming,reduceMotion:s,transitionDuration:n},t.__workletHash=0xb16a7c135ec,t.__initData=u,t)}},{key:"buildProgressAnimation",value:function(){var t;this._customProgressAnimation?this._progressAnimation=this._customProgressAnimation:this._progressAnimation=((t=function(t,i,n){var s={};for(var u of o)if('transform'===u){for(var c=i.currentTransformMatrix,l=i.targetTransformMatrix,p=new Array(9),T=0;T<9;T++)p[T]=n*(l[T]-c[T])+c[T];s.transformMatrix=p}else{var f=u.charAt(0).toUpperCase()+u.slice(1),_=`target${f}`,y=i[`current${f}`],h=i[_];s[u]=n*(h-y)+y}g._notifyAboutProgress(t,s,!0)}).__closure={SUPPORTED_PROPS:o},t.__workletHash=0xc9932b31128,t.__initData=c,t)}}],[{key:"custom",value:function(i){return(new t).custom(i)}},{key:"duration",value:function(i){return(new t).duration(i)}},{key:"progressAnimation",value:function(i){return(new t).progressAnimation(i)}},{key:"defaultTransitionType",value:function(i){return(new t).defaultTransitionType(i)}},{key:"reduceMotion",value:function(i){return(new t).reduceMotion(i)}}])})();l._progressTransitionManager=new(r(d[8]).ProgressTransitionManager)}),359,[1,12,13,247,308,360,256,325,358]); +__d((function(g,r,i,a,m,e,d){'use strict';var t,n;if(Object.defineProperty(e,"__esModule",{value:!0}),e.updateLayoutAnimations=void 0,(0,r(d[0]).shouldBeUseWeb)())e.updateLayoutAnimations=function(){};else{var u=(t=[],n=[],{update:function(u,o){o?n.push(u):t.push(u),t.length+n.length===1&&((0,r(d[0]).isFabric)()?this.flush():setImmediate(this.flush))},flush:function(){(0,r(d[1]).configureLayoutAnimationBatch)(t.concat(n)),t.length=0,n.length=0}});e.updateLayoutAnimations=function(t,n,o,s,h){return u.update({viewTag:t,type:n,config:o?(0,r(d[1]).makeShareableCloneRecursive)(o):void 0,sharedTransitionTag:s},h)}}}),360,[249,312]); +__d((function(_g2,_r2,_i,_a,m,e,_d){'use strict';var o=_r2(_d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.interpolateColor=e.Extrapolate=e.ColorSpace=void 0,e.useInterpolateConfig=function(o,t){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:P.RGB,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return(0,_r2(_d[5]).useSharedValue)({inputRange:o,outputRange:t,colorSpace:a,cache:(0,_r2(_d[6]).makeMutable)(null),options:r})};var t,a,r,n,l,i,c,p,s,u=o(_r2(_d[1])),h=(e.Extrapolate=_r2(_d[2]).Extrapolation,{code:"function reactNativeReanimated_interpolateColorTs1(value,inputRange,colors,options){const{interpolate,Extrapolation,hsvToColor}=this.__closure;let h=0;const{useCorrectedHSVInterpolation=true}=options;if(useCorrectedHSVInterpolation){const correctedInputRange=[inputRange[0]];const originalH=colors.h;const correctedH=[originalH[0]];for(let i=1;ioriginalH[i-1]&&d>0.5){correctedInputRange.push(inputRange[i]);correctedInputRange.push(inputRange[i]+0.00001);correctedH.push(originalH[i]-1);correctedH.push(originalH[i]);}else if(originalH[i]c[s-1]&&u>.5?(i.push(t[s]),i.push(t[s]+1e-5),p.push(c[s]-1),p.push(c[s])):c[s]3&&void 0!==arguments[3]?arguments[3]:'RGB',n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};if('HSV'===r)return g(o,t,B(a),n);if('RGB'===r)return b(o,t,E(a),n);if('LAB'===r)return H(o,t,I(a),n);throw new(_r2(_d[4]).ReanimatedError)(`Invalid color space provided: ${r}. Supported values are: ['RGB', 'HSV', 'LAB'].`)};return o.__closure={interpolateColorsHSV:g,getInterpolateHSV:B,interpolateColorsRGB:b,getInterpolateRGB:E,interpolateColorsLAB:H,getInterpolateLAB:I},o.__workletHash=7877560832453,o.__initData=G,o})(),e.ColorSpace=(function(o){return o[o.RGB=0]="RGB",o[o.HSV=1]="HSV",o[o.LAB=2]="LAB",o})({}))}),361,[1,362,365,311,256,366,312]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=t(r(d[1]));e.default={oklab:u.default}}),362,[1,363]); +__d((function(_g,_r,i,_a,m,e,d){'use strict';var r=_r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=r(_r(d[1])),t={code:"function convertLrgbToOklab_reactNativeReanimated_oklabTs1({r=0,g=0,b=0,alpha:alpha}){const L=Math.cbrt(0.41222147079999993*r+0.5363325363*g+0.0514459929*b);const M=Math.cbrt(0.2119034981999999*r+0.6806995450999999*g+0.1073969566*b);const S=Math.cbrt(0.08830246189999998*r+0.2817188376*g+0.6299787005000002*b);return{l:0.2104542553*L+0.793617785*M-0.0040720468*S,a:1.9779984951*L-2.428592205*M+0.4505937099*S,b:0.0259040371*L+0.7827717662*M-0.808675766*S,alpha:alpha};}"},a=(function(){var r=function(r){var o=r.r,t=void 0===o?0:o,a=r.g,n=void 0===a?0:a,b=r.b,l=void 0===b?0:b,c=r.alpha,g=Math.cbrt(.41222147079999993*t+.5363325363*n+.0514459929*l),u=Math.cbrt(.2119034981999999*t+.6806995450999999*n+.1073969566*l),_=Math.cbrt(.08830246189999998*t+.2817188376*n+.6299787005000002*l);return{l:.2104542553*g+.793617785*u-.0040720468*_,a:1.9779984951*g-2.428592205*u+.4505937099*_,b:.0259040371*g+.7827717662*u-.808675766*_,alpha:c}};return r.__closure={},r.__workletHash=0xe42bdf2aa6e,r.__initData=t,r})(),n={code:"function convertRgbToOklab_reactNativeReanimated_oklabTs2(rgb){const{lrgb,convertLrgbToOklab}=this.__closure;const lrgbColor=lrgb.convert.fromRgb(rgb);const result=convertLrgbToOklab(lrgbColor);if(rgb.r===rgb.b&&rgb.b===rgb.g){result.a=result.b=0;}return result;}"},b=(function(){var r=function(r){var t=o.default.convert.fromRgb(r),n=a(t);return r.r===r.b&&r.b===r.g&&(n.a=n.b=0),n};return r.__closure={lrgb:o.default,convertLrgbToOklab:a},r.__workletHash=0xa8dbc2fe646,r.__initData=n,r})(),l={code:"function convertOklabToLrgb_reactNativeReanimated_oklabTs3({l=0,a=0,b=0,alpha:alpha}){const L=Math.pow(l*0.99999999845051981432+0.39633779217376785678*a+0.21580375806075880339*b,3);const M=Math.pow(l*1.0000000088817607767-0.1055613423236563494*a-0.063854174771705903402*b,3);const S=Math.pow(l*1.0000000546724109177-0.089484182094965759684*a-1.2914855378640917399*b,3);return{r:+4.076741661347994*L-3.307711590408193*M+0.230969928729428*S,g:-1.2684380040921763*L+2.6097574006633715*M-0.3413193963102197*S,b:-0.004196086541837188*L-0.7034186144594493*M+1.7076147009309444*S,alpha:alpha};}"},c=(function(){var r=function(r){var o=r.l,t=void 0===o?0:o,a=r.a,n=void 0===a?0:a,b=r.b,l=void 0===b?0:b,c=r.alpha,g=Math.pow(.9999999984505198*t+.39633779217376786*n+.2158037580607588*l,3),u=Math.pow(1.0000000088817609*t-.10556134232365635*n-.06385417477170591*l,3),_=Math.pow(1.0000000546724108*t-.08948418209496575*n-1.2914855378640917*l,3);return{r:4.076741661347994*g-3.307711590408193*u+.230969928729428*_,g:-1.2684380040921763*g+2.6097574006633715*u-.3413193963102197*_,b:-.004196086541837188*g-.7034186144594493*u+1.7076147009309444*_,alpha:c}};return r.__closure={},r.__workletHash=7061309948167,r.__initData=l,r})(),g={code:"function convertOklabToRgb_reactNativeReanimated_oklabTs4(labColor){const{convertOklabToLrgb,lrgb}=this.__closure;const roundChannel=function(channel){return Math.ceil(channel*100_000)/100_000;};const lrgbColor=convertOklabToLrgb(labColor);const rgbColor=lrgb.convert.toRgb(lrgbColor);rgbColor.r=roundChannel(rgbColor.r);rgbColor.g=roundChannel(rgbColor.g);rgbColor.b=roundChannel(rgbColor.b);return rgbColor;}"},u=(function(){var r=function(r){var t=function(r){return Math.ceil(1e5*r)/1e5},a=c(r),n=o.default.convert.toRgb(a);return n.r=t(n.r),n.g=t(n.g),n.b=t(n.b),n};return r.__closure={convertOklabToLrgb:c,lrgb:o.default},r.__workletHash=2368545800113,r.__initData=g,r})();e.default={convert:{fromRgb:b,toRgb:u}}}),363,[1,364]); +__d((function(_g,_r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r,t,n,c,o={code:"function reactNativeReanimated_lrgbTs1(c=0){const abs=Math.abs(c);if(abs>0.0031308){return(Math.sign(c)||1)*(1.055*Math.pow(abs,1/2.4)-0.055);}return c*12.92;}"},h=(r=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=Math.abs(r);return t>.0031308?(Math.sign(r)||1)*(1.055*Math.pow(t,.4166666666666667)-.055):12.92*r},r.__closure={},r.__workletHash=815084224200,r.__initData=o,r),l={code:"function reactNativeReanimated_lrgbTs2({r:r,g:g,b:b,alpha:alpha}){const{channelFromLrgb}=this.__closure;return{r:channelFromLrgb(r),g:channelFromLrgb(g),b:channelFromLrgb(b),alpha:alpha};}"},b=((t=function(r){var t=r.r,n=r.g,c=r.b,o=r.alpha;return{r:h(t),g:h(n),b:h(c),alpha:o}}).__closure={channelFromLrgb:h},t.__workletHash=0xa88c0a479f7,t.__initData=l,t),s={code:"function reactNativeReanimated_lrgbTs3(c=0){const abs=Math.abs(c);if(abs<=0.04045){return c/12.92;}return(Math.sign(c)||1)*Math.pow((abs+0.055)/1.055,2.4);}"},_=(n=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=Math.abs(r);return t<=.04045?r/12.92:(Math.sign(r)||1)*Math.pow((t+.055)/1.055,2.4)},n.__closure={},n.__workletHash=9958191482497,n.__initData=s,n),g={code:"function reactNativeReanimated_lrgbTs4({r:r,g:g,b:b,alpha:alpha}){const{channelToLrgb}=this.__closure;return{r:channelToLrgb(r),g:channelToLrgb(g),b:channelToLrgb(b),alpha:alpha};}"},u=((c=function(r){var t=r.r,n=r.g,c=r.b,o=r.alpha;return{r:_(t),g:_(n),b:_(c),alpha:o}}).__closure={channelToLrgb:_},c.__workletHash=622863108081,c.__initData=g,c);e.default={convert:{fromRgb:u,toRgb:b}}}),364,[]); +__d((function(g,r,_i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.interpolate=e.clamp=e.Extrapolation=void 0;var t=e.Extrapolation=(function(t){return t.IDENTITY="identity",t.CLAMP="clamp",t.EXTEND="extend",t})({}),n={code:"function getVal_reactNativeReanimated_interpolationTs1(type,coef,val,leftEdgeOutput,rightEdgeOutput,x){const{Extrapolation}=this.__closure;switch(type){case Extrapolation.IDENTITY:return x;case Extrapolation.CLAMP:if(coef*val=leftEdgeOutput?1:-1;if(coef*valcoef*rightEdgeOutput){return getVal(extrapolationConfig.extrapolateRight,coef,val,leftEdgeOutput,rightEdgeOutput,x);}return val;}"},f=(function(){var t=function(t,n,i){var p=n.leftEdgeInput,u=n.rightEdgeInput,l=n.leftEdgeOutput,E=n.rightEdgeOutput;if(u-p==0)return l;var f=l+(t-p)/(u-p)*(E-l),x=E>=l?1:-1;return x*fx*E?o(i.extrapolateRight,x,f,l,E,t):f};return t.__closure={getVal:o},t.__workletHash=7727686385963,t.__initData=E,t})(),x={code:"function interpolate_reactNativeReanimated_interpolationTs5(x,inputRange,outputRange,type){const{validateType,internalInterpolate}=this.__closure;if(inputRange.length<2||outputRange.length<2){throw new ReanimatedError('Interpolation input and output ranges should contain at least two values.');}const extrapolationConfig=validateType(type);const length=inputRange.length;const narrowedInput={leftEdgeInput:inputRange[0],rightEdgeInput:inputRange[1],leftEdgeOutput:outputRange[0],rightEdgeOutput:outputRange[1]};if(length>2){if(x>inputRange[length-1]){narrowedInput.leftEdgeInput=inputRange[length-2];narrowedInput.rightEdgeInput=inputRange[length-1];narrowedInput.leftEdgeOutput=outputRange[length-2];narrowedInput.rightEdgeOutput=outputRange[length-1];}else{for(let i=1;i2)if(t>n[u-1])E.leftEdgeInput=n[u-2],E.rightEdgeInput=n[u-1],E.leftEdgeOutput=o[u-2],E.rightEdgeOutput=o[u-1];else for(var x=1;x1&&this.props.skipExiting?u.Children.map(this.props.children,(function(t){return(0,_r(d[8]).jsx)(a,{skipExiting:!0,children:t})})):this.props.children}},{key:"setShouldAnimateExiting",value:function(){if(1===u.Children.count(this.props.children)){var t=(0,_r(d[9]).findNodeHandle)(this);t&&(0,_r(d[10]).setShouldAnimateExitingForTag)(t,!this.props.skipExiting)}}},{key:"componentWillUnmount",value:function(){void 0!==this.props.skipExiting&&this.setShouldAnimateExiting()}},{key:"render",value:function(){var t=this.getMaybeWrappedChildren();return void 0===this.props.skipEntering?t:(0,_r(d[8]).jsx)(s,{shouldSkip:this.props.skipEntering,children:t})}}])})(u.Component)}),367,[1,12,13,23,25,28,178,249,223,368,312]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"findNodeHandle",{enumerable:!0,get:function(){return n.findNodeHandle}});var n=r(d[0])}),368,[2]); +__d((function(g,_r,_i,_a,m,_e,d){'use strict';Object.defineProperty(_e,"__esModule",{value:!0}),_e.PerformanceMonitor=function(e){var r=e.smoothingFrames,n=void 0===r?i:r;return(0,_r(d[5]).jsxs)(t.View,{style:x.monitor,children:[(0,_r(d[5]).jsx)(p,{smoothingFrames:n}),(0,_r(d[5]).jsx)(v,{smoothingFrames:n})]})};var e=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var u={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(u,a,o):u[a]=e[a]}return u.default=e,n&&n.set(e,u),u})(_r(d[0])),t=_r(d[1]);function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}var n={code:"function createCircularDoublesBuffer_reactNativeReanimated_PerformanceMonitorTsx1(size){return{next:0,buffer:new Float32Array(size),size:size,count:0,push:function(value){const oldValue=this.buffer[this.next];const oldCount=this.count;this.buffer[this.next]=value;this.next=(this.next+1)%this.size;this.count=Math.min(this.size,this.count+1);return oldCount===this.size?oldValue:null;},front:function(){const notEmpty=this.count>0;if(notEmpty){const current=this.next-1;const index=current<0?this.size-1:current;return this.buffer[index];}return null;},back:function(){const notEmpty=this.count>0;return notEmpty?this.buffer[this.next]:null;}};}"},u=(function(){var e=function(e){return{next:0,buffer:new Float32Array(e),size:e,count:0,push:function(e){var t=this.buffer[this.next],r=this.count;return this.buffer[this.next]=e,this.next=(this.next+1)%this.size,this.count=Math.min(this.size,this.count+1),r===this.size?t:null},front:function(){if(this.count>0){var e=this.next-1,t=e<0?this.size-1:e;return this.buffer[t]}return null},back:function(){return this.count>0?this.buffer[this.next]:null}}};return e.__closure={},e.__workletHash=208807807952,e.__initData=n,e})(),i=20;(0,_r(d[2]).addWhitelistedNativeProps)({text:!0});var a=(0,_r(d[3]).createAnimatedComponent)(t.TextInput);var o={code:"function getFps_reactNativeReanimated_PerformanceMonitorTsx2(renderTimeInMs){return 1000/renderTimeInMs;}"},s=(function(){var e=function(e){return 1e3/e};return e.__closure={},e.__workletHash=0xa2522db031f,e.__initData=o,e})(),c={code:"function completeBufferRoutine_reactNativeReanimated_PerformanceMonitorTsx3(buffer,timestamp){const{getFps}=this.__closure;var _buffer$push;timestamp=Math.round(timestamp);const droppedTimestamp=(_buffer$push=buffer.push(timestamp))!==null&&_buffer$push!==void 0?_buffer$push:timestamp;const measuredRangeDuration=timestamp-droppedTimestamp;return getFps(measuredRangeDuration/buffer.count);}"},l=(function(){var e=function(e,t){var r;t=Math.round(t);var n=null!=(r=e.push(t))?r:t;return s((t-n)/e.count)};return e.__closure={getFps:s},e.__workletHash=9222589345784,e.__initData=c,e})(),f={code:"function reactNativeReanimated_PerformanceMonitorTsx4(){const{jsFps}=this.__closure;var _jsFps$value;const text='JS: '+((_jsFps$value=jsFps.value)!==null&&_jsFps$value!==void 0?_jsFps$value:'N/A')+' ';return{text:text,defaultValue:text};}"};function p(r){var n=r.smoothingFrames,i=(0,_r(d[4]).useSharedValue)(null),o=(0,_r(d[4]).useSharedValue)(0),s=(0,e.useRef)(u(n));(0,e.useEffect)((function(){var e,t;e=function(e,t){t=Math.round(t);var r=l(s.current,t);i.value=(2*r).toFixed(0)},t=0,(function r(){requestAnimationFrame((function(n){t>0&&e(t,n),t=n,requestAnimationFrame(r)}))})()}),[i,o]);var c,p=(0,_r(d[4]).useAnimatedProps)(((c=function(){var e,t='JS: '+(null!=(e=i.value)?e:'N/A')+' ';return{text:t,defaultValue:t}}).__closure={jsFps:i},c.__workletHash=518205953393,c.__initData=f,c));return(0,_r(d[5]).jsx)(t.View,{style:x.container,children:(0,_r(d[5]).jsx)(a,{style:x.text,animatedProps:p,editable:!1})})}var h={code:"function reactNativeReanimated_PerformanceMonitorTsx5({timestamp:timestamp}){const{circularBuffer,createCircularDoublesBuffer,smoothingFrames,completeBufferRoutine,uiFps}=this.__closure;if(circularBuffer.value===null){circularBuffer.value=createCircularDoublesBuffer(smoothingFrames);}timestamp=Math.round(timestamp);const currentFps=completeBufferRoutine(circularBuffer.value,timestamp);uiFps.value=currentFps.toFixed(0);}"},_={code:"function reactNativeReanimated_PerformanceMonitorTsx6(){const{uiFps}=this.__closure;var _uiFps$value;const text='UI: '+((_uiFps$value=uiFps.value)!==null&&_uiFps$value!==void 0?_uiFps$value:'N/A')+' ';return{text:text,defaultValue:text};}"};function v(e){var r,n=e.smoothingFrames,i=(0,_r(d[4]).useSharedValue)(null),o=(0,_r(d[4]).useSharedValue)(null);(0,_r(d[4]).useFrameCallback)(((r=function(e){var t=e.timestamp;null===o.value&&(o.value=u(n)),t=Math.round(t);var r=l(o.value,t);i.value=r.toFixed(0)}).__closure={circularBuffer:o,createCircularDoublesBuffer:u,smoothingFrames:n,completeBufferRoutine:l,uiFps:i},r.__workletHash=0xf05e0b1cc8d,r.__initData=h,r));var s,c=(0,_r(d[4]).useAnimatedProps)(((s=function(){var e,t='UI: '+(null!=(e=i.value)?e:'N/A')+' ';return{text:t,defaultValue:t}}).__closure={uiFps:i},s.__workletHash=4313838824310,s.__initData=_,s));return(0,_r(d[5]).jsx)(t.View,{style:x.container,children:(0,_r(d[5]).jsx)(a,{style:x.text,animatedProps:c,editable:!1})})}var x=t.StyleSheet.create({monitor:{flexDirection:'row',position:'absolute',backgroundColor:'#0006',zIndex:1e3},header:{fontSize:14,color:'#ffff',paddingHorizontal:5},text:{fontSize:13,fontVariant:['tabular-nums'],color:'#ffff',fontFamily:'monospace',paddingHorizontal:3},container:{alignItems:'center',justifyContent:'center',flexDirection:'row',flexWrap:'wrap'}})}),369,[178,2,370,371,410,223]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.adaptViewConfig=function(s){var t=s.uiViewClassName,o=s.validAttributes;if(!P.has(t)){var T={};Object.keys(o).forEach((function(s){s in r(d[1]).PropsAllowlists.NATIVE_THREAD_PROPS_WHITELIST||s in r(d[1]).PropsAllowlists.UI_THREAD_PROPS_WHITELIST||(T[s]=!0)})),l(T),P.add(t)}},e.addWhitelistedNativeProps=function(s){var t=Object.keys(r(d[1]).PropsAllowlists.NATIVE_THREAD_PROPS_WHITELIST).length;r(d[1]).PropsAllowlists.NATIVE_THREAD_PROPS_WHITELIST=Object.assign({},r(d[1]).PropsAllowlists.NATIVE_THREAD_PROPS_WHITELIST,s),t!==Object.keys(r(d[1]).PropsAllowlists.NATIVE_THREAD_PROPS_WHITELIST).length&&o()},e.addWhitelistedUIProps=l,e.configureProps=o,e.configureReanimatedLogger=function(t){(0,r(d[4]).updateLoggerConfig)(t),s||(0,r(d[3]).executeOnUIRuntimeSync)(r(d[4]).updateLoggerConfig)(t)};var s=(0,r(d[0]).shouldBeUseWeb)();function t(){for(var s in r(d[1]).PropsAllowlists.NATIVE_THREAD_PROPS_WHITELIST)if(s in r(d[1]).PropsAllowlists.UI_THREAD_PROPS_WHITELIST)throw new(r(d[2]).ReanimatedError)(`Property \`${s}\` was whitelisted both as UI and native prop. Please remove it from one of the lists.`)}function o(){t(),(0,r(d[3]).jsiConfigureProps)(Object.keys(r(d[1]).PropsAllowlists.UI_THREAD_PROPS_WHITELIST),Object.keys(r(d[1]).PropsAllowlists.NATIVE_THREAD_PROPS_WHITELIST))}function l(s){var t=Object.keys(r(d[1]).PropsAllowlists.UI_THREAD_PROPS_WHITELIST).length;r(d[1]).PropsAllowlists.UI_THREAD_PROPS_WHITELIST=Object.assign({},r(d[1]).PropsAllowlists.UI_THREAD_PROPS_WHITELIST,s),t!==Object.keys(r(d[1]).PropsAllowlists.UI_THREAD_PROPS_WHITELIST).length&&o()}var P=new Set;o()}),370,[249,273,256,312,250]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"createAnimatedComponent",{enumerable:!0,get:function(){return r(d[0]).createAnimatedComponent}})}),371,[372]); +__d((function(g,r,i,a,m,_e,d){'use strict';var e=r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.createAnimatedComponent=function(e,M){R||(0,p.default)('function'!=typeof e||e.prototype&&e.prototype.isReactComponent,`Looks like you're passing a function component \`${e.name}\` to \`createAnimatedComponent\` function which supports only class components. Please wrap your function component with \`React.forwardRef()\` or use a class component instead.`);var P=(function(p){function u(e){var n,l,p,h,R,T;(0,t.default)(this,u),h=this,R=u,T=[e],R=(0,s.default)(R),(p=(0,o.default)(h,v()?Reflect.construct(R,T||[],(0,s.default)(h).constructor):R.apply(h,T)))._styles=null,p._isFirstRender=!0,p.jestAnimatedStyle={value:{}},p.jestAnimatedProps={value:{}},p._componentRef=null,p._hasAnimatedRef=!1,p._componentDOMRef=null,p._sharedElementTransition=null,p._jsPropsUpdater=new c.default,p._InlinePropManager=new(r(d[14]).InlinePropManager),p._PropsFilter=new(r(d[15]).PropsFilter),p.reanimatedID=A++,p._willUnmount=!1,p._resolveComponentRef=function(e){var t=e;return t&&t.getAnimatableRef?(p._hasAnimatedRef=!0,t.getAnimatableRef()):(w&&(t&&t.elementRef?p._componentDOMRef=t.elementRef.current:p._componentDOMRef=e),t)},p._setComponentRef=(0,f.default)({getForwardedRef:function(){return p.props.forwardedRef},setLocalRef:function(e){if(e){e!==p._componentRef&&(p._componentRef=p._resolveComponentRef(e),p._viewInfo=void 0);var t=p.getComponentViewTag(),n=p.props,o=n.layout,s=n.entering,l=n.exiting,h=n.sharedTransitionTag;if(o||s||l||h){var c,f;if(w||(0,r(d[16]).enableLayoutAnimations)(!0,!1),h&&p._configureSharedTransition(),l&&(0,r(d[12]).isFabric)())if(!('getReduceMotion'in l&&'function'==typeof l.getReduceMotion?(0,r(d[17]).getReduceMotionFromConfig)(l.getReduceMotion()):(0,r(d[17]).getReduceMotionFromConfig)()))(0,r(d[18]).updateLayoutAnimations)(t,r(d[19]).LayoutAnimationType.EXITING,(0,r(d[20]).maybeBuild)(l,null==(f=p.props)?void 0:f.style,u.displayName));var v,_=null==(c=p.context)?void 0:c.current;if(s&&!(0,r(d[12]).isFabric)()&&!_&&!y)(0,r(d[18]).updateLayoutAnimations)(t,r(d[19]).LayoutAnimationType.ENTERING,(0,r(d[20]).maybeBuild)(s,null==(v=p.props)?void 0:v.style,u.displayName))}}}}),_&&(p.jestAnimatedStyle={value:{}},p.jestAnimatedProps={value:{}});var M=p.props.entering,P=null==(n=p.context)?void 0:n.current;return!M||(0,r(d[13]).getReducedMotionFromConfig)(M)||P||!(0,r(d[12]).isFabric)()?(0,o.default)(p):((0,r(d[18]).updateLayoutAnimations)(p.reanimatedID,r(d[19]).LayoutAnimationType.ENTERING,(0,r(d[20]).maybeBuild)(M,null==(l=p.props)?void 0:l.style,u.displayName)),p)}return(0,l.default)(u,p),(0,n.default)(u,[{key:"componentDidMount",value:function(){var e,t;if(y||(this._NativeEventsManager=new(r(d[21]).NativeEventsManager)(this,M)),null==(e=this._NativeEventsManager)||e.attachEvents(),this._jsPropsUpdater.addOnJSPropsChangeListener(this),this._attachAnimatedStyles(),this._InlinePropManager.attachInlineProps(this,this._getViewInfo()),this.props.layout&&this._configureLayoutTransition(),y){var n;if(this.props.exiting&&this._componentDOMRef&&(0,r(d[13]).saveSnapshot)(this._componentDOMRef),!this.props.entering||(0,r(d[13]).getReducedMotionFromConfig)(this.props.entering))return void(this._isFirstRender=!1);(null==(n=this.context)?void 0:n.current)?this._componentDOMRef&&(this._componentDOMRef.style.visibility='initial'):(0,r(d[13]).startWebLayoutAnimation)(this.props,this._componentDOMRef,r(d[19]).LayoutAnimationType.ENTERING)}var o=null==(t=this._viewInfo)?void 0:t.viewTag;!w&&(0,r(d[12]).isFabric)()&&this._willUnmount&&'number'==typeof o&&(0,r(d[16]).unmarkNodeAsRemovable)(o),this._isFirstRender=!1}},{key:"componentWillUnmount",value:function(){var e,t,n;null==(e=this._NativeEventsManager)||e.detachEvents(),this._jsPropsUpdater.removeOnJSPropsChangeListener(this),this._detachStyles(),this._InlinePropManager.detachInlineProps(),this.props.sharedTransitionTag&&this._configureSharedTransition(!0),null==(t=this._sharedElementTransition)||t.unregisterTransition(this.getComponentViewTag(),!0);var o=this.props.exiting;if(y&&this._componentDOMRef&&o&&!(0,r(d[13]).getReducedMotionFromConfig)(o))(0,r(d[22]).addHTMLMutationObserver)(),(0,r(d[13]).startWebLayoutAnimation)(this.props,this._componentDOMRef,r(d[19]).LayoutAnimationType.EXITING);else if(o&&!y&&!(0,r(d[12]).isFabric)()){var s;if(!('getReduceMotion'in o&&'function'==typeof o.getReduceMotion?(0,r(d[17]).getReduceMotionFromConfig)(o.getReduceMotion()):(0,r(d[17]).getReduceMotionFromConfig)()))(0,r(d[18]).updateLayoutAnimations)(this.getComponentViewTag(),r(d[19]).LayoutAnimationType.EXITING,(0,r(d[20]).maybeBuild)(o,null==(s=this.props)?void 0:s.style,u.displayName))}var l=null==(n=this._viewInfo)?void 0:n.shadowNodeWrapper;!w&&(0,r(d[12]).isFabric)()&&l&&(0,r(d[16]).markNodeAsRemovable)(l),this._willUnmount=!0}},{key:"getComponentViewTag",value:function(){return this._getViewInfo().viewTag}},{key:"_detachStyles",value:function(){var e=this.getComponentViewTag();if(-1!==e&&null!==this._styles){var t;for(var n of this._styles)n.viewDescriptors.remove(e);null!=(t=this.props.animatedProps)&&t.viewDescriptors&&this.props.animatedProps.viewDescriptors.remove(e)}}},{key:"_updateFromNative",value:function(e){var t;null!=M&&M.setNativeProps?M.setNativeProps(this._componentRef,e):null==(t=this._componentRef)||null==t.setNativeProps||t.setNativeProps(e)}},{key:"_getViewInfo",value:function(){if(void 0!==this._viewInfo)return this._viewInfo;var e,t,n,o=null,s=null;if(w)e=this._componentRef,s=this._componentDOMRef,t=null,o=null,n=null;else{var l=(0,r(d[23]).findHostInstance)(this);if(!l)throw new(r(d[24]).ReanimatedError)('Cannot find host instance for this component. Maybe it renders nothing?');var p=(0,r(d[25]).getViewInfo)(l);e=p.viewTag,t=p.viewName,n=p.viewConfig,o=(0,r(d[12]).isFabric)()?(0,r(d[26]).getShadowNodeWrapperFromRef)(this,l):null}return this._viewInfo={viewTag:e,viewName:t,shadowNodeWrapper:o,viewConfig:n},s&&(this._viewInfo.DOMElement=s),this._viewInfo}},{key:"_attachAnimatedStyles",value:function(){var e,t,n=this,o=this.props.style?T((0,r(d[27]).flattenArray)(this.props.style)):[],s=this.props.animatedProps,l=this._styles;this._styles=o;var p=this._animatedProps;this._animatedProps=s;var u,h=this._getViewInfo(),c=h.viewTag,f=h.viewName,v=h.shadowNodeWrapper,y=h.viewConfig;if((((null==(e=this.props.animatedProps)?void 0:e.viewDescriptors)||o.length)&&y&&(0,r(d[28]).adaptViewConfig)(y),l)&&!(1===o.length&&1===l.length&&o[0]===l[0])){var R=function(e){o.some((function(t){return t===e}))||e.viewDescriptors.remove(c)};for(var w of l)R(w)}s&&_&&(this.jestAnimatedProps.value=Object.assign({},this.jestAnimatedProps.value,null==s||null==(u=s.initial)?void 0:u.value),null!=s&&s.jestAnimatedValues&&(s.jestAnimatedValues.current=this.jestAnimatedProps));o.forEach((function(e){e.viewDescriptors.add({tag:c,name:f,shadowNodeWrapper:v}),_&&(n.jestAnimatedStyle.value=Object.assign({},n.jestAnimatedStyle.value,e.initial.value),e.jestAnimatedValues.current=n.jestAnimatedStyle)})),p&&p!==this.props.animatedProps&&p.viewDescriptors.remove(c),null!=(t=this.props.animatedProps)&&t.viewDescriptors&&this.props.animatedProps.viewDescriptors.add({tag:c,name:f,shadowNodeWrapper:v})}},{key:"componentDidUpdate",value:function(e,t,n){var o;this.props.layout!==e.layout&&this._configureLayoutTransition(),void 0===this.props.sharedTransitionTag&&void 0===e.sharedTransitionTag||this._configureSharedTransition(),null==(o=this._NativeEventsManager)||o.updateEvents(e),this._attachAnimatedStyles(),this._InlinePropManager.attachInlineProps(this,this._getViewInfo()),y&&this.props.exiting&&this._componentDOMRef&&(0,r(d[13]).saveSnapshot)(this._componentDOMRef),y&&null!==n&&this.props.layout&&!(0,r(d[13]).getReducedMotionFromConfig)(this.props.layout)&&(0,r(d[13]).tryActivateLayoutTransition)(this.props,this._componentDOMRef,n)}},{key:"_configureLayoutTransition",value:function(){if(!y){var e=this.props.layout;e&&(0,r(d[13]).getReducedMotionFromConfig)(e)||(0,r(d[18]).updateLayoutAnimations)(this.getComponentViewTag(),r(d[19]).LayoutAnimationType.LAYOUT,e&&(0,r(d[20]).maybeBuild)(e,void 0,u.displayName))}}},{key:"_configureSharedTransition",value:function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!y){var o,s=this.props.sharedTransitionTag;if(!s)return null==(o=this._sharedElementTransition)||o.unregisterTransition(this.getComponentViewTag(),n),void(this._sharedElementTransition=null);var l=null!=(e=null!=(t=this.props.sharedTransitionStyle)?t:this._sharedElementTransition)?e:new(r(d[29]).SharedTransition);l.registerTransition(this.getComponentViewTag(),s,n),this._sharedElementTransition=l}}},{key:"getSnapshotBeforeUpdate",value:function(){var e;return y&&void 0!==(null==(e=this._componentDOMRef)?void 0:e.getBoundingClientRect)?this._componentDOMRef.getBoundingClientRect():null}},{key:"render",value:function(){var t,n,o=this._PropsFilter.filterNonAnimatedProps(this);(_&&(o.jestAnimatedStyle=this.jestAnimatedStyle,o.jestAnimatedProps=this.jestAnimatedProps),this._isFirstRender&&y&&o.entering&&!(0,r(d[13]).getReducedMotionFromConfig)(o.entering))&&(o.style=Array.isArray(o.style)?o.style.concat([{visibility:'hidden'}]):Object.assign({},null!=(n=o.style)?n:{},{visibility:'hidden'}));var s=h.Platform.select({web:{},default:{collapsable:!1}}),l=(null==(t=this.context)?void 0:t.current)||!(0,r(d[12]).isFabric)()?void 0:`${this.reanimatedID}`,p=_?{jestInlineStyle:this.props.style,jestAnimatedStyle:this.jestAnimatedStyle,jestAnimatedProps:this.jestAnimatedProps}:{};return(0,r(d[30]).jsx)(e,Object.assign({nativeID:l},o,p,{ref:this._setComponentRef},s))}}])})(u.default.Component);P.contextType=r(d[31]).SkipEnteringContext,P.displayName=`AnimatedComponent(${e.displayName||e.name||'Component'})`;var N=(0,r(d[32]).componentWithRef)((function(e,t){return(0,r(d[30]).jsx)(P,Object.assign({},e,null===t?null:{forwardedRef:t}))}));return N.displayName=e.displayName||e.name||'Component',N};var t=e(r(d[1])),n=e(r(d[2])),o=e(r(d[3])),s=e(r(d[4])),l=e(r(d[5]));r(d[6]);var p=e(r(d[7])),u=e(r(d[8])),h=r(d[9]),c=e(r(d[10])),f=e(r(d[11]));function v(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(v=function(){return!!e})()}var y=(0,r(d[12]).isWeb)(),_=(0,r(d[12]).isJest)(),R=(0,r(d[12]).isReact19)(),w=(0,r(d[12]).shouldBeUseWeb)();function T(e){return e.filter((function(e){return null==e?void 0:e.viewDescriptors}))}y&&(0,r(d[13]).configureWebLayoutAnimations)();var A=0}),372,[1,12,13,23,25,28,246,20,178,2,373,374,249,375,400,404,312,308,360,247,406,407,376,295,256,408,276,402,370,245,223,367,409]); +__d((function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=n(r(d[1])),o=n(r(d[2])),p=r(d[3]),u=n(r(d[4])),s=(0,r(d[5]).shouldBeUseWeb)(),l=(function(){function n(){(0,t.default)(this,n),this._reanimatedEventEmitter=new p.NativeEventEmitter('ios'===p.Platform.OS||'macos'===p.Platform.OS?u.default:void 0)}return(0,o.default)(n,[{key:"addOnJSPropsChangeListener",value:function(t){var o=t.getComponentViewTag();if(n._tagToComponentMapping.set(o,t),1===n._tagToComponentMapping.size){this._reanimatedEventEmitter.addListener('onReanimatedPropsChange',(function(t){var o=n._tagToComponentMapping.get(t.viewTag);null==o||o._updateFromNative(t.props)}))}}},{key:"removeOnJSPropsChangeListener",value:function(t){var o=t.getComponentViewTag();n._tagToComponentMapping.delete(o),0===n._tagToComponentMapping.size&&this._reanimatedEventEmitter.removeAllListeners('onReanimatedPropsChange')}}])})();l._tagToComponentMapping=new Map;var f,v={code:"function reactNativeReanimated_JSPropsUpdaterTs1(){const{runOnJS,updater}=this.__closure;global.updateJSProps=function(viewTag,props){runOnJS(updater)(viewTag,props);};}"},_=(function(){function n(){if((0,t.default)(this,n),!n.isInitialized){var o=function(t,o){var p=n._tagToComponentMapping.get(t);null==p||p._updateFromNative(o)};(0,r(d[6]).runOnUIImmediately)(((p=function(){g.updateJSProps=function(n,t){(0,r(d[6]).runOnJS)(o)(n,t)}}).__closure={runOnJS:r(d[6]).runOnJS,updater:o},p.__workletHash=45534967868,p.__initData=v,p))(),n.isInitialized=!0}var p}return(0,o.default)(n,[{key:"addOnJSPropsChangeListener",value:function(t){if(n.isInitialized){var o=t.getComponentViewTag();n._tagToComponentMapping.set(o,t)}}},{key:"removeOnJSPropsChangeListener",value:function(t){if(n.isInitialized){var o=t.getComponentViewTag();n._tagToComponentMapping.delete(o)}}}])})();_._tagToComponentMapping=new Map,_.isInitialized=!1,f=s?(function(){return(0,o.default)((function n(){(0,t.default)(this,n)}),[{key:"addOnJSPropsChangeListener",value:function(n){}},{key:"removeOnJSPropsChangeListener",value:function(n){}}])})():g._IS_FABRIC?_:l;e.default=f}),373,[1,12,13,2,264,249,266]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default=function(t){var n=t.getForwardedRef,o=t.setLocalRef;return function(t){var u=n();o(t),'function'==typeof u?u(t):'object'==typeof u&&null!=u&&(u.current=t)}}}),374,[]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"configureWebLayoutAnimations",{enumerable:!0,get:function(){return r(d[0]).configureWebLayoutAnimations}}),Object.defineProperty(e,"getReducedMotionFromConfig",{enumerable:!0,get:function(){return r(d[1]).getReducedMotionFromConfig}}),Object.defineProperty(e,"saveSnapshot",{enumerable:!0,get:function(){return r(d[1]).saveSnapshot}}),Object.defineProperty(e,"startWebLayoutAnimation",{enumerable:!0,get:function(){return r(d[2]).startWebLayoutAnimation}}),Object.defineProperty(e,"tryActivateLayoutTransition",{enumerable:!0,get:function(){return r(d[2]).tryActivateLayoutTransition}})}),375,[376,391,399]); +__d((function(g,r,_i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.addHTMLMutationObserver=function(){if(l||!(0,r(d[0]).isWindowAvailable)())return;l=!0,new MutationObserver((function(t){var n=t[t.length-1];if(!c(n.target))for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:1e3;return Math.floor(Math.random()*(n+1))/1e3}function o(n){var o=n.randomizeDelay,s=o?t():0;return n.delayV?o?t(n.delayV):n.delayV/1e3:s}function s(n,t){var o=t in r(d[5]).Animations?r(d[5]).Animations[t].duration:.3;return void 0!==n.durationV?n.durationV/1e3:o}function l(n){return void 0!==n.callbackV?n.callbackV:null}function c(n){return!!n.reversed}function f(n){var t=n.getBoundingClientRect(),o={top:t.top,left:t.left,width:t.width,height:t.height,scrollOffsets:y(n)};r(d[7]).snapshots.set(n,o)}function u(n,t){var o=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,l=t.animationName,c=t.duration,u=t.delay,y=t.easing,p=function(){n.style.animationName=l,n.style.animationDuration=`${c}s`,n.style.animationDelay=`${u}s`,n.style.animationTimingFunction=y};t.animationType===r(d[4]).LayoutAnimationType.ENTERING?requestAnimationFrame(p):p(),n.onanimationend=function(){o&&f(n),null!=s&&s.contains(n)&&(n.removedAfterAnimation=!0,s.removeChild(n)),null==t.callback||t.callback(!0),n.removeEventListener('animationcancel',T)};var T=function(){null==t.callback||t.callback(!1),null!=s&&s.contains(n)&&(n.removedAfterAnimation=!0,s.removeChild(n)),n.removeEventListener('animationcancel',T)};n.onanimationstart=function(){t.animationType===r(d[4]).LayoutAnimationType.ENTERING&&(0,r(d[8])._updatePropsJS)({visibility:'initial'},n),n.addEventListener('animationcancel',T)},l in r(d[5]).Animations||(0,r(d[9]).scheduleAnimationCleanup)(l,c+u,(function(){o&&(0,r(d[7]).setElementPosition)(n,r(d[7]).snapshots.get(n))}))}function y(n){for(var t=n,o={scrollTopOffset:0,scrollLeftOffset:0};t;)0!==t.scrollTop&&0===o.scrollTopOffset&&(o.scrollTopOffset=t.scrollTop),0!==t.scrollLeft&&0===o.scrollLeftOffset&&(o.scrollLeftOffset=t.scrollLeft),t=t.parentElement;return o}Object.defineProperty(e,"__esModule",{value:!0}),e.getProcessedConfig=function(t,f,u){return{animationName:t,animationType:f,duration:s(u,t),delay:o(u),easing:n(u),callback:l(u),reversed:c(u)}},e.getReducedMotionFromConfig=function(n){if(!n.reduceMotionV)return r(d[3]).ReducedMotionManager.jsValue;switch(n.reduceMotionV){case r(d[4]).ReduceMotion.Never:return!1;case r(d[4]).ReduceMotion.Always:return!0;default:return r(d[3]).ReducedMotionManager.jsValue}},e.handleExitingAnimation=function(n,t){var o=n.offsetParent,s=n.cloneNode();s.reanimatedDummy=!0,n.style.animationName='',s.style.animationName='';for(;n.firstChild;)s.appendChild(n.firstChild);null==o||o.appendChild(s);var l=r(d[7]).snapshots.get(n),c=y(n),f=c.scrollTopOffset,p=l.scrollOffsets.scrollTopOffset;f!==p&&(l.top+=p-f);var T=c.scrollLeftOffset,v=l.scrollOffsets.scrollLeftOffset;T!==v&&(l.left+=v-T);r(d[7]).snapshots.set(s,l),(0,r(d[7]).setElementPosition)(s,l),u(s,t,!1,o)},e.handleLayoutTransition=function(n,t,o){var s;switch(t.animationName){case'LinearTransition':default:s=r(d[5]).TransitionType.LINEAR;break;case'SequencedTransition':s=r(d[5]).TransitionType.SEQUENCED;break;case'FadingTransition':s=r(d[5]).TransitionType.FADING;break;case'JumpingTransition':s=r(d[5]).TransitionType.JUMPING;break;case'CurvedTransition':s=r(d[5]).TransitionType.CURVED;break;case'EntryExitTransition':s=r(d[5]).TransitionType.ENTRY_EXIT}var l=(0,r(d[10]).TransitionGenerator)(s,o),c=l.transitionKeyframeName,f=l.dummyTransitionKeyframeName;if(t.animationName=c,s===r(d[5]).TransitionType.CURVED){var y=(0,r(d[11]).prepareCurvedTransition)(n,t,o,f);u(y.dummy,y.dummyAnimationConfig)}u(n,t)},e.maybeModifyStyleForKeyframe=function(n,t){if(!(t instanceof r(d[6]).Keyframe))return;for(var o of(n.style.animationFillMode='forwards',Object.values(t.definitions)))if('originX'in o||'originY'in o)return void(n.style.position='absolute')},e.saveSnapshot=f,e.setElementAnimation=u}),391,[380,321,250,309,247,377,323,390,269,376,392,397]); +__d((function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.TransitionGenerator=function(n,t){var o,s,f=v();switch(n){case r(d[6]).TransitionType.LINEAR:s=(0,r(d[7]).LinearTransition)(f,t);break;case r(d[6]).TransitionType.SEQUENCED:s=(0,r(d[8]).SequencedTransition)(f,t);break;case r(d[6]).TransitionType.FADING:s=(0,r(d[9]).FadingTransition)(f,t);break;case r(d[6]).TransitionType.JUMPING:s=(0,r(d[10]).JumpingTransition)(f,t);break;case r(d[6]).TransitionType.CURVED:o=v();var u=(0,r(d[11]).CurvedTransition)(f,o,t),c=u.firstKeyframeObj,T=u.secondKeyframeObj;s=c;var y=(0,r(d[4]).convertAnimationObjectToKeyframes)(T);(0,r(d[5]).insertWebAnimation)(o,y);break;case r(d[6]).TransitionType.ENTRY_EXIT:s=(0,r(d[12]).EntryExitTransition)(f,t)}var b=(0,r(d[4]).convertAnimationObjectToKeyframes)(s);return(0,r(d[5]).insertWebAnimation)(f,b),{transitionKeyframeName:f,dummyTransitionKeyframeName:o}},e.createAnimationWithInitialValues=function(n,c){var T=structuredClone(r(d[6]).AnimationsData[n].style),y=T[0],b=c.transform,l=(0,o.default)(c,f);if(b){var A=u(b);if(y.transform){var p=new Map;for(var j of y.transform)for(var O of Object.entries(j)){var E=(0,s.default)(O,2),K=E[0],N=E[1];p.set(K,N)}for(var k of A)for(var C of Object.entries(k)){var D=(0,s.default)(C,2),I=D[0],W=D[1];p.set(I,W)}y.transform=Array.from(p,(function(n){var o=(0,s.default)(n,2),f=o[0],u=o[1];return(0,t.default)({},f,u)}))}else y.transform=A}T[0]=Object.assign({},T[0],l);var _=v(),R={name:_,style:T,duration:r(d[6]).AnimationsData[n].duration},F=(0,r(d[4]).convertAnimationObjectToKeyframes)(R);return(0,r(d[5]).insertWebAnimation)(_,F),_},e.createCustomKeyFrameAnimation=function(n){for(var t of Object.values(n))t.transform&&(t.transform=u(t.transform));var o={name:'',style:n,duration:-1};o.name=v();var s=(0,r(d[4]).convertAnimationObjectToKeyframes)(o);return(0,r(d[5]).insertWebAnimation)(o.name,s),o.name};var t=n(r(d[1])),o=n(r(d[2])),s=n(r(d[3])),f=["transform"];function u(n){return n.map((function(n){var t={};for(var o of Object.entries(n)){var f=(0,s.default)(o,2),u=f[0],c=f[1];(u.includes('translate')||u.includes('perspective'))&&'number'==typeof c?t[u]=`${c}px`:t[u]=c}return t}))}var c=0;function v(){return"REA"+c++}}),392,[1,198,134,38,379,376,377,393,394,395,396,397,398]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.LinearTransition=function(t,n){var s=n.translateX,l=n.translateY,c=n.scaleX,o=n.scaleY;return{name:t,style:{0:{transform:[{translateX:`${s}px`,translateY:`${l}px`,scale:`${c},${o}`}]}},duration:300}}}),393,[]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.SequencedTransition=function(t,n){var s=n.translateX,l=n.translateY,c=n.scaleX,o=n.scaleY,p=n.reversed;return{name:t,style:{0:{transform:[{translateX:`${s}px`,translateY:`${l}px`,scale:`${c},${o}`}]},50:{transform:[{translateX:p?`${s}px`:'0px',translateY:p?'0px':`${l}px`,scale:p?`1,${c}`:`${o},1`}]},100:{transform:[{translateX:'0px',translateY:'0px',scale:'1,1'}]}},duration:300}}}),394,[]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.FadingTransition=function(t,n){var s=n.translateX,l=n.translateY,c=n.scaleX,o=n.scaleY;return{name:t,style:{0:{opacity:1,transform:[{translateX:`${s}px`,translateY:`${l}px`,scale:`${c},${o}`}]},20:{opacity:0,transform:[{translateX:`${s}px`,translateY:`${l}px`,scale:`${c},${o}`}]},60:{opacity:0,transform:[{translateX:'0px',translateY:'0px',scale:"1,1"}]},100:{opacity:1,transform:[{translateX:'0px',translateY:'0px',scale:"1,1"}]}},duration:300}}}),395,[]); +__d((function(g,r,i,a,m,e,_d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.JumpingTransition=function(t,s){var n=s.translateX,l=s.translateY,c=s.scaleX,o=s.scaleY,p=Math.max(Math.abs(n),Math.abs(l))/2,u=l<=0?l-p:-l+p;return{name:t,style:{0:{transform:[{translateX:`${n}px`,translateY:`${l}px`,scale:`${c},${o}`}],easing:r(_d[0]).Easing.exp},50:{transform:[{translateX:n/2+"px",translateY:`${u}px`,scale:`${c},${o}`}]},100:{transform:[{translateX:'0px',translateY:'0px',scale:'1,1'}]}},duration:300}}}),396,[321]); +__d((function(g,r,_i,a,m,e,d){'use strict';function n(n,t,i){for(var o=0;o0?u.workletEventHandler.eventNames.forEach((function(t){o[t]=(0,r(d[3]).has)('listeners',u.workletEventHandler)?u.workletEventHandler.listeners[t]:s})):o[v]=s:(0,r(d[7]).isSharedValue)(u)?t._isFirstRender&&(o[v]=u.value):'onGestureHandlerStateChange'===v&&(0,r(d[8]).isChromeDebugger)()||(o[v]=u)};for(var v in l)u();return o}}])})()}),404,[1,12,13,402,325,400,405,316,249]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.WorkletEventHandler=void 0;var n=t(r(d[1])),s=t(r(d[2])),u=t(r(d[3])),l=t(r(d[4])),o=(0,r(d[5]).shouldBeUseWeb)();function v(t,n){return function(s){n(Object.assign({},s.nativeEvent,{eventName:t}))}}var f=(0,l.default)("viewTags"),h=(0,l.default)("registrations"),c=(function(){return(0,s.default)((function t(s,l){(0,n.default)(this,t),Object.defineProperty(this,f,{writable:!0,value:void 0}),Object.defineProperty(this,h,{writable:!0,value:void 0}),this.worklet=s,this.eventNames=l,(0,u.default)(this,f)[f]=new Set,(0,u.default)(this,h)[h]=new Map}),[{key:"updateEventHandler",value:function(t,n){var s=this;this.worklet=t,this.eventNames=n,(0,u.default)(this,h)[h].forEach((function(t){t.forEach((function(t){return(0,r(d[6]).unregisterEventHandler)(t)}))})),Array.from((0,u.default)(this,f)[f]).forEach((function(t){var n=s.eventNames.map((function(n){return(0,r(d[6]).registerEventHandler)(s.worklet,n,t)}));(0,u.default)(s,h)[h].set(t,n)}))}},{key:"registerForEvents",value:function(t,n){var s=this;(0,u.default)(this,f)[f].add(t);var l=this.eventNames.map((function(n){return(0,r(d[6]).registerEventHandler)(s.worklet,n,t)}));if((0,u.default)(this,h)[h].set(t,l),0===this.eventNames.length&&n){var o=(0,r(d[6]).registerEventHandler)(this.worklet,n,t);(0,u.default)(this,h)[h].set(t,[o])}}},{key:"unregisterFromEvents",value:function(t){var n;(0,u.default)(this,f)[f].delete(t),null==(n=(0,u.default)(this,h)[h].get(t))||n.forEach((function(t){(0,r(d[6]).unregisterEventHandler)(t)})),(0,u.default)(this,h)[h].delete(t)}}])})(),E=(function(){return(0,s.default)((function t(s){var u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];(0,n.default)(this,t),this.worklet=s,this.eventNames=u,this.listeners={},this.setupWebListeners()}),[{key:"setupWebListeners",value:function(){var t=this;this.listeners={},this.eventNames.forEach((function(n){t.listeners[n]=v(n,t.worklet)}))}},{key:"updateEventHandler",value:function(t,n){this.worklet=t,this.eventNames=n,this.setupWebListeners()}},{key:"registerForEvents",value:function(t,n){}},{key:"unregisterFromEvents",value:function(t){}}])})();e.WorkletEventHandler=o?E:c}),405,[1,12,13,31,32,249,312]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.maybeBuild=function(u,n,t){return'build'in u&&'function'==typeof u.build?u.build():u}}),406,[]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.NativeEventsManager=void 0;var n=t(r(d[1])),l=t(r(d[2])),u=t(r(d[3])),o=t(r(d[4])),s=(0,o.default)("managedComponent"),v=(0,o.default)("componentOptions"),f=(0,o.default)("eventViewTag");e.NativeEventsManager=(function(){return(0,l.default)((function t(l,o){(0,n.default)(this,t),Object.defineProperty(this,s,{writable:!0,value:void 0}),Object.defineProperty(this,v,{writable:!0,value:void 0}),Object.defineProperty(this,f,{writable:!0,value:-1}),(0,u.default)(this,s)[s]=l,(0,u.default)(this,v)[v]=o,(0,u.default)(this,f)[f]=this.getEventViewTag()}),[{key:"attachEvents",value:function(){var t=this;h((0,u.default)(this,s)[s].props,(function(n,l){l.registerForEvents((0,u.default)(t,f)[f],n)}))}},{key:"detachEvents",value:function(){var t=this;h((0,u.default)(this,s)[s].props,(function(n,l){l.unregisterFromEvents((0,u.default)(t,f)[f])}))}},{key:"updateEvents",value:function(t){var n=this,l=this.getEventViewTag(!0);if((0,u.default)(this,f)[f]!==l)return h(t,(function(t,l){l.unregisterFromEvents((0,u.default)(n,f)[f])})),(0,u.default)(this,f)[f]=l,void this.attachEvents();h(t,(function(t,l){var o=(0,u.default)(n,s)[s].props[t];o?c(o)&&o.workletEventHandler!==l&&(l.unregisterFromEvents((0,u.default)(n,f)[f]),o.workletEventHandler.registerForEvents((0,u.default)(n,f)[f])):l.unregisterFromEvents((0,u.default)(n,f)[f])})),h((0,u.default)(this,s)[s].props,(function(l,o){t[l]||o.registerForEvents((0,u.default)(n,f)[f])}))}},{key:"getEventViewTag",value:function(){var t,n,l,o,f,c=arguments.length>0&&void 0!==arguments[0]&&arguments[0],h=(0,u.default)(this,s)[s]._componentRef;if(h.getScrollableNode){var E,p=h.getScrollableNode();return'number'==typeof p?p:null!=(E=(0,r(d[5]).findNodeHandle)(p))?E:-1}return null!=(t=(0,u.default)(this,v)[v])&&t.setNativeProps?null!=(l=(0,r(d[5]).findNodeHandle)((0,u.default)(this,s)[s]))?l:-1:c?h.__nativeTag||h._nativeTag?null!=(o=null!=(f=h.__nativeTag)?f:h._nativeTag)?o:-1:null!=(n=(0,r(d[5]).findNodeHandle)(h))?n:-1:(0,u.default)(this,s)[s].getComponentViewTag()}}])})();function c(t){return(0,r(d[6]).has)('workletEventHandler',t)&&t.workletEventHandler instanceof r(d[7]).WorkletEventHandler}function h(t,n){for(var l in t){var u=t[l];c(u)&&n(l,u.workletEventHandler)}}}),407,[1,12,13,31,32,368,402,405]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.getViewInfo=void 0;e.getViewInfo=function(o){return void 0!==o._nativeTag&&null!==o.__nativeTag?(e.getViewInfo=n,n(o)):void 0!==o.__nativeTag&&null!==o.__nativeTag?(e.getViewInfo=v,v(o)):n(o)};function n(n){var v;return{viewName:null==n||null==(v=n.viewConfig)?void 0:v.uiViewClassName,viewTag:null==n?void 0:n._nativeTag,viewConfig:null==n?void 0:n.viewConfig}}function v(n){var v;return{viewName:null==n||null==(v=n._viewConfig)?void 0:v.uiViewClassName,viewTag:null==n?void 0:n.__nativeTag,viewConfig:null==n?void 0:n._viewConfig}}}),408,[]); +__d((function(g,_r,_i,_a,m,_e,d){'use strict';var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.componentWithRef=function(e){if(_)return function(t){var u=t.ref,_=(0,r.default)(t,n);return e(_,u)};return(0,t.forwardRef)(e)},_e.isFirstReactRender=function(){var e=a();return e&&!(null!=e&&e.alternate)},_e.isReactRendering=function(){return!!a()};var r=e(_r(d[1])),t=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=u(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},_=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=_?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(n,a,f):n[a]=e[a]}return n.default=e,t&&t.set(e,n),n})(_r(d[2])),n=["ref"];function u(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(u=function(e){return e?t:r})(e)}var _=(0,_r(d[3]).isReact19)();function a(){var e,r,n;return(null==(e=t.default.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE)||null==(e=e.A)?void 0:e.getOwner())||(null==(r=t.default.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED)||null==(r=r.ReactCurrentOwner)?void 0:r.current)||(null==(n=t.default.__SERVER_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE)||null==(n=n.ReactCurrentOwner)?void 0:n.current)}}),409,[1,134,178,249]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"useAnimatedGestureHandler",{enumerable:!0,get:function(){return r(d[0]).useAnimatedGestureHandler}}),Object.defineProperty(e,"useAnimatedKeyboard",{enumerable:!0,get:function(){return r(d[1]).useAnimatedKeyboard}}),Object.defineProperty(e,"useAnimatedProps",{enumerable:!0,get:function(){return r(d[2]).useAnimatedProps}}),Object.defineProperty(e,"useAnimatedReaction",{enumerable:!0,get:function(){return r(d[3]).useAnimatedReaction}}),Object.defineProperty(e,"useAnimatedRef",{enumerable:!0,get:function(){return r(d[4]).useAnimatedRef}}),Object.defineProperty(e,"useAnimatedScrollHandler",{enumerable:!0,get:function(){return r(d[5]).useAnimatedScrollHandler}}),Object.defineProperty(e,"useAnimatedSensor",{enumerable:!0,get:function(){return r(d[6]).useAnimatedSensor}}),Object.defineProperty(e,"useAnimatedStyle",{enumerable:!0,get:function(){return r(d[7]).useAnimatedStyle}}),Object.defineProperty(e,"useComposedEventHandler",{enumerable:!0,get:function(){return r(d[8]).useComposedEventHandler}}),Object.defineProperty(e,"useDerivedValue",{enumerable:!0,get:function(){return r(d[9]).useDerivedValue}}),Object.defineProperty(e,"useEvent",{enumerable:!0,get:function(){return r(d[10]).useEvent}}),Object.defineProperty(e,"useFrameCallback",{enumerable:!0,get:function(){return r(d[11]).useFrameCallback}}),Object.defineProperty(e,"useHandler",{enumerable:!0,get:function(){return r(d[12]).useHandler}}),Object.defineProperty(e,"useReducedMotion",{enumerable:!0,get:function(){return r(d[13]).useReducedMotion}}),Object.defineProperty(e,"useScrollViewOffset",{enumerable:!0,get:function(){return r(d[14]).useScrollViewOffset}}),Object.defineProperty(e,"useSharedValue",{enumerable:!0,get:function(){return r(d[15]).useSharedValue}}),Object.defineProperty(e,"useWorkletCallback",{enumerable:!0,get:function(){return r(d[16]).useWorkletCallback}})}),410,[411,415,416,419,420,421,422,417,423,424,414,425,412,428,429,366,430]); +__d((function(g,r,i,a,m,_e,d){'use strict';Object.defineProperty(_e,"__esModule",{value:!0}),_e.useAnimatedGestureHandler=function(n,E){var s=(0,r(d[0]).useHandler)(n,E),o=s.context,T=s.doDependenciesDiffer,l=s.useWeb,v=(A=function(t){var E=l?t.nativeEvent:t;E.state===e.BEGAN&&n.onStart&&n.onStart(E,o),E.state===e.ACTIVE&&n.onActive&&n.onActive(E,o),E.oldState===e.ACTIVE&&E.state===e.END&&n.onEnd&&n.onEnd(E,o),E.oldState===e.BEGAN&&E.state===e.FAILED&&n.onFail&&n.onFail(E,o),E.oldState===e.ACTIVE&&E.state===e.CANCELLED&&n.onCancel&&n.onCancel(E,o),E.oldState!==e.BEGAN&&E.oldState!==e.ACTIVE||E.state===e.BEGAN||E.state===e.ACTIVE||!n.onFinish||n.onFinish(E,o,E.state===e.CANCELLED||E.state===e.FAILED)},A.__closure={useWeb:l,EVENT_TYPE:e,handlers:n,context:o},A.__workletHash=5391498155146,A.__initData=t,A);var A;if(l)return v;return(0,r(d[1]).useEvent)(v,['onGestureHandlerStateChange','onGestureHandlerEvent'],T)};var e={UNDETERMINED:0,FAILED:1,BEGAN:2,CANCELLED:3,ACTIVE:4,END:5},t={code:"function reactNativeReanimated_useAnimatedGestureHandlerTs1(e){const{useWeb,EVENT_TYPE,handlers,context}=this.__closure;const event=useWeb?e.nativeEvent:e;if(event.state===EVENT_TYPE.BEGAN&&handlers.onStart){handlers.onStart(event,context);}if(event.state===EVENT_TYPE.ACTIVE&&handlers.onActive){handlers.onActive(event,context);}if(event.oldState===EVENT_TYPE.ACTIVE&&event.state===EVENT_TYPE.END&&handlers.onEnd){handlers.onEnd(event,context);}if(event.oldState===EVENT_TYPE.BEGAN&&event.state===EVENT_TYPE.FAILED&&handlers.onFail){handlers.onFail(event,context);}if(event.oldState===EVENT_TYPE.ACTIVE&&event.state===EVENT_TYPE.CANCELLED&&handlers.onCancel){handlers.onCancel(event,context);}if((event.oldState===EVENT_TYPE.BEGAN||event.oldState===EVENT_TYPE.ACTIVE)&&event.state!==EVENT_TYPE.BEGAN&&event.state!==EVENT_TYPE.ACTIVE&&handlers.onFinish){handlers.onFinish(event,context,event.state===EVENT_TYPE.CANCELLED||event.state===EVENT_TYPE.FAILED);}}"}}),411,[412,414]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.useHandler=function(t,u){var c=(0,n.useRef)(null);if(null===c.current){var s=(0,r(d[1]).makeShareable)({});c.current={context:s,savedDependencies:[]}}(0,n.useEffect)((function(){return function(){c.current=null}}),[]);var l=c.current,f=l.context,o=l.savedDependencies;u=(0,r(d[2]).buildDependencies)(u,t);var v=!(0,r(d[2]).areDependenciesEqual)(u,o);c.current.savedDependencies=u;var p=(0,r(d[3]).isWeb)()||(0,r(d[3]).isJest)();return{context:f,doDependenciesDiffer:v,useWeb:p}};var n=r(d[0])}),412,[178,254,413,249]); +__d((function(g,r,_i,_a,m,e,d){'use strict';function t(t){return Object.values(t).reduce((function(t,n){return t+n.__workletHash.toString()}),'')}Object.defineProperty(e,"__esModule",{value:!0}),e.areDependenciesEqual=function(t,n){var a='function'==typeof Object.is?Object.is:function(t,n){return t===n&&(0!==t||1/t==1/n)||Number.isNaN(t)&&Number.isNaN(n)};return(function(t,n){if(!t||!n||n.length!==t.length)return!1;for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:[],u=arguments.length>2&&void 0!==arguments[2]&&arguments[2],v=(0,n.useRef)(null);if(null===v.current){var o=new(r(d[1]).WorkletEventHandler)(t,l);v.current={workletEventHandler:o}}else if(u){var c=v.current.workletEventHandler;c.updateEventHandler(t,l),v.current={workletEventHandler:c}}return v.current};var n=r(d[0])}),414,[178,405]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.useAnimatedKeyboard=function(){var s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{isStatusBarTranslucentAndroid:void 0,isNavigationBarTranslucentAndroid:void 0},o=(0,t.useRef)(null),c=(0,t.useRef)(-1),v=(0,t.useRef)(!1);if(null===o.current){var l={state:(0,r(d[1]).makeMutable)(r(d[2]).KeyboardState.UNKNOWN),height:(0,r(d[1]).makeMutable)(0)};c.current=(0,r(d[1]).subscribeForKeyboardEvents)(((_=function(t,n){l.state.value=t,l.height.value=n}).__closure={keyboardEventData:l},_.__workletHash=815568593051,_.__initData=n,_),s),o.current=l,v.current=!0}var _;return(0,t.useEffect)((function(){if(!1===v.current&&null!==o.current){var t=o.current;c.current=(0,r(d[1]).subscribeForKeyboardEvents)(((n=function(n,u){t.state.value=n,t.height.value=u}).__closure={_keyboardEventData:t},n.__workletHash=0xb4853678e07,n.__initData=u,n),s),v.current=!0}var n;return function(){(0,r(d[1]).unsubscribeFromKeyboardEvents)(c.current),v.current=!1}}),[]),o.current};var t=r(d[0]),n={code:"function reactNativeReanimated_useAnimatedKeyboardTs1(state,height){const{keyboardEventData}=this.__closure;keyboardEventData.state.value=state;keyboardEventData.height.value=height;}"},u={code:"function reactNativeReanimated_useAnimatedKeyboardTs2(state,height){const{_keyboardEventData}=this.__closure;_keyboardEventData.state.value=state;_keyboardEventData.height.value=height;}"}}),415,[178,312,247]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.useAnimatedProps=void 0;e.useAnimatedProps=(0,r(d[1]).shouldBeUseWeb)()?function(t,s,u){return(0,r(d[0]).useAnimatedStyle)(t,s,u,!0)}:r(d[2]).useAnimatedStyle}),416,[417,249,417]); +__d((function(g,_r,_i,_a,m,_e,d){'use strict';var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.useAnimatedStyle=function(e,i,n){var s,r,l=arguments.length>3&&void 0!==arguments[3]&&arguments[3],u=(0,t.useRef)(null),c=Object.values(null!=(s=e.__closure)?s:{});o&&!c.length&&null!=(r=i)&&r.length&&(c=i);var p=n?Array.isArray(n)?n:[n]:[],f=n?(0,_r(d[6]).buildWorkletsHash)(p):null,v=(0,_r(d[8]).useSharedValue)(!0),V=(0,t.useRef)({});i?i.push(e.__workletHash):i=[].concat((0,a.default)(c),[e.__workletHash]);if(f&&i.push(f),!u.current){var b=(0,_r(d[9]).initialUpdaterRun)(e);u.current={initial:{value:b,updater:e},remoteState:(0,_r(d[10]).makeShareable)({last:b,animations:{},isAnimationCancelled:!1,isAnimationRunning:!1}),viewDescriptors:(0,_r(d[11]).makeViewDescriptorsSet)()}}var S=u.current,j=S.initial,R=S.remoteState,N=S.viewDescriptors,T=N.shareableViewDescriptors;i.push(T),(0,t.useEffect)((function(){var a,t,i,s,r=e;n&&((t=function(){var a=e();return p.forEach((function(e){e(a)})),a}).__closure={updater:e,adaptersArray:p},t.__workletHash=9173457873940,t.__initData=h,r=t),(0,_r(d[4]).isJest)()?((s=function(){_(T,e,R,v,V,p)}).__closure={jestStyleUpdater:_,shareableViewDescriptors:T,updater:e,remoteState:R,areAnimationsActive:v,jestAnimatedValues:V,adaptersArray:p},s.__workletHash=5314192339077,s.__initData=w,a=s):((i=function(){A(T,r,R,v,l)}).__closure={styleUpdater:A,shareableViewDescriptors:T,updaterFn:r,remoteState:R,areAnimationsActive:v,isAnimatedProps:l},i.__workletHash=245709520516,i.__initData=k,a=i);var o=(0,_r(d[10]).startMapper)(a,c);return function(){(0,_r(d[10]).stopMapper)(o)}}),i),(0,t.useEffect)((function(){return v.value=!0,function(){v.value=!1}}),[v]),y(j.value);var P=(0,t.useRef)(null);P.current||(P.current=(0,_r(d[4]).isJest)()?{viewDescriptors:N,initial:j,jestAnimatedValues:V}:{viewDescriptors:N,initial:j});return P.current};var a=e(_r(d[1])),t=_r(d[2]),i=(function(e,a){if(!a&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=n(a);if(t&&t.has(e))return t.get(e);var i={__proto__:null},s=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in e)if("default"!==r&&{}.hasOwnProperty.call(e,r)){var o=s?Object.getOwnPropertyDescriptor(e,r):null;o&&(o.get||o.set)?Object.defineProperty(i,r,o):i[r]=e[r]}return i.default=e,t&&t.set(e,i),i})(_r(d[3]));function n(e){if("function"!=typeof WeakMap)return null;var a=new WeakMap,t=new WeakMap;return(n=function(e){return e?t:a})(e)}var s,r,o=(0,_r(d[4]).shouldBeUseWeb)(),l={code:"function prepareAnimation_reactNativeReanimated_useAnimatedStyleTs1(frameTimestamp,animatedProp,lastAnimation,lastValue){const prepareAnimation_reactNativeReanimated_useAnimatedStyleTs1=this._recur;if(Array.isArray(animatedProp)){animatedProp.forEach(function(prop,index){prepareAnimation_reactNativeReanimated_useAnimatedStyleTs1(frameTimestamp,prop,lastAnimation&&lastAnimation[index],lastValue&&lastValue[index]);});}if(typeof animatedProp==='object'&&animatedProp.onFrame){const animation=animatedProp;let value=animation.current;if(lastValue!==undefined&&lastValue!==null){if(typeof lastValue==='object'){if(lastValue.value!==undefined){value=lastValue.value;}else if(lastValue.onFrame!==undefined){if((lastAnimation===null||lastAnimation===void 0?void 0:lastAnimation.current)!==undefined){value=lastAnimation.current;}else if((lastValue===null||lastValue===void 0?void 0:lastValue.current)!==undefined){value=lastValue.current;}}}else{value=lastValue;}}animation.callStart=function(timestamp){animation.onStart(animation,value,timestamp,lastAnimation);};animation.callStart(frameTimestamp);animation.callStart=null;}else if(typeof animatedProp==='object'){Object.keys(animatedProp).forEach(function(key){return prepareAnimation_reactNativeReanimated_useAnimatedStyleTs1(frameTimestamp,animatedProp[key],lastAnimation&&lastAnimation[key],lastValue&&lastValue[key]);});}}"},u=((s=function(e,a,t,i){if(Array.isArray(a)&&a.forEach((function(a,n){s(e,a,t&&t[n],i&&i[n])})),'object'==typeof a&&a.onFrame){var n=a,r=n.current;null!=i&&('object'==typeof i?void 0!==i.value?r=i.value:void 0!==i.onFrame&&(void 0!==(null==t?void 0:t.current)?r=t.current:void 0!==(null==i?void 0:i.current)&&(r=i.current)):r=i),n.callStart=function(e){n.onStart(n,r,e,t)},n.callStart(e),n.callStart=null}else'object'==typeof a&&Object.keys(a).forEach((function(n){return s(e,a[n],t&&t[n],i&&i[n])}))}).__closure={},s.__workletHash=6358524786384,s.__initData=l,s),c={code:"function runAnimations_reactNativeReanimated_useAnimatedStyleTs2(animation,timestamp,key,result,animationsActive,forceCopyAnimation){const runAnimations_reactNativeReanimated_useAnimatedStyleTs2=this._recur;if(!animationsActive.value){return true;}if(Array.isArray(animation)){result[key]=[];let allFinished=true;forceCopyAnimation=key==='boxShadow';animation.forEach(function(entry,index){if(!runAnimations_reactNativeReanimated_useAnimatedStyleTs2(entry,timestamp,index,result[key],animationsActive,forceCopyAnimation)){allFinished=false;}});return allFinished;}else if(typeof animation==='object'&&animation.onFrame){let finished=true;if(!animation.finished){if(animation.callStart){animation.callStart(timestamp);animation.callStart=null;}finished=animation.onFrame(animation,timestamp);animation.timestamp=timestamp;if(finished){animation.finished=true;animation.callback&&animation.callback(true);}}if(forceCopyAnimation){result[key]={...animation.current};}else{result[key]=animation.current;}return finished;}else if(typeof animation==='object'){result[key]={};let allFinished=true;Object.keys(animation).forEach(function(k){if(!runAnimations_reactNativeReanimated_useAnimatedStyleTs2(animation[k],timestamp,k,result[key],animationsActive,forceCopyAnimation)){allFinished=false;}});return allFinished;}else{result[key]=animation;return true;}}"},p=((r=function(e,a,t,i,n,s){if(!n.value)return!0;if(Array.isArray(e)){i[t]=[];var o=!0;return s='boxShadow'===t,e.forEach((function(e,l){r(e,a,l,i[t],n,s)||(o=!1)})),o}if('object'==typeof e&&e.onFrame){var l=!0;return e.finished||(e.callStart&&(e.callStart(a),e.callStart=null),l=e.onFrame(e,a),e.timestamp=a,l&&(e.finished=!0,e.callback&&e.callback(!0))),i[t]=s?Object.assign({},e.current):e.current,l}if('object'==typeof e){i[t]={};var u=!0;return Object.keys(e).forEach((function(o){r(e[o],a,o,i[t],n,s)||(u=!1)})),u}return i[t]=e,!0}).__closure={},r.__workletHash=0xaa9de99c8cf,r.__initData=c,r),f={code:"function styleUpdater_reactNativeReanimated_useAnimatedStyleTs3(viewDescriptors,updater,state,animationsActive,isAnimatedProps=false){const{processBoxShadow,isAnimated,prepareAnimation,runAnimations,updateProps,shallowEqual}=this.__closure;var _state$animations,_updater;const animations=(_state$animations=state.animations)!==null&&_state$animations!==void 0?_state$animations:{};const newValues=(_updater=updater())!==null&&_updater!==void 0?_updater:{};const oldValues=state.last;const nonAnimatedNewValues={};let hasAnimations=false;let frameTimestamp;let hasNonAnimatedValues=false;if(typeof newValues.boxShadow==='string'){processBoxShadow(newValues);}for(const key in newValues){const value=newValues[key];if(isAnimated(value)){frameTimestamp=global.__frameTimestamp||global._getAnimationTimestamp();prepareAnimation(frameTimestamp,value,animations[key],oldValues[key]);animations[key]=value;hasAnimations=true;}else{hasNonAnimatedValues=true;nonAnimatedNewValues[key]=value;delete animations[key];}}if(hasAnimations){const frame=function(timestamp){const{animations:animations,last:last,isAnimationCancelled:isAnimationCancelled}=state;if(isAnimationCancelled){state.isAnimationRunning=false;return;}const updates={};let allFinished=true;for(const propName in animations){const finished=runAnimations(animations[propName],timestamp,propName,updates,animationsActive);if(finished){if(Array.isArray(updates[propName])){updates[propName].forEach(function(obj){for(const prop in obj){last[propName][prop]=obj[prop];}});}else{last[propName]=updates[propName];}delete animations[propName];}else{allFinished=false;}}if(updates){updateProps(viewDescriptors,updates);}if(!allFinished){requestAnimationFrame(frame);}else{state.isAnimationRunning=false;}};state.animations=animations;if(!state.isAnimationRunning){state.isAnimationCancelled=false;state.isAnimationRunning=true;frame(frameTimestamp);}if(hasNonAnimatedValues){updateProps(viewDescriptors,nonAnimatedNewValues);}}else{state.isAnimationCancelled=true;state.animations=[];if(!shallowEqual(oldValues,newValues)){updateProps(viewDescriptors,newValues,isAnimatedProps);}}state.last=newValues;}"},A=(function(){var e=function(e,a,t,n){var s,r,o,l=arguments.length>4&&void 0!==arguments[4]&&arguments[4],c=null!=(s=t.animations)?s:{},f=null!=(r=a())?r:{},A=t.last,v={},_=!1,y=!1;for(var h in'string'==typeof f.boxShadow&&(0,_r(d[5]).processBoxShadow)(f),f){var w=f[h];(0,_r(d[6]).isAnimated)(w)?(o=g.__frameTimestamp||g._getAnimationTimestamp(),u(o,w,c[h],A[h]),c[h]=w,_=!0):(y=!0,v[h]=w,delete c[h])}if(_){var k=function(a){var s=t.animations,r=t.last;if(t.isAnimationCancelled)t.isAnimationRunning=!1;else{var o={},l=!0,u=function(e){p(s[e],a,e,o,n)?(Array.isArray(o[e])?o[e].forEach((function(a){for(var t in a)r[e][t]=a[t]})):r[e]=o[e],delete s[e]):l=!1};for(var c in s)u(c);(0,i.default)(e,o),l?t.isAnimationRunning=!1:requestAnimationFrame(k)}};t.animations=c,t.isAnimationRunning||(t.isAnimationCancelled=!1,t.isAnimationRunning=!0,k(o)),y&&(0,i.default)(e,v)}else t.isAnimationCancelled=!0,t.animations=[],(0,_r(d[6]).shallowEqual)(A,f)||(0,i.default)(e,f,l);t.last=f};return e.__closure={processBoxShadow:_r(d[5]).processBoxShadow,isAnimated:_r(d[6]).isAnimated,prepareAnimation:u,runAnimations:p,updateProps:i.default,shallowEqual:_r(d[6]).shallowEqual},e.__workletHash=436537694583,e.__initData=f,e})(),v={code:"function jestStyleUpdater_reactNativeReanimated_useAnimatedStyleTs4(viewDescriptors,updater,state,animationsActive,animatedValues,adapters){const{isAnimated,prepareAnimation,runAnimations,updatePropsJestWrapper,shallowEqual}=this.__closure;var _state$animations,_updater;const animations=(_state$animations=state.animations)!==null&&_state$animations!==void 0?_state$animations:{};const newValues=(_updater=updater())!==null&&_updater!==void 0?_updater:{};const oldValues=state.last;let hasAnimations=false;let frameTimestamp;Object.keys(animations).forEach(function(key){const value=newValues[key];if(!isAnimated(value)){delete animations[key];}});Object.keys(newValues).forEach(function(key){const value=newValues[key];if(isAnimated(value)){frameTimestamp=global.__frameTimestamp||global._getAnimationTimestamp();prepareAnimation(frameTimestamp,value,animations[key],oldValues[key]);animations[key]=value;hasAnimations=true;}});function frame(timestamp){const{animations:animations,last:last,isAnimationCancelled:isAnimationCancelled}=state;if(isAnimationCancelled){state.isAnimationRunning=false;return;}const updates={};let allFinished=true;Object.keys(animations).forEach(function(propName){const finished=runAnimations(animations[propName],timestamp,propName,updates,animationsActive);if(finished){last[propName]=updates[propName];delete animations[propName];}else{allFinished=false;}});if(Object.keys(updates).length){updatePropsJestWrapper(viewDescriptors,updates,animatedValues,adapters);}if(!allFinished){requestAnimationFrame(frame);}else{state.isAnimationRunning=false;}}if(hasAnimations){state.animations=animations;if(!state.isAnimationRunning){state.isAnimationCancelled=false;state.isAnimationRunning=true;frame(frameTimestamp);}}else{state.isAnimationCancelled=true;state.animations=[];}state.last=newValues;if(!shallowEqual(oldValues,newValues)){updatePropsJestWrapper(viewDescriptors,newValues,animatedValues,adapters);}}"},_=(function(){var e=function(e,a,t,n,s,r){var o,l,c,f=null!=(o=t.animations)?o:{},A=null!=(l=a())?l:{},v=t.last,_=!1;Object.keys(f).forEach((function(e){var a=A[e];(0,_r(d[6]).isAnimated)(a)||delete f[e]})),Object.keys(A).forEach((function(e){var a=A[e];(0,_r(d[6]).isAnimated)(a)&&(c=g.__frameTimestamp||g._getAnimationTimestamp(),u(c,a,f[e],v[e]),f[e]=a,_=!0)})),_?(t.animations=f,t.isAnimationRunning||(t.isAnimationCancelled=!1,t.isAnimationRunning=!0,(function a(o){var l=t.animations,u=t.last;if(t.isAnimationCancelled)t.isAnimationRunning=!1;else{var c={},f=!0;Object.keys(l).forEach((function(e){p(l[e],o,e,c,n)?(u[e]=c[e],delete l[e]):f=!1})),Object.keys(c).length&&(0,i.updatePropsJestWrapper)(e,c,s,r),f?t.isAnimationRunning=!1:requestAnimationFrame(a)}})(c))):(t.isAnimationCancelled=!0,t.animations=[]),t.last=A,(0,_r(d[6]).shallowEqual)(v,A)||(0,i.updatePropsJestWrapper)(e,A,s,r)};return e.__closure={isAnimated:_r(d[6]).isAnimated,prepareAnimation:u,runAnimations:p,updatePropsJestWrapper:i.updatePropsJestWrapper,shallowEqual:_r(d[6]).shallowEqual},e.__workletHash=4651568536366,e.__initData=v,e})();function y(e,a){if(Array.isArray(e))for(var t of e)y(t,a);else if('object'==typeof e&&null!==e&&void 0===e.value)for(var i of Object.keys(e))y(e[i],i);else if(void 0!==a&&'object'==typeof e&&null!==e&&void 0!==e.value)throw new(_r(d[7]).ReanimatedError)(`Invalid value passed to \`${a}\`, maybe you forgot to use \`.value\`?`)}var h={code:"function reactNativeReanimated_useAnimatedStyleTs5(){const{updater,adaptersArray}=this.__closure;const newValues=updater();adaptersArray.forEach(function(adapter){adapter(newValues);});return newValues;}"},w={code:"function reactNativeReanimated_useAnimatedStyleTs6(){const{jestStyleUpdater,shareableViewDescriptors,updater,remoteState,areAnimationsActive,jestAnimatedValues,adaptersArray}=this.__closure;jestStyleUpdater(shareableViewDescriptors,updater,remoteState,areAnimationsActive,jestAnimatedValues,adaptersArray);}"},k={code:"function reactNativeReanimated_useAnimatedStyleTs7(){const{styleUpdater,shareableViewDescriptors,updaterFn,remoteState,areAnimationsActive,isAnimatedProps}=this.__closure;styleUpdater(shareableViewDescriptors,updaterFn,remoteState,areAnimationsActive,isAnimatedProps);}"}}),417,[1,6,178,401,249,418,413,256,366,325,312,403]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.processBoxShadow=void 0;var t={code:"function parseBoxShadowString_reactNativeReanimated_processBoxShadowTs1(rawBoxShadows){const result=[];for(const rawBoxShadow of rawBoxShadows.split(/,(?![^()]*\\))/).map(function(bS){return bS.trim();}).filter(function(bS){return bS!=='';})){const boxShadow={offsetX:0,offsetY:0};let offsetX=null;let offsetY=null;let keywordDetectedAfterLength=false;let lengthCount=0;const args=rawBoxShadow.split(/\\s+(?![^(]*\\))/);for(const arg of args){if(arg==='inset'){if(boxShadow.inset!=null){return[];}if(offsetX!=null){keywordDetectedAfterLength=true;}boxShadow.inset=true;continue;}switch(lengthCount){case 0:offsetX=arg;lengthCount++;break;case 1:if(keywordDetectedAfterLength){return[];}offsetY=arg;lengthCount++;break;case 2:if(keywordDetectedAfterLength){return[];}boxShadow.blurRadius=arg;lengthCount++;break;case 3:if(keywordDetectedAfterLength){return[];}boxShadow.spreadDistance=arg;lengthCount++;break;case 4:if(keywordDetectedAfterLength){return[];}boxShadow.color=arg;lengthCount++;break;default:return[];}}if(offsetX===null||offsetY===null){return[];}boxShadow.offsetX=offsetX;boxShadow.offsetY=offsetY;result.push(boxShadow);}return result;}"},o=(function(){var o=function(t){var o=[];for(var s of t.split(/,(?![^()]*\))/).map((function(t){return t.trim()})).filter((function(t){return''!==t}))){var n={offsetX:0,offsetY:0},f=null,u=null,l=!1,c=0,h=s.split(/\s+(?![^(]*\))/);for(var w of h)if('inset'!==w)switch(c){case 0:f=w,c++;break;case 1:if(l)return[];u=w,c++;break;case 2:if(l)return[];n.blurRadius=w,c++;break;case 3:if(l)return[];n.spreadDistance=w,c++;break;case 4:if(l)return[];n.color=w,c++;break;default:return[]}else{if(null!=n.inset)return[];null!=f&&(l=!0),n.inset=!0}if(null===f||null===u)return[];n.offsetX=f,n.offsetY=u,o.push(n)}return o};return o.__closure={},o.__workletHash=0x9d66ed07ef9,o.__initData=t,o})(),s={code:"function parseLength_reactNativeReanimated_processBoxShadowTs2(length){const argsWithUnitsRegex=/([+-]?\\d*(\\.\\d+)?)([\\w\\W]+)?/g;const match=argsWithUnitsRegex.exec(length);if(!match||Number.isNaN(match[1])){return null;}if(match[3]!=null&&match[3]!=='px'){return null;}return Number(match[1]);}"},n=(function(){var t=function(t){var o=/([+-]?\d*(\.\d+)?)([\w\W]+)?/g.exec(t);return!o||Number.isNaN(o[1])||null!=o[3]&&'px'!==o[3]?null:Number(o[1])};return t.__closure={},t.__workletHash=0xc8774b19e36,t.__initData=s,t})(),f={code:"function processBoxShadow_reactNativeReanimated_processBoxShadowTs3(props){const{parseBoxShadowString,parseLength}=this.__closure;const result=[];const rawBoxShadows=props.boxShadow;if(rawBoxShadows===''){return result;}const boxShadowList=parseBoxShadowString(rawBoxShadows.replace(/\\n/g,' '));for(const rawBoxShadow of boxShadowList){const parsedBoxShadow={offsetX:0,offsetY:0};let value;for(const arg in rawBoxShadow){switch(arg){case'offsetX':value=typeof rawBoxShadow.offsetX==='string'?parseLength(rawBoxShadow.offsetX):rawBoxShadow.offsetX;if(value===null){return[];}parsedBoxShadow.offsetX=value;break;case'offsetY':value=typeof rawBoxShadow.offsetY==='string'?parseLength(rawBoxShadow.offsetY):rawBoxShadow.offsetY;if(value===null){return[];}parsedBoxShadow.offsetY=value;break;case'spreadDistance':value=typeof rawBoxShadow.spreadDistance==='string'?parseLength(rawBoxShadow.spreadDistance):rawBoxShadow.spreadDistance;if(value===null){return[];}parsedBoxShadow.spreadDistance=value;break;case'blurRadius':value=typeof rawBoxShadow.blurRadius==='string'?parseLength(rawBoxShadow.blurRadius):rawBoxShadow.blurRadius;if(value===null||value<0){return[];}parsedBoxShadow.blurRadius=value;break;case'color':parsedBoxShadow.color=rawBoxShadow.color;break;case'inset':parsedBoxShadow.inset=rawBoxShadow.inset;}}result.push(parsedBoxShadow);}props.boxShadow=result;}"};e.processBoxShadow=(function(){var t=function(t){var s=[],f=t.boxShadow;if(''===f)return s;var u=o(f.replace(/\n/g,' '));for(var l of u){var c={offsetX:0,offsetY:0},h=void 0;for(var w in l)switch(w){case'offsetX':if(null===(h='string'==typeof l.offsetX?n(l.offsetX):l.offsetX))return[];c.offsetX=h;break;case'offsetY':if(null===(h='string'==typeof l.offsetY?n(l.offsetY):l.offsetY))return[];c.offsetY=h;break;case'spreadDistance':if(null===(h='string'==typeof l.spreadDistance?n(l.spreadDistance):l.spreadDistance))return[];c.spreadDistance=h;break;case'blurRadius':if(null===(h='string'==typeof l.blurRadius?n(l.blurRadius):l.blurRadius)||h<0)return[];c.blurRadius=h;break;case'color':c.color=l.color;break;case'inset':c.inset=l.inset}s.push(c)}t.boxShadow=s};return t.__closure={parseBoxShadowString:o,parseLength:n},t.__workletHash=885441976860,t.__initData=f,t})()}),418,[]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.useAnimatedReaction=function(t,s,o){var c,_,p,v,f=(0,r(d[3]).useSharedValue)(null),h=Object.values(null!=(c=t.__closure)?c:{});(0,r(d[4]).shouldBeUseWeb)()&&!h.length&&null!=(_=o)&&_.length&&(h=o);void 0===o?o=[].concat((0,u.default)(Object.values(null!=(p=t.__closure)?p:{})),(0,u.default)(Object.values(null!=(v=s.__closure)?v:{})),[t.__workletHash,s.__workletHash]):o.push(t.__workletHash,s.__workletHash);(0,l.useEffect)((function(){var u,l=((u=function(){var u=t();s(u,f.value),f.value=u}).__closure={prepare:t,react:s,previous:f},u.__workletHash=0xc8b55d7269f,u.__initData=n,u),o=(0,r(d[5]).startMapper)(l,h);return function(){(0,r(d[5]).stopMapper)(o)}}),o)};var u=t(r(d[1])),l=r(d[2]),n={code:"function reactNativeReanimated_useAnimatedReactionTs1(){const{prepare,react,previous}=this.__closure;const input=prepare();react(input,previous.value);previous.value=input;}"}}),419,[1,6,178,366,249,312]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.useAnimatedRef=function(){var o=(0,r(d[3]).useSharedValue)(-1),f=(0,r(d[3]).useSharedValue)(null),s=(0,n.useRef)(null);if(!s.current){var v=function(n){if(n){var c,s=(0,r(d[2]).isFabric)()?r(d[4]).getShadowNodeWrapperFromRef:r(d[5]).findNodeHandle,_=function(){return u?l(n):s(l(n))};if(o.value=_(),v.getTag=(0,r(d[2]).isFabric)()?function(){return(0,r(d[5]).findNodeHandle)(l(n))}:_,v.current=n,'ios'===t.Platform.OS&&!(0,r(d[2]).isFabric)())f.value=(null==n||null==(c=n.viewConfig)?void 0:c.uiViewClassName)||'RCTView'}return o.value};v.current=null;var _=(0,r(d[6]).makeShareableCloneRecursive)({__init:(N=function(){var n=function(){return o.value};return n.viewName=f,n},N.__closure={tag:o,viewName:f},N.__workletHash=6700931435929,N.__initData=c,N)});r(d[7]).shareableMappingCache.set(v,_),s.current=v}var N;return s.current};var n=r(d[0]),t=r(d[1]),u=(0,r(d[2]).isWeb)();function l(n){return(0,r(d[2]).isFabric)()&&n.getNativeScrollRef?n.getNativeScrollRef():!(0,r(d[2]).isFabric)()&&n.getScrollableNode?n.getScrollableNode():n}var c={code:"function reactNativeReanimated_useAnimatedRefTs1(){const{tag,viewName}=this.__closure;const f=function(){return tag.value;};f.viewName=viewName;return f;}"}}),420,[178,2,249,366,276,368,254,255]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.useAnimatedScrollHandler=function(o,t){var l='function'==typeof o?{onScroll:o}:o,c=(0,r(d[0]).useHandler)(l,t),s=c.context,u=c.doDependenciesDiffer,v=['onScroll'];void 0!==l.onBeginDrag&&v.push('onScrollBeginDrag');void 0!==l.onEndDrag&&v.push('onScrollEndDrag');void 0!==l.onMomentumBegin&&v.push('onMomentumScrollBegin');void 0!==l.onMomentumEnd&&v.push('onMomentumScrollEnd');return(0,r(d[1]).useEvent)((S=function(n){var o=l.onScroll,t=l.onBeginDrag,c=l.onEndDrag,u=l.onMomentumBegin,v=l.onMomentumEnd;o&&n.eventName.endsWith('onScroll')?o(n,s):t&&n.eventName.endsWith('onScrollBeginDrag')?t(n,s):c&&n.eventName.endsWith('onScrollEndDrag')?c(n,s):u&&n.eventName.endsWith('onMomentumScrollBegin')?u(n,s):v&&n.eventName.endsWith('onMomentumScrollEnd')&&v(n,s)},S.__closure={scrollHandlers:l,context:s},S.__workletHash=8578554612815,S.__initData=n,S),v,u);var S};var n={code:"function reactNativeReanimated_useAnimatedScrollHandlerTs1(event){const{scrollHandlers,context}=this.__closure;const{onScroll:onScroll,onBeginDrag:onBeginDrag,onEndDrag:onEndDrag,onMomentumBegin:onMomentumBegin,onMomentumEnd:onMomentumEnd}=scrollHandlers;if(onScroll&&event.eventName.endsWith('onScroll')){onScroll(event,context);}else if(onBeginDrag&&event.eventName.endsWith('onScrollBeginDrag')){onBeginDrag(event,context);}else if(onEndDrag&&event.eventName.endsWith('onScrollEndDrag')){onEndDrag(event,context);}else if(onMomentumBegin&&event.eventName.endsWith('onMomentumScrollBegin')){onMomentumBegin(event,context);}else if(onMomentumEnd&&event.eventName.endsWith('onMomentumScrollEnd')){onMomentumEnd(event,context);}}"}}),421,[412,414]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.useAnimatedSensor=function(n,o){var c,u,O,T=(0,t.useRef)(o);(null==(c=T.current)?void 0:c.adjustToInterfaceOrientation)===(null==o?void 0:o.adjustToInterfaceOrientation)&&(null==(u=T.current)?void 0:u.interval)===(null==o?void 0:o.interval)&&(null==(O=T.current)?void 0:O.iosReferenceFrame)===(null==o?void 0:o.iosReferenceFrame)||(T.current=Object.assign({},o));var _=(0,t.useMemo)((function(){return Object.assign({interval:'auto',adjustToInterfaceOrientation:!0,iosReferenceFrame:r(d[1]).IOSReferenceFrame.Auto},T.current)}),[T.current]),I=(0,t.useRef)({sensor:(0,r(d[2]).initializeSensor)(n,_),unregister:function(){},isAvailable:!1,config:_});return(0,t.useEffect)((function(){I.current={sensor:(0,r(d[2]).initializeSensor)(n,_),unregister:function(){},isAvailable:!1,config:_};var t,o=I.current.sensor,c=I.current.config.adjustToInterfaceOrientation,u=(0,r(d[2]).registerSensor)(n,_,((t=function(t){c&&(t=n===r(d[1]).SensorType.ROTATION?s(t):l(t)),o.value=t,(0,r(d[3]).callMicrotasks)()}).__closure={adjustToInterfaceOrientation:c,sensorType:n,SensorType:r(d[1]).SensorType,adjustRotationToInterfaceOrientation:s,adjustVectorToInterfaceOrientation:l,sensorData:o,callMicrotasks:r(d[3]).callMicrotasks},t.__workletHash=2154297770743,t.__initData=f,t));return-1!==u?(I.current.unregister=function(){return(0,r(d[2]).unregisterSensor)(u)},I.current.isAvailable=!0):(I.current.unregister=function(){},I.current.isAvailable=!1),function(){I.current.unregister()}}),[n,_]),I.current};var t=r(d[0]),n={code:"function eulerToQuaternion_reactNativeReanimated_useAnimatedSensorTs1(pitch,roll,yaw){const c1=Math.cos(pitch/2);const s1=Math.sin(pitch/2);const c2=Math.cos(roll/2);const s2=Math.sin(roll/2);const c3=Math.cos(yaw/2);const s3=Math.sin(yaw/2);return[s1*c2*c3-c1*s2*s3,c1*s2*c3+s1*c2*s3,c1*c2*s3+s1*s2*c3,c1*c2*c3-s1*s2*s3];}"},o=(function(){var t=function(t,n,o){var c=Math.cos(t/2),s=Math.sin(t/2),u=Math.cos(n/2),l=Math.sin(n/2),f=Math.cos(o/2),O=Math.sin(o/2);return[s*u*f-c*l*O,c*l*f+s*u*O,c*u*O+s*l*f,c*u*f-s*l*O]};return t.__closure={},t.__workletHash=763515177202,t.__initData=n,t})(),c={code:"function adjustRotationToInterfaceOrientation_reactNativeReanimated_useAnimatedSensorTs2(data){const{InterfaceOrientation,eulerToQuaternion}=this.__closure;const{interfaceOrientation:interfaceOrientation,pitch:pitch,roll:roll,yaw:yaw}=data;if(interfaceOrientation===InterfaceOrientation.ROTATION_90){data.pitch=roll;data.roll=-pitch;data.yaw=yaw-Math.PI/2;}else if(interfaceOrientation===InterfaceOrientation.ROTATION_270){data.pitch=-roll;data.roll=pitch;data.yaw=yaw+Math.PI/2;}else if(interfaceOrientation===InterfaceOrientation.ROTATION_180){data.pitch*=-1;data.roll*=-1;data.yaw*=-1;}const q=eulerToQuaternion(data.pitch,data.roll,data.yaw);data.qx=q[0];data.qy=q[1];data.qz=q[2];data.qw=q[3];return data;}"},s=(function(){var t=function(t){var n=t.interfaceOrientation,c=t.pitch,s=t.roll,u=t.yaw;n===r(d[1]).InterfaceOrientation.ROTATION_90?(t.pitch=s,t.roll=-c,t.yaw=u-Math.PI/2):n===r(d[1]).InterfaceOrientation.ROTATION_270?(t.pitch=-s,t.roll=c,t.yaw=u+Math.PI/2):n===r(d[1]).InterfaceOrientation.ROTATION_180&&(t.pitch*=-1,t.roll*=-1,t.yaw*=-1);var l=o(t.pitch,t.roll,t.yaw);return t.qx=l[0],t.qy=l[1],t.qz=l[2],t.qw=l[3],t};return t.__closure={InterfaceOrientation:r(d[1]).InterfaceOrientation,eulerToQuaternion:o},t.__workletHash=0xfad4cb96b23,t.__initData=c,t})(),u={code:"function adjustVectorToInterfaceOrientation_reactNativeReanimated_useAnimatedSensorTs3(data){const{InterfaceOrientation}=this.__closure;const{interfaceOrientation:interfaceOrientation,x:x,y:y}=data;if(interfaceOrientation===InterfaceOrientation.ROTATION_90){data.x=-y;data.y=x;}else if(interfaceOrientation===InterfaceOrientation.ROTATION_270){data.x=y;data.y=-x;}else if(interfaceOrientation===InterfaceOrientation.ROTATION_180){data.x*=-1;data.y*=-1;}return data;}"},l=(function(){var t=function(t){var n=t.interfaceOrientation,o=t.x,c=t.y;return n===r(d[1]).InterfaceOrientation.ROTATION_90?(t.x=-c,t.y=o):n===r(d[1]).InterfaceOrientation.ROTATION_270?(t.x=c,t.y=-o):n===r(d[1]).InterfaceOrientation.ROTATION_180&&(t.x*=-1,t.y*=-1),t};return t.__closure={InterfaceOrientation:r(d[1]).InterfaceOrientation},t.__workletHash=0xf16d1362f3d,t.__initData=u,t})(),f={code:"function reactNativeReanimated_useAnimatedSensorTs4(data){const{adjustToInterfaceOrientation,sensorType,SensorType,adjustRotationToInterfaceOrientation,adjustVectorToInterfaceOrientation,sensorData,callMicrotasks}=this.__closure;if(adjustToInterfaceOrientation){if(sensorType===SensorType.ROTATION){data=adjustRotationToInterfaceOrientation(data);}else{data=adjustVectorToInterfaceOrientation(data);}}sensorData.value=data;callMicrotasks();}"}}),422,[178,247,312,266]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.useComposedEventHandler=function(n){var o={},l=new Set,u={};n.filter((function(t){return null!==t})).forEach((function(t){var n=t.workletEventHandler;n instanceof r(d[0]).WorkletEventHandler&&n.eventNames.forEach((function(t){l.add(t),u[t]?u[t].push(n.worklet):u[t]=[n.worklet];var s=t+`${u[t].length}`;o[s]=n.worklet}))}));var s=(0,r(d[1]).useHandler)(o).doDependenciesDiffer;return(0,r(d[2]).useEvent)((c=function(t){u[t.eventName]&&u[t.eventName].forEach((function(n){return n(t)}))},c.__closure={workletsMap:u},c.__workletHash=5537037102218,c.__initData=t,c),Array.from(l),s);var c};var t={code:"function reactNativeReanimated_useComposedEventHandlerTs1(event){const{workletsMap}=this.__closure;if(workletsMap[event.eventName]){workletsMap[event.eventName].forEach(function(worklet){return worklet(event);});}}"}}),423,[405,412,414]); +__d((function(g,r,i,a,m,e,d){'use strict';var u=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.useDerivedValue=function(u,s){var c,o,_=(0,l.useRef)(null),v=Object.values(null!=(c=u.__closure)?c:{});(0,r(d[3]).shouldBeUseWeb)()&&!v.length&&null!=(o=s)&&o.length&&(v=s);void 0===s?s=[].concat((0,t.default)(v),[u.__workletHash]):s.push(u.__workletHash);null===_.current&&(_.current=(0,r(d[4]).makeMutable)((0,r(d[5]).initialUpdaterRun)(u)));var f=_.current;return(0,l.useEffect)((function(){var t,l=((t=function(){f.value=u()}).__closure={sharedValue:f,updater:u},t.__workletHash=5180707846420,t.__initData=n,t),s=(0,r(d[4]).startMapper)(l,v,[f]);return function(){(0,r(d[4]).stopMapper)(s)}}),s),f};var t=u(r(d[1])),l=r(d[2]),n={code:"function reactNativeReanimated_useDerivedValueTs1(){const{sharedValue,updater}=this.__closure;sharedValue.value=updater();}"}}),424,[1,6,178,249,312,325]); +__d((function(g,r,i,a,m,e,d){'use strict';var c=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.useFrameCallback=function(c){var l=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],u=(0,t.useRef)({setActive:function(c){n.manageStateFrameCallback(u.current.callbackId,c),u.current.isActive=c},isActive:l,callbackId:-1});return(0,t.useEffect)((function(){u.current.callbackId=n.registerFrameCallback(c);var t=u.current;return u.current.setActive(u.current.isActive),function(){n.unregisterFrameCallback(t.callbackId),t.callbackId=-1}}),[c,l]),u.current};var t=r(d[1]),n=new(c(r(d[2])).default)}),425,[1,178,426]); +__d((function(g,r,i,a,m,e,d){'use strict';var l=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=l(r(d[1])),c=l(r(d[2])),n={code:"function reactNativeReanimated_FrameCallbackRegistryJSTs1(){const{callback,callbackId}=this.__closure;global._frameCallbackRegistry.registerFrameCallback(callback,callbackId);}"},s={code:"function reactNativeReanimated_FrameCallbackRegistryJSTs2(){const{callbackId}=this.__closure;global._frameCallbackRegistry.unregisterFrameCallback(callbackId);}"},k={code:"function reactNativeReanimated_FrameCallbackRegistryJSTs3(){const{callbackId,state}=this.__closure;global._frameCallbackRegistry.manageStateFrameCallback(callbackId,state);}"};e.default=(function(){return(0,c.default)((function l(){(0,t.default)(this,l),this.nextCallbackId=0,(0,r(d[3]).prepareUIRegistry)()}),[{key:"registerFrameCallback",value:function(l){if(!l)return-1;var t,c=this.nextCallbackId;return this.nextCallbackId++,(0,r(d[4]).runOnUI)(((t=function(){g._frameCallbackRegistry.registerFrameCallback(l,c)}).__closure={callback:l,callbackId:c},t.__workletHash=3270450948245,t.__initData=n,t))(),c}},{key:"unregisterFrameCallback",value:function(l){var t;(0,r(d[4]).runOnUI)(((t=function(){g._frameCallbackRegistry.unregisterFrameCallback(l)}).__closure={callbackId:l},t.__workletHash=6883833323181,t.__initData=s,t))()}},{key:"manageStateFrameCallback",value:function(l,t){var c;(0,r(d[4]).runOnUI)(((c=function(){g._frameCallbackRegistry.manageStateFrameCallback(l,t)}).__closure={callbackId:l,state:t},c.__workletHash=2952660689672,c.__initData=k,c))()}}])})()}),426,[1,12,13,427,312]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.prepareUIRegistry=void 0;var t,l={code:"function reactNativeReanimated_FrameCallbackRegistryUITs1(){const frameCallbackRegistry={frameCallbackRegistry:new Map(),activeFrameCallbacks:new Set(),previousFrameTimestamp:null,nextCallId:0,runCallbacks:function(callId){var _this=this;const loop=function(timestamp){if(callId!==_this.nextCallId){return;}if(_this.previousFrameTimestamp===null){_this.previousFrameTimestamp=timestamp;}const delta=timestamp-_this.previousFrameTimestamp;_this.activeFrameCallbacks.forEach(function(callbackId){const callbackDetails=_this.frameCallbackRegistry.get(callbackId);const{startTime:startTime}=callbackDetails;if(startTime===null){callbackDetails.startTime=timestamp;callbackDetails.callback({timestamp:timestamp,timeSincePreviousFrame:null,timeSinceFirstFrame:0});}else{callbackDetails.callback({timestamp:timestamp,timeSincePreviousFrame:delta,timeSinceFirstFrame:timestamp-startTime});}});if(_this.activeFrameCallbacks.size>0){_this.previousFrameTimestamp=timestamp;requestAnimationFrame(loop);}else{_this.previousFrameTimestamp=null;}};if(this.activeFrameCallbacks.size===1&&callId===this.nextCallId){requestAnimationFrame(loop);}},registerFrameCallback:function(callback,callbackId){this.frameCallbackRegistry.set(callbackId,{callback:callback,startTime:null});},unregisterFrameCallback:function(callbackId){this.manageStateFrameCallback(callbackId,false);this.frameCallbackRegistry.delete(callbackId);},manageStateFrameCallback:function(callbackId,state){if(callbackId===-1){return;}if(state){this.activeFrameCallbacks.add(callbackId);this.runCallbacks(this.nextCallId);}else{const callback=this.frameCallbackRegistry.get(callbackId);callback.startTime=null;this.activeFrameCallbacks.delete(callbackId);if(this.activeFrameCallbacks.size===0){this.nextCallId+=1;}}}};global._frameCallbackRegistry=frameCallbackRegistry;}"};e.prepareUIRegistry=(0,r(d[0]).runOnUIImmediately)(((t=function(){var t={frameCallbackRegistry:new Map,activeFrameCallbacks:new Set,previousFrameTimestamp:null,nextCallId:0,runCallbacks:function(t){var l=this,s=function(c){if(t===l.nextCallId){null===l.previousFrameTimestamp&&(l.previousFrameTimestamp=c);var n=c-l.previousFrameTimestamp;l.activeFrameCallbacks.forEach((function(t){var s=l.frameCallbackRegistry.get(t),b=s.startTime;null===b?(s.startTime=c,s.callback({timestamp:c,timeSincePreviousFrame:null,timeSinceFirstFrame:0})):s.callback({timestamp:c,timeSincePreviousFrame:n,timeSinceFirstFrame:c-b})})),l.activeFrameCallbacks.size>0?(l.previousFrameTimestamp=c,requestAnimationFrame(s)):l.previousFrameTimestamp=null}};1===this.activeFrameCallbacks.size&&t===this.nextCallId&&requestAnimationFrame(s)},registerFrameCallback:function(t,l){this.frameCallbackRegistry.set(l,{callback:t,startTime:null})},unregisterFrameCallback:function(t){this.manageStateFrameCallback(t,!1),this.frameCallbackRegistry.delete(t)},manageStateFrameCallback:function(t,l){-1!==t&&(l?(this.activeFrameCallbacks.add(t),this.runCallbacks(this.nextCallId)):(this.frameCallbackRegistry.get(t).startTime=null,this.activeFrameCallbacks.delete(t),0===this.activeFrameCallbacks.size&&(this.nextCallId+=1)))}};g._frameCallbackRegistry=t}).__closure={},t.__workletHash=5591855314696,t.__initData=l,t))}),427,[266]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.useReducedMotion=function(){return n};var n=(0,r(d[0]).isReducedMotionEnabledInSystem)()}),428,[309]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.useScrollViewOffset=void 0;var t=r(d[0]),n=(0,r(d[1]).isWeb)(),l=(e.useScrollViewOffset=n?function(n,o){var c=(0,r(d[2]).useSharedValue)(0),f=(0,t.useRef)(null!=o?o:c).current,s=(0,t.useCallback)((v=function(){if(n){var t=u(n.current);f.value=0===t.scrollLeft?t.scrollTop:t.scrollLeft}},v.__closure={animatedRef:n,getWebScrollableElement:u,offset:f},v.__workletHash=0xda66aa8b8b1,v.__initData=l,v),[n,null==n?void 0:n.current]);var v;return(0,t.useEffect)((function(){var t=null!=n&&n.current?u(n.current):null;return t&&t.addEventListener('scroll',s),function(){t&&t.removeEventListener('scroll',s)}}),[n,null==n?void 0:n.current,s]),f}:function(n,l){var u=(0,r(d[2]).useSharedValue)(0),f=(0,t.useRef)(null!=l?l:u).current,s=(0,r(d[3]).useEvent)((v=function(t){f.value=0===t.contentOffset.x?t.contentOffset.y:t.contentOffset.x},v.__closure={offset:f},v.__workletHash=0xadeaa517964,v.__initData=o,v),c);var v;return(0,t.useEffect)((function(){var t,l=null!=(t=null==n?void 0:n.getTag())?t:null;return l&&s.workletEventHandler.registerForEvents(l),function(){l&&s.workletEventHandler.unregisterFromEvents(l)}}),[n,null==n?void 0:n.current,s]),f},{code:"function reactNativeReanimated_useScrollViewOffsetTs1(){const{animatedRef,getWebScrollableElement,offset}=this.__closure;if(animatedRef){const element=getWebScrollableElement(animatedRef.current);offset.value=element.scrollLeft===0?element.scrollTop:element.scrollLeft;}}"});var o={code:"function reactNativeReanimated_useScrollViewOffsetTs2(event){const{offset}=this.__closure;offset.value=event.contentOffset.x===0?event.contentOffset.y:event.contentOffset.x;}"};function u(t){var n;return null!=(n=null==t?void 0:t.getScrollableNode())?n:t}var c=['onScroll','onScrollBeginDrag','onScrollEndDrag','onMomentumScrollBegin','onMomentumScrollEnd']}),429,[178,249,366,414]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.useWorkletCallback=function(u,t){return(0,l.useCallback)(u,null!=t?t:[])};var l=r(d[0])}),430,[178]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.ReducedMotionConfig=function(t){var o=t.mode;return(0,n.useEffect)((function(){}),[]),(0,n.useEffect)((function(){var n=r(d[2]).ReducedMotionManager.jsValue;switch(o){case r(d[3]).ReduceMotion.System:r(d[2]).ReducedMotionManager.setEnabled((0,r(d[2]).isReducedMotionEnabledInSystem)());break;case r(d[3]).ReduceMotion.Always:r(d[2]).ReducedMotionManager.setEnabled(!0);break;case r(d[3]).ReduceMotion.Never:r(d[2]).ReducedMotionManager.setEnabled(!1)}return function(){r(d[2]).ReducedMotionManager.setEnabled(n)}}),[o]),null};var n=r(d[0])}),431,[178,250,309,247]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"ScreenTransition",{enumerable:!0,get:function(){return r(d[0]).ScreenTransition}}),Object.defineProperty(e,"finishScreenTransition",{enumerable:!0,get:function(){return r(d[1]).finishScreenTransition}}),Object.defineProperty(e,"startScreenTransition",{enumerable:!0,get:function(){return r(d[1]).startScreenTransition}})}),432,[433,434]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.ScreenTransition=void 0;var t,n,s,o,c,_,l,u,f,S,v,p,w,h,T,X,Y={code:"function reactNativeReanimated_presetsTs1(event){return{transform:[{translateX:event.translationX}]};}"},b={code:"function reactNativeReanimated_presetsTs2(event,screenSize){return{transform:[{translateX:(event.translationX-screenSize.width)*0.3}]};}"},y={topScreenStyle:(n=function(t){return{transform:[{translateX:t.translationX}]}},n.__closure={},n.__workletHash=1930116639629,n.__initData=Y,n),belowTopScreenStyle:(t=function(t,n){return{transform:[{translateX:.3*(t.translationX-n.width)}]}},t.__closure={},t.__workletHash=6871625506273,t.__initData=b,t)},z={code:"function reactNativeReanimated_presetsTs3(event){return{transform:[{translateX:event.translationX}]};}"},D={code:"function reactNativeReanimated_presetsTs4(event,screenSize){return{transform:[{translateX:(event.translationX+screenSize.width)*0.3}]};}"},R={topScreenStyle:(o=function(t){return{transform:[{translateX:t.translationX}]}},o.__closure={},o.__workletHash=0xecce621898f,o.__initData=z,o),belowTopScreenStyle:(s=function(t,n){return{transform:[{translateX:.3*(t.translationX+n.width)}]}},s.__closure={},s.__workletHash=3752201607201,s.__initData=D,s)},H={code:"function reactNativeReanimated_presetsTs5(event){return{transform:[{translateY:event.translationY}]};}"},k={code:"function reactNativeReanimated_presetsTs6(event,screenSize){return{transform:[{translateY:(event.translationY-screenSize.height)*0.3}]};}"},N={topScreenStyle:(_=function(t){return{transform:[{translateY:t.translationY}]}},_.__closure={},_.__workletHash=2215358627561,_.__initData=H,_),belowTopScreenStyle:(c=function(t,n){return{transform:[{translateY:.3*(t.translationY-n.height)}]}},c.__closure={},c.__workletHash=7507926341916,c.__initData=k,c)},x={code:"function reactNativeReanimated_presetsTs7(event){return{transform:[{translateY:event.translationY}]};}"},M={code:"function reactNativeReanimated_presetsTs8(event,screenSize){return{transform:[{translateY:(event.translationY+screenSize.height)*0.3}]};}"},j={topScreenStyle:(u=function(t){return{transform:[{translateY:t.translationY}]}},u.__closure={},u.__workletHash=0xbe061211ceb,u.__initData=x,u),belowTopScreenStyle:(l=function(t,n){return{transform:[{translateY:.3*(t.translationY+n.height)}]}},l.__closure={},l.__workletHash=0xfa23245a854,l.__initData=M,l)},F={code:"function reactNativeReanimated_presetsTs9(event,_screenSize){return{transform:[{translateX:event.translationX},{translateY:event.translationY}]};}"},L={code:"function reactNativeReanimated_presetsTs10(_event,_screenSize){return{};}"},O={topScreenStyle:(S=function(t,n){return{transform:[{translateX:t.translationX},{translateY:t.translationY}]}},S.__closure={},S.__workletHash=0xdc91c22cbc0,S.__initData=F,S),belowTopScreenStyle:(f=function(t,n){return{}},f.__closure={},f.__workletHash=0xf02637b7f9b,f.__initData=L,f)},P={code:"function reactNativeReanimated_presetsTs11(event,_screenSize){return{transform:[{translateX:event.translationX}]};}"},U={code:"function reactNativeReanimated_presetsTs12(_event,_screenSize){return{};}"},V={topScreenStyle:(p=function(t,n){return{transform:[{translateX:t.translationX}]}},p.__closure={},p.__workletHash=0xf650e9689e6,p.__initData=P,p),belowTopScreenStyle:(v=function(t,n){return{}},v.__closure={},v.__workletHash=0xaeada67c1d9,v.__initData=U,v)},q={code:"function reactNativeReanimated_presetsTs13(event,_screenSize){return{transform:[{translateY:event.translationY}]};}"},A={code:"function reactNativeReanimated_presetsTs14(_event,_screenSize){return{};}"},B={topScreenStyle:(h=function(t,n){return{transform:[{translateY:t.translationY}]}},h.__closure={},h.__workletHash=0xebc6ecb7ec4,h.__initData=q,h),belowTopScreenStyle:(w=function(t,n){return{}},w.__closure={},w.__workletHash=0xcf22261be1f,w.__initData=A,w)},C={code:"function reactNativeReanimated_presetsTs15(event,screenSize){return{opacity:1-Math.abs(event.translationX/screenSize.width)};}"},E={code:"function reactNativeReanimated_presetsTs16(_event,_screenSize){return{};}"},G={topScreenStyle:(X=function(t,n){return{opacity:1-Math.abs(t.translationX/n.width)}},X.__closure={},X.__workletHash=0xf7d6a19fd71,X.__initData=C,X),belowTopScreenStyle:(T=function(t,n){return{}},T.__closure={},T.__workletHash=9739262885981,T.__initData=E,T)};e.ScreenTransition={SwipeRight:y,SwipeLeft:R,SwipeDown:N,SwipeUp:j,Horizontal:V,Vertical:B,TwoDimensional:O,SwipeRightFade:G}}),433,[]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.startScreenTransition=e.finishScreenTransition=void 0,(0,r(d[0]).configureProps)();var t={code:"function startScreenTransition_reactNativeReanimated_animationManagerTs1(screenTransitionConfig){const{applyStyle}=this.__closure;const{stackTag:stackTag,sharedEvent:sharedEvent}=screenTransitionConfig;sharedEvent.addListener(stackTag,function(){applyStyle(screenTransitionConfig,sharedEvent.value);});}"},n=(e.startScreenTransition=(function(){var n=function(t){var n=t.stackTag,s=t.sharedEvent;s.addListener(n,(function(){(0,r(d[1]).applyStyle)(t,s.value)}))};return n.__closure={applyStyle:r(d[1]).applyStyle},n.__workletHash=6496409432139,n.__initData=t,n})(),{code:"function getLockAxis_reactNativeReanimated_animationManagerTs2(goBackGesture){if(['swipeRight','swipeLeft','horizontalSwipe'].includes(goBackGesture)){return'x';}else if(['swipeUp','swipeDown','verticalSwipe'].includes(goBackGesture)){return'y';}return undefined;}"}),s=(function(){var t=function(t){return['swipeRight','swipeLeft','horizontalSwipe'].includes(t)?'x':['swipeUp','swipeDown','verticalSwipe'].includes(t)?'y':void 0};return t.__closure={},t.__workletHash=0xbca7ca69f95,t.__initData=n,t})(),o={code:"function finishScreenTransition_reactNativeReanimated_animationManagerTs3(screenTransitionConfig){const{getLockAxis,getSwipeSimulator}=this.__closure;const{stackTag:stackTag,sharedEvent:sharedEvent,goBackGesture:goBackGesture}=screenTransitionConfig;sharedEvent.removeListener(stackTag);const lockAxis=getLockAxis(goBackGesture);const step=getSwipeSimulator(sharedEvent.value,screenTransitionConfig,lockAxis);step();}"};e.finishScreenTransition=(function(){var t=function(t){var n=t.stackTag,o=t.sharedEvent,c=t.goBackGesture;o.removeListener(n);var u=s(c);(0,r(d[2]).getSwipeSimulator)(o.value,t,u)()};return t.__closure={getLockAxis:s,getSwipeSimulator:r(d[2]).getSwipeSimulator},t.__workletHash=8186010751430,t.__initData=o,t})()}),434,[370,435,436]); +__d((function(g,r,i,a,m,e,d){'use strict';var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.applyStyleForBelowTopScreen=e.applyStyle=void 0;var t=n(r(d[1])),o=(0,r(d[2]).isFabric)(),c={code:"function createViewDescriptorPaper_reactNativeReanimated_styleUpdaterTs1(screenId){return{tag:screenId,name:'RCTView'};}"},s=(function(){var n=function(n){return{tag:n,name:'RCTView'}};return n.__closure={},n.__workletHash=0xc366562d822,n.__initData=c,n})(),p={code:"function createViewDescriptorFabric_reactNativeReanimated_styleUpdaterTs2(screenId){return{shadowNodeWrapper:screenId};}"},l=(function(){var n=function(n){return{shadowNodeWrapper:n}};return n.__closure={},n.__workletHash=926744547348,n.__initData=p,n})(),S=o?l:s,u={code:"function applyStyleForTopScreen_reactNativeReanimated_styleUpdaterTs3(screenTransitionConfig,event){const{createViewDescriptor,updateProps}=this.__closure;const{screenDimensions:screenDimensions,topScreenId:topScreenId,screenTransition:screenTransition}=screenTransitionConfig;const{topScreenStyle:computeTopScreenStyle}=screenTransition;const topScreenStyle=computeTopScreenStyle(event,screenDimensions);const topScreenDescriptor={value:[createViewDescriptor(topScreenId)]};updateProps(topScreenDescriptor,topScreenStyle,undefined);}"},_=(function(){var n=function(n,o){var c=n.screenDimensions,s=n.topScreenId,p=(0,n.screenTransition.topScreenStyle)(o,c),l={value:[S(s)]};(0,t.default)(l,p,void 0)};return n.__closure={createViewDescriptor:S,updateProps:t.default},n.__workletHash=0x930d06902e2,n.__initData=u,n})(),T={code:"function applyStyleForBelowTopScreen_reactNativeReanimated_styleUpdaterTs4(screenTransitionConfig,event){const{createViewDescriptor,updateProps}=this.__closure;const{screenDimensions:screenDimensions,belowTopScreenId:belowTopScreenId,screenTransition:screenTransition}=screenTransitionConfig;const{belowTopScreenStyle:computeBelowTopScreenStyle}=screenTransition;const belowTopScreenStyle=computeBelowTopScreenStyle(event,screenDimensions);const belowTopScreenDescriptor={value:[createViewDescriptor(belowTopScreenId)]};updateProps(belowTopScreenDescriptor,belowTopScreenStyle,undefined);}"},y=e.applyStyleForBelowTopScreen=(function(){var n=function(n,o){var c=n.screenDimensions,s=n.belowTopScreenId,p=(0,n.screenTransition.belowTopScreenStyle)(o,c),l={value:[S(s)]};(0,t.default)(l,p,void 0)};return n.__closure={createViewDescriptor:S,updateProps:t.default},n.__workletHash=0x98ef8f08876,n.__initData=T,n})(),w={code:"function applyStyle_reactNativeReanimated_styleUpdaterTs5(screenTransitionConfig,event){const{applyStyleForTopScreen,applyStyleForBelowTopScreen}=this.__closure;applyStyleForTopScreen(screenTransitionConfig,event);applyStyleForBelowTopScreen(screenTransitionConfig,event);}"};e.applyStyle=(function(){var n=function(n,t){_(n,t),y(n,t)};return n.__closure={applyStyleForTopScreen:_,applyStyleForBelowTopScreen:y},n.__workletHash=933859614838,n.__initData=w,n})()}),435,[1,401,249]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.getSwipeSimulator=void 0;var n=400,t={code:"function computeEasingProgress_reactNativeReanimated_swipeSimulatorTs1(startingTimestamp,distance,velocity){if(Math.abs(distance)<1){return 1;}const elapsedTime=(_getAnimationTimestamp()-startingTimestamp)/1000;const currentPosition=velocity*elapsedTime;const progress=currentPosition/distance;return progress;}"},s=(function(){var n=function(n,t,s){return Math.abs(t)<1?1:s*((_getAnimationTimestamp()-n)/1e3)/t};return n.__closure={},n.__workletHash=4610686157585,n.__initData=t,n})(),o={code:"function easing_reactNativeReanimated_swipeSimulatorTs2(x){return 1-Math.pow(1-x,5);}"},c=(function(){var n=function(n){return 1-Math.pow(1-n,5)};return n.__closure={},n.__workletHash=0xf545951aa49,n.__initData=o,n})(),l={code:"function computeProgress_reactNativeReanimated_swipeSimulatorTs3(screenTransitionConfig,event,isTransitionCanceled){const screenDimensions=screenTransitionConfig.screenDimensions;const progressX=Math.abs(event.translationX/screenDimensions.width);const progressY=Math.abs(event.translationY/screenDimensions.height);const maxProgress=Math.max(progressX,progressY);const progress=isTransitionCanceled?maxProgress/2:maxProgress;return progress;}"},y=(function(){var n=function(n,t,s){var o=n.screenDimensions,c=Math.abs(t.translationX/o.width),l=Math.abs(t.translationY/o.height),y=Math.max(c,l);return s?y/2:y};return n.__closure={},n.__workletHash=3885245770806,n.__initData=l,n})(),h={code:"function maybeScheduleNextFrame_reactNativeReanimated_swipeSimulatorTs4(step,didScreenReachDestination,screenTransitionConfig,event,isTransitionCanceled){const{computeProgress,RNScreensTurboModule}=this.__closure;if(!didScreenReachDestination){const stackTag=screenTransitionConfig.stackTag;const progress=computeProgress(screenTransitionConfig,event,isTransitionCanceled);RNScreensTurboModule.updateTransition(stackTag,progress);requestAnimationFrame(step);}else{var _screenTransitionConf;(_screenTransitionConf=screenTransitionConfig.onFinishAnimation)===null||_screenTransitionConf===void 0||_screenTransitionConf.call(screenTransitionConfig);}}"},u=(function(){var n=function(n,t,s,o,c){if(t)null==s.onFinishAnimation||s.onFinishAnimation();else{var l=s.stackTag,h=y(s,o,c);r(d[0]).RNScreensTurboModule.updateTransition(l,h),requestAnimationFrame(n)}};return n.__closure={computeProgress:y,RNScreensTurboModule:r(d[0]).RNScreensTurboModule},n.__workletHash=126376714935,n.__initData=h,n})(),x={code:"function getSwipeSimulator_reactNativeReanimated_swipeSimulatorTs5(event,screenTransitionConfig,lockAxis){const{BASE_VELOCITY,ADDITIONAL_VELOCITY_FACTOR_X,ADDITIONAL_VELOCITY_FACTOR_Y,ADDITIONAL_VELOCITY_FACTOR_XY,applyStyleForBelowTopScreen,computeEasingProgress,easing,applyStyle,maybeScheduleNextFrame}=this.__closure;const screenDimensions=screenTransitionConfig.screenDimensions;const startTimestamp=_getAnimationTimestamp();const{isTransitionCanceled:isTransitionCanceled}=screenTransitionConfig;const startingPosition={x:event.translationX,y:event.translationY};const direction={x:Math.sign(event.translationX),y:Math.sign(event.translationY)};const finalPosition=isTransitionCanceled?{x:0,y:0}:{x:direction.x*screenDimensions.width,y:direction.y*screenDimensions.height};const distance={x:Math.abs(finalPosition.x-startingPosition.x),y:Math.abs(finalPosition.y-startingPosition.y)};const didScreenReachDestination={x:false,y:false};const velocity={x:BASE_VELOCITY,y:BASE_VELOCITY};if(lockAxis==='x'){velocity.y=0;velocity.x+=ADDITIONAL_VELOCITY_FACTOR_X*distance.x/screenDimensions.width;}else if(lockAxis==='y'){velocity.x=0;velocity.y+=ADDITIONAL_VELOCITY_FACTOR_Y*distance.y/screenDimensions.height;}else{const euclideanDistance=Math.sqrt(distance.x**2+distance.y**2);const screenDiagonal=Math.sqrt(screenDimensions.width**2+screenDimensions.height**2);const velocityVectorLength=BASE_VELOCITY+ADDITIONAL_VELOCITY_FACTOR_XY*euclideanDistance/screenDiagonal;if(Math.abs(startingPosition.x)>Math.abs(startingPosition.y)){velocity.x=velocityVectorLength;velocity.y=velocityVectorLength*Math.abs(startingPosition.y/startingPosition.x);}else{velocity.x=velocityVectorLength*Math.abs(startingPosition.x/startingPosition.y);velocity.y=velocityVectorLength;}}if(isTransitionCanceled){function didScreenReachDestinationCheck(){if(lockAxis==='x'){return didScreenReachDestination.x;}else if(lockAxis==='y'){return didScreenReachDestination.y;}else{return didScreenReachDestination.x&&didScreenReachDestination.y;}}function restoreOriginalStyleForBelowTopScreen(){event.translationX=direction.x*screenDimensions.width;event.translationY=direction.y*screenDimensions.height;applyStyleForBelowTopScreen(screenTransitionConfig,event);}const computeFrame=function(){const progress={x:computeEasingProgress(startTimestamp,distance.x,velocity.x),y:computeEasingProgress(startTimestamp,distance.y,velocity.y)};event.translationX=startingPosition.x-direction.x*distance.x*easing(progress.x);event.translationY=startingPosition.y-direction.y*distance.y*easing(progress.y);if(direction.x>0){if(event.translationX<=0){didScreenReachDestination.x=true;event.translationX=0;}}else{if(event.translationX>=0){didScreenReachDestination.x=true;event.translationX=0;}}if(direction.y>0){if(event.translationY<=0){didScreenReachDestination.y=true;event.translationY=0;}}else{if(event.translationY>=0){didScreenReachDestination.y=true;event.translationY=0;}}applyStyle(screenTransitionConfig,event);const finished=didScreenReachDestinationCheck();if(finished){restoreOriginalStyleForBelowTopScreen();}maybeScheduleNextFrame(computeFrame,finished,screenTransitionConfig,event,isTransitionCanceled);};return computeFrame;}else{const computeFrame=function(){const progress={x:computeEasingProgress(startTimestamp,distance.x,velocity.x),y:computeEasingProgress(startTimestamp,distance.y,velocity.y)};event.translationX=startingPosition.x+direction.x*distance.x*easing(progress.x);event.translationY=startingPosition.y+direction.y*distance.y*easing(progress.y);if(direction.x>0){if(event.translationX>=screenDimensions.width){didScreenReachDestination.x=true;event.translationX=screenDimensions.width;}}else{if(event.translationX<=-screenDimensions.width){didScreenReachDestination.x=true;event.translationX=-screenDimensions.width;}}if(direction.y>0){if(event.translationY>=screenDimensions.height){didScreenReachDestination.y=true;event.translationY=screenDimensions.height;}}else{if(event.translationY<=-screenDimensions.height){didScreenReachDestination.y=true;event.translationY=-screenDimensions.height;}}applyStyle(screenTransitionConfig,event);maybeScheduleNextFrame(computeFrame,didScreenReachDestination.x||didScreenReachDestination.y,screenTransitionConfig,event,isTransitionCanceled);};return computeFrame;}}"};e.getSwipeSimulator=(function(){var t=function(t,o,l){var y=o.screenDimensions,h=_getAnimationTimestamp(),x=o.isTransitionCanceled,T={x:t.translationX,y:t.translationY},p=Math.sign(t.translationX),_=Math.sign(t.translationY),v=x?{x:0,y:0}:{x:p*y.width,y:_*y.height},f={x:Math.abs(v.x-T.x),y:Math.abs(v.y-T.y)},D={x:!1,y:!1},S={x:n,y:n};if('x'===l)S.y=0,S.x+=400*f.x/y.width;else if('y'===l)S.x=0,S.y+=500*f.y/y.height;else{var C=Math.sqrt(f.x**2+f.y**2),Y=Math.sqrt(y.width**2+y.height**2),A=n+600*C/Y;Math.abs(T.x)>Math.abs(T.y)?(S.x=A,S.y=A*Math.abs(T.y/T.x)):(S.x=A*Math.abs(T.x/T.y),S.y=A)}if(x){var w=function(){var n={x:s(h,f.x,S.x),y:s(h,f.y,S.y)};t.translationX=T.x-p*f.x*c(n.x),t.translationY=T.y-_*f.y*c(n.y),p>0?t.translationX<=0&&(D.x=!0,t.translationX=0):t.translationX>=0&&(D.x=!0,t.translationX=0),_>0?t.translationY<=0&&(D.y=!0,t.translationY=0):t.translationY>=0&&(D.y=!0,t.translationY=0),(0,r(d[1]).applyStyle)(o,t);var v='x'===l?D.x:('y'===l||D.x)&&D.y;v&&(t.translationX=p*y.width,t.translationY=_*y.height,(0,r(d[1]).applyStyleForBelowTopScreen)(o,t)),u(w,v,o,t,x)};return w}var R=function(){var n={x:s(h,f.x,S.x),y:s(h,f.y,S.y)};t.translationX=T.x+p*f.x*c(n.x),t.translationY=T.y+_*f.y*c(n.y),p>0?t.translationX>=y.width&&(D.x=!0,t.translationX=y.width):t.translationX<=-y.width&&(D.x=!0,t.translationX=-y.width),_>0?t.translationY>=y.height&&(D.y=!0,t.translationY=y.height):t.translationY<=-y.height&&(D.y=!0,t.translationY=-y.height),(0,r(d[1]).applyStyle)(o,t),u(R,D.x||D.y,o,t,x)};return R};return t.__closure={BASE_VELOCITY:n,ADDITIONAL_VELOCITY_FACTOR_X:400,ADDITIONAL_VELOCITY_FACTOR_Y:500,ADDITIONAL_VELOCITY_FACTOR_XY:600,applyStyleForBelowTopScreen:r(d[1]).applyStyleForBelowTopScreen,computeEasingProgress:s,easing:c,applyStyle:r(d[1]).applyStyle,maybeScheduleNextFrame:u},t.__workletHash=0xaf528a2c761,t.__initData=x,t})()}),436,[437,435]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.RNScreensTurboModule=void 0;var n={code:"function reactNativeReanimated_RNScreensTurboModuleTs1(){const{logger,defaultReturnValue}=this.__closure;logger.warn('RNScreensTurboModule has not been found. Check that you have installed `react-native-screens@3.30.0` or newer in your project and rebuilt your app.');return defaultReturnValue;}"};function t(t){return(o=function(){return r(d[0]).logger.warn('RNScreensTurboModule has not been found. Check that you have installed `react-native-screens@3.30.0` or newer in your project and rebuilt your app.'),t}).__closure={logger:r(d[0]).logger,defaultReturnValue:t},o.__workletHash=5026965592223,o.__initData=n,o;var o}e.RNScreensTurboModule=g.RNScreensTurboModule||{startTransition:t({topScreenId:-1,belowTopScreenId:-1,canStartTransition:!1}),updateTransition:t(),finishTransition:t()}}),437,[250]); +__d((function(g,r,_i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.withReanimatedTimer=e.setUpTests=e.getAnimatedStyle=e.advanceAnimationByTime=e.advanceAnimationByFrame=void 0;var n=t(r(d[1])),i={fps:60},s=function(t){return!t||0===Object.keys(t).length},o=function(t){return void 0===t?{}:Object.fromEntries(Object.entries(t).map((function(t){var i=(0,n.default)(t,2),s=i[0],o=i[1];return[s,o._isReanimatedSharedValue?o.value:o]})))},u=function(t){var n,i=null==(n=t.props.jestAnimatedProps)?void 0:n.value;return i?Object.assign({},i):{}},c=function(t){var n,i=t.props.style,u={};Array.isArray(i)&&i.forEach((function(t){u=Object.assign({},u,t)}));var c=t.props.jestInlineStyle,f=null==(n=t.props.jestAnimatedStyle)?void 0:n.value;if(Array.isArray(c)){for(var l of c)if(!('jestAnimatedValues'in l)){var p=o(l);u=Object.assign({},u,p)}return u=Object.assign({},u,f)}var v=o(c);return u=s(f)?Object.assign({},v):Object.assign({},f)},f=function(t,n){if(Array.isArray(n)){if(!Array.isArray(t)||n.length!==t.length)return!1;for(var i=0;i2&&void 0!==arguments[2]&&arguments[2]),s=i.isEqual,o=i.diffs;if(s)return{message:function(){return'ok'},pass:!0};var u=JSON.stringify(t),c=JSON.stringify(n),f=o.map((function(t){return`- '${t.property}' should be ${JSON.stringify(t.expect)}, but is ${JSON.stringify(t.current)}`})).join('\n');return{message:function(){return`Expected: ${c}\nReceived: ${u}\n\nDifferences:\n${f}`},pass:!1}},v=function(t,n){if(t.props.jestAnimatedProps&&0===Object.keys(t.props.jestAnimatedProps.value).length)return{message:function(){return"Component doesn't have props."},pass:!1};var i=u(t);return p(i,n)},y=function(t,n,i){if(!t.props.style)return{message:function(){return"Component doesn't have a style."},pass:!1};var s=i.shouldMatchAllProps,o=c(t);return p(o,n,s)},h=Math.round(1e3/i.fps),j=(e.withReanimatedTimer=function(t){console.warn('This method is deprecated, you should define your own before and after test hooks to enable jest.useFakeTimers(). Check out the documentation for details on testing'),jest.useFakeTimers(),t(),jest.runOnlyPendingTimers(),jest.useRealTimers()},e.advanceAnimationByTime=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:h;console.warn('This method is deprecated, use jest.advanceTimersByTime directly'),jest.advanceTimersByTime(t),jest.runOnlyPendingTimers()},e.advanceAnimationByFrame=function(t){console.warn('This method is deprecated, use jest.advanceTimersByTime directly'),jest.advanceTimersByTime(t*h),jest.runOnlyPendingTimers()},(0,r(d[2]).isJest)()?r:function(){throw new(r(d[3]).ReanimatedError)('`setUpTests` is available only in Jest environment.')});e.setUpTests=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=g.expect;if(void 0===n){var s=j('expect');if('object'==typeof(n=s))n=j('@jest/globals').expect;void 0!==n&&void 0!==n.extend||(n=s.default)}var o=Object.assign({},i,t);h=Math.round(1e3/o.fps),n.extend({toHaveAnimatedProps:function(t,n){return v(t,n)}}),n.extend({toHaveAnimatedStyle:function(t,n){return y(t,n,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{})}})},e.getAnimatedStyle=function(t){return c(t)}}),438,[1,38,249,256]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.createAnimatedPropAdapter=function(t,n){var o={};return null==n||n.forEach((function(t){o[t]=!0})),(0,r(d[0]).addWhitelistedNativeProps)(o),t}}),439,[370]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"dispatchCommand",{enumerable:!0,get:function(){return r(d[0]).dispatchCommand}}),Object.defineProperty(e,"getRelativeCoords",{enumerable:!0,get:function(){return r(d[1]).getRelativeCoords}}),Object.defineProperty(e,"measure",{enumerable:!0,get:function(){return r(d[2]).measure}}),Object.defineProperty(e,"scrollTo",{enumerable:!0,get:function(){return r(d[3]).scrollTo}}),Object.defineProperty(e,"setGestureState",{enumerable:!0,get:function(){return r(d[4]).setGestureState}}),Object.defineProperty(e,"setNativeProps",{enumerable:!0,get:function(){return r(d[5]).setNativeProps}})}),440,[441,442,443,444,445,446]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.dispatchCommand=void 0;var n={code:"function dispatchCommandFabric_reactNativeReanimated_dispatchCommandTs1(animatedRef,commandName,args=[]){if(!_WORKLET){return;}const shadowNodeWrapper=animatedRef();global._dispatchCommandFabric(shadowNodeWrapper,commandName,args);}"},t=(function(){var t=function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(_WORKLET){var s=n();g._dispatchCommandFabric(s,t,o)}};return t.__closure={},t.__workletHash=7855081037929,t.__initData=n,t})(),o={code:"function dispatchCommandPaper_reactNativeReanimated_dispatchCommandTs2(animatedRef,commandName,args=[]){if(!_WORKLET){return;}const viewTag=animatedRef();global._dispatchCommandPaper(viewTag,commandName,args);}"},s=(function(){var n=function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(_WORKLET){var s=n();g._dispatchCommandPaper(s,t,o)}};return n.__closure={},n.__workletHash=993320024330,n.__initData=o,n})();(0,r(d[1]).shouldBeUseWeb)()?(0,r(d[1]).isJest)()?e.dispatchCommand=function(){r(d[0]).logger.warn('dispatchCommand() is not supported with Jest.')}:(0,r(d[1]).isChromeDebugger)()?e.dispatchCommand=function(){r(d[0]).logger.warn('dispatchCommand() is not supported with Chrome Debugger.')}:e.dispatchCommand=function(){r(d[0]).logger.warn('dispatchCommand() is not supported on this configuration.')}:(0,r(d[1]).isFabric)()?e.dispatchCommand=t:e.dispatchCommand=s}),441,[250,249]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.getRelativeCoords=void 0;var t={code:"function getRelativeCoords_reactNativeReanimated_getRelativeCoordsTs1(animatedRef,absoluteX,absoluteY){const{measure}=this.__closure;const parentCoords=measure(animatedRef);if(parentCoords===null){return null;}return{x:absoluteX-parentCoords.pageX,y:absoluteY-parentCoords.pageY};}"};e.getRelativeCoords=(function(){var o=function(t,o,n){var s=(0,r(d[0]).measure)(t);return null===s?null:{x:o-s.pageX,y:n-s.pageY}};return o.__closure={measure:r(d[0]).measure},o.__workletHash=1583333301789,o.__initData=t,o})()}),442,[443]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.measure=void 0;var n={code:"function measureFabric_reactNativeReanimated_measureTs1(animatedRef){const{logger}=this.__closure;if(!_WORKLET){return null;}const viewTag=animatedRef();if(viewTag===-1){logger.warn(\"The view with tag \"+viewTag+\" is not a valid argument for measure(). This may be because the view is not currently rendered, which may not be a bug (e.g. an off-screen FlatList item).\");return null;}const measured=global._measureFabric(viewTag);if(measured===null){logger.warn(\"The view has some undefined, not-yet-computed or meaningless value of `LayoutMetrics` type. This may be because the view is not currently rendered, which may not be a bug (e.g. an off-screen FlatList item).\");return null;}else if(measured.x===-1234567){logger.warn(\"The view returned an invalid measurement response. Please make sure the view is currently rendered.\");return null;}else if(isNaN(measured.x)){logger.warn(\"The view gets view-flattened on Android. To disable view-flattening, set `collapsable={false}` on this component.\");return null;}else{return measured;}}"},t=(function(){var t=function(n){if(!_WORKLET)return null;var t=n();if(-1===t)return r(d[0]).logger.warn(`The view with tag ${t} is not a valid argument for measure(). This may be because the view is not currently rendered, which may not be a bug (e.g. an off-screen FlatList item).`),null;var s=g._measureFabric(t);return null===s?(r(d[0]).logger.warn("The view has some undefined, not-yet-computed or meaningless value of `LayoutMetrics` type. This may be because the view is not currently rendered, which may not be a bug (e.g. an off-screen FlatList item)."),null):-1234567===s.x?(r(d[0]).logger.warn("The view returned an invalid measurement response. Please make sure the view is currently rendered."),null):isNaN(s.x)?(r(d[0]).logger.warn("The view gets view-flattened on Android. To disable view-flattening, set `collapsable={false}` on this component."),null):s};return t.__closure={logger:r(d[0]).logger},t.__workletHash=6681128993819,t.__initData=n,t})(),s={code:"function measurePaper_reactNativeReanimated_measureTs2(animatedRef){const{logger}=this.__closure;if(!_WORKLET){return null;}const viewTag=animatedRef();if(viewTag===-1){logger.warn(\"The view with tag \"+viewTag+\" is not a valid argument for measure(). This may be because the view is not currently rendered, which may not be a bug (e.g. an off-screen FlatList item).\");return null;}const measured=global._measurePaper(viewTag);if(measured===null){logger.warn(\"The view with tag \"+viewTag+\" has some undefined, not-yet-computed or meaningless value of `LayoutMetrics` type. This may be because the view is not currently rendered, which may not be a bug (e.g. an off-screen FlatList item).\");return null;}else if(measured.x===-1234567){logger.warn(\"The view with tag \"+viewTag+\" returned an invalid measurement response. Please make sure the view is currently rendered.\");return null;}else if(isNaN(measured.x)){logger.warn(\"The view with tag \"+viewTag+\" gets view-flattened on Android. To disable view-flattening, set `collapsable={false}` on this component.\");return null;}else{return measured;}}"},l=(function(){var n=function(n){if(!_WORKLET)return null;var t=n();if(-1===t)return r(d[0]).logger.warn(`The view with tag ${t} is not a valid argument for measure(). This may be because the view is not currently rendered, which may not be a bug (e.g. an off-screen FlatList item).`),null;var s=g._measurePaper(t);return null===s?(r(d[0]).logger.warn(`The view with tag ${t} has some undefined, not-yet-computed or meaningless value of \`LayoutMetrics\` type. This may be because the view is not currently rendered, which may not be a bug (e.g. an off-screen FlatList item).`),null):-1234567===s.x?(r(d[0]).logger.warn(`The view with tag ${t} returned an invalid measurement response. Please make sure the view is currently rendered.`),null):isNaN(s.x)?(r(d[0]).logger.warn(`The view with tag ${t} gets view-flattened on Android. To disable view-flattening, set \`collapsable={false}\` on this component.`),null):s};return n.__closure={logger:r(d[0]).logger},n.__workletHash=0x94781795177,n.__initData=s,n})();(0,r(d[1]).shouldBeUseWeb)()?(0,r(d[1]).isJest)()?e.measure=function(){return r(d[0]).logger.warn('measure() cannot be used with Jest.'),null}:(0,r(d[1]).isChromeDebugger)()?e.measure=function(){return r(d[0]).logger.warn('measure() cannot be used with Chrome Debugger.'),null}:e.measure=function(){return r(d[0]).logger.warn('measure() is not supported on this configuration.'),null}:(0,r(d[1]).isFabric)()?e.measure=t:e.measure=l}),443,[250,249]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.scrollTo=void 0;var o={code:"function scrollToFabric_reactNativeReanimated_scrollToTs1(animatedRef,x,y,animated){const{dispatchCommand}=this.__closure;dispatchCommand(animatedRef,'scrollTo',[x,y,animated]);}"},t=(function(){var t=function(o,t,n,s){(0,r(d[0]).dispatchCommand)(o,'scrollTo',[t,n,s])};return t.__closure={dispatchCommand:r(d[0]).dispatchCommand},t.__workletHash=0xd396154f43b,t.__initData=o,t})(),n={code:"function scrollToPaper_reactNativeReanimated_scrollToTs2(animatedRef,x,y,animated){if(!_WORKLET){return;}const viewTag=animatedRef();global._scrollToPaper(viewTag,x,y,animated);}"},s=(function(){var o=function(o,t,n,s){if(_WORKLET){var l=o();g._scrollToPaper(l,t,n,s)}};return o.__closure={},o.__workletHash=6572018098672,o.__initData=n,o})();(0,r(d[2]).shouldBeUseWeb)()?(0,r(d[2]).isJest)()?e.scrollTo=function(){r(d[1]).logger.warn('scrollTo() is not supported with Jest.')}:(0,r(d[2]).isChromeDebugger)()?e.scrollTo=function(){r(d[1]).logger.warn('scrollTo() is not supported with Chrome Debugger.')}:e.scrollTo=function(){r(d[1]).logger.warn('scrollTo() is not supported on this configuration.')}:(0,r(d[2]).isFabric)()?e.scrollTo=t:e.scrollTo=s}),444,[441,250,249]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.setGestureState=void 0;var t={code:"function setGestureStateNative_reactNativeReanimated_setGestureStateTs1(handlerTag,newState){const{logger}=this.__closure;if(!_WORKLET){logger.warn('You can not use setGestureState in non-worklet function.');return;}global._setGestureState(handlerTag,newState);}"},n=(function(){var n=function(t,n){_WORKLET?g._setGestureState(t,n):r(d[0]).logger.warn('You can not use setGestureState in non-worklet function.')};return n.__closure={logger:r(d[0]).logger},n.__workletHash=9806104604520,n.__initData=t,n})();(0,r(d[1]).shouldBeUseWeb)()?(0,r(d[1]).isJest)()?e.setGestureState=function(){r(d[0]).logger.warn('setGestureState() cannot be used with Jest.')}:(0,r(d[1]).isChromeDebugger)()?e.setGestureState=function(){r(d[0]).logger.warn('setGestureState() cannot be used with Chrome Debugger.')}:e.setGestureState=function(){r(d[0]).logger.warn('setGestureState() is not supported on this configuration.')}:e.setGestureState=n}),445,[250,249]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.setNativeProps=void 0;var o={code:"function setNativePropsFabric_reactNativeReanimated_setNativePropsTs1(animatedRef,updates){const{logger,processColorsInProps}=this.__closure;if(!_WORKLET){logger.warn('setNativeProps() can only be used on the UI runtime.');return;}const shadowNodeWrapper=animatedRef();processColorsInProps(updates);global._updatePropsFabric([{shadowNodeWrapper:shadowNodeWrapper,updates:updates}]);}"},s=(function(){var s=function(o,s){if(_WORKLET){var t=o();(0,r(d[1]).processColorsInProps)(s),g._updatePropsFabric([{shadowNodeWrapper:t,updates:s}])}else r(d[0]).logger.warn('setNativeProps() can only be used on the UI runtime.')};return s.__closure={logger:r(d[0]).logger,processColorsInProps:r(d[1]).processColorsInProps},s.__workletHash=17594989727481,s.__initData=o,s})(),t={code:"function setNativePropsPaper_reactNativeReanimated_setNativePropsTs2(animatedRef,updates){const{logger,processColorsInProps}=this.__closure;if(!_WORKLET){logger.warn('setNativeProps() can only be used on the UI runtime.');return;}const tag=animatedRef();const name=animatedRef.viewName.value;processColorsInProps(updates);global._updatePropsPaper([{tag:tag,name:name,updates:updates}]);}"},n=(function(){var o=function(o,s){if(_WORKLET){var t=o(),n=o.viewName.value;(0,r(d[1]).processColorsInProps)(s),g._updatePropsPaper([{tag:t,name:n,updates:s}])}else r(d[0]).logger.warn('setNativeProps() can only be used on the UI runtime.')};return o.__closure={logger:r(d[0]).logger,processColorsInProps:r(d[1]).processColorsInProps},o.__workletHash=0x927beb26c80,o.__initData=t,o})();(0,r(d[2]).shouldBeUseWeb)()?(0,r(d[2]).isJest)()?e.setNativeProps=function(){r(d[0]).logger.warn('setNativeProps() is not supported with Jest.')}:(0,r(d[2]).isChromeDebugger)()?e.setNativeProps=function(){r(d[0]).logger.warn('setNativeProps() is not supported with Chrome Debugger.')}:e.setNativeProps=function(){r(d[0]).logger.warn('setNativeProps() is not supported on this configuration.')}:(0,r(d[2]).isFabric)()?e.setNativeProps=s:e.setNativeProps=n}),446,[250,311,249]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.getUseOfValueInStyleWarning=function(){return"It looks like you might be using shared value's .value inside reanimated inline style. If you want a component to update when shared value changes you should use the shared value directly instead of its current state represented by `.value`. See documentation here: https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/glossary/#animations-in-inline-styling"}}),447,[]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0})}),448,[]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"FlatList",{enumerable:!0,get:function(){return r(d[0]).ReanimatedFlatList}}),Object.defineProperty(e,"Image",{enumerable:!0,get:function(){return r(d[1]).AnimatedImage}}),Object.defineProperty(e,"ScrollView",{enumerable:!0,get:function(){return r(d[2]).AnimatedScrollView}}),Object.defineProperty(e,"Text",{enumerable:!0,get:function(){return r(d[3]).AnimatedText}}),Object.defineProperty(e,"View",{enumerable:!0,get:function(){return r(d[4]).AnimatedView}}),Object.defineProperty(e,"addWhitelistedNativeProps",{enumerable:!0,get:function(){return r(d[5]).addWhitelistedNativeProps}}),Object.defineProperty(e,"addWhitelistedUIProps",{enumerable:!0,get:function(){return r(d[5]).addWhitelistedUIProps}}),Object.defineProperty(e,"createAnimatedComponent",{enumerable:!0,get:function(){return r(d[6]).createAnimatedComponent}})}),449,[450,452,453,454,451,370,371]); +__d((function(g,_r,_i,_a,m,_e,d){'use strict';var t=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.ReanimatedFlatList=void 0;var e=t(_r(d[1])),n=(function(t,e){if(!e&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var n=o(e);if(n&&n.has(t))return n.get(t);var r={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in t)if("default"!==a&&{}.hasOwnProperty.call(t,a)){var u=i?Object.getOwnPropertyDescriptor(t,a):null;u&&(u.get||u.set)?Object.defineProperty(r,a,u):r[a]=t[a]}return r.default=t,n&&n.set(t,r),r})(_r(d[2])),r=_r(d[3]),i=["itemLayoutAnimation","skipEnteringExitingAnimations"];function o(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,n=new WeakMap;return(o=function(t){return t?n:e})(t)}var a=(0,_r(d[4]).createAnimatedComponent)(r.FlatList),u=function(t){return function(e){return(0,_r(d[5]).jsx)(_r(d[6]).AnimatedView,{layout:null==t?void 0:t.current,onLayout:e.onLayout,style:e.style,children:e.children})}};_e.ReanimatedFlatList=(0,_r(d[8]).componentWithRef)((function(t,r){var o=t.itemLayoutAnimation,l=t.skipEnteringExitingAnimations,f=(0,e.default)(t,i);'scrollEventThrottle'in f||(f.scrollEventThrottle=1);var c=(0,n.useRef)(o);c.current=o;var s=n.default.useMemo((function(){return u(c)}),[c]),p=(0,_r(d[5]).jsx)(a,Object.assign({ref:r},f,{CellRendererComponent:s}));return void 0===l?p:(0,_r(d[5]).jsx)(_r(d[7]).LayoutAnimationConfig,{skipEntering:!0,skipExiting:!0,children:p})}))}),450,[1,134,178,2,371,223,451,367,409]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.AnimatedView=void 0;var t=r(d[0]);e.AnimatedView=(0,r(d[1]).createAnimatedComponent)(t.View)}),451,[2,371]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.AnimatedImage=void 0;var t=r(d[0]);e.AnimatedImage=(0,r(d[1]).createAnimatedComponent)(t.Image)}),452,[2,371]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.AnimatedScrollView=void 0;var l=t(r(d[1])),n=(t(r(d[2])),r(d[3])),o=["scrollViewOffset"],c=(0,r(d[4]).createAnimatedComponent)(n.ScrollView);e.AnimatedScrollView=(0,r(d[5]).componentWithRef)((function(t,n){var s=t.scrollViewOffset,f=(0,l.default)(t,o),u=null===n?(0,r(d[6]).useAnimatedRef)():n;return s&&(0,r(d[6]).useScrollViewOffset)(u,s),'scrollEventThrottle'in f||(f.scrollEventThrottle=1),(0,r(d[7]).jsx)(c,Object.assign({ref:u},f))}))}),453,[1,134,178,2,371,409,410,223]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.AnimatedText=void 0;var t=r(d[0]);e.AnimatedText=(0,r(d[1]).createAnimatedComponent)(t.Text)}),454,[2,371]); +__d((function(g,r,_i,_a,m,e,_d){"use strict";var t=r(_d[0]),a=r(_d[1]),n=r(_d[2]),o=r(_d[3]);Object.defineProperty(e,"__esModule",{value:!0}),e.defaultValues=e.timeToMS=void 0,e.resolveValue=u,e.resolveAnimation=function(a,o,i,u,s,l,f){var p=t(i),v=p[0],h=p.slice(1),b=r(_d[9]),y=b.withDelay,w=b.withTiming,x=b.Easing,S=0;return[c(a,o,u,v.value)].concat(n(h.map((function(t,n){var i=Array.isArray(f)?f[n]:f,p=t.progress-S,v=w(c(a,o,u,t.value),{duration:l*p,easing:d(i,x)});return 1===n&&(v=y(s,v)),S+=p,v}))))},e.getEasing=d,e.setDeep=function(t,n,o){for(var i=n[n.length-1],u=0;u5&&void 0!==arguments[5]&&arguments[5];try{switch(typeof v){case"undefined":return;case"boolean":case"number":case"function":return v;case"string":return v.endsWith("px")?parseInt(v.slice(0,-2),10):v}if((0,r(_d[5]).isDescriptorArray)(v))return v=v.flatMap((function(a){var n=u(t,c,d,a,y);return void 0===n?[]:n})),w&&!Array.isArray(v)?[v]:v;var S=o(v,3),R=S[1],A=S[2],P=void 0===A?[]:A,T=function(t){if(void 0!==t)return w&&!Array.isArray(t)?[t]:t};switch(R){case"@textShadow":return(0,r(_d[6]).textShadow)(s,t,c,d,P,y);case"var":var W=s(t,c,d,P[0],y);return"string"==typeof W&&(W=l(t,c,d,W,y)),void 0===W&&P[1]&&(W=u(t,c,d,P[1],y)),T(W);case"calc":var k;return T(null==(k=x(t,c,d,P,y))?void 0:k.value);case"max":var M,V=[];for(var j of P){var B=x(t,c,d,[j],y);B&&(M||(M=null==B?void 0:B.mode),B.mode===M&&V.push(B.raw))}var $=Math.max.apply(Math,V);return T("percentage"===M?`${$}%`:$);case"min":var z,C=[];for(var X of P){var Y=x(t,c,d,[X],y);Y&&(z||(z=null==Y?void 0:Y.mode),Y.mode===z&&C.push(Y.raw))}var L=Math.min.apply(Math,C);return T("percentage"===z?`${L}%`:L);case"clamp":var O=x(t,c,d,P[0],y),E=x(t,c,d,P[1],y),F=x(t,c,d,P[2],y);if(!O||!E||!F)return;if(O.mode!==E.mode&&F.mode!==E.mode)return;var N=Math.max(O.raw,Math.min(E.raw,F.raw));return T("percentage"===E.mode?`${N}%`:N);case"vh":var D=s(t,c,d,P[0],y),H=r(_d[7]).vh.get(d.effect)/100;if("number"==typeof D)return T(f(H*D));case"vw":var I=s(t,c,d,P[0],y),_=r(_d[7]).vw.get(d.effect)/100;if("number"==typeof I)return T(f(_*I));case"em":var q,K=s(t,c,d,P[0],y),Z=null!=(q=null==y?void 0:y.fontSize)?q:r(_d[7]).rem.get(d.effect);if("number"==typeof K)return T(f(Z*K));case"rem":var G=s(t,c,d,P[0],y),U=r(_d[7]).rem.get(d.effect);if("number"==typeof G)return T(f(U*G));case"rnh":var J,Q=s(t,c,d,P[0],y),ee=null!=(J=null==y?void 0:y.height)?J:b(t,c,d);if("number"==typeof Q)return T(f(ee*Q));case"rnw":var re,te=s(t,c,d,P[0],y),ae=null!=(re=null==y?void 0:y.width)?re:h(t,c,d);if("number"==typeof te)return T(f(ae*te));case"hwb":return T(p(s(t,c,d,P,y).flat(10),{3:"hwb"}));case"rgb":case"rgba":return T(p(s(t,c,d,P,y).flat(10),{3:"rgb",4:"rgba"}));case"hsl":case"hsla":return T(p(s(t,c,d,P,y).flat(10),{3:"hsl",4:"hsla"}));case"hairlineWidth":return T(i.StyleSheet.hairlineWidth);case"platformColor":return T(i.PlatformColor.apply(void 0,n(P)));case"platformSelect":if(!(0,r(_d[5]).isDescriptorArray)(P))return;return T(s(t,c,d,i.Platform.select(Object.fromEntries(P)),y));case"getPixelSizeForLayoutSize":var ne=s(t,c,d,P[0],y);if("number"==typeof ne)return T(i.PixelRatio.getPixelSizeForLayoutSize(ne));case"fontScale":var oe=s(t,c,d,P[0],y);if("number"==typeof oe)return T(i.PixelRatio.getFontScale()*oe);case"pixelScale":var ie=s(t,c,d,P[0],y);if("number"==typeof ie)return T(i.PixelRatio.get()*ie);case"pixelScaleSelect":var ue,se=Object.fromEntries(P);return T(s(t,c,d,null!=(ue=se[i.PixelRatio.get()])?ue:se.default,y));case"fontScaleSelect":var le,ce=Object.fromEntries(P);return T(s(t,c,d,null!=(le=ce[i.PixelRatio.getFontScale()])?le:ce.default,y));case"roundToNearestPixel":var fe=s(t,c,d,P[0],y);if("number"==typeof fe)return i.PixelRatio.roundToNearestPixel(fe);case"translateX":case"translateY":case"scale":case"scaleX":case"scaleY":case"rotate":case"rotateX":case"rotateY":case"rotateZ":case"skewX":case"skewY":case"perspective":case"matrix":case"transformOrigin":return T(a({},R,s(t,c,d,P[0],y)));case"translate":case"scale":return[a({},`${R}X`,s(t,c,d,P[0],y)),a({},`${R}Y`,s(t,c,d,P[1],y))];default:if("name"in v&&"arguments"in v){var de=s(t,c,d,P,y).join(",");return T(`${v.name}(${de})`)}return T(v)}}catch(t){return void console.error(t)}}function s(t,a,n,o,i){if("object"!=typeof o||!Array.isArray(o))return o;if((0,r(_d[5]).isDescriptorArray)(o)){var l=[];for(var c of o)void 0!==(c=s(t,a,n,c,i))&&l.push(c);return l}return u(t,a,n,o,i)}function l(t,a,n,o,i){if(o){var s=void 0;return null!=s||(s=(0,r(_d[8]).getVariable)(o,t.variables)),null!=s||(s=(0,r(_d[8]).getUniversalVariable)(o,n.effect)),void 0===s&&("object"==typeof(s=(0,r(_d[8]).getVariable)(o,a.variables,n.effect))&&"get"in s?s=s.get(n.effect):void 0!==s&&n.guards.push((function(t){return(0,r(_d[8]).getVariable)(o,t.variables,n.effect)!==s}))),u(t,a,n,s,i)}}function c(t,a,n,o){if("!INHERIT!"===o){var i=S(t,[n]),u=i.value,l=i.defaultValue;if(void 0===(o=null!=u?u:l)){var c=e.defaultValues[n];return"function"==typeof c?c(t.styleTracking.effect):c}return o}return s(t,a,t.styleTracking,o,t.props)}function f(t){return Math.round(100*(t+Number.EPSILON))/100}function d(t,a){switch(t.type){case"ease":return a.ease;case"ease-in":return a.in(a.quad);case"ease-out":return a.out(a.quad);case"ease-in-out":return a.inOut(a.quad);case"linear":default:return a.linear;case"cubic-bezier":return a.bezier(t.x1,t.y1,t.x2,t.y2)}}function p(t,a){return a[t.length]||a[(t=t.flatMap((function(t){return"string"==typeof t?t.split(/[,\s\/]/g).filter(Boolean):t}))).length]?`${a[t.length]}(${t.join(", ")})`:void 0}function v(t,a,n){var o;return null!=(o=a.sharedState).layout||(o.layout=(0,r(_d[10]).observable)([0,0])),a.sharedState.layout.get(n.effect)}function h(t,a,n){return v(0,a,n)[0]}function b(t,a,n){return v(0,a,n)[1]}e.timeToMS=function(t){return"milliseconds"===t.type?t.value:1e3*t.value},e.defaultValues={backgroundColor:"transparent",borderBottomColor:"transparent",borderBottomLeftRadius:0,borderBottomRightRadius:0,borderBottomWidth:0,borderColor:"transparent",borderLeftColor:"transparent",borderLeftWidth:0,borderRadius:0,borderRightColor:"transparent",borderRightWidth:0,borderTopColor:"transparent",borderTopWidth:0,borderWidth:0,bottom:0,color:function(t){return"dark"===r(_d[11]).systemColorScheme.get(t)?"white":"black"},flex:1,flexBasis:1,flexGrow:1,flexShrink:0,fontSize:14,fontWeight:"400",gap:0,left:0,lineHeight:14,margin:0,marginBottom:0,marginLeft:0,marginRight:0,marginTop:0,maxHeight:99999,maxWidth:99999,minHeight:0,minWidth:0,opacity:1,padding:0,paddingBottom:0,paddingLeft:0,paddingRight:0,paddingTop:0,perspective:1,right:0,rotate:"0deg",rotateX:"0deg",rotateY:"0deg",rotateZ:"0deg",scale:1,scaleX:1,scaleY:1,skewX:"0deg",skewY:"0deg",textShadowRadius:0,top:0,translateX:0,translateY:0,zIndex:0};var y={"+":1,"-":1,"*":2,"/":2};function w(t,a,n,o){switch(t){case"+":return o.push(n+a);case"-":return o.push(n-a);case"*":return o.push(n*a);case"/":return o.push(n/a)}}function x(t,a,n,o,i){var s,l=[],c=[];for(var d of o=Array.isArray(o)?(0,r(_d[5]).isDescriptorFunction)(o)?[o]:o:[o])switch(typeof d){case"undefined":return;case"number":if(s||(s="number"),"number"!==s)return;l.push(d);continue;case"object":var p=u(t,a,n,d,i);switch(typeof p){case"number":if(s||(s="number"),"number"!==s)return;l.push(p);continue;case"string":if(!p.endsWith("%"))return;if(s||(s="percentage"),"percentage"!==s)return;l.push(Number.parseFloat(p.slice(0,-1)));continue;default:return}case"string":if("("===d)c.push(d);else if(")"===d){for(;c.length&&"("!==c[c.length-1];)w(c.pop(),l.pop(),l.pop(),l);c.pop()}else if(d.endsWith("%")){if(s||(s="percentage"),"percentage"!==s)return;l.push(Number.parseFloat(d.slice(0,-1)))}else{for(;c.length&&y[c[c.length-1]]>=y[d];)w(c.pop(),l.pop(),l.pop(),l);c.push(d)}}for(;c.length;)w(c.pop(),l.pop(),l.pop(),l);if(s){var v=f(l[0]);return{mode:s,raw:v,value:"percentage"===s?`${v}%`:v}}}function S(t,a){a=[].concat(n(t.config.target),n(a));for(var o="",i=t.props,u=0;u2&&void 0!==arguments[2]?arguments[2]:{width:r(d[1]).vw,height:r(d[1]).vh},s="print"!==n.mediaType&&v(n.condition,u,t);return"not"===n.qualifier?!s:s}function s(t,n,u){var s=!0;return n.hover&&t.hover&&s&&(s=t.hover.get(null==u?void 0:u.effect)),n.active&&t.active&&s&&(s=t.active.get(null==u?void 0:u.effect)),n.focus&&t.focus&&s&&(s=t.focus.get(null==u?void 0:u.effect)),s}function o(t,n,u){return!u||0===u.length||u.every((function(u){var s=l(u,t),o=c(u,s,n);return n.guards.push((function(t){var n=l(u,t),f=c(u,n);return s!==n||o!==f})),o}))}function l(t,n){return t.name?n.containers[t.name]:n.containers[r(d[2]).DEFAULT_CONTAINER_NAME]}function c(t,n,u){var o;if(!n)return!1;if(t.pseudoClasses&&!s(n,t.pseudoClasses,u))return!1;if(t.attrs&&!f(n.originalProps,t.attrs))return!1;if(!t.condition)return!0;var l=null==(o=n.layout)?void 0:o.get(null==u?void 0:u.effect);return!!l&&v(t.condition,{width:l[0],height:l[1]},u)}function f(t,n){for(var u of n){var s;if(!C("data-attribute"===u.type?null==t||null==(s=t.dataSet)?void 0:s[u.name]:null==t?void 0:t[u.name],u))return!1}return!0}function v(t,n,u){return!t||("operation"===t.type?"and"===t.operator?t.conditions.every((function(t){return v(t,n,u)})):t.conditions.some((function(t){return v(t,n,u)})):"not"===t.type?!v(t.value,n,u):"style"!==t.type&&h(t.value,n,u))}function h(t,n,u){switch(t.type){case"plain":return p(t,n,u);case"range":return w(t,n,u);case"boolean":return q(t,u);case"interval":return!1}return!1}function p(n,u,s){var o=y(n.value,s);if(null===o)return!1;switch(n.name){case"resolution":return o===t.PixelRatio.get();case"display-mode":return"native"===o||t.Platform.OS===o;case"prefers-color-scheme":return r(d[3]).colorScheme.get(null==s?void 0:s.effect)===o;case"width":return b("equal",u.width,o,s);case"min-width":return b("greater-than-equal",u.width,o,s);case"max-width":return b("less-than-equal",u.width,o,s);case"height":return b("equal",u.height,o,s);case"min-height":return b("greater-than-equal",u.height,o,s);case"max-height":return b("less-than-equal",u.height,o,s);case"orientation":switch(o){case"landscape":return b("less-than",u.height,u.width,s);case"portrait":return b("greater-than-equal",u.height,u.width,s)}default:return!1}}function y(t,n){switch(t.type){case"number":return t.value;case"length":if("value"!==t.value.type)return null;var u=t.value.value;switch(u.unit){case"px":return u.value;case"rem":return u.value*r(d[1]).rem.get(null==n?void 0:n.effect);default:return null}case"ident":return t.value;case"resolution":switch(t.value.type){case"dpi":return t.value.value/160;case"dpcm":return t.value.value/406.4;case"dppx":return t.value.value;default:t.value}case"boolean":case"integer":case"ratio":case"env":return null}}function w(n,u,s){var o=y(n.value,s);if(null===o||"number"!=typeof o)return!1;switch(n.name){case"height":return b(n.operator,u.height,o,s);case"width":return b(n.operator,u.width,o,s);case"resolution":return b(n.operator,t.PixelRatio.get(),o);default:return!1}}function b(t,n,u,s){if(n=S(n,null==s?void 0:s.effect),"number"!=typeof(u=S(u,null==s?void 0:s.effect)))return!1;switch(t){case"equal":return n===u;case"greater-than":return n>u;case"greater-than-equal":return n>=u;case"less-than":case"less-than-equal":return n=0;n--)if(f[n]())return;u.exitApp()}));var u={exitApp:function(){t.default&&t.default.invokeDefaultBackPressHandler()},addEventListener:function(n,t){return-1===f.indexOf(t)&&f.push(t),{remove:function(){return u.removeEventListener(n,t)}}},removeEventListener:function(n,t){var i=f.indexOf(t);-1!==i&&f.splice(i,1)}};m.exports=u}),477,[1,478,22]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),478,[479]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=o?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(u,a,f):u[a]=e[a]}return u.default=e,n&&n.set(e,u),u})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.get('DeviceEventManager')}),479,[36]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.onCaughtError=function(n,o){var t;t=n instanceof Error?n:'string'==typeof n?new(r(d[0]).SyntheticError)(n):new(r(d[0]).SyntheticError)('Unspecified error');try{t.componentStack=o.componentStack,t.isComponentError=!0}catch(n){}(0,r(d[0]).handleException)(t,!1)},e.onRecoverableError=function(n,o){var t;t=n instanceof Error?n:'string'==typeof n?new(r(d[0]).SyntheticError)(n):new(r(d[0]).SyntheticError)('Unspecified error');try{t.componentStack=o.componentStack,t.isComponentError=!0}catch(n){}console.warn(t)},e.onUncaughtError=function(n,o){var t;t=n instanceof Error?n:'string'==typeof n?new(r(d[0]).SyntheticError)(n):new(r(d[0]).SyntheticError)('Unspecified error');try{t.componentStack=o.componentStack,t.isComponentError=!0}catch(n){}(0,r(d[0]).handleException)(t,!0)}}),480,[82]); +__d((function(g,_r,_i,_a,m,_e,d){'use strict';var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),a=e(_r(d[2])),r=e(_r(d[3])),n=e(_r(d[4])),i=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var a=l(t);if(a&&a.has(e))return a.get(e);var r={__proto__:null},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var o=n?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(r,i,o):r[i]=e[i]}return r.default=e,a&&a.set(e,r),r})(_r(d[5])),o=["animating","color","hidesWhenStopped","onLayout","size","style"];function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,a=new WeakMap;return(l=function(e){return e?a:t})(e)}var s='android'===r.default.OS?_r(d[6]):_r(d[7]).default,u=i.forwardRef((function(e,i){var l,u,c=e.animating,p=void 0===c||c,y=e.color,h=void 0===y?'ios'===r.default.OS?"#999999":null:y,v=e.hidesWhenStopped,O=void 0===v||v,j=e.onLayout,b=e.size,w=void 0===b?'small':b,_=e.style,S=(0,t.default)(e,o);switch(w){case'small':l=f.sizeSmall,u='small';break;case'large':l=f.sizeLarge,u='large';break;default:l={height:w,width:w}}var z=Object.assign({animating:p,color:h,hidesWhenStopped:O},S,{ref:i,style:l,size:u});return(0,_r(d[8]).jsx)(n.default,{onLayout:j,style:a.default.compose(f.container,_),children:'android'===r.default.OS?(0,_r(d[8]).jsx)(s,Object.assign({},z,{styleAttr:'Normal',indeterminate:!0})):(0,_r(d[8]).jsx)(s,Object.assign({},z))})}));u.displayName='ActivityIndicator';var f=a.default.create({container:{alignItems:'center',justifyContent:'center'},sizeSmall:{width:20,height:20},sizeLarge:{width:36,height:36}});_e.default=u}),481,[1,134,472,33,182,178,482,485,223]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]),n=t(r(d[1])),o=t(r(d[2])),f=["styleAttr","indeterminate","animating"],s=r(d[3]).forwardRef((function(t,s){var l=t.styleAttr,u=void 0===l?'Normal':l,v=t.indeterminate,c=void 0===v||v,y=t.animating,A=void 0===y||y,j=(0,n.default)(t,f);return(0,r(d[4]).jsx)(o.default,Object.assign({styleAttr:u,indeterminate:c,animating:A},j,{ref:s}))}));m.exports=s}),482,[1,134,483,178,223]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),483,[484]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;t(r(d[1]));var s=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'AndroidProgressBar',validAttributes:{styleAttr:!0,typeAttr:!0,indeterminate:!0,progress:!0,animating:!0,color:{process:r(d[2]).default},testID:!0}};e.default=r(d[3]).get('AndroidProgressBar',(function(){return s}))}),484,[1,463,188,185]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),485,[486]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;t(r(d[1]));var _=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RCTActivityIndicatorView',validAttributes:{hidesWhenStopped:!0,animating:!0,color:{process:r(d[2]).default},size:!0}};e.default=r(d[3]).get('RCTActivityIndicatorView',(function(){return _}))}),486,[1,463,188,185]); +__d((function(g,_r,_i,_a,m,_e,d){'use strict';var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),i=e(_r(d[2])),a=e(_r(d[3])),l=e(_r(d[4])),s=e(_r(d[5])),o=e(_r(d[6])),n=e(_r(d[7])),c=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var i=r(t);if(i&&i.has(e))return i.get(e);var a={__proto__:null},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&{}.hasOwnProperty.call(e,s)){var o=l?Object.getOwnPropertyDescriptor(e,s):null;o&&(o.get||o.set)?Object.defineProperty(a,s,o):a[s]=e[s]}return a.default=e,i&&i.set(e,a),a})(_r(d[8]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,i=new WeakMap;return(r=function(e){return e?i:t})(e)}var u='android'===a.default.OS?l.default:s.default,b=c.forwardRef((function(e,t){var l,s,c=e.accessibilityLabel,r=e.accessibilityState,b=e['aria-busy'],p=e['aria-checked'],y=e['aria-disabled'],v=e['aria-expanded'],h=e['aria-label'],x=e['aria-selected'],F=e.importantForAccessibility,O=e.color,D=e.onPress,j=e.touchSoundDisabled,w=e.title,A=e.hasTVPreferredFocus,P=e.nextFocusDown,_=e.nextFocusForward,k=e.nextFocusLeft,S=e.nextFocusRight,L=e.nextFocusUp,M=e.testID,R=e.accessible,C=e.accessibilityActions,W=e.accessibilityHint,T=e.accessibilityLanguage,U=e.onAccessibilityAction,B=[f.button],H=[f.text];O&&('ios'===a.default.OS?H.push({color:O}):B.push({backgroundColor:O}));var I={busy:null!=b?b:null==r?void 0:r.busy,checked:null!=p?p:null==r?void 0:r.checked,disabled:null!=y?y:null==r?void 0:r.disabled,expanded:null!=v?v:null==r?void 0:r.expanded,selected:null!=x?x:null==r?void 0:r.selected},V=null!=e.disabled?e.disabled:null==(l=I)?void 0:l.disabled;I=V!==(null==(s=I)?void 0:s.disabled)?Object.assign({},I,{disabled:V}):I,V&&(B.push(f.buttonDisabled),H.push(f.textDisabled)),(0,n.default)('string'==typeof w,'The title prop of a Button must be a string');var z='android'===a.default.OS?w.toUpperCase():w,N='no'===F?'no-hide-descendants':F;return(0,_r(d[9]).jsx)(u,{accessible:R,accessibilityActions:C,onAccessibilityAction:U,accessibilityLabel:h||c,accessibilityHint:W,accessibilityLanguage:T,accessibilityRole:"button",accessibilityState:I,importantForAccessibility:N,hasTVPreferredFocus:A,nextFocusDown:P,nextFocusForward:_,nextFocusLeft:k,nextFocusRight:S,nextFocusUp:L,testID:M,disabled:V,onPress:D,touchSoundDisabled:j,ref:t,children:(0,_r(d[9]).jsx)(o.default,{style:B,children:(0,_r(d[9]).jsx)(i.default,{style:H,disabled:V,children:z})})})}));b.displayName='Button';var f=t.default.create({button:a.default.select({ios:{},android:{elevation:4,backgroundColor:'#2196F3',borderRadius:2}}),text:Object.assign({textAlign:'center',margin:8},a.default.select({ios:{color:'#007AFF',fontSize:18},android:{color:'white',fontWeight:'500'}})),buttonDisabled:a.default.select({ios:{},android:{elevation:0,backgroundColor:'#dfdfdf'}}),textDisabled:a.default.select({ios:{color:'#cdcdcd'},android:{color:'#a1a1a1'}})});_e.default=b}),487,[1,472,488,33,500,501,182,20,178,223]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]),n=e(_r(d[1])),t=e(_r(d[2])),s=(f(_r(d[3])),e(_r(d[4]))),l=e(_r(d[5])),r=e(_r(d[6])),o=e(_r(d[7])),i=e(_r(d[8])),a=f(_r(d[9])),u=a,c=["accessible","accessibilityLabel","accessibilityState","allowFontScaling","aria-busy","aria-checked","aria-disabled","aria-expanded","aria-label","aria-selected","children","ellipsizeMode","disabled","id","nativeID","numberOfLines","onLongPress","onPress","onPressIn","onPressOut","onResponderGrant","onResponderMove","onResponderRelease","onResponderTerminate","onResponderTerminationRequest","onStartShouldSetResponder","pressRetentionOffset","selectable","selectionColor","suppressHighlighting","style"];function p(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,t=new WeakMap;return(p=function(e){return e?t:n})(e)}function f(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=p(n);if(t&&t.has(e))return t.get(e);var s={__proto__:null},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in e)if("default"!==r&&{}.hasOwnProperty.call(e,r)){var o=l?Object.getOwnPropertyDescriptor(e,r):null;o&&(o.get||o.set)?Object.defineProperty(s,r,o):s[r]=e[r]}return s.default=e,t&&t.set(e,s),s}var b=u.forwardRef((function(e,n){var s,u=e.accessible,p=e.accessibilityLabel,f=e.accessibilityState,b=e.allowFontScaling,R=e['aria-busy'],S=e['aria-checked'],O=e['aria-disabled'],x=e['aria-expanded'],j=e['aria-label'],T=e['aria-selected'],L=e.children,M=e.ellipsizeMode,w=e.disabled,I=e.id,k=e.nativeID,C=e.numberOfLines,H=e.onLongPress,D=e.onPress,_=e.onPressIn,q=e.onPressOut,G=e.onResponderGrant,A=e.onResponderMove,W=e.onResponderRelease,N=e.onResponderTerminate,z=e.onResponderTerminationRequest,F=e.onStartShouldSetResponder,V=e.pressRetentionOffset,B=e.selectable,E=e.selectionColor,J=e.suppressHighlighting,K=e.style,Q=(0,t.default)(e,c),U=null!=j?j:p,X=f;null==R&&null==S&&null==O&&null==x&&null==T||(X=null!=X?{busy:null!=R?R:X.busy,checked:null!=S?S:X.checked,disabled:null!=O?O:X.disabled,expanded:null!=x?x:X.expanded,selected:null!=T?T:X.selected}:{busy:R,checked:S,disabled:O,expanded:x,selected:T});var Y=null==(s=X)?void 0:s.disabled,Z=null!=w?w:Y,$=(null!=D||null!=H||null!=F)&&!0!==Z,ee=null==E?null:(0,r.default)(E),ne=K,te=C;null==te||te>=0||(te=0);var se=B,le=(0,l.default)(ne);if(null!=le){var re=null;'number'==typeof le.fontWeight&&((re=re||{}).fontWeight=le.fontWeight.toString()),null!=le.userSelect&&(se=h[le.userSelect],(re=re||{}).userSelect=void 0),null!=le.verticalAlign&&((re=re||{}).textAlignVertical=y[le.verticalAlign],re.verticalAlign=void 0),null!=re&&(ne=[ne,re])}var oe=null!=I?I:k;if((0,a.useContext)(i.default))return $?(0,_r(d[10]).jsx)(v,{ref:n,textProps:Object.assign({},Q,{accessibilityLabel:U,accessibilityState:X,nativeID:oe,numberOfLines:te,selectable:se,selectionColor:ee,style:ne,disabled:w,children:L}),textPressabilityProps:{onLongPress:H,onPress:D,onPressIn:_,onPressOut:q,onResponderGrant:G,onResponderMove:A,onResponderRelease:W,onResponderTerminate:N,onResponderTerminationRequest:z,onStartShouldSetResponder:F,pressRetentionOffset:V,suppressHighlighting:J}}):(0,_r(d[10]).jsx)(_r(d[11]).NativeVirtualText,Object.assign({},Q,{accessibilityLabel:U,accessibilityState:X,isHighlighted:!1,isPressable:!1,nativeID:oe,numberOfLines:te,ref:n,selectable:se,selectionColor:ee,style:ne,disabled:w,children:L}));Z!==Y&&(null!=Z&&!1!==Z||null!=Y&&!1!==Y)&&(X=Object.assign({},X,{disabled:Z}));var ie=o.default.select({ios:!1!==u,android:null==u?null!=D||null!=H:u,default:u}),ae=null;if(ae=$?(0,_r(d[10]).jsx)(P,{ref:n,textProps:Object.assign({},Q,{accessibilityLabel:U,accessibilityState:X,accessible:ie,allowFontScaling:!1!==b,disabled:Z,ellipsizeMode:null!=M?M:'tail',nativeID:oe,numberOfLines:te,selectable:se,selectionColor:ee,style:ne,children:L}),textPressabilityProps:{onLongPress:H,onPress:D,onPressIn:_,onPressOut:q,onResponderGrant:G,onResponderMove:A,onResponderRelease:W,onResponderTerminate:N,onResponderTerminationRequest:z,onStartShouldSetResponder:F,pressRetentionOffset:V,suppressHighlighting:J}}):(0,_r(d[10]).jsx)(_r(d[11]).NativeText,Object.assign({},Q,{accessibilityLabel:U,accessibilityState:X,accessible:ie,allowFontScaling:!1!==b,disabled:Z,ellipsizeMode:null!=M?M:'tail',isHighlighted:!1,nativeID:oe,numberOfLines:te,ref:n,selectable:se,selectionColor:ee,style:ne,children:L})),null==L)return ae;if(Array.isArray(L)&&L.length<=3){var ue=!1;for(var de of L)if(null!=de&&'object'==typeof de){ue=!0;break}if(!ue)return ae}else if('object'!=typeof L)return ae;return(0,_r(d[10]).jsx)(i.default.Provider,{value:!0,children:ae})}));function R(e){var t=e.onLongPress,l=e.onPress,r=e.onPressIn,i=e.onPressOut,u=e.onResponderGrant,c=e.onResponderMove,p=e.onResponderRelease,f=e.onResponderTerminate,b=e.onResponderTerminationRequest,R=e.onStartShouldSetResponder,v=e.pressRetentionOffset,P=e.suppressHighlighting,h=(0,a.useState)(!1),y=(0,n.default)(h,2),S=y[0],O=y[1],x=(0,a.useMemo)((function(){var e=r,n=i;return'ios'===o.default.OS&&(e=function(e){O(null==P||!P),null==r||r(e)},n=function(e){O(!1),null==i||i(e)}),{disabled:!1,pressRectOffset:v,onLongPress:t,onPress:l,onPressIn:e,onPressOut:n}}),[v,t,l,r,i,P]),j=(0,s.default)(x),T=(0,a.useMemo)((function(){return null==j?null:{onResponderGrant:function(e){j.onResponderGrant(e),null!=u&&u(e)},onResponderMove:function(e){j.onResponderMove(e),null!=c&&c(e)},onResponderRelease:function(e){j.onResponderRelease(e),null!=p&&p(e)},onResponderTerminate:function(e){j.onResponderTerminate(e),null!=f&&f(e)},onClick:j.onClick,onResponderTerminationRequest:null!=b?b:j.onResponderTerminationRequest,onStartShouldSetResponder:null!=R?R:j.onStartShouldSetResponder}}),[j,u,c,p,f,b,R]);return(0,a.useMemo)((function(){return[S,T]}),[S,T])}b.displayName='Text';var v=u.forwardRef((function(e,t){var s=e.textProps,l=R(e.textPressabilityProps),r=(0,n.default)(l,2),o=r[0],i=r[1];return(0,_r(d[10]).jsx)(_r(d[11]).NativeVirtualText,Object.assign({},s,i,{isHighlighted:o,isPressable:!0,ref:t}))})),P=u.forwardRef((function(e,t){var s=e.textProps,l=R(e.textPressabilityProps),r=(0,n.default)(l,2),o=r[0],i=r[1];return(0,_r(d[10]).jsx)(_r(d[11]).NativeText,Object.assign({},s,i,{isHighlighted:o,isPressable:!0,ref:t}))})),h={auto:!0,text:!0,none:!1,contain:!0,all:!0},y={auto:'auto',top:'top',bottom:'bottom',middle:'center'};m.exports=b}),488,[1,38,134,489,490,290,188,33,183,178,223,499]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.PressabilityDebugView=function(e){return null},_e.isEnabled=function(){return!1},_e.setEnabled=function(e){};e(_r(d[1])),e(_r(d[2])),(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=t(n);if(r&&r.has(e))return r.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var i=o?Object.getOwnPropertyDescriptor(e,f):null;i&&(i.get||i.set)?Object.defineProperty(u,f,i):u[f]=e[f]}u.default=e,r&&r.set(e,u)})(_r(d[3]));function t(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(t=function(e){return e?r:n})(e)}}),489,[1,182,189,178]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(n){var t=(0,l.useRef)(null);null!=n&&null==t.current&&(t.current=new u.default(n));var f=t.current;return(0,l.useEffect)((function(){null!=n&&null!=f&&f.configure(n)}),[n,f]),(0,l.useEffect)((function(){if(null!=f)return function(){f.reset()}}),[f]),null==f?null:f.getEventHandlers()};var u=n(r(d[1])),l=r(d[2])}),490,[1,491,178]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),E=e(_r(d[2])),n=e(_r(d[3])),i=e(_r(d[4])),R=e(_r(d[5])),_=e(_r(d[6])),o=e(_r(d[7])),l=e(_r(d[8]));!(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var E=r(t);if(E&&E.has(e))return E.get(e);var n={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var R in e)if("default"!==R&&{}.hasOwnProperty.call(e,R)){var _=i?Object.getOwnPropertyDescriptor(e,R):null;_&&(_.get||_.set)?Object.defineProperty(n,R,_):n[R]=e[R]}n.default=e,E&&E.set(e,n)})(_r(d[9]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,E=new WeakMap;return(r=function(e){return e?E:t})(e)}var u=Object.freeze({NOT_RESPONDER:{DELAY:'ERROR',RESPONDER_GRANT:'RESPONDER_INACTIVE_PRESS_IN',RESPONDER_RELEASE:'ERROR',RESPONDER_TERMINATED:'ERROR',ENTER_PRESS_RECT:'ERROR',LEAVE_PRESS_RECT:'ERROR',LONG_PRESS_DETECTED:'ERROR'},RESPONDER_INACTIVE_PRESS_IN:{DELAY:'RESPONDER_ACTIVE_PRESS_IN',RESPONDER_GRANT:'ERROR',RESPONDER_RELEASE:'NOT_RESPONDER',RESPONDER_TERMINATED:'NOT_RESPONDER',ENTER_PRESS_RECT:'RESPONDER_INACTIVE_PRESS_IN',LEAVE_PRESS_RECT:'RESPONDER_INACTIVE_PRESS_OUT',LONG_PRESS_DETECTED:'ERROR'},RESPONDER_INACTIVE_PRESS_OUT:{DELAY:'RESPONDER_ACTIVE_PRESS_OUT',RESPONDER_GRANT:'ERROR',RESPONDER_RELEASE:'NOT_RESPONDER',RESPONDER_TERMINATED:'NOT_RESPONDER',ENTER_PRESS_RECT:'RESPONDER_INACTIVE_PRESS_IN',LEAVE_PRESS_RECT:'RESPONDER_INACTIVE_PRESS_OUT',LONG_PRESS_DETECTED:'ERROR'},RESPONDER_ACTIVE_PRESS_IN:{DELAY:'ERROR',RESPONDER_GRANT:'ERROR',RESPONDER_RELEASE:'NOT_RESPONDER',RESPONDER_TERMINATED:'NOT_RESPONDER',ENTER_PRESS_RECT:'RESPONDER_ACTIVE_PRESS_IN',LEAVE_PRESS_RECT:'RESPONDER_ACTIVE_PRESS_OUT',LONG_PRESS_DETECTED:'RESPONDER_ACTIVE_LONG_PRESS_IN'},RESPONDER_ACTIVE_PRESS_OUT:{DELAY:'ERROR',RESPONDER_GRANT:'ERROR',RESPONDER_RELEASE:'NOT_RESPONDER',RESPONDER_TERMINATED:'NOT_RESPONDER',ENTER_PRESS_RECT:'RESPONDER_ACTIVE_PRESS_IN',LEAVE_PRESS_RECT:'RESPONDER_ACTIVE_PRESS_OUT',LONG_PRESS_DETECTED:'ERROR'},RESPONDER_ACTIVE_LONG_PRESS_IN:{DELAY:'ERROR',RESPONDER_GRANT:'ERROR',RESPONDER_RELEASE:'NOT_RESPONDER',RESPONDER_TERMINATED:'NOT_RESPONDER',ENTER_PRESS_RECT:'RESPONDER_ACTIVE_LONG_PRESS_IN',LEAVE_PRESS_RECT:'RESPONDER_ACTIVE_LONG_PRESS_OUT',LONG_PRESS_DETECTED:'RESPONDER_ACTIVE_LONG_PRESS_IN'},RESPONDER_ACTIVE_LONG_PRESS_OUT:{DELAY:'ERROR',RESPONDER_GRANT:'ERROR',RESPONDER_RELEASE:'NOT_RESPONDER',RESPONDER_TERMINATED:'NOT_RESPONDER',ENTER_PRESS_RECT:'RESPONDER_ACTIVE_LONG_PRESS_IN',LEAVE_PRESS_RECT:'RESPONDER_ACTIVE_LONG_PRESS_OUT',LONG_PRESS_DETECTED:'ERROR'},ERROR:{DELAY:'NOT_RESPONDER',RESPONDER_GRANT:'RESPONDER_INACTIVE_PRESS_IN',RESPONDER_RELEASE:'NOT_RESPONDER',RESPONDER_TERMINATED:'NOT_RESPONDER',ENTER_PRESS_RECT:'NOT_RESPONDER',LEAVE_PRESS_RECT:'NOT_RESPONDER',LONG_PRESS_DETECTED:'NOT_RESPONDER'}}),a=function(e){return'RESPONDER_ACTIVE_PRESS_IN'===e||'RESPONDER_ACTIVE_LONG_PRESS_IN'===e},s=function(e){return'RESPONDER_ACTIVE_PRESS_OUT'===e||'RESPONDER_ACTIVE_PRESS_IN'===e},S=function(e){return'RESPONDER_INACTIVE_PRESS_IN'===e||'RESPONDER_ACTIVE_PRESS_IN'===e||'RESPONDER_ACTIVE_LONG_PRESS_IN'===e},T=function(e){return'RESPONDER_TERMINATED'===e||'RESPONDER_RELEASE'===e},c=30,O=20,P=20,N=20,D=10;_e.default=(function(){return(0,E.default)((function e(E){var n=this;(0,t.default)(this,e),this._eventHandlers=null,this._hoverInDelayTimeout=null,this._hoverOutDelayTimeout=null,this._isHovered=!1,this._longPressDelayTimeout=null,this._pressDelayTimeout=null,this._pressOutDelayTimeout=null,this._responderID=null,this._responderRegion=null,this._touchState='NOT_RESPONDER',this._measureCallback=function(e,t,E,i,R,_){(e||t||E||i||R||_)&&(n._responderRegion={bottom:_+i,left:R,right:R+E,top:_})},this.configure(E)}),[{key:"configure",value:function(e){this._config=e}},{key:"reset",value:function(){this._cancelHoverInDelayTimeout(),this._cancelHoverOutDelayTimeout(),this._cancelLongPressDelayTimeout(),this._cancelPressDelayTimeout(),this._cancelPressOutDelayTimeout(),this._config=Object.freeze({})}},{key:"getEventHandlers",value:function(){return null==this._eventHandlers&&(this._eventHandlers=this._createEventHandlers()),this._eventHandlers}},{key:"_createEventHandlers",value:function(){var e=this,t={onBlur:function(t){var E=e._config.onBlur;null!=E&&E(t)},onFocus:function(t){var E=e._config.onFocus;null!=E&&E(t)}},E={onStartShouldSetResponder:function(){var t;return null==(t=!e._config.disabled)||t},onResponderGrant:function(t){t.persist(),e._cancelPressOutDelayTimeout(),e._responderID=t.currentTarget,e._touchState='NOT_RESPONDER',e._receiveSignal('RESPONDER_GRANT',t);var E=v(e._config.delayPressIn);E>0?e._pressDelayTimeout=setTimeout((function(){e._receiveSignal('DELAY',t)}),E):e._receiveSignal('DELAY',t);var n=v(e._config.delayLongPress,10,500-E);return e._longPressDelayTimeout=setTimeout((function(){e._handleLongPress(t)}),n+E),!0===e._config.blockNativeResponder},onResponderMove:function(t){var E=e._config.onPressMove;null!=E&&E(t);var n=e._responderRegion;if(null!=n){var i=f(t);if(null==i)return e._cancelLongPressDelayTimeout(),void e._receiveSignal('LEAVE_PRESS_RECT',t);if(null!=e._touchActivatePosition){var R=e._touchActivatePosition.pageX-i.pageX,_=e._touchActivatePosition.pageY-i.pageY;Math.hypot(R,_)>D&&e._cancelLongPressDelayTimeout()}e._isTouchWithinResponderRegion(i,n)?e._receiveSignal('ENTER_PRESS_RECT',t):(e._cancelLongPressDelayTimeout(),e._receiveSignal('LEAVE_PRESS_RECT',t))}},onResponderRelease:function(t){e._receiveSignal('RESPONDER_RELEASE',t)},onResponderTerminate:function(t){e._receiveSignal('RESPONDER_TERMINATED',t)},onResponderTerminationRequest:function(){var t=e._config.cancelable;return null==t||t},onClick:function(t){var E;if(null==t||null==(E=t.nativeEvent)||null==E.hasOwnProperty||!E.hasOwnProperty('pointerType'))if((null==t?void 0:t.currentTarget)===(null==t?void 0:t.target)){var n=e._config,i=n.onPress,R=n.disabled;null!=i&&!0!==R&&i(t)}else null==t||t.stopPropagation()}};if(i.default.shouldPressibilityUseW3CPointerEventsForHover()){var n={onPointerEnter:void 0,onPointerLeave:void 0},R=this._config,o=R.onHoverIn,l=R.onHoverOut;return null!=o&&(n.onPointerEnter=function(t){if(e._isHovered=!0,e._cancelHoverOutDelayTimeout(),null!=o){var E=v(e._config.delayHoverIn);E>0?(t.persist(),e._hoverInDelayTimeout=setTimeout((function(){o(h(t))}),E)):o(h(t))}}),null!=l&&(n.onPointerLeave=function(t){if(e._isHovered&&(e._isHovered=!1,e._cancelHoverInDelayTimeout(),null!=l)){var E=v(e._config.delayHoverOut);E>0?(t.persist(),e._hoverOutDelayTimeout=setTimeout((function(){l(h(t))}),E)):l(h(t))}}),Object.assign({},t,E,n)}var r='ios'===_.default.OS||'android'===_.default.OS?null:{onMouseEnter:function(t){if((0,_r(d[10]).isHoverEnabled)()){e._isHovered=!0,e._cancelHoverOutDelayTimeout();var E=e._config.onHoverIn;if(null!=E){var n=v(e._config.delayHoverIn);n>0?(t.persist(),e._hoverInDelayTimeout=setTimeout((function(){E(t)}),n)):E(t)}}},onMouseLeave:function(t){if(e._isHovered){e._isHovered=!1,e._cancelHoverInDelayTimeout();var E=e._config.onHoverOut;if(null!=E){var n=v(e._config.delayHoverOut);n>0?(t.persist(),e._hoverInDelayTimeout=setTimeout((function(){E(t)}),n)):E(t)}}}};return Object.assign({},t,E,r)}},{key:"_receiveSignal",value:function(e,t){var E;null!=t.nativeEvent.timestamp&&o.default.emitEvent((function(){return{signal:e,nativeTimestamp:t.nativeEvent.timestamp}}));var n=this._touchState,i=null==(E=u[n])?void 0:E[e];null==this._responderID&&'RESPONDER_RELEASE'===e||((0,l.default)(null!=i&&'ERROR'!==i,'Pressability: Invalid signal `%s` for state `%s` on responder: %s',e,n,'number'==typeof this._responderID?this._responderID:'<>'),n!==i&&(this._performTransitionSideEffects(n,i,e,t),this._touchState=i))}},{key:"_performTransitionSideEffects",value:function(e,t,E,i){T(E)&&(this._touchActivatePosition=null,this._cancelLongPressDelayTimeout());var R='NOT_RESPONDER'===e&&'RESPONDER_INACTIVE_PRESS_IN'===t,o=!s(e)&&s(t);if((R||o)&&this._measureResponderRegion(),S(e)&&'LONG_PRESS_DETECTED'===E){var l=this._config.onLongPress;null!=l&&l(i)}var r=a(e),u=a(t);if(!r&&u?this._activate(i):r&&!u&&this._deactivate(i),S(e)&&'RESPONDER_RELEASE'===E){u||r||(this._activate(i),this._deactivate(i));var c=this._config,O=c.onLongPress,P=c.onPress,N=c.android_disableSound;if(null!=P)null!=O&&'RESPONDER_ACTIVE_LONG_PRESS_IN'===e||('android'===_.default.OS&&!0!==N&&n.default.playTouchSound(),P(i))}this._cancelPressDelayTimeout()}},{key:"_activate",value:function(e){var t=this._config.onPressIn,E=f(e),n=E.pageX,i=E.pageY;this._touchActivatePosition={pageX:n,pageY:i},this._touchActivateTime=Date.now(),null!=t&&t(e)}},{key:"_deactivate",value:function(e){var t=this._config.onPressOut;if(null!=t){var E,n=v(this._config.minPressDuration,0,130),i=Date.now()-(null!=(E=this._touchActivateTime)?E:0),R=Math.max(n-i,v(this._config.delayPressOut));R>0?(e.persist(),this._pressOutDelayTimeout=setTimeout((function(){t(e)}),R)):t(e)}this._touchActivateTime=null}},{key:"_measureResponderRegion",value:function(){null!=this._responderID&&('number'==typeof this._responderID?R.default.measure(this._responderID,this._measureCallback):this._responderID.measure(this._measureCallback))}},{key:"_isTouchWithinResponderRegion",value:function(e,t){var E,n,i,R,_=(0,_r(d[11]).normalizeRect)(this._config.hitSlop),o=(0,_r(d[11]).normalizeRect)(this._config.pressRectOffset),l=t.bottom,r=t.left,u=t.right,a=t.top;return null!=_&&(null!=_.bottom&&(l+=_.bottom),null!=_.left&&(r-=_.left),null!=_.right&&(u+=_.right),null!=_.top&&(a-=_.top)),l+=null!=(E=null==o?void 0:o.bottom)?E:c,r-=null!=(n=null==o?void 0:o.left)?n:O,u+=null!=(i=null==o?void 0:o.right)?i:P,a-=null!=(R=null==o?void 0:o.top)?R:N,e.pageX>r&&e.pageXa&&e.pageY1&&void 0!==arguments[1]?arguments[1]:0,E=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return Math.max(t,null!=e?e:E)}var f=function(e){var t=e.nativeEvent,E=t.changedTouches,n=t.touches;return null!=n&&n.length>0?n[0]:null!=E&&E.length>0?E[0]:e.nativeEvent};function h(e){var t=e.nativeEvent,E=t.clientX,n=t.clientY;return Object.assign({},e,{nativeEvent:{clientX:E,clientY:n,pageX:E,pageY:n,timestamp:e.timeStamp}})}}),491,[1,12,13,492,495,44,33,496,20,178,497,498]); +__d((function(g,r,i,a,m,e,d){var u=r(d[0])(r(d[1])),o={playTouchSound:function(){u.default&&u.default.playTouchSound()}};m.exports=o}),492,[1,493]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),493,[494]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=o?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(u,a,f):u[a]=e[a]}return u.default=e,n&&n.set(e,u),u})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.get('SoundManager')}),494,[36]); +__d((function(g,r,i,a,m,e,d){m.exports={shouldEmitW3CPointerEvents:function(){return!1},shouldPressibilityUseW3CPointerEventsForHover:function(){return!1}}}),495,[]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(r(d[1])),s=t(r(d[2])),u=new((function(){return(0,s.default)((function t(){(0,n.default)(this,t),this._listeners=[]}),[{key:"addListener",value:function(t){this._listeners.push(t)}},{key:"removeListener",value:function(t){var n=this._listeners.indexOf(t);n>-1&&this._listeners.splice(n,1)}},{key:"emitEvent",value:function(t){if(0!==this._listeners.length){var n=t();this._listeners.forEach((function(t){return t(n)}))}}}])})());e.default=u}),496,[1,12,13]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.isHoverEnabled=function(){return o};var t=n(r(d[1])),o=!1;if('web'===t.default.OS&&Boolean('undefined'!=typeof window&&window.document&&window.document.createElement)){var u=0,c=function(){u=Date.now(),o&&(o=!1)};document.addEventListener('touchstart',c,!0),document.addEventListener('touchmove',c,!0),document.addEventListener('mousemove',(function(){o||Date.now()-u<1e3||(o=!0)}),!0)}}),497,[1,33]); +__d((function(g,r,i,a,m,e,d){function t(t){return{bottom:t,left:t,right:t,top:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.createSquare=t,e.normalizeRect=function(n){return'number'==typeof n?t(n):n}}),498,[]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.NativeVirtualText=e.NativeText=void 0;var n=t(r(d[1])),l=t(r(d[2])),o=(t(r(d[3])),{validAttributes:{isHighlighted:!0,isPressable:!0,numberOfLines:!0,ellipsizeMode:!0,allowFontScaling:!0,dynamicTypeRamp:!0,maxFontSizeMultiplier:!0,disabled:!0,selectable:!0,selectionColor:!0,adjustsFontSizeToFit:!0,minimumFontScale:!0,textBreakStrategy:!0,onTextLayout:!0,onInlineViewLayout:!0,dataDetectorType:!0,android_hyphenationFrequency:!0,lineBreakStrategyIOS:!0},directEventTypes:{topTextLayout:{registrationName:'onTextLayout'},topInlineViewLayout:{registrationName:'onInlineViewLayout'}},uiViewClassName:'RCTText'}),u={validAttributes:{isHighlighted:!0,isPressable:!0,maxFontSizeMultiplier:!0},uiViewClassName:'RCTVirtualText'},s=e.NativeText=(0,l.default)('RCTText',(function(){return(0,r(d[4]).createViewConfig)(o)}));e.NativeVirtualText=g.RN$Bridgeless||n.default.hasViewManagerConfig('RCTVirtualText')?(0,l.default)('RCTVirtualText',(function(){return(0,r(d[4]).createViewConfig)(u)})):s}),499,[1,44,465,33,218]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]),s=e(_r(d[1])),t=e(_r(d[2])),i=e(_r(d[3])),o=e(_r(d[4])),n=e(_r(d[5])),a=e(_r(d[6])),r=(e(_r(d[7])),e(_r(d[8]))),l=e(_r(d[9])),p=e(_r(d[10])),c=e(_r(d[11])),u=(function(e,s){if(!s&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=b(s);if(t&&t.has(e))return t.get(e);var i={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&{}.hasOwnProperty.call(e,n)){var a=o?Object.getOwnPropertyDescriptor(e,n):null;a&&(a.get||a.set)?Object.defineProperty(i,n,a):i[n]=e[n]}return i.default=e,t&&t.set(e,i),i})(_r(d[12])),h=["onBlur","onFocus"];function b(e){if("function"!=typeof WeakMap)return null;var s=new WeakMap,t=new WeakMap;return(b=function(e){return e?t:s})(e)}function f(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(f=function(){return!!e})()}var y=(function(e){function l(){var e,s,i,a;(0,t.default)(this,l);for(var p=arguments.length,c=new Array(p),u=0;u1&&void 0!==arguments[1]?arguments[1]:{},i=n.iterations,r=void 0===i?-1:i,o=n.resetBeforeIteration,a=void 0===o||o,u=!1,s=0;return{start:function(n){var i=function(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{finished:!0};u||s===r||!1===o.finished?n&&n(o):(s++,a&&t.reset(),t.start(i,-1===r))};t&&0!==r?t._isUsingNativeDriver()?t._startNativeLoop(r):i():n&&n({finished:!0})},stop:function(){u=!0,t.stop()},reset:function(){s=0,u=!1,t.reset()},_startNativeLoop:function(){throw new Error('Loops run using the native driver cannot contain Animated.loop animations')},_isUsingNativeDriver:function(){return t._isUsingNativeDriver()}}},event:function(t,n){var i=new(_r(d[17]).AnimatedEvent)(t,n);return i.__isNative?i:i.__getHandler()},createAnimatedComponent:o.default,attachNativeEvent:_r(d[17]).attachNativeEvent,forkEvent:function(t,n){return t?t instanceof _r(d[17]).AnimatedEvent?(t.__addListener(n),t):function(){'function'==typeof t&&t.apply(void 0,arguments),n.apply(void 0,arguments)}:n},unforkEvent:function(t,n){t&&t instanceof _r(d[17]).AnimatedEvent&&t.__removeListener(n)},Event:_r(d[17]).AnimatedEvent}}),503,[1,504,526,529,530,535,527,536,537,522,538,539,513,540,541,519,525,518]); +__d((function(g,_r,i,a,m,_e,d){'use strict';var t=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=t(_r(d[1])),n=t(_r(d[2])),o=t(_r(d[3])),r=t(_r(d[4])),s=t(_r(d[5])),u=t(_r(d[6])),l=t(_r(d[7])),_=t(_r(d[8]));function c(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(c=function(){return!!t})()}_e.default=(function(t){function _(t){var n,s,u,h,f,v,p;return(0,e.default)(this,_),f=this,v=_,v=(0,r.default)(v),(h=(0,o.default)(f,c()?Reflect.construct(v,p||[],(0,r.default)(f).constructor):v.apply(f,p)))._deceleration=null!=(n=t.deceleration)?n:.998,h._velocity=t.velocity,h._useNativeDriver=l.default.shouldUseNativeDriver(t),h._platformConfig=t.platformConfig,h.__isInteraction=null!=(s=t.isInteraction)?s:!h._useNativeDriver,h.__iterations=null!=(u=t.iterations)?u:1,h}return(0,u.default)(_,t),(0,n.default)(_,[{key:"__getNativeAnimationConfig",value:function(){return{type:'decay',deceleration:this._deceleration,velocity:this._velocity,iterations:this.__iterations,platformConfig:this._platformConfig}}},{key:"start",value:function(t,e,n,o,r){if(this.__active=!0,this._lastValue=t,this._fromValue=t,this._onUpdate=e,this.__onEnd=n,this._startTime=Date.now(),!this._useNativeDriver&&!0===r.__isNative)throw new Error("Attempting to run JS driven animation on animated node that has been moved to \"native\" earlier by starting an animation with `useNativeDriver: true`");this._useNativeDriver?this.__startNativeAnimation(r):this._animationFrame=requestAnimationFrame(this.onUpdate.bind(this))}},{key:"onUpdate",value:function(){var t=Date.now(),e=this._fromValue+this._velocity/(1-this._deceleration)*(1-Math.exp(-(1-this._deceleration)*(t-this._startTime)));this._onUpdate(e),Math.abs(this._lastValue-e)<.1?this.__debouncedOnEnd({finished:!0}):(this._lastValue=e,this.__active&&(this._animationFrame=requestAnimationFrame(this.onUpdate.bind(this))))}},{key:"stop",value:function(){var t,e,n,o,u;(t=_,e="stop",n=this,o=3,u=(0,s.default)((0,r.default)(1&o?t.prototype:t),e,n),2&o&&"function"==typeof u?function(t){return u.apply(n,t)}:u)([]),this.__active=!1,g.cancelAnimationFrame(this._animationFrame),this.__debouncedOnEnd({finished:!1})}}])})(_.default)}),504,[1,12,13,23,25,26,28,505,511]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=s(t);if(n&&n.has(e))return n.get(e);var a={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var u=i?Object.getOwnPropertyDescriptor(e,o):null;u&&(u.get||u.set)?Object.defineProperty(a,o,u):a[o]=e[o]}return a.default=e,n&&n.set(e,a),a})(_r(d[1])),n=e(_r(d[2])),a=e(_r(d[3])),i=e(_r(d[4])),o=e(_r(d[5])),u=e(_r(d[6])),r=e(_r(d[7])),l=e(_r(d[8]));function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(s=function(e){return e?n:t})(e)}var f,c=null!=o.default?o.default:u.default,v=1,A=1,N=new Set,p=!1,h=[],V=[],O='android'===i.default.OS&&null!=(null==c?void 0:c.queueAndExecuteBatchedOperations)&&t.animatedShouldUseSingleOp(),w=null,b={},y={},T=null,D=null;var F=(function(){var e=['createAnimatedNode','updateAnimatedNodeConfig','getValue','startListeningToAnimatedNodeValue','stopListeningToAnimatedNodeValue','connectAnimatedNodes','disconnectAnimatedNodes','startAnimatingNode','stopAnimation','setAnimatedNodeValue','setAnimatedNodeOffset','flattenAnimatedNodeOffset','extractAnimatedNodeOffset','connectAnimatedNodeToView','disconnectAnimatedNodeFromView','restoreDefaultValues','dropAnimatedNode','addAnimatedEventToView','removeAnimatedEventFromView','addListener','removeListener'],t={};if(O)for(var n=function(){var n=a+1;t[e[a]]=function(){for(var e=arguments.length,t=new Array(e),a=0;a0&&this._startListeningToNativeValueUpdates()}},{key:"addListener",value:function(t){var n=String(c++);return(0,u.default)(this,p)[p].set(n,t),this.__isNative&&this._startListeningToNativeValueUpdates(),n}},{key:"removeListener",value:function(t){(0,u.default)(this,p)[p].delete(t),this.__isNative&&0===(0,u.default)(this,p)[p].size&&this._stopListeningForNativeValueUpdates()}},{key:"removeAllListeners",value:function(){(0,u.default)(this,p)[p].clear(),this.__isNative&&this._stopListeningForNativeValueUpdates()}},{key:"hasListeners",value:function(){return(0,u.default)(this,p)[p].size>0}},{key:"_startListeningToNativeValueUpdates",value:function(){var t=this;this.__nativeAnimatedValueListener&&!this.__shouldUpdateListenersForNewNativeTag||(this.__shouldUpdateListenersForNewNativeTag&&(this.__shouldUpdateListenersForNewNativeTag=!1,this._stopListeningForNativeValueUpdates()),f(this.__getNativeTag()),this.__nativeAnimatedValueListener=o.default.nativeEventEmitter.addListener('onAnimatedValueUpdate',(function(n){n.tag===t.__getNativeTag()&&t.__onAnimatedValueUpdateReceived(n.value)})))}},{key:"__onAnimatedValueUpdateReceived",value:function(t){this.__callListeners(t)}},{key:"__callListeners",value:function(t){var n={value:t};(0,u.default)(this,p)[p].forEach((function(t){t(n)}))}},{key:"_stopListeningForNativeValueUpdates",value:function(){this.__nativeAnimatedValueListener&&(this.__nativeAnimatedValueListener.remove(),this.__nativeAnimatedValueListener=null,h(this.__getNativeTag()))}},{key:"__getNativeTag",value:function(){var t=this.__nativeTag;if(null==t){null==N||N(),(0,_.default)(this.__isNative,'Attempt to get native tag from node not marked as "native"'),t=o.default.generateNewNodeTag(),this.__nativeTag=t;var n=this.__getNativeConfig();this._platformConfig&&(n.platformConfig=this._platformConfig),o.default.API.createAnimatedNode(t,n),this.__shouldUpdateListenersForNewNativeTag=!0}return t}},{key:"__getNativeConfig",value:function(){throw new Error('This JS animated node type cannot be used as native animated node')}},{key:"toJSON",value:function(){return this.__getValue()}},{key:"__getPlatformConfig",value:function(){return this._platformConfig}},{key:"__setPlatformConfig",value:function(t){this._platformConfig=t}}])})()}),513,[1,12,13,31,32,505,20]); +__d((function(g,_r,_i,_a,m,_e,d){'use strict';var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),n=e(_r(d[2])),r=e(_r(d[3])),u=e(_r(d[4])),a=e(_r(d[5])),f=e(_r(d[6])),i=e(_r(d[7])),o=e(_r(d[8])),l=e(_r(d[9])),c=e(_r(d[10])),v=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=_(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=u?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(r,a,f):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r})(_r(d[11]));function _(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(_=function(e){return e?n:t})(e)}function s(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(s=function(){return!!e})()}function y(e,t,n,r){var f=(0,a.default)((0,u.default)(1&r?e.prototype:e),t,n);return 2&r&&"function"==typeof f?function(e){return f.apply(n,e)}:f}function h(e){return null!==e&&'object'==typeof e&&Object.getPrototypeOf(e).isPrototypeOf(Object)&&!v.isValidElement(e)}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(n>=5)return t;if(e instanceof l.default)t.push(e);else if(Array.isArray(e))for(var r=0,u=e.length;r2&&void 0!==arguments[2]?arguments[2]:0;if(n>=5)return e;if(e instanceof l.default)return t(e);if(Array.isArray(e))return e.map((function(e){return O(e,t,n+1)}));if(h(e)){for(var r={},u=Object.keys(e),a=0,f=u.length;a0)for(var _=this.__getNativeTag(),r=0;r0?setTimeout(h,0):setImmediate(h))}function h(){f=0;var l=o.size;c.forEach((function(n){return o.add(n)})),s.forEach((function(n){return o.delete(n)}));var h=o.size;if(0!==l&&0===h?n.emit(t.Events.interactionComplete):0===l&&0!==h&&n.emit(t.Events.interactionStart),0===h)for(;u.hasTasksToProcess();)if(u.processNext(),v>0&&r(d[4]).getEventLoopRunningTime()>=v){p();break}c.clear(),s.clear()}m.exports=t}),520,[1,30,20,521,4]); +__d((function(g,r,i,a,m,_e,d){'use strict';var e=r(d[0]),t=r(d[1]),u=(function(){return t((function t(u){var s=u.onMoreTasks;e(this,t),this._onMoreTasks=s,this._queueStack=[{tasks:[],popable:!1}]}),[{key:"enqueue",value:function(e){this._getCurrentQueue().push(e)}},{key:"enqueueTasks",value:function(e){var t=this;e.forEach((function(e){return t.enqueue(e)}))}},{key:"cancelTasks",value:function(e){this._queueStack=this._queueStack.map((function(t){return Object.assign({},t,{tasks:t.tasks.filter((function(t){return-1===e.indexOf(t)}))})})).filter((function(e,t){return e.tasks.length>0||0===t}))}},{key:"hasTasksToProcess",value:function(){return this._getCurrentQueue().length>0}},{key:"processNext",value:function(){var e=this._getCurrentQueue();if(e.length){var t=e.shift();try{'object'==typeof t&&t.gen?this._genPromise(t):'object'==typeof t&&t.run?t.run():(r(d[2])('function'==typeof t,'Expected Function, SimpleTask, or PromiseTask, but got:\n'+JSON.stringify(t,null,2)),t())}catch(e){throw e.message='TaskQueue: Error with task '+(t.name||'')+': '+e.message,e}}}},{key:"_getCurrentQueue",value:function(){var e=this._queueStack.length-1,t=this._queueStack[e];return t.popable&&0===t.tasks.length&&this._queueStack.length>1?(this._queueStack.pop(),this._getCurrentQueue()):t.tasks}},{key:"_genPromise",value:function(e){var t=this;this._queueStack.push({tasks:[],popable:!1});var u=this._queueStack.length-1,s=this._queueStack[u];e.gen().then((function(){s.popable=!0,t.hasTasksToProcess()&&t._onMoreTasks()})).catch((function(t){setTimeout((function(){throw t.message=`TaskQueue: Error resolving Promise in task ${e.name}: ${t.message}`,t}),0)}))}}])})();m.exports=u}),521,[12,13,20]); +__d((function(_g,_r,_i,_a,m,_e,d){'use strict';var t=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=t(_r(d[1])),n=t(_r(d[2])),a=t(_r(d[3])),o=t(_r(d[4])),r=t(_r(d[5])),u=t(_r(d[6])),i=t(_r(d[7])),l=t(_r(d[8])),f=t(_r(d[9])),p=t(_r(d[10])),c=t(_r(d[11])),s=t(_r(d[12]));function h(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(h=function(){return!!t})()}function g(t,e,n,a){var u=(0,r.default)((0,o.default)(1&a?t.prototype:t),e,n);return 2&a&&"function"==typeof u?function(t){return u.apply(n,t)}:u}function _(t){var e=t.outputRange,n=t.inputRange,a=t.easing||f.default.linear,o='extend';void 0!==t.extrapolateLeft?o=t.extrapolateLeft:void 0!==t.extrapolate&&(o=t.extrapolate);var r='extend';return void 0!==t.extrapolateRight?r=t.extrapolateRight:void 0!==t.extrapolate&&(r=t.extrapolate),function(t){(0,s.default)('number'==typeof t,'Cannot interpolation an input which is not a number');var u=b(t,n);return v(t,n[u],n[u+1],e[u],e[u+1],a,o,r)}}function v(t,e,n,a,o,r,u,i){var l=t;if(ln){if('identity'===i)return l;'clamp'===i&&(l=n)}return a===o?a:e===n?t<=e?a:o:(e===-1/0?l=-l:n===1/0?l-=e:l=(l-e)/(n-e),l=r(l),a===-1/0?l=-l:o===1/0?l+=a:l=l*(o-a)+a,l)}var y=/[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/g;function x(t){var e=(0,i.default)(t);if((0,s.default)(null==e||'object'!=typeof e,'PlatformColors are not supported'),'number'==typeof e)return{isColor:!0,components:[(4278190080&(e=e||0))>>>24,(16711680&e)>>>16,(65280&e)>>>8,(255&e)/255]};for(var n,a=[],o=0;null!=(n=y.exec(t));)n.index>o&&a.push(t.substring(o,n.index)),a.push(parseFloat(n[0])),o=n.index+n[0].length;return(0,s.default)(a.length>0,'outputRange must contain color or value with numeric component'),o=2,'Bad output range');var e=t.outputRange.map(x),n=e[0].isColor,a=e.map((function(t){return n?t.components:t.components.filter((function(t){return'number'==typeof t}))})),o=a[0].map((function(e,n){return _(Object.assign({},t,{outputRange:a.map((function(t){return t[n]}))}))}));return n?function(t){var e=o.map((function(e,n){var a=e(t);return n<3?Math.round(a):Math.round(1e3*a)/1e3}));return`rgba(${e[0]}, ${e[1]}, ${e[2]}, ${e[3]})`}:function(t){var n=o.map((function(e){return e(t)})),a=0;return e[0].components.map((function(t){return'number'==typeof t?n[a++]:t})).join('')}}function b(t,e){var n;for(n=1;n=t);++n);return n-1}_e.default=(function(t){function r(t,n){var u,i,l,f;return(0,e.default)(this,r),i=this,l=r,l=(0,o.default)(l),(u=(0,a.default)(i,h()?Reflect.construct(l,f||[],(0,o.default)(i).constructor):l.apply(i,f)))._parent=t,u._config=n,u}return(0,u.default)(r,t),(0,n.default)(r,[{key:"_getInterpolation",value:function(){if(!this._interpolation){var t=this._config;t.outputRange&&'string'==typeof t.outputRange[0]?this._interpolation=R(t):this._interpolation=_(t)}return this._interpolation}},{key:"__makeNative",value:function(t){this._parent.__makeNative(t),g(r,"__makeNative",this,3)([t])}},{key:"__getValue",value:function(){var t=this._parent.__getValue();return(0,s.default)('number'==typeof t,'Cannot interpolate an input which is not a number.'),this._getInterpolation()(t)}},{key:"interpolate",value:function(t){return new r(this,t)}},{key:"__attach",value:function(){this._parent.__addChild(this)}},{key:"__detach",value:function(){this._parent.__removeChild(this),g(r,"__detach",this,3)([])}},{key:"__getNativeConfig",value:function(){var t=this._config.outputRange,e=null;return'string'==typeof t[0]&&(t=t.map((function(t){var n=(0,l.default)(t);return'number'==typeof n?(e='color',n):p.default.transformDataType(t)}))),{inputRange:this._config.inputRange,outputRange:t,outputType:e,extrapolateLeft:this._config.extrapolateLeft||this._config.extrapolate||'extend',extrapolateRight:this._config.extrapolateRight||this._config.extrapolate||'extend',type:'interpolation'}}}])})(c.default)}),522,[1,12,13,23,25,26,28,189,188,523,505,515,20]); +__d((function(g,r,i,a,m,e,d){'use strict';var n;Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t={step0:function(n){return n>0?1:0},step1:function(n){return n>=1?1:0},linear:function(n){return n},ease:function(u){return n||(n=t.bezier(.42,0,1,1)),n(u)},quad:function(n){return n*n},cubic:function(n){return n*n*n},poly:function(n){return function(t){return Math.pow(t,n)}},sin:function(n){return 1-Math.cos(n*Math.PI/2)},circle:function(n){return 1-Math.sqrt(1-n*n)},exp:function(n){return Math.pow(2,10*(n-1))},elastic:function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:1)*Math.PI;return function(t){return 1-Math.pow(Math.cos(t*Math.PI/2),3)*Math.cos(t*n)}},back:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1.70158;return function(t){return t*t*((n+1)*t-n)}},bounce:function(n){if(n<.36363636363636365)return 7.5625*n*n;if(n<.7272727272727273){var t=n-.5454545454545454;return 7.5625*t*t+.75}if(n<.9090909090909091){var u=n-.8181818181818182;return 7.5625*u*u+.9375}var o=n-.9545454545454546;return 7.5625*o*o+.984375},bezier:function(n,t,u,o){return(0,r(d[0]).default)(n,t,u,o)},in:function(n){return n},out:function(n){return function(t){return 1-n(1-t)}},inOut:function(n){return function(t){return t<.5?n(2*t)/2:1-n(2*(1-t))/2}}};e.default=t}),523,[524]); +__d((function(g,r,_i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(n,u,o,v){if(!(n>=0&&n<=1&&o>=0&&o<=1))throw new Error('bezier x values must be in [0, 1] range');var l=c?new Float32Array(f):new Array(f);if(n!==u||o!==v)for(var s=0;s=t?_(u,v,n,o):0===s?v:b(u,f,f+i,n,o)}return function(t){return n===u&&o===v?t:0===t?0:1===t?1:w(h(t),u,v)}};var n=4,t=.001,u=1e-7,o=10,f=11,i=.1,c='function'==typeof Float32Array;function v(n,t){return 1-3*t+3*n}function l(n,t){return 3*t-6*n}function s(n){return 3*n}function w(n,t,u){return((v(t,u)*n+l(t,u))*n+s(t))*n}function y(n,t,u){return 3*v(t,u)*n*n+2*l(t,u)*n+s(t)}function b(n,t,f,i,c){var v,l,s=0,y=t,b=f;do{(v=w(l=y+(b-y)/2,i,c)-n)>0?b=l:y=l}while(Math.abs(v)>u&&++s0,'Stiffness value must be greater than 0'),(0,h.default)(y._damping>0,'Damping value must be greater than 0'),(0,h.default)(y._mass>0,'Mass value must be greater than 0'),y}return(0,o.default)(u,t),(0,i.default)(u,[{key:"__getNativeAnimationConfig",value:function(){var t;return{type:'spring',overshootClamping:this._overshootClamping,restDisplacementThreshold:this._restDisplacementThreshold,restSpeedThreshold:this._restSpeedThreshold,stiffness:this._stiffness,damping:this._damping,mass:this._mass,initialVelocity:null!=(t=this._initialVelocity)?t:this._lastVelocity,toValue:this._toValue,iterations:this.__iterations,platformConfig:this._platformConfig}}},{key:"start",value:function(t,e,i,s,n){var a=this;if(this.__active=!0,this._startPosition=t,this._lastPosition=this._startPosition,this._onUpdate=e,this.__onEnd=i,this._lastTime=Date.now(),this._frameTime=0,s instanceof u){var o=s.getInternalState();this._lastPosition=o.lastPosition,this._lastVelocity=o.lastVelocity,this._initialVelocity=this._lastVelocity,this._lastTime=o.lastTime}var l=function(){if(!a._useNativeDriver&&!0===n.__isNative)throw new Error("Attempting to run JS driven animation on animated node that has been moved to \"native\" earlier by starting an animation with `useNativeDriver: true`");a._useNativeDriver?a.__startNativeAnimation(n):a.onUpdate()};this._delay?this._timeout=setTimeout(l,this._delay):l()}},{key:"getInternalState",value:function(){return{lastPosition:this._lastPosition,lastVelocity:this._lastVelocity,lastTime:this._lastTime}}},{key:"onUpdate",value:function(){var t=Date.now();t>this._lastTime+64&&(t=this._lastTime+64);var e=(t-this._lastTime)/1e3;this._frameTime+=e;var i=this._damping,s=this._mass,n=this._stiffness,a=-this._initialVelocity,o=i/(2*Math.sqrt(n*s)),l=Math.sqrt(n/s),r=l*Math.sqrt(1-o*o),u=this._toValue-this._startPosition,h=0,f=0,_=this._frameTime;if(o<1){var c=Math.exp(-o*l*_);h=this._toValue-c*((a+o*l*u)/r*Math.sin(r*_)+u*Math.cos(r*_)),f=o*l*c*(Math.sin(r*_)*(a+o*l*u)/r+u*Math.cos(r*_))-c*(Math.cos(r*_)*(a+o*l*u)-r*u*Math.sin(r*_))}else{var m=Math.exp(-l*_);h=this._toValue-m*(u+(a+l*u)*_),f=m*(a*(_*l-1)+_*u*(l*l))}if(this._lastTime=t,this._lastPosition=h,this._lastVelocity=f,this._onUpdate(h),this.__active){var v=!1;this._overshootClamping&&0!==this._stiffness&&(v=this._startPositionthis._toValue:h>>24,g:(16711680&e)>>>16,b:(65280&e)>>>8,a:(255&e)/255}}return null}function b(t){return t&&'number'==typeof t.r&&'number'==typeof t.g&&'number'==typeof t.b&&'number'==typeof t.a}function y(t){return t&&t.r instanceof f.default&&t.g instanceof f.default&&t.b instanceof f.default&&t.a instanceof f.default}_e.default=(function(t){function r(t,i){var s,l,u,o;(0,e.default)(this,r),l=this,u=r,u=(0,n.default)(u),(s=(0,a.default)(l,h()?Reflect.construct(u,o||[],(0,n.default)(l).constructor):u.apply(l,o)))._suspendCallbacks=0;var _=null!=t?t:g;if(y(_)){var c=_;s.r=c.r,s.g=c.g,s.b=c.b,s.a=c.a}else{var v,k=null!=(v=p(_))?v:g,C=g;b(k)?C=k:s.nativeColor=k,s.r=new f.default(C.r),s.g=new f.default(C.g),s.b=new f.default(C.b),s.a=new f.default(C.a)}return null!=i&&i.useNativeDriver&&s.__makeNative(),s}return(0,s.default)(r,t),(0,i.default)(r,[{key:"setValue",value:function(t){var e,i=this,a=!1;if(this.__isNative){var n=this.__getNativeTag();v.setWaitingForIdentifier(n.toString())}var r=null!=(e=p(t))?e:g;if(this._withSuspendedCallbacks((function(){if(b(r)){var t=r;i.r.setValue(t.r),i.g.setValue(t.g),i.b.setValue(t.b),i.a.setValue(t.a),null!=i.nativeColor&&(i.nativeColor=null,a=!0)}else{var e=r;i.nativeColor!==e&&(i.nativeColor=e,a=!0)}})),this.__isNative){var s=this.__getNativeTag();a&&v.updateAnimatedNodeConfig(s,this.__getNativeConfig()),v.unsetWaitingForIdentifier(s.toString())}else(0,f.flushValue)(this);this.__callListeners(this.__getValue())}},{key:"setOffset",value:function(t){this.r.setOffset(t.r),this.g.setOffset(t.g),this.b.setOffset(t.b),this.a.setOffset(t.a)}},{key:"flattenOffset",value:function(){this.r.flattenOffset(),this.g.flattenOffset(),this.b.flattenOffset(),this.a.flattenOffset()}},{key:"extractOffset",value:function(){this.r.extractOffset(),this.g.extractOffset(),this.b.extractOffset(),this.a.extractOffset()}},{key:"stopAnimation",value:function(t){this.r.stopAnimation(),this.g.stopAnimation(),this.b.stopAnimation(),this.a.stopAnimation(),t&&t(this.__getValue())}},{key:"resetAnimation",value:function(t){this.r.resetAnimation(),this.g.resetAnimation(),this.b.resetAnimation(),this.a.resetAnimation(),t&&t(this.__getValue())}},{key:"__getValue",value:function(){return null!=this.nativeColor?this.nativeColor:`rgba(${this.r.__getValue()}, ${this.g.__getValue()}, ${this.b.__getValue()}, ${this.a.__getValue()})`}},{key:"__attach",value:function(){this.r.__addChild(this),this.g.__addChild(this),this.b.__addChild(this),this.a.__addChild(this),c(r,"__attach",this,3)([])}},{key:"__detach",value:function(){this.r.__removeChild(this),this.g.__removeChild(this),this.b.__removeChild(this),this.a.__removeChild(this),c(r,"__detach",this,3)([])}},{key:"_withSuspendedCallbacks",value:function(t){this._suspendCallbacks++,t(),this._suspendCallbacks--}},{key:"__callListeners",value:function(t){0===this._suspendCallbacks&&c(r,"__callListeners",this,3)([t])}},{key:"__makeNative",value:function(t){this.r.__makeNative(t),this.g.__makeNative(t),this.b.__makeNative(t),this.a.__makeNative(t),c(r,"__makeNative",this,3)([t])}},{key:"__getNativeConfig",value:function(){return{type:'color',r:this.r.__getNativeTag(),g:this.g.__getNativeTag(),b:this.b.__getNativeTag(),a:this.a.__getNativeTag(),nativeColor:this.nativeColor}}}])})(o.default)}),527,[1,12,13,23,25,26,28,189,505,519,515,191]); +__d((function(g,r,i,a,m,e,d){'use strict';function n(n){return 3.62*(n-30)+194}function t(n){return 3*(n-8)+25}Object.defineProperty(e,"__esModule",{value:!0}),e.fromBouncinessAndSpeed=function(o,u){function f(n,t,o){return(n-t)/(o-t)}function c(n,t,o){return t+n*(o-t)}function s(n,t,o){return n*o+(1-n)*t}function p(n){return 44e-6*Math.pow(n,3)-.006*Math.pow(n,2)+.36*n+2}function M(n){return 45e-8*Math.pow(n,3)-332e-6*Math.pow(n,2)+.1078*n+5.84}var h=f(o/1.7,0,20);h=c(h,0,.8);var w=c(f(u/1.7,0,20),.5,200),v=(_=h,O=w,l=O<=18?(b=O,7e-4*Math.pow(b,3)-.031*Math.pow(b,2)+.64*b+1.28):O>18&&O<=44?p(O):M(O),A=.01,s(2*_-_*_,l,A));var _,l,A;var O,b;return{stiffness:n(w),damping:t(v)}},e.fromOrigamiTensionAndFriction=function(o,u){return{stiffness:n(o),damping:t(u)}}}),528,[]); +__d((function(g,_r,i,a,m,_e,d){'use strict';var t=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;t(_r(d[1]));var e,n=t(_r(d[2])),o=t(_r(d[3])),r=t(_r(d[4])),u=t(_r(d[5])),s=t(_r(d[6])),_=t(_r(d[7])),l=t(_r(d[8])),f=(t(_r(d[9])),t(_r(d[10])));function h(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(h=function(){return!!t})()}function v(){if(!e){var t=_r(d[11]).default;e=t.inOut(t.ease)}return e}_e.default=(function(t){function e(t){var o,s,_,f,c,p,y,V,N;return(0,n.default)(this,e),y=this,V=e,V=(0,u.default)(V),(p=(0,r.default)(y,h()?Reflect.construct(V,N||[],(0,u.default)(y).constructor):V.apply(y,N)))._toValue=t.toValue,p._easing=null!=(o=t.easing)?o:v(),p._duration=null!=(s=t.duration)?s:500,p._delay=null!=(_=t.delay)?_:0,p.__iterations=null!=(f=t.iterations)?f:1,p._useNativeDriver=l.default.shouldUseNativeDriver(t),p._platformConfig=t.platformConfig,p.__isInteraction=null!=(c=t.isInteraction)?c:!p._useNativeDriver,p.__isLooping=t.isLooping,p}return(0,_.default)(e,t),(0,o.default)(e,[{key:"__getNativeAnimationConfig",value:function(){for(var t=[],e=Math.round(this._duration/16.666666666666668),n=0;n=this._startTime+this._duration)return 0===this._duration?this._onUpdate(this._toValue):this._onUpdate(this._fromValue+this._easing(1)*(this._toValue-this._fromValue)),void this.__debouncedOnEnd({finished:!0});this._onUpdate(this._fromValue+this._easing((t-this._startTime)/this._duration)*(this._toValue-this._fromValue)),this.__active&&(this._animationFrame=requestAnimationFrame(this.onUpdate.bind(this)))}},{key:"stop",value:function(){var t,n,o,r,_;(t=e,n="stop",o=this,r=3,_=(0,s.default)((0,u.default)(1&r?t.prototype:t),n,o),2&r&&"function"==typeof _?function(t){return _.apply(o,t)}:_)([]),this.__active=!1,clearTimeout(this._timeout),g.cancelAnimationFrame(this._animationFrame),this.__debouncedOnEnd({finished:!1})}}])})(f.default)}),529,[1,69,12,13,23,25,26,28,505,527,511,523]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=function(e){var f=o.forwardRef((function(o,f){var l=(0,u.default)(o),i=(0,t.default)(l,2),s=i[0],c=i[1],p=(0,n.default)(c,f),y=s.passthroughAnimatedPropExplicitValues,v=s.style,_=null==y?void 0:y.style,O=(0,a.useMemo)((function(){return(0,r.default)(v,_)}),[_,v]);return(0,_r(d[7]).jsx)(e,Object.assign({},s,y,{style:O,ref:p}))}));return f.displayName=`Animated(${e.displayName||'Anonymous'})`,f};var t=e(_r(d[1])),r=e(_r(d[2])),n=(e(_r(d[3])),e(_r(d[4]))),u=e(_r(d[5])),a=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=f(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var o=u?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(n,a,o):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n})(_r(d[6])),o=a;function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(f=function(e){return e?r:t})(e)}}),530,[1,38,473,182,531,532,178,223]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=function(){for(var t=arguments.length,r=new Array(t),n=0;n1&&void 0!==arguments[1]?arguments[1]:{}).iterations;return E},event:n.default.event,createAnimatedComponent:u.default,attachNativeEvent:r(d[8]).attachNativeEvent,forkEvent:n.default.forkEvent,unforkEvent:n.default.unforkEvent,Event:r(d[8]).AnimatedEvent}}),542,[1,503,530,527,522,513,519,525,518]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),r=e(_r(d[2]));!(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var u={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var o=f?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(u,a,o):u[a]=e[a]}u.default=e,r&&r.set(e,u)})(_r(d[3]));function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}_e.default=(0,r.default)(t.default)}),543,[1,544,530,178]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]),t=e(_r(d[1])),n=e(_r(d[2])),i=e(_r(d[3])),r=e(_r(d[4])),o=e(_r(d[5])),l=e(_r(d[6])),s=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=c(t);if(n&&n.has(e))return n.get(e);var i={__proto__:null},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var l=r?Object.getOwnPropertyDescriptor(e,o):null;l&&(l.get||l.set)?Object.defineProperty(i,o,l):i[o]=e[o]}return i.default=e,n&&n.set(e,i),i})(_r(d[7])),a=e(_r(d[8])),u=["numColumns","columnWrapperStyle","removeClippedSubviews","strictMode"];function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(c=function(e){return e?n:t})(e)}function f(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(f=function(){return!!e})()}var p=_r(d[9]);function h(e){return null!=e?e:1}function v(e){return'number'==typeof Object(e).length}var C=(function(e){function c(e){var t,i,l,s;return(0,n.default)(this,c),i=this,l=c,s=[e],l=(0,o.default)(l),(t=(0,r.default)(i,f()?Reflect.construct(l,s||[],(0,o.default)(i).constructor):l.apply(i,s)))._virtualizedListPairs=[],t._captureRef=function(e){t._listRef=e},t._getItem=function(e,n){var i=h(t.props.numColumns);if(i>1){for(var r=[],o=0;o1?Math.ceil(e.length/n):e.length}return 0},t._keyExtractor=function(e,n){var i,r=h(t.props.numColumns),o=null!=(i=t.props.keyExtractor)?i:_r(d[10]).keyExtractor;return r>1?(_r(d[11])(Array.isArray(e),"FlatList: Encountered internal consistency error, expected each item to consist of an array with 1-%s columns; instead, received a single item.",r),e.map((function(e,t){return o(e,n*r+t)})).join(':')):o(e,n)},t._renderer=function(e,t,n,i,r){var o=h(i),l=function(n){return e?(0,_r(d[12]).jsx)(e,Object.assign({},n)):t?t(n):null},s=function(e){if(o>1){var t=e.item,i=e.index;return _r(d[11])(Array.isArray(t),'Expected array of items with numColumns > 1'),(0,_r(d[12]).jsx)(_r(d[13]),{style:_r(d[14]).compose(y.row,n),children:t.map((function(t,n){var r=l({item:t,index:i*o+n,separators:e.separators});return null!=r?(0,_r(d[12]).jsx)(p.Fragment,{children:r},n):null}))})}return l(e)};return e?{ListItemComponent:s}:{renderItem:s}},t._memoizedRenderer=(0,a.default)(t._renderer),t._checkProps(t.props),t.props.viewabilityConfigCallbackPairs?t._virtualizedListPairs=t.props.viewabilityConfigCallbackPairs.map((function(e){return{viewabilityConfig:e.viewabilityConfig,onViewableItemsChanged:t._createOnViewableItemsChanged(e.onViewableItemsChanged)}})):t.props.onViewableItemsChanged&&t._virtualizedListPairs.push({viewabilityConfig:t.props.viewabilityConfig,onViewableItemsChanged:t._createOnViewableItemsChanged((function(){var e;return _r(d[11])(t.props.onViewableItemsChanged,"Changing the nullability of onViewableItemsChanged is not supported. Once a function or null is supplied that cannot be changed."),(e=t.props).onViewableItemsChanged.apply(e,arguments)}))}),t}return(0,l.default)(c,e),(0,i.default)(c,[{key:"scrollToEnd",value:function(e){this._listRef&&this._listRef.scrollToEnd(e)}},{key:"scrollToIndex",value:function(e){this._listRef&&this._listRef.scrollToIndex(e)}},{key:"scrollToItem",value:function(e){this._listRef&&this._listRef.scrollToItem(e)}},{key:"scrollToOffset",value:function(e){this._listRef&&this._listRef.scrollToOffset(e)}},{key:"recordInteraction",value:function(){this._listRef&&this._listRef.recordInteraction()}},{key:"flashScrollIndicators",value:function(){this._listRef&&this._listRef.flashScrollIndicators()}},{key:"getScrollResponder",value:function(){if(this._listRef)return this._listRef.getScrollResponder()}},{key:"getNativeScrollRef",value:function(){if(this._listRef)return this._listRef.getScrollRef()}},{key:"getScrollableNode",value:function(){if(this._listRef)return this._listRef.getScrollableNode()}},{key:"setNativeProps",value:function(e){this._listRef&&this._listRef.setNativeProps(e)}},{key:"componentDidUpdate",value:function(e){_r(d[11])(e.numColumns===this.props.numColumns,"Changing numColumns on the fly is not supported. Change the key prop on FlatList when changing the number of columns to force a fresh render of the component."),_r(d[11])(null==e.onViewableItemsChanged==(null==this.props.onViewableItemsChanged),'Changing onViewableItemsChanged nullability on the fly is not supported'),_r(d[11])(!_r(d[15])(e.viewabilityConfig,this.props.viewabilityConfig),'Changing viewabilityConfig on the fly is not supported'),_r(d[11])(e.viewabilityConfigCallbackPairs===this.props.viewabilityConfigCallbackPairs,'Changing viewabilityConfigCallbackPairs on the fly is not supported'),this._checkProps(this.props)}},{key:"_checkProps",value:function(e){var t=e.getItem,n=e.getItemCount,i=e.horizontal,r=e.columnWrapperStyle,o=e.onViewableItemsChanged,l=e.viewabilityConfigCallbackPairs,s=h(this.props.numColumns);_r(d[11])(!t&&!n,'FlatList does not support custom data formats.'),s>1?_r(d[11])(!i,'numColumns does not support horizontal.'):_r(d[11])(!r,'columnWrapperStyle not supported for single column lists'),_r(d[11])(!(o&&l),"FlatList does not support setting both onViewableItemsChanged and viewabilityConfigCallbackPairs.")}},{key:"_pushMultiColumnViewable",value:function(e,t){var n,i=h(this.props.numColumns),r=null!=(n=this.props.keyExtractor)?n:_r(d[10]).keyExtractor;t.item.forEach((function(n,o){_r(d[11])(null!=t.index,'Missing index!');var l=t.index*i+o;e.push(Object.assign({},t,{item:n,key:r(n,l),index:l}))}))}},{key:"_createOnViewableItemsChanged",value:function(e){var t=this;return function(n){var i=h(t.props.numColumns);if(e)if(i>1){var r=[],o=[];n.viewableItems.forEach((function(e){return t._pushMultiColumnViewable(o,e)})),n.changed.forEach((function(e){return t._pushMultiColumnViewable(r,e)})),e({viewableItems:o,changed:r})}else e(n)}}},{key:"render",value:function(){var e,n=this.props,i=n.numColumns,r=n.columnWrapperStyle,o=n.removeClippedSubviews,l=n.strictMode,a=void 0!==l&&l,c=(0,t.default)(n,u),f=a?this._memoizedRenderer:this._renderer;return(0,_r(d[12]).jsx)(_r(d[10]).VirtualizedList,Object.assign({},c,{getItem:this._getItem,getItemCount:this._getItemCount,keyExtractor:this._keyExtractor,ref:this._captureRef,viewabilityConfigCallbackPairs:this._virtualizedListPairs,removeClippedSubviews:(e=o,s.shouldUseRemoveClippedSubviewsAsDefaultOnIOS(),null==e||e)},f(this.props.ListItemComponent,this.props.renderItem,r,i,this.props.extraData)))}}])})(p.PureComponent),y=_r(d[14]).create({row:{flexDirection:'row'}});m.exports=C}),544,[1,134,12,13,23,25,28,106,545,178,546,20,223,182,472,291]); +__d((function(g,r,_i2,a,m,e,d){'use strict';var t=Number.isNaN||function(t){return'number'==typeof t&&t!=t};function n(n,u){if(n.length!==u.length)return!1;for(var i=0;i1?'after':x<-1?'before':'none',_=Math.max(0,w-.5*k),j=Math.max(0,C+.5*k);if(v.getCellMetricsApprox(h-1,t).offset*y<_)return{first:Math.max(0,h-1-o),last:h-1};var L=f([_,w,C,j],t,v,y),S=(0,n.default)(L,4),A=S[0],E=S[1],I=S[2],R=S[3];A=null==A?0:A,E=null==E?Math.max(0,A):E,R=null==R?h-1:R,I=null==I?Math.min(R,E+o-1):I;var z={first:E,last:I},B=l(u,z);for(;!(E<=A&&I>=R);){var F=B>=o,J=E<=u.first||E>u.last,N=E>A&&(!F||!J),P=I>=u.last||I=E&&E>=0&&I=A&&I<=R&&E<=z.first&&I>=z.last))throw new Error('Bad window calculation '+JSON.stringify({first:E,last:I,itemCount:h,overscanFirst:A,overscanLast:R,visible:z}));return{first:E,last:I}},e.elementsThatOverlapOffsets=f,e.keyExtractor=function(t,n){if('object'==typeof t&&null!=(null==t?void 0:t.key))return t.key;if('object'==typeof t&&null!=(null==t?void 0:t.id))return t.id;return String(n)},e.newRangeCount=l;var n=t(r(d[1]));function f(t,n,f){for(var l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,o=n.getItemCount(n.data),s=[],u=0;up)){s[u]=M;break}c=M+1}}return s}function l(t,n){return n.last-n.first+1-Math.max(0,1+Math.min(n.last,t.last)-Math.max(n.first,t.first))}}),547,[1,38]); +__d((function(g,_r,_i2,_a,m,_e,d){var e=_r(d[0]),t=e(_r(d[1])),i=e(_r(d[2])),n=e(_r(d[3])),r=e(_r(d[4])),o=e(_r(d[5])),s=e(_r(d[6])),l=e(_r(d[7])),a=e(_r(d[8])),c=e(_r(d[9])),u=e(_r(d[10])),h=e(_r(d[11])),f=e(_r(d[12])),p=e(_r(d[13])),_=e(_r(d[14])),v=e(_r(d[15])),y=e(_r(d[16])),C=e(_r(d[17])),S=e(_r(d[18])),L=e(_r(d[19])),b=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var i=w(t);if(i&&i.has(e))return i.get(e);var n={__proto__:null},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var s=r?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(n,o,s):n[o]=e[o]}return n.default=e,i&&i.set(e,n),n})(_r(d[20])),M=_r(d[21]),I=["onContentSizeChange"];function w(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,i=new WeakMap;return(w=function(e){return e?i:t})(e)}function R(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(R=function(){return!!e})()}var x=!1,k='';function T(e,t){return e*t/2}var V=(function(e){function v(e){var t,i,o,a,u,C,L;if((0,r.default)(this,v),u=this,C=v,L=[e],C=(0,l.default)(C),(a=(0,s.default)(u,R()?Reflect.construct(C,L||[],(0,l.default)(u).constructor):C.apply(u,L)))._getScrollMetrics=function(){return a._scrollMetrics},a._getOutermostParentListRef=function(){return a._isNestedWithSameOrientation()?a.context.getOutermostParentListRef():a},a._registerAsNestedChild=function(e){a._nestedChildLists.add(e.ref,e.cellKey),a._hasInteracted&&e.ref.recordInteraction()},a._unregisterAsNestedChild=function(e){a._nestedChildLists.remove(e.ref)},a._onUpdateSeparators=function(e,t){e.forEach((function(e){var i=null!=e&&a._cellRefs[e];i&&i.updateSeparatorProps(t)}))},a._getSpacerKey=function(e){return e?'height':'width'},a._cellRefs={},a._listMetrics=new _.default,a._footerLength=0,a._hasTriggeredInitialScrollToIndex=!1,a._hasInteracted=!1,a._hasMore=!1,a._hasWarned={},a._headerLength=0,a._hiPriInProgress=!1,a._indicesToKeys=new Map,a._lastFocusedCellKey=null,a._nestedChildLists=new f.default,a._offsetFromParentVirtualizedList=0,a._pendingViewabilityUpdate=!1,a._prevParentOffset=0,a._scrollMetrics={dOffset:0,dt:10,offset:0,timestamp:0,velocity:0,visibleLength:0,zoomScale:1},a._scrollRef=null,a._sentStartForContentLength=0,a._sentEndForContentLength=0,a._viewabilityTuples=[],a._captureScrollRef=function(e){a._scrollRef=e},a._defaultRenderScrollComponent=function(e){var t,i=e.onRefresh;if(a._isNestedWithSameOrientation()){e.onContentSizeChange;var r=(0,n.default)(e,I);return(0,_r(d[22]).jsx)(M.View,Object.assign({},r))}return i?((0,S.default)('boolean'==typeof e.refreshing,'`refreshing` prop must be set as a boolean in order to use `onRefresh`, but got `'+JSON.stringify(null!=(t=e.refreshing)?t:'undefined')+'`'),(0,_r(d[22]).jsx)(M.ScrollView,Object.assign({},e,{refreshControl:null==e.refreshControl?(0,_r(d[22]).jsx)(M.RefreshControl,{refreshing:e.refreshing,onRefresh:i,progressViewOffset:e.progressViewOffset}):e.refreshControl}))):(0,_r(d[22]).jsx)(M.ScrollView,Object.assign({},e))},a._onCellLayout=function(e,t,i){a._listMetrics.notifyCellLayout({cellIndex:i,cellKey:t,layout:e.nativeEvent.layout,orientation:a._orientation()})&&a._scheduleCellsToRenderUpdate(),a._triggerRemeasureForChildListsInCell(t),a._computeBlankness(),a._updateViewableItems(a.props,a.state.cellsAroundViewport)},a._onCellFocusCapture=function(e){a._lastFocusedCellKey=e,a._updateCellsToRender()},a._onCellUnmount=function(e){delete a._cellRefs[e],a._listMetrics.notifyCellUnmounted(e)},a._onLayout=function(e){a._isNestedWithSameOrientation()?a.measureLayoutRelativeToContainingList():a._scrollMetrics.visibleLength=a._selectLength(e.nativeEvent.layout),a.props.onLayout&&a.props.onLayout(e),a._scheduleCellsToRenderUpdate(),a._maybeCallOnEdgeReached()},a._onLayoutEmpty=function(e){a.props.onLayout&&a.props.onLayout(e)},a._onLayoutFooter=function(e){a._triggerRemeasureForChildListsInCell(a._getFooterCellKey()),a._footerLength=a._selectLength(e.nativeEvent.layout)},a._onLayoutHeader=function(e){a._headerLength=a._selectLength(e.nativeEvent.layout)},a._onContentSizeChange=function(e,t){a._listMetrics.notifyListContentLayout({layout:{width:e,height:t},orientation:a._orientation()}),a._maybeScrollToInitialScrollIndex(e,t),a.props.onContentSizeChange&&a.props.onContentSizeChange(e,t),a._scheduleCellsToRenderUpdate(),a._maybeCallOnEdgeReached()},a._convertParentScrollMetrics=function(e){var t=e.offset-a._offsetFromParentVirtualizedList,i=e.visibleLength,n=t-a._scrollMetrics.offset;return{visibleLength:i,contentLength:a._listMetrics.getContentLength(),offset:t,dOffset:n}},a._onScroll=function(e){a._nestedChildLists.forEach((function(t){t._onScroll(e)})),a.props.onScroll&&a.props.onScroll(e);var t=e.timeStamp,i=a._selectLength(e.nativeEvent.layoutMeasurement),n=a._selectLength(e.nativeEvent.contentSize),r=a._offsetFromScrollEvent(e),o=r-a._scrollMetrics.offset;if(a._isNestedWithSameOrientation()){if(0===a._listMetrics.getContentLength())return;var s=a._convertParentScrollMetrics({visibleLength:i,offset:r});i=s.visibleLength,n=s.contentLength,r=s.offset,o=s.dOffset}var l=a._scrollMetrics.timestamp?Math.max(1,t-a._scrollMetrics.timestamp):1,c=o/l;l>500&&a._scrollMetrics.dt>500&&n>5*i&&!a._hasWarned.perf&&((0,h.default)("VirtualizedList: You have a large list that is slow to update - make sure your renderItem function renders components that follow React performance best practices like PureComponent, shouldComponentUpdate, etc.",{dt:l,prevDt:a._scrollMetrics.dt,contentLength:n}),a._hasWarned.perf=!0);var u=e.nativeEvent.zoomScale<0?1:e.nativeEvent.zoomScale;a._scrollMetrics={dt:l,dOffset:o,offset:r,timestamp:t,velocity:c,visibleLength:i,zoomScale:u},a.state.pendingScrollUpdateCount>0&&a.setState((function(e){return{pendingScrollUpdateCount:e.pendingScrollUpdateCount-1}})),a._updateViewableItems(a.props,a.state.cellsAroundViewport),a.props&&(a._maybeCallOnEdgeReached(),0!==c&&a._fillRateHelper.activate(),a._computeBlankness(),a._scheduleCellsToRenderUpdate())},a._onScrollBeginDrag=function(e){a._nestedChildLists.forEach((function(t){t._onScrollBeginDrag(e)})),a._viewabilityTuples.forEach((function(e){e.viewabilityHelper.recordInteraction()})),a._hasInteracted=!0,a.props.onScrollBeginDrag&&a.props.onScrollBeginDrag(e)},a._onScrollEndDrag=function(e){a._nestedChildLists.forEach((function(t){t._onScrollEndDrag(e)}));var t=e.nativeEvent.velocity;t&&(a._scrollMetrics.velocity=a._selectOffset(t)),a._computeBlankness(),a.props.onScrollEndDrag&&a.props.onScrollEndDrag(e)},a._onMomentumScrollBegin=function(e){a._nestedChildLists.forEach((function(t){t._onMomentumScrollBegin(e)})),a.props.onMomentumScrollBegin&&a.props.onMomentumScrollBegin(e)},a._onMomentumScrollEnd=function(e){a._nestedChildLists.forEach((function(t){t._onMomentumScrollEnd(e)})),a._scrollMetrics.velocity=0,a._computeBlankness(),a.props.onMomentumScrollEnd&&a.props.onMomentumScrollEnd(e)},a._updateCellsToRender=function(){a._updateViewableItems(a.props,a.state.cellsAroundViewport),a.setState((function(e,t){var i=a._adjustCellsAroundViewport(t,e.cellsAroundViewport,e.pendingScrollUpdateCount),n=v._createRenderMask(t,i,a._getNonViewportRenderRegions(t));return i.first===e.cellsAroundViewport.first&&i.last===e.cellsAroundViewport.last&&n.equals(e.renderMask)?null:{cellsAroundViewport:i,renderMask:n}}))},a._createViewToken=function(e,t,i){var n=i.data,r=(0,i.getItem)(n,e);return{index:e,item:r,key:v._keyExtractor(r,e,i),isViewable:t}},a._getNonViewportRenderRegions=function(e){if(!a._lastFocusedCellKey||!a._cellRefs[a._lastFocusedCellKey])return[];var t=a._cellRefs[a._lastFocusedCellKey].props.index,i=e.getItemCount(e.data);if(t>=i||v._getItemKey(e,t)!==a._lastFocusedCellKey)return[];for(var n=t,r=0,o=n-1;o>=0&&rT?v._getItemKey(a.props,T):null,pendingScrollUpdateCount:null!=a.props.initialScrollIndex&&a.props.initialScrollIndex>0?1:0},a}return(0,a.default)(v,e),(0,o.default)(v,[{key:"scrollToEnd",value:function(e){var t=!e||e.animated,i=this.props.getItemCount(this.props.data)-1;if(!(i<0)){var n=this._listMetrics.getCellMetricsApprox(i,this.props),r=Math.max(0,n.offset+n.length+this._footerLength-this._scrollMetrics.visibleLength);this.scrollToOffset({animated:t,offset:r})}}},{key:"scrollToIndex",value:function(e){var t=this.props,i=t.data,n=t.getItemCount,r=t.getItemLayout,o=t.onScrollToIndexFailed,s=e.animated,l=e.index,a=e.viewOffset,c=e.viewPosition;if((0,S.default)(l>=0,`scrollToIndex out of range: requested index ${l} but minimum is 0`),(0,S.default)(n(i)>=1,`scrollToIndex out of range: item length ${n(i)} but minimum is 1`),(0,S.default)(lthis._listMetrics.getHighestMeasuredCellIndex())return(0,S.default)(!!o,"scrollToIndex should be used in conjunction with getItemLayout or onScrollToIndexFailed, otherwise there is no way to know the location of offscreen indices or handle failures."),void o({averageItemLength:this._listMetrics.getAverageCellLength(),highestMeasuredFrameIndex:this._listMetrics.getHighestMeasuredCellIndex(),index:l});var u=this._listMetrics.getCellMetricsApprox(Math.floor(l),this.props),h=Math.max(0,this._listMetrics.getCellOffsetApprox(l,this.props)-(c||0)*(this._scrollMetrics.visibleLength-u.length))-(a||0);this.scrollToOffset({offset:h,animated:s})}},{key:"scrollToItem",value:function(e){for(var t=e.item,i=this.props,n=i.data,r=i.getItem,o=(0,i.getItemCount)(n),s=0;s0,'VirtualizedList: The windowSize prop must be present and set to a value greater than 0.'),(0,S.default)(n,'VirtualizedList: The "getItemCount" prop must be provided');var s=n(r);null==o||this._hasTriggeredInitialScrollToIndex||!(o<0||s>0&&o>=s)||this._hasWarned.initialScrollIndex||(console.warn(`initialScrollIndex "${o}" is not valid (list has ${s} items)`),this._hasWarned.initialScrollIndex=!0)}},{key:"_adjustCellsAroundViewport",value:function(e,t,i){var n,r=e.data,o=e.getItemCount,s=(0,_r(d[23]).onEndReachedThresholdOrDefault)(e.onEndReachedThreshold),l=this._scrollMetrics,a=l.offset,c=l.visibleLength,u=this._listMetrics.getContentLength(),h=u-c-a;if(c<=0||u<=0)return t.last>=o(r)?v._constrainToItemCount(t,e):t;if(e.disableVirtualization){var f=h0)return t.last>=o(r)?v._constrainToItemCount(t,e):t;n=(0,_r(d[24]).computeWindowedRenderLimits)(e,(0,_r(d[23]).maxToRenderPerBatchOrDefault)(e.maxToRenderPerBatch),(0,_r(d[23]).windowSizeOrDefault)(e.windowSize),t,this._listMetrics,this._scrollMetrics),(0,S.default)(n.last0){var p=this._findFirstChildWithMore(n.first,n.last);n.last=null!=p?p:n.last}return n}},{key:"_findFirstChildWithMore",value:function(e,t){for(var i=e;i<=t;i++){var n=this._indicesToKeys.get(i);if(null!=n&&this._nestedChildLists.anyInCell(n,(function(e){return e.hasMore()})))return i}return null}},{key:"componentDidMount",value:function(){this._isNestedWithSameOrientation()&&this.context.registerAsNestedChild({ref:this,cellKey:this.context.cellKey})}},{key:"componentWillUnmount",value:function(){this._isNestedWithSameOrientation()&&this.context.unregisterAsNestedChild({ref:this}),this._updateCellsToRenderBatcher.dispose({abort:!0}),this._viewabilityTuples.forEach((function(e){e.viewabilityHelper.dispose()})),this._fillRateHelper.deactivateAndFlush()}},{key:"_pushCells",value:function(e,t,i,n,r,o){var s,l=this,a=this.props,c=a.CellRendererComponent,u=a.ItemSeparatorComponent,h=a.ListHeaderComponent,f=a.ListItemComponent,p=a.data,_=a.debug,y=a.getItem,S=a.getItemCount,L=a.getItemLayout,b=a.horizontal,M=a.renderItem,I=h?1:0,w=S(p)-1;r=Math.min(w,r);for(var R=function(){var n=y(p,x),r=v._keyExtractor(n,x,l.props);l._indicesToKeys.set(x,r),i.has(x+I)&&t.push(e.length);var a=null==L||_||l._fillRateHelper.enabled();e.push((0,_r(d[22]).jsx)(C.default,Object.assign({CellRendererComponent:c,ItemSeparatorComponent:x0){x=!1,k='';var S=this._getSpacerKey(!c),L=this.state.renderMask.enumerateRegions(),I=L[L.length-1],w=null!=I&&I.isSpacer?I:null;for(var R of L)if(R.isSpacer){if(this.props.disableVirtualization)continue;var T=R===w&&!this.props.getItemLayout?(0,u.default)(R.first-1,R.last,this._listMetrics.getHighestMeasuredCellIndex()):R.last,V=this._listMetrics.getCellMetricsApprox(R.first,this.props),E=this._listMetrics.getCellMetricsApprox(T,this.props),z=E.offset+E.length-V.offset;f.push((0,_r(d[22]).jsx)(M.View,{style:(0,i.default)({},S,z)},`$spacer-${R.first}`))}else this._pushCells(f,_,p,R.first,R.last,h);!this._hasWarned.keys&&x&&(console.warn("VirtualizedList: missing keys for items, make sure to specify a key or id property on each item or provide a custom keyExtractor.",k),this._hasWarned.keys=!0)}if(o){var P=b.isValidElement(o)?o:(0,_r(d[22]).jsx)(o,{});f.push((0,_r(d[22]).jsx)(_r(d[25]).VirtualizedListCellContextProvider,{cellKey:this._getFooterCellKey(),children:(0,_r(d[22]).jsx)(M.View,{onLayout:this._onLayoutFooter,style:M.StyleSheet.compose(h,this.props.ListFooterComponentStyle),children:P})},"$footer"))}var F=Object.assign({},this.props,{onContentSizeChange:this._onContentSizeChange,onLayout:this._onLayout,onScroll:this._onScroll,onScrollBeginDrag:this._onScrollBeginDrag,onScrollEndDrag:this._onScrollEndDrag,onMomentumScrollBegin:this._onMomentumScrollBegin,onMomentumScrollEnd:this._onMomentumScrollEnd,scrollEventThrottle:null!=(e=this.props.scrollEventThrottle)?e:1e-4,invertStickyHeaders:void 0!==this.props.invertStickyHeaders?this.props.invertStickyHeaders:this.props.inverted,stickyHeaderIndices:_,style:h?[h,this.props.style]:this.props.style,isInvertedVirtualizedList:this.props.inverted,maintainVisibleContentPosition:null!=this.props.maintainVisibleContentPosition?Object.assign({},this.props.maintainVisibleContentPosition,{minIndexForVisible:this.props.maintainVisibleContentPosition.minIndexForVisible+(this.props.ListHeaderComponent?1:0)}):void 0});this._hasMore=this.state.cellsAroundViewport.last0)){var l=this._scrollMetrics,a=l.visibleLength,c=l.offset,u=c,h=this._listMetrics.getContentLength()-a-c;u<.001&&(u=0),h<.001&&(h=0);var f=u<=(null!=r?r*a:2),p=h<=(null!=s?s*a:2);o&&this.state.cellsAroundViewport.last===i(t)-1&&p&&this._listMetrics.getContentLength()!==this._sentEndForContentLength&&(this._sentEndForContentLength=this._listMetrics.getContentLength(),o({distanceFromEnd:h})),null!=n&&0===this.state.cellsAroundViewport.first&&f&&this._listMetrics.getContentLength()!==this._sentStartForContentLength&&(this._sentStartForContentLength=this._listMetrics.getContentLength(),n({distanceFromStart:u})),f||(this._sentStartForContentLength=0),p||(this._sentEndForContentLength=0)}}},{key:"_maybeScrollToInitialScrollIndex",value:function(e,t){e>0&&t>0&&null!=this.props.initialScrollIndex&&this.props.initialScrollIndex>0&&!this._hasTriggeredInitialScrollToIndex&&(null==this.props.contentOffset&&(this.props.initialScrollIndex0||null!=this.props.getItemLayout)&&this._shouldRenderWithPriority()&&!this._hiPriInProgress)return this._hiPriInProgress=!0,this._updateCellsToRenderBatcher.dispose({abort:!0}),void this._updateCellsToRender();this._updateCellsToRenderBatcher.schedule()}},{key:"_shouldRenderWithPriority",value:function(){var e=this.state.cellsAroundViewport,t=e.first,i=e.last,n=this._scrollMetrics,r=n.offset,o=n.visibleLength,s=n.velocity,l=this.props.getItemCount(this.props.data),a=!1,c=(0,_r(d[23]).onStartReachedThresholdOrDefault)(this.props.onStartReachedThreshold),u=(0,_r(d[23]).onEndReachedThresholdOrDefault)(this.props.onEndReachedThreshold);if(t>0){var h=r-this._listMetrics.getCellMetricsApprox(t,this.props).offset;a=h<0||s<-2&&h=0&&i2&&f0||this._viewabilityTuples.forEach((function(n){n.viewabilityHelper.onUpdate(e,i._scrollMetrics.offset,i._scrollMetrics.visibleLength,i._listMetrics,i._createViewToken,n.onViewableItemsChanged,t)}))}}],[{key:"_findItemIndexWithKey",value:function(e,t,i){var n=e.getItemCount(e.data);if(null!=i&&i>=0&&i=0&&i.last>=i.first-1&&i.last0){var s=[i].concat((0,t.default)(null!=n?n:[]));for(var l of s)o.addCells(l);if(null==e.initialScrollIndex||e.initialScrollIndex<=0){var a=v._initialRenderRegion(e);o.addCells(a)}var c=new Set(e.stickyHeaderIndices);v._ensureClosestStickyHeader(e,c,o,i.first)}return o}},{key:"_initialRenderRegion",value:function(e){var t,i=e.getItemCount(e.data),n=Math.max(0,Math.min(i-1,Math.floor(null!=(t=e.initialScrollIndex)?t:0)));return{first:n,last:Math.min(i,n+(0,_r(d[23]).initialNumToRenderOrDefault)(e.initialNumToRender))-1}}},{key:"_ensureClosestStickyHeader",value:function(e,t,i,n){for(var r=e.ListHeaderComponent?1:0,o=n-1;o>=0;o--)if(t.has(o+r)){i.addCells({first:o,last:o});break}}},{key:"getDerivedStateFromProps",value:function(e,t){var i,n,r=e.getItemCount(e.data);if(r===t.renderMask.numCells())return t;var o=null,s=t.firstVisibleItemKey,l=null!=(i=null==(n=e.maintainVisibleContentPosition)?void 0:n.minIndexForVisible)?i:0,a=e.getItemCount(e.data)>l?v._getItemKey(e,l):null;if(null!=e.maintainVisibleContentPosition&&null!=s&&null!=a)if(a!==s){var c=r-t.renderMask.numCells()+l,u=v._findItemIndexWithKey(e,s,c);o=null!=u?u-l:null}else o=null;var h=v._constrainToItemCount(null!=o?{first:t.cellsAroundViewport.first+o,last:t.cellsAroundViewport.last+o}:t.cellsAroundViewport,e);return{cellsAroundViewport:h,renderMask:v._createRenderMask(e,h),firstVisibleItemKey:a,pendingScrollUpdateCount:null!=o?t.pendingScrollUpdateCount+1:t.pendingScrollUpdateCount}}},{key:"_constrainToItemCount",value:function(e,t){var i=t.getItemCount(t.data)-1,n=(0,_r(d[23]).maxToRenderPerBatchOrDefault)(t.maxToRenderPerBatch),r=Math.max(0,i-n);return{first:(0,u.default)(0,e.first,r),last:Math.min(i,e.last)}}},{key:"_keyExtractor",value:function(e,t,i){if(null!=i.keyExtractor)return i.keyExtractor(e,t);var n=(0,_r(d[24]).keyExtractor)(e,t);return n===String(t)&&(x=!0,e.type&&e.type.displayName&&(k=e.type.displayName)),n}}])})(v.default);V.contextType=_r(d[25]).VirtualizedListContext;var O=M.StyleSheet.create({verticallyInverted:'android'===M.Platform.OS?{transform:[{scale:-1}]}:{transform:[{scaleY:-1}]},horizontallyInverted:{transform:[{scaleX:-1}]},debug:{flex:1},debugOverlayBase:{position:'absolute',top:0,right:0},debugOverlay:{bottom:0,width:20,borderColor:'blue',borderWidth:1},debugOverlayFrame:{left:0,backgroundColor:'orange'},debugOverlayFrameLast:{left:0,borderColor:'green',borderWidth:2},debugOverlayFrameVis:{left:0,borderColor:'red',borderWidth:2}});m.exports=V}),548,[1,6,198,134,12,13,23,25,28,549,550,551,552,553,554,555,556,557,20,45,178,2,223,559,547,558,560]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),l=r(d[2]).InteractionManager,s=(function(){return n((function n(l,s){t(this,n),this._delay=s,this._callback=l}),[{key:"dispose",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{abort:!1};this._taskHandle&&(this._taskHandle.cancel(),t.abort||this._callback(),this._taskHandle=null)}},{key:"schedule",value:function(){var t=this;if(!this._taskHandle){var n=setTimeout((function(){t._taskHandle=l.runAfterInteractions((function(){t._taskHandle=null,t._callback()}))}),this._delay);this._taskHandle={cancel:function(){return clearTimeout(n)}}}}}])})();m.exports=s}),549,[12,13,2]); +__d((function(g,r,i,a,m,e,d){'use strict';m.exports=function(t,n,u){return nu?u:n}}),550,[]); +__d((function(g,r,i,a,m,e,d){'use strict';m.exports=function(){var n;return(n=console).log.apply(n,arguments)}}),551,[]); +__d((function(g,r,i,a,m,e,d){var l=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=l(r(d[1])),t=l(r(d[2])),o=l(r(d[3]));e.default=(function(){return(0,t.default)((function l(){(0,n.default)(this,l),this._cellKeyToChildren=new Map,this._childrenToCellKey=new Map}),[{key:"add",value:function(l,n){var t;(0,o.default)(!this._childrenToCellKey.has(l),'Trying to add already present child list');var h=null!=(t=this._cellKeyToChildren.get(n))?t:new Set;h.add(l),this._cellKeyToChildren.set(n,h),this._childrenToCellKey.set(l,n)}},{key:"remove",value:function(l){var n=this._childrenToCellKey.get(l);(0,o.default)(null!=n,'Trying to remove non-present child list'),this._childrenToCellKey.delete(l);var t=this._cellKeyToChildren.get(n);(0,o.default)(t,'_cellKeyToChildren should contain cellKey'),t.delete(l),0===t.size&&this._cellKeyToChildren.delete(n)}},{key:"forEach",value:function(l){for(var n of this._cellKeyToChildren.values())for(var t of n)l(t)}},{key:"forEachInCell",value:function(l,n){var t,o=null!=(t=this._cellKeyToChildren.get(l))?t:[];for(var h of o)n(h)}},{key:"anyInCell",value:function(l,n){var t,o=null!=(t=this._cellKeyToChildren.get(l))?t:[];for(var h of o)if(n(h))return!0;return!1}},{key:"size",value:function(){return this._childrenToCellKey.size}}])})()}),552,[1,12,13,20]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]),s=t(r(d[1])),n=t(r(d[2])),l=(t(r(d[3])),(0,s.default)((function t(){(0,n.default)(this,t),this.any_blank_count=0,this.any_blank_ms=0,this.any_blank_speed_sum=0,this.mostly_blank_count=0,this.mostly_blank_ms=0,this.pixels_blank=0,this.pixels_sampled=0,this.pixels_scrolled=0,this.total_time_spent=0,this.sample_count=0}))),_=[],o=10,h=null,u=(function(){return(0,s.default)((function t(s){(0,n.default)(this,t),this._anyBlankStartTime=null,this._enabled=!1,this._info=new l,this._mostlyBlankStartTime=null,this._samplesStartTime=null,this._listMetrics=s,this._enabled=(h||0)>Math.random(),this._resetData()}),[{key:"activate",value:function(){this._enabled&&null==this._samplesStartTime&&(this._samplesStartTime=g.performance.now())}},{key:"deactivateAndFlush",value:function(){if(this._enabled){var t=this._samplesStartTime;if(null!=t)if(this._info.sample_count0&&(c=Math.min(h,Math.max(0,p.offset-_)));for(var y=0,b=s.last,M=this._listMetrics.getCellMetrics(b,t);b>=s.first&&(!M||!M.isMounted);)M=this._listMetrics.getCellMetrics(b,t),b--;if(M&&b0?(this._anyBlankStartTime=f,this._info.any_blank_speed_sum+=u,this._info.any_blank_count++,this._info.pixels_blank+=S,T>.5&&(this._mostlyBlankStartTime=f,this._info.mostly_blank_count++)):(u<.01||Math.abs(l)<1)&&this.deactivateAndFlush(),T}},{key:"enabled",value:function(){return this._enabled}},{key:"_resetData",value:function(){this._anyBlankStartTime=null,this._info=new l,this._mostlyBlankStartTime=null,this._samplesStartTime=null}}],[{key:"addListener",value:function(t){return null===h&&console.warn('Call `FillRateHelper.setSampleRate` before `addListener`.'),_.push(t),{remove:function(){_=_.filter((function(s){return t!==s}))}}}},{key:"setSampleRate",value:function(t){h=t}},{key:"setMinSampleCount",value:function(t){o=t}}])})();m.exports=u}),553,[1,13,12,554]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(r(d[1])),l=t(r(d[2])),s=t(r(d[3]));e.default=(function(){return(0,l.default)((function t(){(0,n.default)(this,t),this._averageCellLength=0,this._cellMetrics=new Map,this._highestMeasuredCellIndex=0,this._measuredCellsLength=0,this._measuredCellsCount=0,this._orientation={horizontal:!1,rtl:!1}}),[{key:"notifyCellLayout",value:function(t){var n=t.cellIndex,l=t.cellKey,s=t.orientation,o=t.layout;this._invalidateIfOrientationChanged(s);var h={index:n,length:this._selectLength(o),isMounted:!0,offset:this.flowRelativeOffset(o)},u=this._cellMetrics.get(l);if(u&&h.offset===u.offset&&h.length===u.length)return u.isMounted=!0,!1;if(u){var f=h.length-u.length;this._measuredCellsLength+=f}else this._measuredCellsLength+=h.length,this._measuredCellsCount+=1;return this._averageCellLength=this._measuredCellsLength/this._measuredCellsCount,this._cellMetrics.set(l,h),this._highestMeasuredCellIndex=Math.max(this._highestMeasuredCellIndex,n),!0}},{key:"notifyCellUnmounted",value:function(t){var n=this._cellMetrics.get(t);n&&(n.isMounted=!1)}},{key:"notifyListContentLayout",value:function(t){var n=t.orientation,l=t.layout;this._invalidateIfOrientationChanged(n),this._contentLength=this._selectLength(l)}},{key:"getAverageCellLength",value:function(){return this._averageCellLength}},{key:"getHighestMeasuredCellIndex",value:function(){return this._highestMeasuredCellIndex}},{key:"getCellMetricsApprox",value:function(t,n){var l=this.getCellMetrics(t,n);if(l&&l.index===t)return l;var o=n.data,h=n.getItemCount;return(0,s.default)(t>=0&&t=0&&t0&&void 0!==arguments[0]?arguments[0]:{viewAreaCoveragePercentThreshold:0};(0,s.default)(this,t),this._hasInteracted=!1,this._timers=new Set,this._viewableIndices=[],this._viewableItems=new Map,this._config=n}),[{key:"dispose",value:function(){this._timers.forEach(clearTimeout)}},{key:"computeViewableItems",value:function(t,n,s,o,l){var c=t.getItemCount(t.data),h=this._config,f=h.itemVisiblePercentThreshold,v=h.viewAreaCoveragePercentThreshold,_=null!=v,w=_?v:f;r(d[5])(null!=w&&null!=f!=(null!=v),'Must set exactly one of itemVisiblePercentThreshold or viewAreaCoveragePercentThreshold');var I=[];if(0===c)return I;var b=-1,y=l||{first:0,last:c-1},p=y.first,M=y.last;if(M>=c)return console.warn('Invalid render range computing viewability '+JSON.stringify({renderRange:l,itemCount:c})),[];for(var C=p;C<=M;C++){var T=o.getCellMetrics(C,t);if(T){var k=Math.floor(T.offset-n),V=Math.floor(k+T.length);if(k0)b=C,u(_,w,k,V,s,T.length)&&I.push(C);else if(b>=0)break}}return I}},{key:"onUpdate",value:function(t,n,s,o,l,u,c){var h=this,f=t.getItemCount(t.data);if((!this._config.waitForInteraction||this._hasInteracted)&&0!==f&&o.getCellMetrics(0,t)){var v=[];if(f&&(v=this.computeViewableItems(t,n,s,o,c)),this._viewableIndices.length!==v.length||!this._viewableIndices.every((function(t,n){return t===v[n]})))if(this._viewableIndices=v,this._config.minimumViewTime){var _=setTimeout((function(){h._timers.delete(_),h._onUpdateSync(t,v,u,l)}),this._config.minimumViewTime);this._timers.add(_)}else this._onUpdateSync(t,v,u,l)}}},{key:"resetViewableIndices",value:function(){this._viewableIndices=[]}},{key:"recordInteraction",value:function(){this._hasInteracted=!0}},{key:"_onUpdateSync",value:function(t,s,o,l){var u=this;s=s.filter((function(t){return u._viewableIndices.includes(t)}));var c=this._viewableItems,h=new Map(s.map((function(n){var s=l(n,!0,t);return[s.key,s]}))),f=[];for(var v of h){var _=(0,n.default)(v,2),w=_[0],I=_[1];c.has(w)||f.push(I)}for(var b of c){var y=(0,n.default)(b,2),p=y[0],M=y[1];h.has(p)||f.push(Object.assign({},M,{isViewable:!1}))}f.length>0&&(this._viewableItems=h,o({viewableItems:Array.from(h.values()),changed:f,viewabilityConfig:this._config}))}}])})());function u(t,n,s,o,l,u){if(h(s,o,l))return!0;var f=c(s,o,l);return 100*(t?f/l:f/u)>=n}function c(t,n,s){var o=Math.min(n,s)-Math.max(t,0);return Math.max(0,o)}function h(t,n,s){return t>=0&&n<=s&&n>t}m.exports=l}),556,[1,38,12,13,554,20]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),r=e(_r(d[2])),o=e(_r(d[3])),n=e(_r(d[4])),a=e(_r(d[5])),l=c(_r(d[6])),s=e(_r(d[7])),i=c(_r(d[8])),p=_r(d[9]);function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(u=function(e){return e?r:t})(e)}function c(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=u(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var l=n?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(o,a,l):o[a]=e[a]}return o.default=e,r&&r.set(e,o),o}function f(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(f=function(){return!!e})()}_e.default=(function(e){function u(){var e,r,a,l;(0,t.default)(this,u);for(var s=arguments.length,i=new Array(s),p=0;p=0,'CellRenderMask must contain a non-negative number os cells'),this._numCells=t,this._regions=0===t?[]:[{first:0,last:t-1,isSpacer:!0}]}),[{key:"enumerateRegions",value:function(){return this._regions}},{key:"addCells",value:function(s){var l;if((0,f.default)(s.first>=0&&s.first=-1&&s.last=s.first-1,'CellRenderMask.addCells called with invalid cell range'),!(s.lastS.last&&(v.isSpacer?k.push({first:S.last+1,last:v.last,isSpacer:!0}):S.last=v.last);var y=[].concat(C,[S],k),R=p-c+1;(l=this._regions).splice.apply(l,[c,R].concat((0,t.default)(y)))}}}},{key:"numCells",value:function(){return this._numCells}},{key:"equals",value:function(s){return this._numCells===s._numCells&&this._regions.length===s._regions.length&&this._regions.every((function(t,i){return t.first===s._regions[i].first&&t.last===s._regions[i].last&&t.isSpacer===s._regions[i].isSpacer}))}},{key:"_findRegion",value:function(s){for(var t=0,i=this._regions.length-1;t<=i;){var l=Math.floor((t+i)/2),n=this._regions[l];if(s>=n.first&&s<=n.last)return[n,l];sn.last&&(t=l+1)}(0,f.default)(!1,`A region was not found containing cellIdx ${s}`)}}])})()}),560,[1,6,38,12,13,20]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]),t=e(_r(d[1])),n=e(_r(d[2])),r=e(_r(d[3])),i=e(_r(d[4])),o=e(_r(d[5])),a=e(_r(d[6])),l=e(_r(d[7])),s=e(_r(d[8])),u=e(_r(d[9])),c=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=f(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var a=i?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(r,o,a):r[o]=e[o]}return r.default=e,n&&n.set(e,r),r})(_r(d[10])),p=["ItemSeparatorComponent","SectionSeparatorComponent","renderItem","renderSectionFooter","renderSectionHeader","sections","stickySectionHeadersEnabled"];function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(f=function(e){return e?n:t})(e)}function h(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(h=function(){return!!e})()}var v=(function(e){function t(){var e,n,i,l;(0,r.default)(this,t);for(var s=arguments.length,c=new Array(s),p=0;p0&&this.props.stickySectionHeadersEnabled)r+=i.__getListMetrics().getCellMetricsApprox(t-e.itemIndex,i.props).length;var o=Object.assign({},e,{viewOffset:r,index:t});this._listRef.scrollToIndex(o)}}},{key:"getListRef",value:function(){return this._listRef}},{key:"render",value:function(){var e=this,t=this.props,r=(t.ItemSeparatorComponent,t.SectionSeparatorComponent,t.renderItem,t.renderSectionFooter,t.renderSectionHeader,t.sections,t.stickySectionHeadersEnabled,(0,n.default)(t,p)),i=this.props.ListHeaderComponent?1:0,o=this.props.stickySectionHeadersEnabled?[]:void 0,a=0;for(var l of this.props.sections)null!=o&&o.push(a+i),a+=2,a+=this.props.getItemCount(l.data);var u=this._renderItem(a);return(0,_r(d[12]).jsx)(s.default,Object.assign({},r,{keyExtractor:this._keyExtractor,stickyHeaderIndices:o,renderItem:u,data:this.props.sections,getItem:function(t,n){return e._getItem(e.props,t,n)},getItemCount:function(){return a},onViewableItemsChanged:this.props.onViewableItemsChanged?this._onViewableItemsChanged:void 0,ref:this._captureRef}))}},{key:"_getItem",value:function(e,t,n){if(!t)return null;for(var r=n-1,i=0;i=i(u)+1))return-1===t?{section:s,key:c+':header',index:null,header:!0,trailingSection:a[l+1]}:t===i(u)?{section:s,key:c+':footer',index:null,header:!1,trailingSection:a[l+1]}:{section:s,key:c+':'+(s.keyExtractor||o||_r(d[11]).keyExtractor)(r(u,t),t),index:t,leadingItem:r(u,t-1),leadingSection:a[l-1],trailingItem:r(u,t+1),trailingSection:a[l+1]};t-=i(u)+1}}},{key:"_getSeparatorComponent",value:function(e,t,n){if(!(t=t||this._subExtractor(e)))return null;var r=t.section.ItemSeparatorComponent||this.props.ItemSeparatorComponent,i=this.props.SectionSeparatorComponent,o=e===n-1,a=t.index===this.props.getItemCount(t.section.data)-1;return i&&a?i:!r||a||o?null:r}}])})(c.PureComponent);function S(e){var n=e.LeadingSeparatorComponent,r=e.SeparatorComponent,i=e.cellKey,o=e.prevCellKey,a=e.setSelfHighlightCallback,l=e.updateHighlightFor,s=e.setSelfUpdatePropsCallback,u=e.updatePropsFor,p=e.item,f=e.index,h=e.section,v=e.inverted,S=c.useState(!1),_=(0,t.default)(S,2),I=_[0],y=_[1],x=c.useState(!1),b=(0,t.default)(x,2),k=b[0],C=b[1],H=c.useState({leadingItem:e.leadingItem,leadingSection:e.leadingSection,section:e.section,trailingItem:e.item,trailingSection:e.trailingSection}),E=(0,t.default)(H,2),w=E[0],P=E[1],j=c.useState({leadingItem:e.item,leadingSection:e.leadingSection,section:e.section,trailingItem:e.trailingItem,trailingSection:e.trailingSection}),O=(0,t.default)(j,2),F=O[0],M=O[1];c.useEffect((function(){return a(i,C),s(i,M),function(){s(i,null),a(i,null)}}),[i,a,M,s]);var R={highlight:function(){y(!0),C(!0),null!=o&&l(o,!0)},unhighlight:function(){y(!1),C(!1),null!=o&&l(o,!1)},updateProps:function(e,t){'leading'===e?null!=n?P(Object.assign({},w,t)):null!=o&&u(o,Object.assign({},w,t)):'trailing'===e&&null!=r&&M(Object.assign({},F,t))}},V=e.renderItem({item:p,index:f,section:h,separators:R}),L=null!=n&&(0,_r(d[12]).jsx)(n,Object.assign({highlighted:I},w)),U=null!=r&&(0,_r(d[12]).jsx)(r,Object.assign({highlighted:k},F)),B=L||U,K=!1===v?L:U,T=!1===v?U:L;return(0,_r(d[12]).jsxs)(_r(d[12]).Fragment,{children:[B?K:null,V,B?T:null]})}m.exports=v}),561,[1,38,134,12,13,23,25,28,548,20,178,547,223]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),r=e(_r(d[2]));!(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var u={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var o=f?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(u,a,o):u[a]=e[a]}u.default=e,r&&r.set(e,u)})(_r(d[3]));function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}_e.default=(0,r.default)(t.default)}),562,[1,563,530,178]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]),t=e(_r(d[1])),a=e(_r(d[2])),n=e(_r(d[3])),r=e(_r(d[4])),i=e(_r(d[5])),l=e(_r(d[6])),o=e(_r(d[7])),u=e(_r(d[8])),c=e(_r(d[9])),s=e(_r(d[10])),f=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var a=b(t);if(a&&a.has(e))return a.get(e);var n={__proto__:null},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var l=r?Object.getOwnPropertyDescriptor(e,i):null;l&&(l.get||l.set)?Object.defineProperty(n,i,l):n[i]=e[i]}return n.default=e,a&&a.set(e,n),n})(_r(d[11])),h=["height","width"];function b(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,a=new WeakMap;return(b=function(e){return e?a:t})(e)}var y=1;function v(e,t){var a=y++;return t&&t(a),u.default.prefetchImage(e,a)}function p(){return(p=(0,a.default)((function*(e){return u.default.queryCache(e)}))).apply(this,arguments)}var w=f.forwardRef((function(e,a){var r,u,f,b,y,v,p,w,S,I,z,O,M,_,k,x,L=(0,_r(d[12]).getImageSourcesFromImageProps)(e)||{uri:void 0,width:void 0,height:void 0},P=(0,c.default)(e.defaultSource),W=(0,c.default)(e.loadingIndicatorSource);if(e.children)throw new Error('The component cannot contain children. If you want to render content on top of the image, consider using the component or absolute positioning.');if(null!=e.defaultSource&&null!=e.loadingIndicatorSource)throw new Error('The component cannot have defaultSource and loadingIndicatorSource at the same time. Please use either defaultSource or loadingIndicatorSource.');if(Array.isArray(L))k=[j.base,e.style],x=L;else{var C,E;''===L.uri&&console.warn('source.uri should not be an empty string');var F=null!=(C=L.width)?C:e.width,A=null!=(E=L.height)?E:e.height;k=[{width:F,height:A},j.base,e.style],x=[L]}e.height,e.width;var R=(0,t.default)(e,h),T=e.onLoadStart,q=e.onLoad,B=e.onLoadEnd,D=e.onError,H=Object.assign({},R,{style:k,shouldNotifyLoadEvents:!!(T||q||B||D),src:x,source:x,headers:(null==L||null==(r=L[0])?void 0:r.headers)||(null==L?void 0:L.headers),defaultSrc:P?P.uri:null,loadingIndicatorSrc:W?W.uri:null,accessibilityLabel:null!=(u=null!=(f=e['aria-label'])?f:e.accessibilityLabel)?u:e.alt,accessibilityLabelledBy:null!=(b=null==e?void 0:e['aria-labelledby'])?b:null==e?void 0:e.accessibilityLabelledBy,accessible:void 0!==e.alt||e.accessible,accessibilityState:{busy:null!=(y=e['aria-busy'])?y:null==(v=e.accessibilityState)?void 0:v.busy,checked:null!=(p=e['aria-checked'])?p:null==(w=e.accessibilityState)?void 0:w.checked,disabled:null!=(S=e['aria-disabled'])?S:null==(I=e.accessibilityState)?void 0:I.disabled,expanded:null!=(z=e['aria-expanded'])?z:null==(O=e.accessibilityState)?void 0:O.expanded,selected:null!=(M=e['aria-selected'])?M:null==(_=e.accessibilityState)?void 0:_.selected}}),N=(0,n.default)(k),G=(0,_r(d[13]).convertObjectFitToResizeMode)(null==N?void 0:N.objectFit)||e.resizeMode||(null==N?void 0:N.resizeMode)||'cover',J=(0,_r(d[14]).useWrapRefWithImageAttachedCallbacks)(a);return(0,_r(d[15]).jsx)(l.default.Consumer,{children:function(e){var t=null!==e?Object.assign({},H,{internal_analyticTag:e}):H;return(0,_r(d[15]).jsx)(i.default.Consumer,{children:function(e){return e?(0,_r(d[15]).jsx)(s.default,{style:k,resizeMode:G,headers:H.headers,src:x,ref:J}):(0,_r(d[15]).jsx)(o.default,Object.assign({},t,{resizeMode:G,ref:J}))}})}})})),S=(0,_r(d[14]).unstable_getImageComponentDecorator)();null!=S&&(w=S(w));var I=w;I.displayName='Image',I.getSize=function(e,t,a){var n=u.default.getSize(e);if('function'!=typeof t)return n;n.then((function(e){return t(e.width,e.height)})).catch(a||function(){console.warn('Failed to get size for image: '+e)})},I.getSizeWithHeaders=function(e,t,a,n){var r=u.default.getSizeWithHeaders(e,t);if('function'!=typeof a)return r;r.then((function(e){return a(e.width,e.height)})).catch(n||function(){console.warn('Failed to get size for image: '+e)})},I.prefetch=v,I.prefetchWithMetadata=function(e,t,a,n){return v(e,n)},I.abortPrefetch=function(e){u.default.abortRequest(e)},I.queryCache=function(e){return p.apply(this,arguments)},I.resolveAssetSource=c.default;var j=r.default.create({base:{overflow:'hidden'}});m.exports=I}),563,[1,134,564,290,472,183,565,566,567,205,569,178,570,571,572,223]); +__d((function(g,_r,_i,_a,m,_e,d){function n(n,t,e,o,r,u,i){try{var c=n[u](i),s=c.value}catch(n){return void e(n)}c.done?t(s):Promise.resolve(s).then(o,r)}m.exports=function(t){return function(){var e=this,o=arguments;return new Promise((function(r,u){var i=t.apply(e,o);function c(t){n(i,r,u,c,s,"next",t)}function s(t){n(i,r,u,c,s,"throw",t)}c(void 0)}))}},m.exports.__esModule=!0,m.exports.default=m.exports}),564,[]); +__d((function(g,_r,_i,_a,m,_e,d){function e(t){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(e=function(e){return e?n:r})(t)}Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=(function(t,r){if(!r&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var n=e(r);if(n&&n.has(t))return n.get(t);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in t)if("default"!==f&&{}.hasOwnProperty.call(t,f)){var a=o?Object.getOwnPropertyDescriptor(t,f):null;a&&(a.get||a.set)?Object.defineProperty(u,f,a):u[f]=t[f]}return u.default=t,n&&n.set(t,u),u})(_r(d[0])).createContext(null);_e.default=t}),565,[178]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=_e.__INTERNAL_VIEW_CONFIG=_e.Commands=void 0;var r=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var o=a(r);if(o&&o.has(e))return o.get(e);var t={__proto__:null},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var s=n?Object.getOwnPropertyDescriptor(e,i):null;s&&(s.get||s.set)?Object.defineProperty(t,i,s):t[i]=e[i]}return t.default=e,o&&o.set(e,t),t})(_r(d[1])),o=e(_r(d[2])),t=e(_r(d[3]));function a(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,o=new WeakMap;return(a=function(e){return e?o:r})(e)}_e.Commands=(0,o.default)({supportedCommands:['setIsVisible_EXPERIMENTAL']});var n=_e.__INTERNAL_VIEW_CONFIG='android'===t.default.OS?{uiViewClassName:'RCTImageView',bubblingEventTypes:{},directEventTypes:{topLoadStart:{registrationName:'onLoadStart'},topProgress:{registrationName:'onProgress'},topError:{registrationName:'onError'},topLoad:{registrationName:'onLoad'},topLoadEnd:{registrationName:'onLoadEnd'}},validAttributes:{blurRadius:!0,internal_analyticTag:!0,resizeMethod:!0,resizeMode:!0,resizeMultiplier:!0,tintColor:{process:_r(d[4]).default},borderBottomLeftRadius:!0,borderTopLeftRadius:!0,src:!0,source:!0,borderRadius:!0,headers:!0,shouldNotifyLoadEvents:!0,defaultSrc:!0,overlayColor:{process:_r(d[4]).default},borderColor:{process:_r(d[4]).default},accessible:!0,progressiveRenderingEnabled:!0,fadeDuration:!0,borderBottomRightRadius:!0,borderTopRightRadius:!0,loadingIndicatorSrc:!0}}:{uiViewClassName:'RCTImageView',bubblingEventTypes:{},directEventTypes:{topLoadStart:{registrationName:'onLoadStart'},topProgress:{registrationName:'onProgress'},topError:{registrationName:'onError'},topPartialLoad:{registrationName:'onPartialLoad'},topLoad:{registrationName:'onLoad'},topLoadEnd:{registrationName:'onLoadEnd'}},validAttributes:Object.assign({blurRadius:!0,capInsets:{diff:_r(d[5])},defaultSource:{process:_r(d[6])},internal_analyticTag:!0,resizeMode:!0,source:!0,tintColor:{process:_r(d[4]).default}},(0,_r(d[7]).ConditionallyIgnoredEventHandlers)({onLoadStart:!0,onLoad:!0,onLoadEnd:!0,onProgress:!0,onError:!0,onPartialLoad:!0}))},i=r.get('RCTImageView',(function(){return n}));_e.default=i}),566,[1,185,222,33,188,203,205,221]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),567,[568]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.getEnforcing('ImageLoader')}),568,[36]); +__d((function(g,_r,_i,_a,m,_e,d){'use strict';Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=_e.__INTERNAL_VIEW_CONFIG=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(u,a,o):u[a]=e[a]}return u.default=e,n&&n.set(e,u),u})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}var r=_e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RCTTextInlineImage',bubblingEventTypes:{},directEventTypes:{},validAttributes:{resizeMode:!0,src:!0,tintColor:{process:_r(d[1]).default},headers:!0}},n=e.get('RCTTextInlineImage',(function(){return r}));_e.default=n}),569,[185,188]); +__d((function(g,r,i,a,m,e,d){'use strict';var s=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.getImageSourcesFromImageProps=function(s){var o,n=(0,l.default)(s.source),u=s.crossOrigin,c=s.referrerPolicy,h=s.src,f=s.srcSet,p=s.width,v=s.height,w={};'use-credentials'===u&&(w['Access-Control-Allow-Credentials']='true');null!=c&&(w['Referrer-Policy']=c);if(null!=f){var x=[],P=f.split(', '),y=!0;P.forEach((function(s){var l=s.split(' '),o=(0,t.default)(l,2),n=o[0],u=o[1],c=void 0===u?'1x':u;if(c.endsWith('x')){var h=parseInt(c.split('x')[0],10);isNaN(h)||(y=1!==h&&y,x.push({headers:w,scale:h,uri:n,width:p,height:v}))}else console.warn('The provided format for scale is not supported yet. Please use scales like 1x, 2x, etc.')})),y&&null!=h&&x.push({headers:w,scale:1,uri:h,width:p,height:v}),0===x.length&&console.warn('The provided value for srcSet is not valid.'),o=x}else o=null!=h?[{uri:h,headers:w,width:p,height:v}]:n;return o};var t=s(r(d[1])),l=s(r(d[2]))}),570,[1,38,205]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.convertObjectFitToResizeMode=function(o){return null!=o?n[o]:void 0};var n={contain:'contain',cover:'cover',fill:'stretch','scale-down':'contain'}}),571,[]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.unstable_getImageComponentDecorator=function(){return t},_e.unstable_registerImageAttachedCallback=function(e){a.add(e)},_e.unstable_setImageComponentDecorator=function(e){t=e},_e.unstable_unregisterImageAttachedCallback=function(e){a.delete(e)},_e.useWrapRefWithImageAttachedCallbacks=function(e){var t=(0,r.useRef)([]),u=(0,r.useRef)(null);null==u.current&&(u.current=function(e){null==e?t.current.length>0&&(t.current.forEach((function(e){return e()})),t.current=[]):a.forEach((function(n){var r=n(e);null!=r&&t.current.push(r)}))});return(0,n.default)(e,u.current)};var t,n=e(_r(d[1])),r=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=u(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var c=a?Object.getOwnPropertyDescriptor(e,o):null;c&&(c.get||c.set)?Object.defineProperty(r,o,c):r[o]=e[o]}return r.default=e,n&&n.set(e,r),r})(_r(d[2]));function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(u=function(e){return e?n:t})(e)}var a=new Set}),572,[1,531,178]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var r=e(_r(d[1])),t=(e(_r(d[2])),e(_r(d[3]))),n=e(_r(d[4])),o=e(_r(d[5])),l=e(_r(d[6])),f=e(_r(d[7])),a=e(_r(d[8])),u=e(_r(d[9])),s=e(_r(d[10])),i=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=p(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var f=o?Object.getOwnPropertyDescriptor(e,l):null;f&&(f.get||f.set)?Object.defineProperty(n,l,f):n[l]=e[l]}return n.default=e,t&&t.set(e,n),n})(_r(d[11])),c=i;function p(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(p=function(e){return e?t:r})(e)}var y=c.forwardRef((function(e,r){return'android'===f.default.OS&&null!=e.refreshControl&&null!=e.style?(0,_r(d[12]).jsx)(j,Object.assign({scrollEventThrottle:1e-4},e,{ref:r,refreshControl:e.refreshControl})):(0,_r(d[12]).jsx)(v,Object.assign({scrollEventThrottle:1e-4},e,{ref:r}))})),j=c.forwardRef((function(e,f){var u=(0,i.useMemo)((function(){var r=(0,o.default)((0,n.default)(e.style)),t=r.outer,l=r.inner;return{intermediatePropsForRefreshControl:{style:t},intermediatePropsForScrollView:Object.assign({},e,{style:l})}}),[e]),p=u.intermediatePropsForRefreshControl,y=u.intermediatePropsForScrollView,j=(0,s.default)(p),v=(0,r.default)(j,2),O=v[0],b=v[1],h=c.cloneElement(e.refreshControl,Object.assign({},O,{ref:b})),P=(0,s.default)(y),_=(0,r.default)(P,2),w=_[0],C=_[1],M=(0,a.default)(C,f);return(0,_r(d[12]).jsx)(t.default,Object.assign({},w,{ref:M,refreshControl:h,style:l.default.compose(w.style,O.style)}))})),v=(0,u.default)(t.default);_e.default=y}),573,[1,38,574,579,290,583,472,33,531,530,532,178,223]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]),t=e(_r(d[1])),r=e(_r(d[2])),n=e(_r(d[3])),i=e(_r(d[4])),o=e(_r(d[5])),s=e(_r(d[6])),f=l(_r(d[7])),a=(l(_r(d[8])),["tintColor","titleColor","title"]);function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(u=function(e){return e?r:t})(e)}function l(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=u(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var s=i?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(n,o,s):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}function p(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(p=function(){return!!e})()}var c=(function(e){function u(){var e,t,n,s;(0,r.default)(this,u);for(var f=arguments.length,a=new Array(f),l=0;l0&&(this._scrollAnimatedValueAttachment=c.default.attachNativeEvent(this.getNativeScrollRef(),'onScroll',[{nativeEvent:{contentOffset:{y:this._scrollAnimatedValue}}}]))}},{key:"_setStickyHeaderRef",value:function(e,n){n?this._stickyHeaderRefs.set(e,n):this._stickyHeaderRefs.delete(e)}},{key:"_onStickyHeaderLayout",value:function(e,n,t){var o=this.props.stickyHeaderIndices;if(o){var r=V.Children.toArray(this.props.children);if(t===this._getKeyForIndex(e,r)){var l=n.nativeEvent.layout.y;this._headerLayoutYs.set(t,l);var i=o.indexOf(e),a=o[i-1];if(null!=a){var s=this._stickyHeaderRefs.get(this._getKeyForIndex(a,r));s&&s.setNextHeaderY&&s.setNextHeaderY(l)}}}}},{key:"render",value:function(){var e=this,t=!0===this.props.horizontal,o=t?_r(d[30]).HScrollViewNativeComponent:_r(d[31]).VScrollViewNativeComponent,r=t?_r(d[30]).HScrollContentViewNativeComponent:_r(d[31]).VScrollContentViewNativeComponent,l=[t&&B.contentContainerHorizontal,this.props.contentContainerStyle],i=null==this.props.onContentSizeChange?null:{onLayout:this._handleContentOnLayout},a=this.props.stickyHeaderIndices,s=this.props.children;s=V.Children.toArray(s),null!=a&&a.length>0&&(s=s.map((function(n,t){var o=n?a.indexOf(t):-1;if(o>-1){var r=n.key,l=a[o+1],i=e.props.StickyHeaderComponent||I.default;return(0,_r(d[32]).jsx)(i,{ref:function(n){return e._setStickyHeaderRef(r,n)},nextHeaderLayoutY:e._headerLayoutYs.get(e._getKeyForIndex(l,s)),onLayout:function(n){return e._onStickyHeaderLayout(t,n,r)},scrollAnimatedValue:e._scrollAnimatedValue,inverted:e.props.invertStickyHeaders,hiddenOnScroll:e.props.stickyHeaderHiddenOnScroll,scrollViewHeight:e.state.layoutHeight,children:n},r)}return n}))),s=(0,_r(d[32]).jsx)(H.default.Provider,{value:t?H.HORIZONTAL:H.VERTICAL,children:s});var c=Array.isArray(a)&&a.length>0,u=null!=this.props.maintainVisibleContentPosition||'android'===b.default.OS&&null!=this.props.snapToAlignment,p=(0,_r(d[32]).jsx)(r,Object.assign({},i,{ref:this._innerView.getForwardingRef(this.props.innerViewRef),style:l,removeClippedSubviews:('android'!==b.default.OS||!c)&&this.props.removeClippedSubviews,collapsable:!1,collapsableChildren:!u,children:s})),y=void 0!==this.props.alwaysBounceHorizontal?this.props.alwaysBounceHorizontal:this.props.horizontal,_=void 0!==this.props.alwaysBounceVertical?this.props.alwaysBounceVertical:!this.props.horizontal,v=t?B.baseHorizontal:B.baseVertical,R=this.props,T=R.experimental_endDraggingSensitivityMultiplier,k=(0,n.default)(R,D),O=Object.assign({},k,{alwaysBounceHorizontal:y,alwaysBounceVertical:_,style:S.default.compose(v,this.props.style),onContentSizeChange:null,onLayout:this._handleLayout,onMomentumScrollBegin:this._handleMomentumScrollBegin,onMomentumScrollEnd:this._handleMomentumScrollEnd,onResponderGrant:this._handleResponderGrant,onResponderReject:this._handleResponderReject,onResponderRelease:this._handleResponderRelease,onResponderTerminationRequest:this._handleResponderTerminationRequest,onScrollBeginDrag:this._handleScrollBeginDrag,onScrollEndDrag:this._handleScrollEndDrag,onScrollShouldSetResponder:this._handleScrollShouldSetResponder,onStartShouldSetResponder:this._handleStartShouldSetResponder,onStartShouldSetResponderCapture:this._handleStartShouldSetResponderCapture,onTouchEnd:this._handleTouchEnd,onTouchMove:this._handleTouchMove,onTouchStart:this._handleTouchStart,onTouchCancel:this._handleTouchCancel,onScroll:this._handleScroll,endDraggingSensitivityMultiplier:T,scrollEventThrottle:c?1:this.props.scrollEventThrottle,sendMomentumEvents:!(!this.props.onMomentumScrollBegin&&!this.props.onMomentumScrollEnd),snapToStart:!1!==this.props.snapToStart,snapToEnd:!1!==this.props.snapToEnd,pagingEnabled:b.default.select({ios:!0===this.props.pagingEnabled&&null==this.props.snapToInterval&&null==this.props.snapToOffsets,android:!0===this.props.pagingEnabled||null!=this.props.snapToInterval||null!=this.props.snapToOffsets})}),E=this.props.decelerationRate;null!=E&&(O.decelerationRate=(0,w.default)(E));var M=this.props.refreshControl,x=this._scrollView.getForwardingRef(this.props.scrollViewRef);if(M){if('ios'===b.default.OS)return(0,_r(d[32]).jsxs)(o,Object.assign({},O,{ref:x,children:[M,p]}));if('android'===b.default.OS){var K=(0,f.default)((0,h.default)(O.style)),A=K.outer,C=K.inner;return V.cloneElement(M,{style:S.default.compose(v,A)},(0,_r(d[32]).jsx)(o,Object.assign({},O,{style:S.default.compose(v,C),ref:x,children:p})))}}return(0,_r(d[32]).jsx)(o,Object.assign({},O,{ref:x,children:p}))}}])})(V.Component);N.Context=H.default;var B=S.default.create({baseVertical:{flexGrow:1,flexShrink:1,flexDirection:'column',overflow:'scroll'},baseHorizontal:{flexGrow:1,flexShrink:1,flexDirection:'row',overflow:'scroll'},contentContainerHorizontal:{flexDirection:'row'}});function j(e){var n={getForwardingRef:(0,E.default)((function(t){return function(o){var r=null==o?null:e(o);n.nativeInstance=o,n.publicInstance=r,null!=t&&('function'==typeof t?t(r):t.current=r)}})),nativeInstance:null,publicInstance:null};return n}var L=V.forwardRef((function(e,n){return null==n?(0,_r(d[32]).jsx)(N,Object.assign({},e)):(0,_r(d[32]).jsx)(N,Object.assign({},e,{scrollViewRef:n}))}));L.displayName='ScrollView',L.Context=H.default,m.exports=L}),579,[1,134,12,13,23,25,28,31,32,503,580,44,290,583,472,212,584,33,30,585,279,589,590,591,592,20,545,45,178,57,593,599,223]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0])(r(d[1])),l={setGlobalOptions:function(l){void 0!==l.debug&&r(d[2])(t.default,'Trying to debug FrameRateLogger without the native module!'),null==t.default||t.default.setGlobalOptions({debug:!!l.debug})},setContext:function(l){null==t.default||t.default.setContext(l)},beginScroll:function(){null==t.default||t.default.beginScroll()},endScroll:function(){null==t.default||t.default.endScroll()}};m.exports=l}),580,[1,581,20]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),581,[582]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=u?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(o,a,f):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.get('FrameRateLogger')}),582,[36]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(s){var c=null,t=null;if(null!=s)for(var n of(c={},t={},Object.keys(s)))switch(n){case'margin':case'marginHorizontal':case'marginVertical':case'marginBottom':case'marginTop':case'marginLeft':case'marginRight':case'flex':case'flexGrow':case'flexShrink':case'flexBasis':case'alignSelf':case'height':case'minHeight':case'maxHeight':case'width':case'minWidth':case'maxWidth':case'position':case'left':case'right':case'bottom':case'top':case'transform':case'transformOrigin':case'rowGap':case'columnGap':case'gap':c[n]=s[n];break;default:t[n]=s[n]}return{outer:c,inner:t}}}),583,[]); +__d((function(g,r,i,a,m,e,d){'use strict';m.exports=function(){r(d[0]).blurTextInput(r(d[0]).currentlyFocusedInput())}}),584,[279]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]),n=t(r(d[1])),u=t(r(d[2])),l=t(r(d[3])),o=t(r(d[4])),s=t(r(d[5])),f=t(r(d[6])),c=t(r(d[7])),y=(function(){return(0,u.default)((function t(){var u=this;(0,n.default)(this,t),this._emitter=new l.default('ios'!==f.default.OS?null:c.default),this.addListener('keyboardDidShow',(function(t){u._currentlyShowing=t})),this.addListener('keyboardDidHide',(function(t){u._currentlyShowing=null}))}),[{key:"addListener",value:function(t,n,u){return this._emitter.addListener(t,n)}},{key:"removeAllListeners",value:function(t){this._emitter.removeAllListeners(t)}},{key:"dismiss",value:function(){(0,s.default)()}},{key:"isVisible",value:function(){return!!this._currentlyShowing}},{key:"metrics",value:function(){var t;return null==(t=this._currentlyShowing)?void 0:t.endCoordinates}},{key:"scheduleLayoutAnimation",value:function(t){var n=t.duration,u=t.easing;null!=n&&0!==n&&o.default.configureNext({duration:n,update:{duration:n,type:null!=u&&o.default.Types[u]||'keyboard'}})}}])})();m.exports=new y}),585,[1,12,13,125,586,584,33,587]); +__d((function(g,_r,_i,_a,m,_e,d){'use strict';var e=_r(d[0]),n=(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=a(n);if(t&&t.has(e))return t.get(e);var r={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var u=i?Object.getOwnPropertyDescriptor(e,o):null;u&&(u.get||u.set)?Object.defineProperty(r,o,u):r[o]=e[o]}return r.default=e,t&&t.set(e,r),r})(_r(d[1])),t=e(_r(d[2]));function a(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,t=new WeakMap;return(a=function(e){return e?t:n})(e)}var r=n.isLayoutAnimationEnabled();function i(e,n,a){var i;if(!t.default.isDisableAnimations&&r){var o,u=!1,l=function(){u||(u=!0,clearTimeout(c),null==n||n())},c=setTimeout(l,(null!=(i=e.duration)?i:0)+17),s=(0,_r(d[3]).getFabricUIManager)();if(null!=s&&s.configureNextLayoutAnimation)null==(o=g)||null==(o=o.nativeFabricUIManager)||o.configureNextLayoutAnimation(e,l,null!=a?a:function(){});else null!=_r(d[4])&&_r(d[4]).configureNextLayoutAnimation&&_r(d[4]).configureNextLayoutAnimation(e,null!=l?l:function(){},null!=a?a:function(){})}}function o(e,n,t){return{duration:e,create:{type:n,property:t},update:{type:n},delete:{type:n,property:t}}}var u={easeInEaseOut:o(300,'easeInEaseOut','opacity'),linear:o(500,'linear','opacity'),spring:{duration:700,create:{type:'linear',property:'opacity'},update:{type:'spring',springDamping:.4},delete:{type:'linear',property:'opacity'}}},l={configureNext:i,create:o,Types:Object.freeze({spring:'spring',linear:'linear',easeInEaseOut:'easeInEaseOut',easeIn:'easeIn',easeOut:'easeOut',keyboard:'keyboard'}),Properties:Object.freeze({opacity:'opacity',scaleX:'scaleX',scaleY:'scaleY',scaleXY:'scaleXY'}),checkConfig:function(){console.error('LayoutAnimation.checkConfig(...) has been disabled.')},Presets:u,easeInEaseOut:i.bind(null,u.easeInEaseOut),linear:i.bind(null,u.linear),spring:i.bind(null,u.spring),setEnabled:function(e){}};m.exports=l}),586,[1,106,33,47,44]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),587,[588]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.get('KeyboardObserver')}),588,[36]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0])(r(d[1]));m.exports=function(n){return'normal'===n?t.default.select({ios:.998,android:.985}):'fast'===n?t.default.select({ios:.99,android:.9}):n}}),589,[1,33]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1]));!(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var o=r(t);if(o&&o.has(e))return o.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var u=a?Object.getOwnPropertyDescriptor(e,l):null;u&&(u.get||u.set)?Object.defineProperty(n,l,u):n[l]=e[l]}n.default=e,o&&o.set(e,n)})(_r(d[2]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,o=new WeakMap;return(r=function(e){return e?o:t})(e)}_e.default=(0,t.default)({supportedCommands:['flashScrollIndicators','scrollTo','scrollToEnd','zoomToRect']})}),590,[1,222,178]); +__d((function(g,_r,_i,_a,m,_e,d){function e(t){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(e=function(e){return e?n:r})(t)}Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=_e.VERTICAL=_e.HORIZONTAL=void 0;var t=(function(t,r){if(!r&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var n=e(r);if(n&&n.has(t))return n.get(t);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in t)if("default"!==f&&{}.hasOwnProperty.call(t,f)){var a=u?Object.getOwnPropertyDescriptor(t,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=t[f]}return o.default=t,n&&n.set(t,o),o})(_r(d[0])).createContext(null);_e.default=t,_e.HORIZONTAL=Object.freeze({horizontal:!0}),_e.VERTICAL=Object.freeze({horizontal:!1})}),591,[178]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),n=e(_r(d[2])),u=e(_r(d[3])),r=e(_r(d[4])),a=e(_r(d[5])),l=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=i(t);if(n&&n.has(e))return n.get(e);var u={__proto__:null},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var l=r?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(u,a,l):u[a]=e[a]}return u.default=e,n&&n.set(e,u),u})(_r(d[6])),o=l;function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(i=function(e){return e?n:t})(e)}var f=o.forwardRef((function(e,u){var i=e.inverted,f=e.scrollViewHeight,p=e.hiddenOnScroll,c=e.scrollAnimatedValue,v=e.nextHeaderLayoutY,h=(0,l.useState)(!1),y=(0,t.default)(h,2),R=y[0],b=y[1],O=(0,l.useState)(0),_=(0,t.default)(O,2),L=_[0],S=_[1],w=(0,l.useState)(0),P=(0,t.default)(w,2),j=P[0],x=P[1],E=(0,l.useState)(null),M=(0,t.default)(E,2),k=M[0],C=M[1],D=(0,l.useState)(v),I=(0,t.default)(D,2),V=I[0],Y=I[1],H=(0,l.useState)(!1),T=(0,t.default)(H,2),W=T[0],A=T[1],z=(0,l.useCallback)((function(e){null!=e&&(e.setNextHeaderY=Y,A((0,_r(d[7]).isPublicInstance)(e)))}),[]),N=(0,a.default)(z,u),q=(0,l.useMemo)((function(){return!0===p?n.default.diffClamp(c.interpolate({extrapolateLeft:'clamp',inputRange:[L,L+1],outputRange:[0,1]}).interpolate({inputRange:[0,1],outputRange:[0,-1]}),-j,0):null}),[c,j,L,p]),B=(0,l.useState)((function(){var e=c.interpolate({inputRange:[-1,0],outputRange:[0,0]});return null!=q?n.default.add(e,q):e})),F=(0,t.default)(B,2),G=F[0],J=F[1],K=(0,l.useRef)(!0),Q=(0,l.useRef)(null);(0,l.useEffect)((function(){0!==k&&null!=k&&(K.current=!1)}),[k]);var U=(0,l.useCallback)((function(e){var t=e.value,n='android'===r.default.OS?15:64;0!==t||K.current?(null!=Q.current&&clearTimeout(Q.current),Q.current=setTimeout((function(){return C(t)}),n)):K.current=!0}),[]);(0,l.useEffect)((function(){var e=[-1,0],t=[0,0];if(R)if(!0===i){if(null!=f){var u=L+j-f;if(u>0){e.push(u),t.push(0),e.push(u+1),t.push(1);var r=(V||0)-j-f;r>u&&(e.push(r,r+1),t.push(r-u,r-u))}}}else{e.push(L),t.push(0);var a=(V||0)-j;a>=L?(e.push(a,a+1),t.push(a-L,a-L)):(e.push(L+1),t.push(1))}var l,o=c.interpolate({inputRange:e,outputRange:t});return null!=q&&(o=n.default.add(o,q)),W&&(l=o.addListener(U)),J(o),function(){l&&o.removeListener(l),null!=Q.current&&clearTimeout(Q.current)}}),[V,R,j,L,f,c,i,q,U,W]);var X=o.Children.only(e.children),Z=W&&null!=k?{style:{transform:[{translateY:k}]}}:null;return(0,_r(d[8]).jsx)(n.default.View,{collapsable:!1,nativeID:e.nativeID,onLayout:function(t){S(t.nativeEvent.layout.y),x(t.nativeEvent.layout.height),b(!0),e.onLayout(t);var n=o.Children.only(e.children);n.props.onLayout&&n.props.onLayout(t)},ref:N,style:[X.props.style,s.header,{transform:[{translateY:G}]}],passthroughAnimatedPropExplicitValues:Z,children:o.cloneElement(X,{style:s.fill,onLayout:void 0})})})),s=u.default.create({header:{zIndex:10,position:'relative'},fill:{flex:1}});_e.default=f}),592,[1,38,502,472,33,531,178,534,223]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.HScrollViewNativeComponent=_e.HScrollContentViewNativeComponent=void 0;var t=e(_r(d[1])),n=e(_r(d[2])),r=e(_r(d[3])),o=e(_r(d[4])),a=e(_r(d[5])),l=e(_r(d[6])),f=e(_r(d[7])),u=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=i(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var l=o?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(r,a,l):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r})(_r(d[8]));function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(i=function(e){return e?n:t})(e)}var c='android'===a.default.OS?n.default:o.default;_e.HScrollViewNativeComponent=(0,u.forwardRef)((function(e,n){var r=(0,f.default)(n),o=(0,t.default)(r,2),a=o[0],l=o[1];return(0,_r(d[9]).jsx)(c,Object.assign({},e,{ref:a,enableSyncOnScroll:l}))})),_e.HScrollContentViewNativeComponent='android'===a.default.OS?l.default:r.default}),593,[1,38,594,595,596,33,597,598,178,223]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=_e.__INTERNAL_VIEW_CONFIG=void 0;var e=(function(e,o){if(!o&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=r(o);if(t&&t.has(e))return t.get(e);var n={__proto__:null},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var i=l?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&&t.set(e,n),n})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var o=new WeakMap,t=new WeakMap;return(r=function(e){return e?t:o})(e)}var o=_e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'AndroidHorizontalScrollView',bubblingEventTypes:{},directEventTypes:{},validAttributes:{decelerationRate:!0,disableIntervalMomentum:!0,maintainVisibleContentPosition:!0,endFillColor:{process:_r(d[1]).default},fadingEdgeLength:!0,nestedScrollEnabled:!0,overScrollMode:!0,pagingEnabled:!0,persistentScrollbar:!0,horizontal:!0,enableSyncOnScroll:!0,scrollEnabled:!0,scrollEventThrottle:!0,scrollPerfTag:!0,sendMomentumEvents:!0,showsHorizontalScrollIndicator:!0,snapToAlignment:!0,snapToEnd:!0,snapToInterval:!0,snapToStart:!0,snapToOffsets:!0,contentOffset:!0,borderBottomLeftRadius:!0,borderBottomRightRadius:!0,borderRadius:!0,borderStyle:!0,borderRightColor:{process:_r(d[1]).default},borderColor:{process:_r(d[1]).default},borderBottomColor:{process:_r(d[1]).default},borderTopLeftRadius:!0,borderTopColor:{process:_r(d[1]).default},removeClippedSubviews:!0,borderTopRightRadius:!0,borderLeftColor:{process:_r(d[1]).default},pointerEvents:!0}},t=e.get('AndroidHorizontalScrollView',(function(){return o}));_e.default=t}),594,[185,188]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=_e.__INTERNAL_VIEW_CONFIG=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var a=o?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(u,i,a):u[i]=e[i]}return u.default=e,n&&n.set(e,u),u})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}var r=_e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RCTScrollContentView',bubblingEventTypes:{},directEventTypes:{},validAttributes:{}},n=e.get('RCTScrollContentView',(function(){return r}));_e.default=n}),595,[185]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=_e.__INTERNAL_VIEW_CONFIG=void 0;var o=(function(e,o){if(!o&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=n(o);if(t&&t.has(e))return t.get(e);var r={__proto__:null},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var i=l?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(r,a,i):r[a]=e[a]}return r.default=e,t&&t.set(e,r),r})(_r(d[1])),t=e(_r(d[2]));function n(e){if("function"!=typeof WeakMap)return null;var o=new WeakMap,t=new WeakMap;return(n=function(e){return e?t:o})(e)}var r=_e.__INTERNAL_VIEW_CONFIG='android'===t.default.OS?{uiViewClassName:'RCTScrollView',bubblingEventTypes:{},directEventTypes:{topMomentumScrollBegin:{registrationName:'onMomentumScrollBegin'},topMomentumScrollEnd:{registrationName:'onMomentumScrollEnd'},topScroll:{registrationName:'onScroll'},topScrollBeginDrag:{registrationName:'onScrollBeginDrag'},topScrollEndDrag:{registrationName:'onScrollEndDrag'}},validAttributes:{contentOffset:{diff:_r(d[3])},decelerationRate:!0,enableSyncOnScroll:!0,disableIntervalMomentum:!0,maintainVisibleContentPosition:!0,pagingEnabled:!0,scrollEnabled:!0,showsVerticalScrollIndicator:!0,snapToAlignment:!0,snapToEnd:!0,snapToInterval:!0,snapToOffsets:!0,snapToStart:!0,borderBottomLeftRadius:!0,borderBottomRightRadius:!0,sendMomentumEvents:!0,borderRadius:!0,nestedScrollEnabled:!0,scrollEventThrottle:!0,borderStyle:!0,borderRightColor:{process:_r(d[4]).default},borderColor:{process:_r(d[4]).default},borderBottomColor:{process:_r(d[4]).default},persistentScrollbar:!0,horizontal:!0,endFillColor:{process:_r(d[4]).default},fadingEdgeLength:!0,overScrollMode:!0,borderTopLeftRadius:!0,scrollPerfTag:!0,borderTopColor:{process:_r(d[4]).default},removeClippedSubviews:!0,borderTopRightRadius:!0,borderLeftColor:{process:_r(d[4]).default},pointerEvents:!0,isInvertedVirtualizedList:!0}}:{uiViewClassName:'RCTScrollView',bubblingEventTypes:{},directEventTypes:{topMomentumScrollBegin:{registrationName:'onMomentumScrollBegin'},topMomentumScrollEnd:{registrationName:'onMomentumScrollEnd'},topScroll:{registrationName:'onScroll'},topScrollBeginDrag:{registrationName:'onScrollBeginDrag'},topScrollEndDrag:{registrationName:'onScrollEndDrag'},topScrollToTop:{registrationName:'onScrollToTop'}},validAttributes:Object.assign({alwaysBounceHorizontal:!0,alwaysBounceVertical:!0,automaticallyAdjustContentInsets:!0,automaticallyAdjustKeyboardInsets:!0,automaticallyAdjustsScrollIndicatorInsets:!0,bounces:!0,bouncesZoom:!0,canCancelContentTouches:!0,centerContent:!0,contentInset:{diff:_r(d[5])},contentOffset:{diff:_r(d[3])},contentInsetAdjustmentBehavior:!0,decelerationRate:!0,endDraggingSensitivityMultiplier:!0,enableSyncOnScroll:!0,directionalLockEnabled:!0,disableIntervalMomentum:!0,indicatorStyle:!0,inverted:!0,keyboardDismissMode:!0,maintainVisibleContentPosition:!0,maximumZoomScale:!0,minimumZoomScale:!0,pagingEnabled:!0,pinchGestureEnabled:!0,scrollEnabled:!0,scrollEventThrottle:!0,scrollIndicatorInsets:{diff:_r(d[5])},scrollToOverflowEnabled:!0,scrollsToTop:!0,showsHorizontalScrollIndicator:!0,showsVerticalScrollIndicator:!0,snapToAlignment:!0,snapToEnd:!0,snapToInterval:!0,snapToOffsets:!0,snapToStart:!0,verticalScrollIndicatorInsets:{diff:_r(d[5])},zoomScale:!0},(0,_r(d[6]).ConditionallyIgnoredEventHandlers)({onScrollBeginDrag:!0,onMomentumScrollEnd:!0,onScrollEndDrag:!0,onMomentumScrollBegin:!0,onScrollToTop:!0,onScroll:!0}))},l=o.get('RCTScrollView',(function(){return r}));_e.default=l}),596,[1,185,33,202,188,203,221]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;t(r(d[1]));var o=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'AndroidHorizontalScrollContentView',validAttributes:{removeClippedSubviews:!0}};e.default=r(d[2]).get('AndroidHorizontalScrollContentView',(function(){return o}))}),597,[1,463,185]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=function(e){var r=(0,n.useRef)(null),u=(0,n.useState)(),o=(0,t.default)(u,2),a=o[0],f=o[1];return(0,n.useImperativeHandle)(e,(function(){return{componentRef:r,unstable_setEnableSyncOnScroll:function(e){f(e)}}}),[]),[r,a]};var t=e(_r(d[1])),n=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=o?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(u,a,f):u[a]=e[a]}return u.default=e,n&&n.set(e,u),u})(_r(d[2]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}}),598,[1,38,178]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.VScrollViewNativeComponent=_e.VScrollContentViewNativeComponent=void 0;var t=e(_r(d[1])),n=e(_r(d[2])),r=e(_r(d[3])),o=e(_r(d[4])),a=e(_r(d[5])),l=e(_r(d[6])),f=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=u(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var l=o?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(r,a,l):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r})(_r(d[7]));function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(u=function(e){return e?n:t})(e)}_e.VScrollViewNativeComponent=(0,f.forwardRef)((function(e,n){var o=(0,l.default)(n),a=(0,t.default)(o,2),f=a[0],u=a[1];return(0,_r(d[8]).jsx)(r.default,Object.assign({},e,{ref:f,enableSyncOnScroll:u}))})),_e.VScrollContentViewNativeComponent='android'===a.default.OS?o.default:n.default}),599,[1,38,595,596,182,33,598,178,223]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),r=e(_r(d[2]));!(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var u={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var o=f?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(u,a,o):u[a]=e[a]}u.default=e,r&&r.set(e,u)})(_r(d[3]));function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}_e.default=(0,r.default)(t.default)}),600,[1,601,530,178]); +__d((function(g,_r,_i,_a,m,_e,d){'use strict';var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),r=e(_r(d[2])),n=e(_r(d[3])),i=e(_r(d[4])),a=e(_r(d[5])),o=e(_r(d[6])),u=e(_r(d[7])),f=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=s(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var o=i?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(n,a,o):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n})(_r(d[8])),l=["stickySectionHeadersEnabled"];function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(s=function(e){return e?r:t})(e)}function c(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(c=function(){return!!e})()}_e.default=(function(e){function f(){var e,t,n,o;(0,r.default)(this,f);for(var u=arguments.length,l=new Array(u),s=0;s is only supported on iOS.'),null)}}),613,[1,614,472,33,617,618,178,223]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),r=e(_r(d[2]));!(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var u={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var o=a?Object.getOwnPropertyDescriptor(e,f):null;o&&(o.get||o.set)?Object.defineProperty(u,f,o):u[f]=e[f]}u.default=e,r&&r.set(e,u)})(_r(d[3]));function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}var u=t.default.select({ios:_r(d[4]).default,default:r.default});_e.default=u}),614,[1,33,182,178,615]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),615,[616]); +__d((function(g,r,i,a,m,e,d){var _=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;_(r(d[1]));var t=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RCTSafeAreaView',validAttributes:{}};e.default=r(d[2]).get('RCTSafeAreaView',(function(){return t}))}),616,[1,463,185]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){var t=(0,f.useState)((function(){return u.default.get('window')})),o=(0,n.default)(t,2),c=o[0],l=o[1];return(0,f.useEffect)((function(){function t(t){var n=t.window;c.width===n.width&&c.height===n.height&&c.scale===n.scale&&c.fontScale===n.fontScale||l(n)}var n=u.default.addEventListener('change',t);return t({window:u.default.get('window')}),function(){n.remove()}}),[c]),c};var n=t(r(d[1])),u=t(r(d[2])),f=r(d[3])}),617,[1,38,212,178]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),618,[619]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;t(r(d[1]));var u=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RCTInputAccessoryView',validAttributes:{backgroundColor:{process:r(d[2]).default}}};e.default=r(d[3]).get('RCTInputAccessoryView',(function(){return u}))}),619,[1,463,188,185]); +__d((function(g,_r,_i,_a,m,_e,d){var t=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=t(_r(d[1])),o=t(_r(d[2])),n=t(_r(d[3])),a=t(_r(d[4])),i=t(_r(d[5])),r=t(_r(d[6])),u=t(_r(d[7])),s=t(_r(d[8])),l=t(_r(d[9])),f=t(_r(d[10])),h=t(_r(d[11])),c=t(_r(d[12])),y=t(_r(d[13])),p=t(_r(d[14])),_=(function(t,e){if(!e&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var o=v(e);if(o&&o.has(t))return o.get(t);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if("default"!==i&&{}.hasOwnProperty.call(t,i)){var r=a?Object.getOwnPropertyDescriptor(t,i):null;r&&(r.get||r.set)?Object.defineProperty(n,i,r):n[i]=t[i]}return n.default=t,o&&o.set(t,n),n})(_r(d[15])),b=["behavior","children","contentContainerStyle","enabled","keyboardVerticalOffset","style","onLayout"];function v(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,o=new WeakMap;return(v=function(t){return t?o:e})(t)}function w(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(w=function(){return!!t})()}var k=(function(t){function v(t){var e,a,u,l;return(0,n.default)(this,v),a=this,u=v,l=[t],u=(0,r.default)(u),(e=(0,i.default)(a,w()?Reflect.construct(u,l||[],(0,r.default)(a).constructor):u.apply(a,l)))._frame=null,e._keyboardEvent=null,e._subscriptions=[],e._initialFrameHeight=0,e._bottom=0,e._windowWidth=f.default.get('window').width,e._onKeyboardChange=function(t){e._keyboardEvent=t,e._updateBottomIfNecessary()},e._onLayout=(function(){var t=(0,o.default)((function*(t){var o=e._frame;e._frame=t.nativeEvent.layout,e._initialFrameHeight||(e._initialFrameHeight=e._frame.height),o&&o.height===e._frame.height||(yield e._updateBottomIfNecessary()),e.props.onLayout&&e.props.onLayout(t)}));return function(e){return t.apply(this,arguments)}})(),e._onDimensionsChange=function(t){var o,n=t.window;e._windowWidth=null!=(o=null==n?void 0:n.width)?o:0},e._setBottom=function(t){var o,n=null==(o=e.props.enabled)||o;e._bottom=t,n&&e.setState({bottom:t})},e._updateBottomIfNecessary=(0,o.default)((function*(){var t;if(null!=e._keyboardEvent)if('ios'!==h.default.OS||e._windowWidth===e._keyboardEvent.endCoordinates.width){var o=e._keyboardEvent,n=o.duration,a=o.easing,i=o.endCoordinates,r=yield e._relativeKeyboardHeight(i);if(e._bottom!==r)e._setBottom(r),(null==(t=e.props.enabled)||t)&&n&&a&&s.default.configureNext({duration:n>10?n:10,update:{duration:n>10?n:10,type:s.default.Types[a]||'keyboard'}})}else e._setBottom(0);else e._setBottom(0)})),e.state={bottom:0},e.viewRef=_.createRef(),e}return(0,u.default)(v,t),(0,a.default)(v,[{key:"_relativeKeyboardHeight",value:(k=(0,o.default)((function*(t){var e,o=this._frame;if(!o||!t)return 0;if('ios'===h.default.OS&&0===t.screenY&&(yield c.default.prefersCrossFadeTransitions()))return 0;var n=t.screenY-(null!=(e=this.props.keyboardVerticalOffset)?e:0);return'height'===this.props.behavior?Math.max(this.state.bottom+o.y+o.height-n,0):Math.max(o.y+o.height-n,0)})),function(t){return k.apply(this,arguments)})},{key:"componentDidUpdate",value:function(t,e){var o;(null==(o=this.props.enabled)||o)&&this._bottom!==e.bottom&&this.setState({bottom:this._bottom})}},{key:"componentDidMount",value:function(){'ios'===h.default.OS?this._subscriptions=[p.default.addListener('keyboardWillChangeFrame',this._onKeyboardChange),f.default.addEventListener('change',this._onDimensionsChange)]:this._subscriptions=[p.default.addListener('keyboardDidHide',this._onKeyboardChange),p.default.addListener('keyboardDidShow',this._onKeyboardChange)]}},{key:"componentWillUnmount",value:function(){this._subscriptions.forEach((function(t){t.remove()}))}},{key:"render",value:function(){var t=this.props,o=t.behavior,n=t.children,a=t.contentContainerStyle,i=t.enabled,r=void 0===i||i,u=(t.keyboardVerticalOffset,t.style),s=(t.onLayout,(0,e.default)(t,b)),f=!0===r?this.state.bottom:0;switch(o){case'height':var h;return null!=this._frame&&this.state.bottom>0&&(h={height:this._initialFrameHeight-f,flex:0}),(0,_r(d[16]).jsx)(y.default,Object.assign({ref:this.viewRef,style:l.default.compose(u,h),onLayout:this._onLayout},s,{children:n}));case'position':return(0,_r(d[16]).jsx)(y.default,Object.assign({ref:this.viewRef,style:u,onLayout:this._onLayout},s,{children:(0,_r(d[16]).jsx)(y.default,{style:l.default.compose(a,{bottom:f}),children:n})}));case'padding':return(0,_r(d[16]).jsx)(y.default,Object.assign({ref:this.viewRef,style:l.default.compose(u,{paddingBottom:f}),onLayout:this._onLayout},s,{children:n}));default:return(0,_r(d[16]).jsx)(y.default,Object.assign({ref:this.viewRef,onLayout:this._onLayout,style:u},s,{children:n}))}}}]);var k})(_.Component);_e.default=k}),620,[1,134,564,12,13,23,25,28,586,472,212,33,21,182,585,178,223]); +__d((function(g,r,i,a,m,_e,d){var t,e=r(d[0]),n=e(r(d[1])),o=e(r(d[2])),s=e(r(d[3])),l=e(r(d[4])),u=e(r(d[5])),p=e(r(d[6])),c=(e(r(d[7])),e(r(d[8]))),h=(e(r(d[9])),e(r(d[10])));function f(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(f=function(){return!!t})()}var v=r(d[11]),y=0,S=(function(t){function e(t){var n,s,p,c;return(0,o.default)(this,e),s=this,p=e,c=[t],p=(0,u.default)(p),(n=(0,l.default)(s,f()?Reflect.construct(p,c||[],(0,u.default)(s).constructor):p.apply(s,c)))._identifier=y++,n.state={isRendered:!0===t.visible},n}return(0,p.default)(e,t),(0,s.default)(e,[{key:"componentDidMount",value:function(){}},{key:"componentWillUnmount",value:function(){this._eventSubscription&&this._eventSubscription.remove()}},{key:"componentDidUpdate",value:function(t){!1===t.visible&&!0===this.props.visible&&this.setState({isRendered:!0})}},{key:"_shouldShowModal",value:function(){return!0===this.props.visible}},{key:"render",value:function(){if(!this._shouldShowModal())return null;var t={backgroundColor:!0===this.props.transparent?'transparent':'white'},e=this.props.animationType||'none',n=this.props.presentationStyle;n||(n='fullScreen',!0===this.props.transparent&&(n='overFullScreen'));var o=this.props.children;return(0,r(d[12]).jsx)(h.default,{animationType:e,presentationStyle:n,transparent:this.props.transparent,hardwareAccelerated:this.props.hardwareAccelerated,onRequestClose:this.props.onRequestClose,onShow:this.props.onShow,onDismiss:function(){},visible:this.props.visible,statusBarTranslucent:this.props.statusBarTranslucent,identifier:this._identifier,style:R.modal,onStartShouldSetResponder:this._shouldSetResponder,supportedOrientations:this.props.supportedOrientations,onOrientationChange:this.props.onOrientationChange,testID:this.props.testID,children:(0,r(d[12]).jsx)(r(d[13]).VirtualizedListContextResetter,{children:(0,r(d[12]).jsx)(r(d[14]).Context.Provider,{value:null,children:(0,r(d[12]).jsx)(r(d[15]),{style:[R.container,t],collapsable:!1,children:o})})})})}},{key:"_shouldSetResponder",value:function(){return!0}}])})(v.Component);S.defaultProps={visible:!0,hardwareAccelerated:!1},S.contextType=r(d[16]).RootTagContext;var b=r(d[17]).getConstants().isRTL?'right':'left',R=r(d[18]).create({modal:{position:'absolute'},container:(0,n.default)((0,n.default)((0,n.default)({},b,0),"top",0),"flex",1)}),_=null!=(t=c.default.unstable_Modal)?t:S;m.exports=_}),621,[1,198,12,13,23,25,28,125,622,623,625,178,223,546,579,182,474,627,472]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={unstable_Modal:null}}),622,[]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),623,[624]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=u?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(o,a,f):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.get('ModalManager')}),624,[36]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),625,[626]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;t(r(d[1]));var n=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RCTModalHostView',directEventTypes:{topRequestClose:{registrationName:'onRequestClose'},topShow:{registrationName:'onShow'},topDismiss:{registrationName:'onDismiss'},topOrientationChange:{registrationName:'onOrientationChange'}},validAttributes:Object.assign({animationType:!0,presentationStyle:!0,transparent:!0,statusBarTranslucent:!0,hardwareAccelerated:!0,visible:!0,animated:!0,supportedOrientations:!0,identifier:!0},r(d[2]).ConditionallyIgnoredEventHandlers({onRequestClose:!0,onShow:!0,onDismiss:!0,onOrientationChange:!0}))};e.default=r(d[3]).get('RCTModalHostView',(function(){return n}))}),626,[1,463,221,185]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0])(r(d[1])),n=(function(){if(t.default){var n=t.default.getConstants();return{isRTL:n.isRTL,doLeftAndRightSwapInRTL:n.doLeftAndRightSwapInRTL,localeIdentifier:n.localeIdentifier}}return{isRTL:!1,doLeftAndRightSwapInRTL:!0}})();m.exports={getConstants:function(){return n},allowRTL:function(n){t.default&&t.default.allowRTL(n)},forceRTL:function(n){t.default&&t.default.forceRTL(n)},swapLeftAndRightInRTL:function(n){t.default&&t.default.swapLeftAndRightInRTL(n)},isRTL:n.isRTL,doLeftAndRightSwapInRTL:n.doLeftAndRightSwapInRTL}}),627,[1,628]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),628,[629]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=o?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(u,a,f):u[a]=e[a]}return u.default=e,n&&n.set(e,u),u})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.get('I18nManager')}),629,[36]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var l=e(_r(d[1])),a=e(_r(d[2])),n=e(_r(d[3])),s=e(_r(d[4])),i=e(_r(d[5])),t=e(_r(d[6])),r=(function(e,l){if(!l&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var a=c(l);if(a&&a.has(e))return a.get(e);var n={__proto__:null},s=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var t=s?Object.getOwnPropertyDescriptor(e,i):null;t&&(t.get||t.set)?Object.defineProperty(n,i,t):n[i]=e[i]}return n.default=e,a&&a.set(e,n),n})(_r(d[7])),o=r,u=["accessible","accessibilityState","aria-live","android_disableSound","android_ripple","aria-busy","aria-checked","aria-disabled","aria-expanded","aria-label","aria-selected","cancelable","children","delayHoverIn","delayHoverOut","delayLongPress","disabled","focusable","hitSlop","onHoverIn","onHoverOut","onLongPress","onPress","onPressIn","onPressOut","pressRetentionOffset","style","testOnly_pressed","unstable_pressDelay"];function c(e){if("function"!=typeof WeakMap)return null;var l=new WeakMap,a=new WeakMap;return(c=function(e){return e?a:l})(e)}function f(e){var a=(0,r.useState)(!1),n=(0,l.default)(a,2);return[n[0]||e,n[1]]}var b=o.memo(o.forwardRef((function(e,o){var c,b,y,v,p,P,O,_,h,I=e.accessible,w=e.accessibilityState,H=e['aria-live'],x=e.android_disableSound,S=e.android_ripple,j=e['aria-busy'],L=e['aria-checked'],M=e['aria-disabled'],k=e['aria-expanded'],R=e['aria-label'],V=e['aria-selected'],D=e.cancelable,W=e.children,N=e.delayHoverIn,q=e.delayHoverOut,z=e.delayLongPress,A=e.disabled,B=e.focusable,C=e.hitSlop,E=e.onHoverIn,F=e.onHoverOut,G=e.onLongPress,J=e.onPress,K=e.onPressIn,Q=e.onPressOut,T=e.pressRetentionOffset,U=e.style,X=e.testOnly_pressed,Y=e.unstable_pressDelay,Z=(0,a.default)(e,u),$=(0,r.useRef)(null),ee=(0,s.default)(o,$),le=(0,t.default)(S,$),ae=f(!0===X),ne=(0,l.default)(ae,2),se=ne[0],ie=ne[1],te='function'==typeof W||'function'==typeof U,re={busy:null!=j?j:null==w?void 0:w.busy,checked:null!=L?L:null==w?void 0:w.checked,disabled:null!=M?M:null==w?void 0:w.disabled,expanded:null!=k?k:null==w?void 0:w.expanded,selected:null!=V?V:null==w?void 0:w.selected};re=null!=A?Object.assign({},re,{disabled:A}):re;var oe={max:null!=(c=e['aria-valuemax'])?c:null==(b=e.accessibilityValue)?void 0:b.max,min:null!=(y=e['aria-valuemin'])?y:null==(v=e.accessibilityValue)?void 0:v.min,now:null!=(p=e['aria-valuenow'])?p:null==(P=e.accessibilityValue)?void 0:P.now,text:null!=(O=e['aria-valuetext'])?O:null==(_=e.accessibilityValue)?void 0:_.text},ue='off'===H?'none':null!=H?H:e.accessibilityLiveRegion,de=null!=R?R:e.accessibilityLabel,ce=Object.assign({},Z,null==le?void 0:le.viewProps,{accessible:!1!==I,accessibilityViewIsModal:null!=(h=Z['aria-modal'])?h:Z.accessibilityViewIsModal,accessibilityLiveRegion:ue,accessibilityLabel:de,accessibilityState:re,focusable:!1!==B,accessibilityValue:oe,hitSlop:C}),fe=(0,r.useMemo)((function(){return{cancelable:D,disabled:A,hitSlop:C,pressRectOffset:T,android_disableSound:x,delayHoverIn:N,delayHoverOut:q,delayLongPress:z,delayPressIn:Y,onHoverIn:E,onHoverOut:F,onLongPress:G,onPress:J,onPressIn:function(e){null!=le&&le.onPressIn(e),te&&ie(!0),null!=K&&K(e)},onPressMove:null==le?void 0:le.onPressMove,onPressOut:function(e){null!=le&&le.onPressOut(e),te&&ie(!1),null!=Q&&Q(e)}}}),[x,le,D,N,q,z,A,C,E,F,G,J,K,Q,T,ie,te,Y]),be=(0,n.default)(fe);return(0,_r(d[8]).jsxs)(i.default,Object.assign({},ce,be,{ref:ee,style:'function'==typeof U?U({pressed:se}):U,collapsable:!1,children:['function'==typeof W?W({pressed:se}):W,null]}))})));b.displayName='Pressable';_e.default=b}),630,[1,38,134,490,531,182,631,178,223]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=function(e,l){var u=null!=e?e:{},a=u.color,i=u.borderless,f=u.radius,s=u.foreground;return(0,o.useMemo)((function(){if('android'===r.default.OS&&(null!=a||null!=i||null!=f)){var e=(0,n.default)(a);(0,t.default)(null==e||'number'==typeof e,'Unexpected color given for Ripple color');var o={type:'RippleAndroid',color:e,borderless:!0===i,rippleRadius:f};return{viewProps:!0===s?{nativeForegroundAndroid:o}:{nativeBackgroundAndroid:o},onPressIn:function(e){var n,r,t=l.current;null!=t&&(_r(d[6]).Commands.hotspotUpdate(t,null!=(n=e.nativeEvent.locationX)?n:0,null!=(r=e.nativeEvent.locationY)?r:0),_r(d[6]).Commands.setPressed(t,!0))},onPressMove:function(e){var n,r,t=l.current;null!=t&&_r(d[6]).Commands.hotspotUpdate(t,null!=(n=e.nativeEvent.locationX)?n:0,null!=(r=e.nativeEvent.locationY)?r:0)},onPressOut:function(e){var n=l.current;null!=n&&_r(d[6]).Commands.setPressed(n,!1)}}}return null}),[i,a,s,f,l])};var n=e(_r(d[1])),r=e(_r(d[2])),t=(e(_r(d[3])),e(_r(d[4]))),o=(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=l(n);if(r&&r.has(e))return r.get(e);var t={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var a=o?Object.getOwnPropertyDescriptor(e,u):null;a&&(a.get||a.set)?Object.defineProperty(t,u,a):t[u]=e[u]}return t.default=e,r&&r.set(e,t),t})(_r(d[5]));function l(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(l=function(e){return e?r:n})(e)}}),631,[1,188,33,182,20,178,184]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),l=e(_r(d[2])),n=e(_r(d[3])),o=e(_r(d[4])),r=e(_r(d[5])),a=f(_r(d[6])),u=f(_r(d[7])),i=f(_r(d[8])),s=["disabled","ios_backgroundColor","onChange","onValueChange","style","thumbColor","trackColor","value"];function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,l=new WeakMap;return(c=function(e){return e?l:t})(e)}function f(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var l=c(t);if(l&&l.has(e))return l.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in e)if("default"!==r&&{}.hasOwnProperty.call(e,r)){var a=o?Object.getOwnPropertyDescriptor(e,r):null;a&&(a.get||a.set)?Object.defineProperty(n,r,a):n[r]=e[r]}return n.default=e,l&&l.set(e,n),n}var v=function(){return!1},b=function(){return!0},p=i.forwardRef((function(e,c){var f=e.disabled,p=e.ios_backgroundColor,C=e.onChange,y=e.onValueChange,h=e.style,O=e.thumbColor,R=e.trackColor,_=e.value,j=(0,l.default)(e,s),k=null==R?void 0:R.false,S=null==R?void 0:R.true,w=i.useRef(null),P=(0,r.default)(w,c),T=i.useState({value:null}),M=(0,t.default)(T,2),V=M[0],E=M[1],F=function(e){null==C||C(e),null==y||y(e.nativeEvent.value),E({value:e.nativeEvent.value})};if(i.useLayoutEffect((function(){var e,t=!0===_;null!=V.value&&V.value!==t&&null!=(null==(e=w.current)?void 0:e.setNativeProps)&&('android'===o.default.OS?a.Commands.setNativeValue(w.current,t):u.Commands.setValue(w.current,t))}),[_,V]),'android'===o.default.OS){var W,q=j.accessibilityState,x=null!=f?f:null==q?void 0:q.disabled,D={accessibilityState:x!==(null==q?void 0:q.disabled)?Object.assign({},q,{disabled:x}):q,enabled:!0!==x,on:!0===_,style:h,thumbTintColor:O,trackColorForFalse:k,trackColorForTrue:S,trackTintColor:!0===_?S:k};return(0,_r(d[9]).jsx)(a.default,Object.assign({},j,D,{accessibilityRole:null!=(W=e.accessibilityRole)?W:'switch',onChange:F,onResponderTerminationRequest:v,onStartShouldSetResponder:b,ref:P}))}var N,L={disabled:f,onTintColor:S,style:n.default.compose({height:31,width:51},n.default.compose(h,null==p?null:{backgroundColor:p,borderRadius:16})),thumbTintColor:O,tintColor:k,value:!0===_};return(0,_r(d[9]).jsx)(u.default,Object.assign({},j,L,{accessibilityRole:null!=(N=e.accessibilityRole)?N:'switch',onChange:F,onResponderTerminationRequest:v,onStartShouldSetResponder:b,ref:P}))}));_e.default=p}),632,[1,38,134,472,33,531,633,635,178,223]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),633,[634]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=_e.__INTERNAL_VIEW_CONFIG=_e.Commands=void 0;e(_r(d[1])),e(_r(d[2])),(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var a={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var l=o?Object.getOwnPropertyDescriptor(e,u):null;l&&(l.get||l.set)?Object.defineProperty(a,u,l):a[u]=e[u]}a.default=e,n&&n.set(e,a)})(_r(d[3]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}var r=_e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'AndroidSwitch',bubblingEventTypes:{topChange:{phasedRegistrationNames:{captured:'onChangeCapture',bubbled:'onChange'}}},validAttributes:Object.assign({disabled:!0,enabled:!0,thumbColor:{process:_r(d[4]).default},trackColorForFalse:{process:_r(d[4]).default},trackColorForTrue:{process:_r(d[4]).default},value:!0,on:!0,thumbTintColor:{process:_r(d[4]).default},trackTintColor:{process:_r(d[4]).default}},_r(d[5]).ConditionallyIgnoredEventHandlers({onChange:!0}))};_e.default=_r(d[6]).get('AndroidSwitch',(function(){return r})),_e.Commands={setNativeValue:function(e,t){_r(d[7]).dispatchCommand(e,"setNativeValue",[t])}}}),634,[1,222,463,178,188,221,185,57]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),635,[636]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=_e.__INTERNAL_VIEW_CONFIG=_e.Commands=void 0;e(_r(d[1])),e(_r(d[2])),(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var l=a?Object.getOwnPropertyDescriptor(e,u):null;l&&(l.get||l.set)?Object.defineProperty(o,u,l):o[u]=e[u]}o.default=e,n&&n.set(e,o)})(_r(d[3]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}var r=_e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RCTSwitch',bubblingEventTypes:{topChange:{phasedRegistrationNames:{captured:'onChangeCapture',bubbled:'onChange'}}},validAttributes:Object.assign({disabled:!0,value:!0,tintColor:{process:_r(d[4]).default},onTintColor:{process:_r(d[4]).default},thumbTintColor:{process:_r(d[4]).default},thumbColor:{process:_r(d[4]).default},trackColorForFalse:{process:_r(d[4]).default},trackColorForTrue:{process:_r(d[4]).default}},_r(d[5]).ConditionallyIgnoredEventHandlers({onChange:!0}))};_e.default=_r(d[6]).get('RCTSwitch',(function(){return r})),_e.Commands={setValue:function(e,t){_r(d[7]).dispatchCommand(e,"setValue",[t])}}}),636,[1,222,463,178,188,221,185,57]); +__d((function(g,_r,_i,_a,m,_e,d){var e,t,n,l,a,r,o=_r(d[0]),u=o(_r(d[1])),i=o(_r(d[2])),c=j(_r(d[3])),s=o(_r(d[4])),f=o(_r(d[5])),p=o(_r(d[6])),v=o(_r(d[7])),y=o(_r(d[8])),b=o(_r(d[9])),h=o(_r(d[10])),C=o(_r(d[11])),x=o(_r(d[12])),S=o(_r(d[13])),T=j(_r(d[14])),w=T,O=["aria-busy","aria-checked","aria-disabled","aria-expanded","aria-selected","accessibilityState","id","tabIndex","selection","selectionColor","selectionHandleColor","cursorColor"],I=["onBlur","onFocus"],R=["allowFontScaling","rejectResponderTermination","underlineColorAndroid","autoComplete","textContentType","readOnly","editable","enterKeyHint","returnKeyType","inputMode","showSoftInputOnFocus","keyboardType"];function F(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(F=function(e){return e?n:t})(e)}function j(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=F(t);if(n&&n.has(e))return n.get(e);var l={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in e)if("default"!==r&&{}.hasOwnProperty.call(e,r)){var o=a?Object.getOwnPropertyDescriptor(e,r):null;o&&(o.get||o.set)?Object.defineProperty(l,r,o):l[r]=e[r]}return l.default=e,n&&n.set(e,l),l}'android'===b.default.OS?(e=_r(d[15]).default,t=_r(d[15]).Commands):'ios'===b.default.OS&&(n=_r(d[16]).default,l=_r(d[16]).Commands,a=_r(d[17]).default,r=_r(d[17]).Commands);var E=function(){return!0};function N(e){var t=e.props,n=e.mostRecentEventCount,l=e.selection,a=e.inputRef,r=e.text,o=e.viewCommands,u=(0,T.useState)(t.value),c=(0,i.default)(u,2),s=c[0],f=c[1],p=(0,T.useState)({selection:{start:-1,end:-1},mostRecentEventCount:n}),v=(0,i.default)(p,2),y=v[0],b=v[1],h=y.selection;return(0,T.useLayoutEffect)((function(){var e,u,i={};(s!==t.value&&'string'==typeof t.value&&(i.text=t.value,f(t.value)),l&&h&&(h.start!==l.start||h.end!==l.end)&&(i.selection=l,b({selection:l,mostRecentEventCount:n})),0!==Object.keys(i).length)&&(null!=a.current&&o.setTextAndSelection(a.current,n,r,null!=(e=null==l?void 0:l.start)?e:-1,null!=(u=null==l?void 0:l.end)?u:-1))}),[n,a,t.value,t.defaultValue,s,l,h,r,o]),{setLastNativeText:f,setLastNativeSelection:b}}function A(e){var t=e.props,n=e.mostRecentEventCount,l=e.selection,a=e.inputRef,r=e.text,o=e.viewCommands,u=(0,T.useRef)(t.value),i=(0,T.useRef)({selection:{start:-1,end:-1},mostRecentEventCount:n});return(0,T.useLayoutEffect)((function(){var e,c,s={},f=i.current.selection;(u.current!==t.value&&'string'==typeof t.value&&(s.text=t.value,u.current=t.value),l&&f&&(f.start!==l.start||f.end!==l.end)&&(s.selection=l,i.current={selection:l,mostRecentEventCount:n}),0!==Object.keys(s).length)&&(null!=a.current&&o.setTextAndSelection(a.current,n,r,null!=(e=null==l?void 0:l.start)?e:-1,null!=(c=null==l?void 0:l.end)?c:-1))}),[n,a,t.value,t.defaultValue,l,r,o]),{setLastNativeText:function(e){u.current=e},setLastNativeSelection:function(e){i.current=e}}}function k(o){var R,F,j=o['aria-busy'],k=o['aria-checked'],L=o['aria-disabled'],B=o['aria-expanded'],P=o['aria-selected'],D=o.accessibilityState,M=o.id,z=o.tabIndex,V=o.selection,W=o.selectionColor,K=o.selectionHandleColor,U=o.cursorColor,Y=(0,u.default)(o,O),G=(0,T.useRef)(null),q=null==V?null:{start:V.start,end:null!=(R=V.end)?R:V.start},J='string'==typeof o.value?o.value:'string'==typeof o.defaultValue?o.defaultValue:'',Q=t||(!0===o.multiline?r:l),X=(0,T.useState)(0),Z=(0,i.default)(X,2),$=Z[0],ee=Z[1],te=(c.useRefsForTextInputState()?A:N)({props:o,inputRef:G,mostRecentEventCount:$,selection:q,text:J,viewCommands:Q}),ne=te.setLastNativeText,le=te.setLastNativeSelection;(0,T.useLayoutEffect)((function(){var e=G.current;if(null!=e)return C.default.registerInput(e),function(){C.default.unregisterInput(e),C.default.currentlyFocusedInput()===e&&(0,S.default)(e).blur()}}),[]);var ae,re=(0,T.useCallback)((function(e){G.current=e,null!=e&&Object.assign(e,{clear:function(){null!=G.current&&Q.setTextAndSelection(G.current,$,'',0,0)},isFocused:function(){return C.default.currentlyFocusedInput()===G.current},getNativeRef:function(){return G.current},setSelection:function(e,t){null!=G.current&&Q.setTextAndSelection(G.current,$,null,e,t)}})}),[$,Q]),oe=(0,h.default)(re,o.forwardedRef),ue=function(e){var t=e.nativeEvent.text;o.onChange&&o.onChange(e),o.onChangeText&&o.onChangeText(t),null!=G.current&&(ne(t),ee(e.nativeEvent.eventCount))},ie=function(e){o.onSelectionChange&&o.onSelectionChange(e),null!=G.current&&le({selection:e.nativeEvent.selection,mostRecentEventCount:$})},de=function(e){C.default.focusInput(G.current),o.onFocus&&o.onFocus(e)},ce=function(e){C.default.blurInput(G.current),o.onBlur&&o.onBlur(e)},se=function(e){o.onScroll&&o.onScroll(e)},fe=null,pe=null!=(F=o.multiline)&&F;ae=null!=o.submitBehavior?pe||'newline'!==o.submitBehavior?o.submitBehavior:'blurAndSubmit':pe?!0===o.blurOnSubmit?'blurAndSubmit':'newline':!1!==o.blurOnSubmit?'blurAndSubmit':'submit';var me=!1!==o.accessible,ve=!1!==o.focusable,ye=o.editable,be=o.hitSlop,he=o.onPress,Ce=o.onPressIn,xe=o.onPressOut,ge=o.rejectResponderTermination,Se=w.useMemo((function(){return{hitSlop:be,onPress:function(e){null==he||he(e),!1!==ye&&null!=G.current&&G.current.focus()},onPressIn:Ce,onPressOut:xe,cancelable:'ios'===b.default.OS?!ge:null}}),[ye,be,he,Ce,xe,ge]),Te=o.caretHidden;b.default.isTesting&&(Te=!0);var we,Oe=(0,s.default)(Se)||{},Ie=(Oe.onBlur,Oe.onFocus,(0,u.default)(Oe,I));null==D&&null==j&&null==k&&null==L&&null==B&&null==P||(we={busy:null!=j?j:null==D?void 0:D.busy,checked:null!=k?k:null==D?void 0:D.checked,disabled:null!=L?L:null==D?void 0:D.disabled,expanded:null!=B?B:null==D?void 0:D.expanded,selected:null!=P?P:null==D?void 0:D.selected});var Re=o.style,Fe=(0,f.default)(o.style);if(null!=Fe){var je=null;'number'==typeof(null==Fe?void 0:Fe.fontWeight)&&((je=je||{}).fontWeight=Fe.fontWeight.toString()),null!=Fe.verticalAlign&&((je=je||{}).textAlignVertical=_[Fe.verticalAlign],je.verticalAlign=void 0),null!=je&&(Re=[Re,je])}if('ios'===b.default.OS){var Ee=!0===o.multiline?a:n,Ne=!0===o.multiline&&(null==Fe||null==Fe.padding&&null==Fe.paddingVertical&&null==Fe.paddingTop);fe=(0,_r(d[18]).jsx)(Ee,Object.assign({ref:oe},Y,Ie,{accessibilityState:we,accessible:me,submitBehavior:ae,caretHidden:Te,dataDetectorTypes:o.dataDetectorTypes,focusable:void 0!==z?!z:ve,mostRecentEventCount:$,nativeID:null!=M?M:o.nativeID,onBlur:ce,onChange:ue,onContentSizeChange:o.onContentSizeChange,onFocus:de,onScroll:se,onSelectionChange:ie,onSelectionChangeShouldSetResponder:E,selection:q,selectionColor:W,style:p.default.compose(Ne?H.multilineDefault:null,Re),text:J}))}else if('android'===b.default.OS){var Ae,ke,Le,Be=o.autoCapitalize||'sentences',Pe=null!=(Ae=null==o?void 0:o['aria-labelledby'])?Ae:null==o?void 0:o.accessibilityLabelledBy,De=null!=(ke=o.placeholder)?ke:'',Me=o.children,He=w.Children.count(Me);(0,x.default)(!(null!=o.value&&He),'Cannot specify both value and children.'),He>1&&(Me=(0,_r(d[18]).jsx)(v.default,{children:Me}));var ze={selectionColor:W,selectionHandleColor:void 0===K?W:K,cursorColor:void 0===U?W:U};fe=(0,_r(d[18]).jsx)(e,Object.assign({ref:oe},Y,ze,Ie,{accessibilityState:we,accessibilityLabelledBy:Pe,accessible:me,autoCapitalize:Be,submitBehavior:ae,caretHidden:Te,children:Me,disableFullscreenUI:o.disableFullscreenUI,focusable:void 0!==z?!z:ve,mostRecentEventCount:$,nativeID:null!=M?M:o.nativeID,numberOfLines:null!=(Le=o.rows)?Le:o.numberOfLines,onBlur:ce,onChange:ue,onFocus:de,onScroll:se,onSelectionChange:ie,placeholder:De,style:Re,text:J,textBreakStrategy:o.textBreakStrategy}))}return(0,_r(d[18]).jsx)(y.default.Provider,{value:!0,children:fe})}var L={enter:'default',done:'done',go:'go',next:'next',previous:'previous',search:'search',send:'send'},B={none:'default',text:'default',decimal:'decimal-pad',numeric:'number-pad',tel:'phone-pad',search:'ios'===b.default.OS?'web-search':'default',email:'email-address',url:'url'},P={'address-line1':'postal-address-region','address-line2':'postal-address-locality',bday:'birthdate-full','bday-day':'birthdate-day','bday-month':'birthdate-month','bday-year':'birthdate-year','cc-csc':'cc-csc','cc-exp':'cc-exp','cc-exp-month':'cc-exp-month','cc-exp-year':'cc-exp-year','cc-number':'cc-number',country:'postal-address-country','current-password':'password',email:'email','honorific-prefix':'name-prefix','honorific-suffix':'name-suffix',name:'name','additional-name':'name-middle','family-name':'name-family','given-name':'name-given','new-password':'password-new',off:'off','one-time-code':'sms-otp','postal-code':'postal-code',sex:'gender','street-address':'street-address',tel:'tel','tel-country-code':'tel-country-code','tel-national':'tel-national',username:'username'},D={'address-line1':'streetAddressLine1','address-line2':'streetAddressLine2',bday:'birthdate','bday-day':'birthdateDay','bday-month':'birthdateMonth','bday-year':'birthdateYear','cc-csc':'creditCardSecurityCode','cc-exp-month':'creditCardExpirationMonth','cc-exp-year':'creditCardExpirationYear','cc-exp':'creditCardExpiration','cc-given-name':'creditCardGivenName','cc-additional-name':'creditCardMiddleName','cc-family-name':'creditCardFamilyName','cc-name':'creditCardName','cc-number':'creditCardNumber','cc-type':'creditCardType','current-password':'password',country:'countryName',email:'emailAddress',name:'name','additional-name':'middleName','family-name':'familyName','given-name':'givenName',nickname:'nickname','honorific-prefix':'namePrefix','honorific-suffix':'nameSuffix','new-password':'newPassword',off:'none','one-time-code':'oneTimeCode',organization:'organizationName','organization-title':'jobTitle','postal-code':'postalCode','street-address':'fullStreetAddress',tel:'telephoneNumber',url:'URL',username:'username'},M=w.forwardRef((function(e,t){var n,l=e.allowFontScaling,a=void 0===l||l,r=e.rejectResponderTermination,o=void 0===r||r,i=e.underlineColorAndroid,c=void 0===i?'transparent':i,s=e.autoComplete,f=e.textContentType,p=e.readOnly,v=e.editable,y=e.enterKeyHint,h=e.returnKeyType,C=e.inputMode,x=e.showSoftInputOnFocus,S=e.keyboardType,T=(0,u.default)(e,R);return(0,_r(d[18]).jsx)(k,Object.assign({allowFontScaling:a,rejectResponderTermination:o,underlineColorAndroid:c,editable:void 0!==p?!p:v,returnKeyType:y?L[y]:h,keyboardType:C?B[C]:S,showSoftInputOnFocus:null==C?x:'none'!==C,autoComplete:'android'===b.default.OS?null!=(n=P[s])?n:s:void 0,textContentType:null!=f?f:'ios'===b.default.OS&&s&&s in D?D[s]:f},T,{forwardedRef:t}))}));M.displayName='TextInput',M.State={currentlyFocusedInput:C.default.currentlyFocusedInput,currentlyFocusedField:C.default.currentlyFocusedField,focusTextInput:C.default.focusTextInput,blurTextInput:C.default.blurTextInput};var H=p.default.create({multilineDefault:{paddingTop:5}}),_={auto:'auto',top:'top',bottom:'bottom',middle:'center'};m.exports=M}),637,[1,134,38,106,490,290,472,488,183,33,531,279,20,45,178,280,638,640,223]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=_e.__INTERNAL_VIEW_CONFIG=_e.Commands=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=u(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(r,o,i):r[o]=e[o]}return r.default=e,n&&n.set(e,r),r})(_r(d[1])),n=e(_r(d[2])),r=e(_r(d[3]));function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(u=function(e){return e?n:t})(e)}_e.Commands=(0,n.default)({supportedCommands:['focus','blur','setTextAndSelection']});var a=_e.__INTERNAL_VIEW_CONFIG=Object.assign({uiViewClassName:'RCTSinglelineTextInputView'},r.default),o=t.get('RCTSinglelineTextInputView',(function(){return a}));_e.default=o}),638,[1,185,222,639]); +__d((function(g,r,i,a,m,e,d){var t={bubblingEventTypes:{topBlur:{phasedRegistrationNames:{bubbled:'onBlur',captured:'onBlurCapture'}},topChange:{phasedRegistrationNames:{bubbled:'onChange',captured:'onChangeCapture'}},topEndEditing:{phasedRegistrationNames:{bubbled:'onEndEditing',captured:'onEndEditingCapture'}},topFocus:{phasedRegistrationNames:{bubbled:'onFocus',captured:'onFocusCapture'}},topKeyPress:{phasedRegistrationNames:{bubbled:'onKeyPress',captured:'onKeyPressCapture'}},topSubmitEditing:{phasedRegistrationNames:{bubbled:'onSubmitEditing',captured:'onSubmitEditingCapture'}},topTouchCancel:{phasedRegistrationNames:{bubbled:'onTouchCancel',captured:'onTouchCancelCapture'}},topTouchEnd:{phasedRegistrationNames:{bubbled:'onTouchEnd',captured:'onTouchEndCapture'}},topTouchMove:{phasedRegistrationNames:{bubbled:'onTouchMove',captured:'onTouchMoveCapture'}}},directEventTypes:{topScroll:{registrationName:'onScroll'},topSelectionChange:{registrationName:'onSelectionChange'},topContentSizeChange:{registrationName:'onContentSizeChange'},topChangeSync:{registrationName:'onChangeSync'},topKeyPressSync:{registrationName:'onKeyPressSync'}},validAttributes:Object.assign({dynamicTypeRamp:!0,fontSize:!0,fontWeight:!0,fontVariant:!0,textShadowOffset:{diff:r(d[0])},allowFontScaling:!0,fontStyle:!0,textTransform:!0,textAlign:!0,fontFamily:!0,lineBreakModeIOS:!0,lineHeight:!0,isHighlighted:!0,writingDirection:!0,textDecorationLine:!0,textShadowRadius:!0,letterSpacing:!0,textDecorationStyle:!0,textDecorationColor:{process:r(d[1]).default},color:{process:r(d[1]).default},maxFontSizeMultiplier:!0,textShadowColor:{process:r(d[1]).default},editable:!0,inputAccessoryViewID:!0,caretHidden:!0,enablesReturnKeyAutomatically:!0,placeholderTextColor:{process:r(d[1]).default},clearButtonMode:!0,keyboardType:!0,selection:!0,returnKeyType:!0,submitBehavior:!0,mostRecentEventCount:!0,scrollEnabled:!0,selectionColor:{process:r(d[1]).default},contextMenuHidden:!0,secureTextEntry:!0,placeholder:!0,autoCorrect:!0,multiline:!0,textContentType:!0,maxLength:!0,autoCapitalize:!0,keyboardAppearance:!0,passwordRules:!0,spellCheck:!0,selectTextOnFocus:!0,text:!0,clearTextOnFocus:!0,showSoftInputOnFocus:!0,autoFocus:!0,lineBreakStrategyIOS:!0,smartInsertDelete:!0},(0,r(d[2]).ConditionallyIgnoredEventHandlers)({onChange:!0,onSelectionChange:!0,onContentSizeChange:!0,onScroll:!0,onChangeSync:!0,onKeyPressSync:!0}))};m.exports=t}),639,[200,188,221]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=_e.__INTERNAL_VIEW_CONFIG=_e.Commands=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=u(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var o=a?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(n,i,o):n[i]=e[i]}return n.default=e,r&&r.set(e,n),n})(_r(d[1])),r=e(_r(d[2])),n=e(_r(d[3]));function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(u=function(e){return e?r:t})(e)}_e.Commands=(0,r.default)({supportedCommands:['focus','blur','setTextAndSelection']});var a=_e.__INTERNAL_VIEW_CONFIG=Object.assign({uiViewClassName:'RCTMultilineTextInputView'},n.default,{validAttributes:Object.assign({},n.default.validAttributes,{dataDetectorTypes:!0})}),i=t.get('RCTMultilineTextInputView',(function(){return a}));_e.default=i}),640,[1,185,222,639]); +__d((function(g,_r,_i,_a,m,_e,d){var t=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=t(_r(d[1])),i=t(_r(d[2])),o=t(_r(d[3])),s=t(_r(d[4])),E=t(_r(d[5])),a=t(_r(d[6]));!(function(t,e){if(!e&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var i=n(e);if(i&&i.has(t))return i.get(t);var o={__proto__:null},s=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var E in t)if("default"!==E&&{}.hasOwnProperty.call(t,E)){var a=s?Object.getOwnPropertyDescriptor(t,E):null;a&&(a.get||a.set)?Object.defineProperty(o,E,a):o[E]=t[E]}o.default=t,i&&i.set(t,o)})(_r(d[7]));function n(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,i=new WeakMap;return(n=function(t){return t?i:e})(t)}var l=function(t){var e=t.touches,i=t.changedTouches,o=e&&e.length>0,s=i&&i.length>0;return!o&&s?i[0]:o?e[0]:t},u='NOT_RESPONDER',r='RESPONDER_INACTIVE_PRESS_IN',h='RESPONDER_INACTIVE_PRESS_OUT',R='RESPONDER_ACTIVE_PRESS_IN',_='RESPONDER_ACTIVE_PRESS_OUT',c='RESPONDER_ACTIVE_LONG_PRESS_IN',S='RESPONDER_ACTIVE_LONG_PRESS_OUT',T='ERROR',P={NOT_RESPONDER:!1,RESPONDER_INACTIVE_PRESS_IN:!1,RESPONDER_INACTIVE_PRESS_OUT:!1,RESPONDER_ACTIVE_PRESS_IN:!1,RESPONDER_ACTIVE_PRESS_OUT:!1,RESPONDER_ACTIVE_LONG_PRESS_IN:!1,RESPONDER_ACTIVE_LONG_PRESS_OUT:!1,ERROR:!1},D=Object.assign({},P,{RESPONDER_ACTIVE_PRESS_OUT:!0,RESPONDER_ACTIVE_PRESS_IN:!0}),N=Object.assign({},P,{RESPONDER_INACTIVE_PRESS_IN:!0,RESPONDER_ACTIVE_PRESS_IN:!0,RESPONDER_ACTIVE_LONG_PRESS_IN:!0}),O=Object.assign({},P,{RESPONDER_ACTIVE_LONG_PRESS_IN:!0}),p='DELAY',f='RESPONDER_GRANT',b='RESPONDER_RELEASE',A='RESPONDER_TERMINATED',I='ENTER_PRESS_RECT',L='LEAVE_PRESS_RECT',v='LONG_PRESS_DETECTED',y={NOT_RESPONDER:{DELAY:T,RESPONDER_GRANT:r,RESPONDER_RELEASE:T,RESPONDER_TERMINATED:T,ENTER_PRESS_RECT:T,LEAVE_PRESS_RECT:T,LONG_PRESS_DETECTED:T},RESPONDER_INACTIVE_PRESS_IN:{DELAY:R,RESPONDER_GRANT:T,RESPONDER_RELEASE:u,RESPONDER_TERMINATED:u,ENTER_PRESS_RECT:r,LEAVE_PRESS_RECT:h,LONG_PRESS_DETECTED:T},RESPONDER_INACTIVE_PRESS_OUT:{DELAY:_,RESPONDER_GRANT:T,RESPONDER_RELEASE:u,RESPONDER_TERMINATED:u,ENTER_PRESS_RECT:r,LEAVE_PRESS_RECT:h,LONG_PRESS_DETECTED:T},RESPONDER_ACTIVE_PRESS_IN:{DELAY:T,RESPONDER_GRANT:T,RESPONDER_RELEASE:u,RESPONDER_TERMINATED:u,ENTER_PRESS_RECT:R,LEAVE_PRESS_RECT:_,LONG_PRESS_DETECTED:c},RESPONDER_ACTIVE_PRESS_OUT:{DELAY:T,RESPONDER_GRANT:T,RESPONDER_RELEASE:u,RESPONDER_TERMINATED:u,ENTER_PRESS_RECT:R,LEAVE_PRESS_RECT:_,LONG_PRESS_DETECTED:T},RESPONDER_ACTIVE_LONG_PRESS_IN:{DELAY:T,RESPONDER_GRANT:T,RESPONDER_RELEASE:u,RESPONDER_TERMINATED:u,ENTER_PRESS_RECT:c,LEAVE_PRESS_RECT:S,LONG_PRESS_DETECTED:c},RESPONDER_ACTIVE_LONG_PRESS_OUT:{DELAY:T,RESPONDER_GRANT:T,RESPONDER_RELEASE:u,RESPONDER_TERMINATED:u,ENTER_PRESS_RECT:c,LEAVE_PRESS_RECT:S,LONG_PRESS_DETECTED:T},error:{DELAY:u,RESPONDER_GRANT:r,RESPONDER_RELEASE:u,RESPONDER_TERMINATED:u,ENTER_PRESS_RECT:u,LEAVE_PRESS_RECT:u,LONG_PRESS_DETECTED:u}},C={componentDidMount:function(){o.default.isTV},componentWillUnmount:function(){this.touchableDelayTimeout&&clearTimeout(this.touchableDelayTimeout),this.longPressDelayTimeout&&clearTimeout(this.longPressDelayTimeout),this.pressOutDelayTimeout&&clearTimeout(this.pressOutDelayTimeout)},touchableGetInitialState:function(){return{touchable:{touchState:void 0,responderID:null}}},touchableHandleResponderTerminationRequest:function(){return!this.props.rejectResponderTermination},touchableHandleStartShouldSetResponder:function(){return!this.props.disabled},touchableLongPressCancelsPress:function(){return!0},touchableHandleResponderGrant:function(t){var e=t.currentTarget;t.persist(),this.pressOutDelayTimeout&&clearTimeout(this.pressOutDelayTimeout),this.pressOutDelayTimeout=null,this.state.touchable.touchState=u,this.state.touchable.responderID=e,this._receiveSignal(f,t);var i=void 0!==this.touchableGetHighlightDelayMS?Math.max(this.touchableGetHighlightDelayMS(),0):130;0!==(i=isNaN(i)?130:i)?this.touchableDelayTimeout=setTimeout(this._handleDelay.bind(this,t),i):this._handleDelay(t);var o=void 0!==this.touchableGetLongPressDelayMS?Math.max(this.touchableGetLongPressDelayMS(),10):370;o=isNaN(o)?370:o,this.longPressDelayTimeout=setTimeout(this._handleLongDelay.bind(this,t),o+i)},touchableHandleResponderRelease:function(t){this.pressInLocation=null,this._receiveSignal(b,t)},touchableHandleResponderTerminate:function(t){this.pressInLocation=null,this._receiveSignal(A,t)},touchableHandleResponderMove:function(t){if(this.state.touchable.positionOnActivate){var e=this.state.touchable.positionOnActivate,i=this.state.touchable.dimensionsOnActivate,o=this.touchableGetPressRectOffset?this.touchableGetPressRectOffset():{left:20,right:20,top:20,bottom:20},s=o.left,E=o.top,a=o.right,n=o.bottom,u=this.touchableGetHitSlop?this.touchableGetHitSlop():null;u&&(s+=u.left||0,E+=u.top||0,a+=u.right||0,n+=u.bottom||0);var h=l(t.nativeEvent),R=h&&h.pageX,_=h&&h.pageY;if(this.pressInLocation)this._getDistanceBetweenPoints(R,_,this.pressInLocation.pageX,this.pressInLocation.pageY)>10&&this._cancelLongPressDelayTimeout();if(R>e.left-s&&_>e.top-E&&R>`");o!==s&&(this._performSideEffectsForTransition(o,s,t,e),this.state.touchable.touchState=s)}},_cancelLongPressDelayTimeout:function(){this.longPressDelayTimeout&&clearTimeout(this.longPressDelayTimeout),this.longPressDelayTimeout=null},_isHighlight:function(t){return t===R||t===c},_savePressInLocation:function(t){var e=l(t.nativeEvent),i=e&&e.pageX,o=e&&e.pageY,s=e&&e.locationX,E=e&&e.locationY;this.pressInLocation={pageX:i,pageY:o,locationX:s,locationY:E}},_getDistanceBetweenPoints:function(t,e,i,o){var s=t-i,E=e-o;return Math.sqrt(s*s+E*E)},_performSideEffectsForTransition:function(t,e,i,E){var a=this._isHighlight(t),n=this._isHighlight(e);(i===A||i===b)&&this._cancelLongPressDelayTimeout();var l=t===u&&e===r,h=!D[t]&&D[e];if((l||h)&&this._remeasureMetricsOnActivation(),N[t]&&i===v&&this.touchableHandleLongPress&&this.touchableHandleLongPress(E),n&&!a?this._startHighlight(E):!n&&a&&this._endHighlight(E),N[t]&&i===b){var R=!!this.props.onLongPress,_=O[t]&&(!R||!this.touchableLongPressCancelsPress());(!O[t]||_)&&this.touchableHandlePress&&(n||a||(this._startHighlight(E),this._endHighlight(E)),'android'!==o.default.OS||this.props.touchSoundDisabled||s.default.playTouchSound(),this.touchableHandlePress(E))}this.touchableDelayTimeout&&clearTimeout(this.touchableDelayTimeout),this.touchableDelayTimeout=null},_startHighlight:function(t){this._savePressInLocation(t),this.touchableHandleActivePressIn&&this.touchableHandleActivePressIn(t)},_endHighlight:function(t){var e=this;this.touchableHandleActivePressOut&&(this.touchableGetPressOutDelayMS&&this.touchableGetPressOutDelayMS()?this.pressOutDelayTimeout=setTimeout((function(){e.touchableHandleActivePressOut(t)}),this.touchableGetPressOutDelayMS()):this.touchableHandleActivePressOut(t))},withoutDefaultFocusAndBlur:{}},G=(C.touchableHandleFocus,C.touchableHandleBlur,(0,e.default)(C,["touchableHandleFocus","touchableHandleBlur"]));C.withoutDefaultFocusAndBlur=G;var V={Mixin:C,renderDebugView:function(t){t.color,t.hitSlop;return null}};_e.default=V}),641,[1,134,44,33,492,642,644,178]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0])(r(d[1])),o=t.default.twoArgumentPooler;function n(t,o){this.width=t,this.height=o}n.prototype.destructor=function(){this.width=null,this.height=null},n.getPooledFromElement=function(t){return n.getPooled(t.offsetWidth,t.offsetHeight)},t.default.addPoolingTo(n,o),m.exports=n}),642,[1,643]); +__d((function(g,r,i,a,m,e,d){'use strict';var n=r(d[0])(r(d[1])),o=function(n){var o=this;if(o.instancePool.length){var t=o.instancePool.pop();return o.call(t,n),t}return new o(n)},t=function(o){var t=this;(0,n.default)(o instanceof t,'Trying to release an instance into a pool of a different type.'),o.destructor(),t.instancePool.lengthi&&(f+=u&&o?h.currentPageX:u&&!o?h.currentPageY:!u&&o?h.previousPageX:h.previousPageY,s=1);else for(var v=0;v=i){f+=u&&o?C.currentPageX:u&&!o?C.currentPageY:!u&&o?C.previousPageX:C.previousPageY,s++}}return s>0?f/s:n.noCentroid},currentCentroidXOfTouchesChangedAfter:function(t,i){return n.centroidDimension(t,i,!0,!0)},currentCentroidYOfTouchesChangedAfter:function(t,i){return n.centroidDimension(t,i,!1,!0)},previousCentroidXOfTouchesChangedAfter:function(t,i){return n.centroidDimension(t,i,!0,!1)},previousCentroidYOfTouchesChangedAfter:function(t,i){return n.centroidDimension(t,i,!1,!1)},currentCentroidX:function(t){return n.centroidDimension(t,0,!0,!0)},currentCentroidY:function(t){return n.centroidDimension(t,0,!1,!0)},noCentroid:-1};m.exports=n}),673,[]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]),E=n(r(d[1])),s=n(r(d[2])),o=n(r(d[3])),A=n(r(d[4])),_=n(r(d[5])),S=n(r(d[6])),O=Object.freeze({GRANTED:'granted',DENIED:'denied',NEVER_ASK_AGAIN:'never_ask_again'}),C=Object.freeze({READ_CALENDAR:'android.permission.READ_CALENDAR',WRITE_CALENDAR:'android.permission.WRITE_CALENDAR',CAMERA:'android.permission.CAMERA',READ_CONTACTS:'android.permission.READ_CONTACTS',WRITE_CONTACTS:'android.permission.WRITE_CONTACTS',GET_ACCOUNTS:'android.permission.GET_ACCOUNTS',ACCESS_FINE_LOCATION:'android.permission.ACCESS_FINE_LOCATION',ACCESS_COARSE_LOCATION:'android.permission.ACCESS_COARSE_LOCATION',ACCESS_BACKGROUND_LOCATION:'android.permission.ACCESS_BACKGROUND_LOCATION',RECORD_AUDIO:'android.permission.RECORD_AUDIO',READ_PHONE_STATE:'android.permission.READ_PHONE_STATE',CALL_PHONE:'android.permission.CALL_PHONE',READ_CALL_LOG:'android.permission.READ_CALL_LOG',WRITE_CALL_LOG:'android.permission.WRITE_CALL_LOG',ADD_VOICEMAIL:'com.android.voicemail.permission.ADD_VOICEMAIL',READ_VOICEMAIL:'com.android.voicemail.permission.READ_VOICEMAIL',WRITE_VOICEMAIL:'com.android.voicemail.permission.WRITE_VOICEMAIL',USE_SIP:'android.permission.USE_SIP',PROCESS_OUTGOING_CALLS:'android.permission.PROCESS_OUTGOING_CALLS',BODY_SENSORS:'android.permission.BODY_SENSORS',BODY_SENSORS_BACKGROUND:'android.permission.BODY_SENSORS_BACKGROUND',SEND_SMS:'android.permission.SEND_SMS',RECEIVE_SMS:'android.permission.RECEIVE_SMS',READ_SMS:'android.permission.READ_SMS',RECEIVE_WAP_PUSH:'android.permission.RECEIVE_WAP_PUSH',RECEIVE_MMS:'android.permission.RECEIVE_MMS',READ_EXTERNAL_STORAGE:'android.permission.READ_EXTERNAL_STORAGE',READ_MEDIA_IMAGES:'android.permission.READ_MEDIA_IMAGES',READ_MEDIA_VIDEO:'android.permission.READ_MEDIA_VIDEO',READ_MEDIA_AUDIO:'android.permission.READ_MEDIA_AUDIO',READ_MEDIA_VISUAL_USER_SELECTED:'android.permission.READ_MEDIA_VISUAL_USER_SELECTED',WRITE_EXTERNAL_STORAGE:'android.permission.WRITE_EXTERNAL_STORAGE',BLUETOOTH_CONNECT:'android.permission.BLUETOOTH_CONNECT',BLUETOOTH_SCAN:'android.permission.BLUETOOTH_SCAN',BLUETOOTH_ADVERTISE:'android.permission.BLUETOOTH_ADVERTISE',ACCESS_MEDIA_LOCATION:'android.permission.ACCESS_MEDIA_LOCATION',ACCEPT_HANDOVER:'android.permission.ACCEPT_HANDOVER',ACTIVITY_RECOGNITION:'android.permission.ACTIVITY_RECOGNITION',ANSWER_PHONE_CALLS:'android.permission.ANSWER_PHONE_CALLS',READ_PHONE_NUMBERS:'android.permission.READ_PHONE_NUMBERS',UWB_RANGING:'android.permission.UWB_RANGING',POST_NOTIFICATIONS:'android.permission.POST_NOTIFICATIONS',NEARBY_WIFI_DEVICES:'android.permission.NEARBY_WIFI_DEVICES'}),R=(function(){return(0,o.default)((function n(){(0,s.default)(this,n),this.PERMISSIONS=C,this.RESULTS=O}),[{key:"checkPermission",value:function(n){return console.warn('"PermissionsAndroid.checkPermission" is deprecated. Use "PermissionsAndroid.check" instead'),(0,S.default)(_.default,'PermissionsAndroid is not installed correctly.'),_.default.checkPermission(n)}},{key:"check",value:function(n){return(0,S.default)(_.default,'PermissionsAndroid is not installed correctly.'),_.default.checkPermission(n)}},{key:"requestPermission",value:(R=(0,E.default)((function*(n,E){return console.warn('"PermissionsAndroid.requestPermission" is deprecated. Use "PermissionsAndroid.request" instead'),(yield this.request(n,E))===this.RESULTS.GRANTED})),function(n,E){return R.apply(this,arguments)})},{key:"request",value:(n=(0,E.default)((function*(n,E){return(0,S.default)(_.default,'PermissionsAndroid is not installed correctly.'),E&&(yield _.default.shouldShowRequestPermissionRationale(n))&&A.default?new Promise((function(s,o){var S=Object.assign({},E);A.default.showAlert(S,(function(){return o(new Error('Error showing rationale'))}),(function(){return s(_.default.requestPermission(n))}))})):_.default.requestPermission(n)})),function(E,s){return n.apply(this,arguments)})},{key:"requestMultiple",value:function(n){return(0,S.default)(_.default,'PermissionsAndroid is not installed correctly.'),_.default.requestMultiplePermissions(n)}}]);var n,R})(),I=new R;m.exports=I}),674,[1,564,12,13,149,675,20]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),675,[676]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.get('PermissionsAndroid')}),676,[36]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]),o=t(r(d[1])),n=t(r(d[2])),l=t(r(d[3])),u=t(r(d[4])),c=t(r(d[5])),f=t(r(d[6])),s=new l.default('ios'!==u.default.OS?null:c.default),v=new Map,h=(function(){function t(n){var l=this;(0,o.default)(this,t),this._data={},this._remoteNotificationCompleteCallbackCalled=!1,this._isRemote=n.remote,this._isRemote&&(this._notificationId=n.notificationId),n.remote?Object.keys(n).forEach((function(t){var o=n[t];'aps'===t?(l._alert=o.alert,l._sound=o.sound,l._badgeCount=o.badge,l._category=o.category,l._contentAvailable=o['content-available'],l._threadID=o['thread-id']):l._data[t]=o})):(this._badgeCount=n.applicationIconBadgeNumber,this._sound=n.soundName,this._alert=n.alertBody,this._data=n.userInfo,this._category=n.category)}return(0,n.default)(t,[{key:"finish",value:function(t){this._isRemote&&this._notificationId&&!this._remoteNotificationCompleteCallbackCalled&&(this._remoteNotificationCompleteCallbackCalled=!0,(0,f.default)(c.default,'PushNotificationManager is not available.'),c.default.onFinishRemoteNotification(this._notificationId,t))}},{key:"getMessage",value:function(){return this._alert}},{key:"getSound",value:function(){return this._sound}},{key:"getCategory",value:function(){return this._category}},{key:"getAlert",value:function(){return this._alert}},{key:"getContentAvailable",value:function(){return this._contentAvailable}},{key:"getBadgeCount",value:function(){return this._badgeCount}},{key:"getData",value:function(){return this._data}},{key:"getThreadID",value:function(){return this._threadID}}],[{key:"presentLocalNotification",value:function(t){(0,f.default)(c.default,'PushNotificationManager is not available.'),c.default.presentLocalNotification(t)}},{key:"scheduleLocalNotification",value:function(t){(0,f.default)(c.default,'PushNotificationManager is not available.'),c.default.scheduleLocalNotification(t)}},{key:"cancelAllLocalNotifications",value:function(){(0,f.default)(c.default,'PushNotificationManager is not available.'),c.default.cancelAllLocalNotifications()}},{key:"removeAllDeliveredNotifications",value:function(){(0,f.default)(c.default,'PushNotificationManager is not available.'),c.default.removeAllDeliveredNotifications()}},{key:"getDeliveredNotifications",value:function(t){(0,f.default)(c.default,'PushNotificationManager is not available.'),c.default.getDeliveredNotifications(t)}},{key:"removeDeliveredNotifications",value:function(t){(0,f.default)(c.default,'PushNotificationManager is not available.'),c.default.removeDeliveredNotifications(t)}},{key:"setApplicationIconBadgeNumber",value:function(t){(0,f.default)(c.default,'PushNotificationManager is not available.'),c.default.setApplicationIconBadgeNumber(t)}},{key:"getApplicationIconBadgeNumber",value:function(t){(0,f.default)(c.default,'PushNotificationManager is not available.'),c.default.getApplicationIconBadgeNumber(t)}},{key:"cancelLocalNotifications",value:function(t){(0,f.default)(c.default,'PushNotificationManager is not available.'),c.default.cancelLocalNotifications(t)}},{key:"getScheduledLocalNotifications",value:function(t){(0,f.default)(c.default,'PushNotificationManager is not available.'),c.default.getScheduledLocalNotifications(t)}},{key:"addEventListener",value:function(o,n){var l;(0,f.default)('notification'===o||'register'===o||'registrationError'===o||'localNotification'===o,'PushNotificationIOS only supports `notification`, `register`, `registrationError`, and `localNotification` events'),'notification'===o?l=s.addListener("remoteNotificationReceived",(function(o){n(new t(o))})):'localNotification'===o?l=s.addListener("localNotificationReceived",(function(o){n(new t(o))})):'register'===o?l=s.addListener("remoteNotificationsRegistered",(function(t){n(t.deviceToken)})):'registrationError'===o&&(l=s.addListener("remoteNotificationRegistrationError",(function(t){n(t)}))),v.set(o,l)}},{key:"removeEventListener",value:function(t){(0,f.default)('notification'===t||'register'===t||'registrationError'===t||'localNotification'===t,'PushNotificationIOS only supports `notification`, `register`, `registrationError`, and `localNotification` events');var o=v.get(t);o&&(o.remove(),v.delete(t))}},{key:"requestPermissions",value:function(t){var o={alert:!0,badge:!0,sound:!0};return t&&(o={alert:!!t.alert,badge:!!t.badge,sound:!!t.sound}),(0,f.default)(c.default,'PushNotificationManager is not available.'),c.default.requestPermissions(o)}},{key:"abandonPermissions",value:function(){(0,f.default)(c.default,'PushNotificationManager is not available.'),c.default.abandonPermissions()}},{key:"checkPermissions",value:function(t){(0,f.default)('function'==typeof t,'Must provide a valid callback'),(0,f.default)(c.default,'PushNotificationManager is not available.'),c.default.checkPermissions(t)}},{key:"getInitialNotification",value:function(){return(0,f.default)(c.default,'PushNotificationManager is not available.'),c.default.getInitialNotification().then((function(o){return o&&new t(o)}))}},{key:"getAuthorizationStatus",value:function(t){(0,f.default)(c.default,'PushNotificationManager is not available.'),c.default.getAuthorizationStatus(t)}}])})();h.FetchResult={NewData:'UIBackgroundFetchResultNewData',NoData:'UIBackgroundFetchResultNoData',ResultFailed:'UIBackgroundFetchResultFailed'},m.exports=h}),677,[1,12,13,125,33,678,20]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),678,[679]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=u?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(o,a,f):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.get('PushNotificationManager')}),679,[36]); +__d((function(g,r,i,a,m,e,d){'use strict';var t={get:function(t){return console.warn('Settings is not yet supported on this platform.'),null},set:function(t){console.warn('Settings is not yet supported on this platform.')},watchKeys:function(t,n){return console.warn('Settings is not yet supported on this platform.'),-1},clearWatch:function(t){console.warn('Settings is not yet supported on this platform.')}};m.exports=t}),680,[]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]),s=t(r(d[1])),n=t(r(d[2])),o=(t(r(d[3])),t(r(d[4]))),l=(function(){return(0,n.default)((function t(){(0,s.default)(this,t)}),null,[{key:"share",value:function(t){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};r(d[5])('object'==typeof t&&null!==t,'Content to share must be a valid object'),r(d[5])('string'==typeof t.url||'string'==typeof t.message,'At least one of URL or message is required'),r(d[5])('object'==typeof s&&null!==s,'Options must be a valid object'),r(d[5])(o.default,'ShareModule should be registered on Android.'),r(d[5])(null==t.title||'string'==typeof t.title,'Invalid title: title should be a string.');var n={title:t.title,message:'string'==typeof t.message?t.message:void 0};return o.default.share(n,s.dialogTitle).then((function(t){return Object.assign({activityType:null},t)}))}}])})();l.sharedAction='sharedAction',l.dismissedAction='dismissedAction',m.exports=l}),681,[1,12,13,650,682,20]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),682,[683]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=o?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(u,f,a):u[f]=e[f]}return u.default=e,n&&n.set(e,u),u})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.get('ShareModule')}),683,[36]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0])(r(d[1])),f=t.default.getConstants(),n={SHORT:f.SHORT,LONG:f.LONG,TOP:f.TOP,BOTTOM:f.BOTTOM,CENTER:f.CENTER,show:function(f,n){t.default.show(f,n)},showWithGravity:function(f,n,o){t.default.showWithGravity(f,n,o)},showWithGravityAndOffset:function(f,n,o,O,s){t.default.showWithGravityAndOffset(f,n,o,O,s)}};m.exports=n}),684,[1,685]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),685,[686]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.getEnforcing('ToastAndroid')}),686,[36]); +__d((function(g,r,i,a,m,e,d){var u=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(u,l){var c=(0,t.useRef)(null);null==c.current&&(c.current=new n.default.Value(u,l));return c.current};var n=u(r(d[1])),t=r(d[2])}),687,[1,502,178]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return(0,n.useSyncExternalStore)(t,r(d[1]).getColorScheme)};var n=r(d[0]),t=function(n){var t=(0,r(d[1]).addChangeListener)(n);return function(){return t.remove()}}}),688,[178,652]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var A=r(d[0])({BOM:"\ufeff",BULLET:"\u2022",BULLET_SP:"\xa0\u2022\xa0",MIDDOT:"\xb7",MIDDOT_SP:"\xa0\xb7\xa0",MIDDOT_KATAKANA:"\u30fb",MDASH:"\u2014",MDASH_SP:"\xa0\u2014\xa0",NDASH:"\u2013",NDASH_SP:"\xa0\u2013\xa0",NEWLINE:"\n",NBSP:"\xa0",PIZZA:"\ud83c\udf55",TRIANGLE_LEFT:"\u25c0",TRIANGLE_RIGHT:"\u25b6"});e.default=A}),689,[300]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0])(r(d[1]));var n={vibrate:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:400,o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if('number'==typeof n)t.default.vibrate(n);else{if(!Array.isArray(n))throw new Error('Vibration pattern should be a number or array');t.default.vibrateByPattern(n,o?0:-1)}},cancel:function(){t.default.cancel()}};m.exports=n}),690,[1,691]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0});var e={};_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}Object.keys(t).forEach((function(r){"default"!==r&&"__esModule"!==r&&(Object.prototype.hasOwnProperty.call(e,r)||r in _e&&_e[r]===t[r]||Object.defineProperty(_e,r,{enumerable:!0,get:function(){return t[r]}}))}));_e.default=t.default}),691,[692]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.getEnforcing('Vibration')}),692,[36]); +__d((function(g,r,i,a,m,_e,d){'use strict';var n,t=r(d[0]),e=r(d[1]),u=r(d[2]),o=r(d[3]),c=r(d[4]);function l(){try{var n=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(n){}return(l=function(){return!!n})()}n=(function(n){function f(){return t(this,f),n=this,c=arguments,e=o(e=f),u(n,l()?Reflect.construct(e,c||[],o(n).constructor):e.apply(n,c));var n,e,c}return c(f,n),e(f,[{key:"render",value:function(){return null}}],[{key:"ignoreWarnings",value:function(n){}},{key:"install",value:function(){}},{key:"uninstall",value:function(){}}])})(r(d[5]).Component),m.exports=n}),693,[12,13,23,25,28,178]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.DynamicColorIOS=void 0;e.DynamicColorIOS=function(o){throw new Error('DynamicColorIOS is not available on this platform.')}}),694,[]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0,r(d[1]);n(r(d[2]));var t=n(r(d[3]));r(d[4]);e.default=function(){return(0,r(d[5]).jsx)(r(d[6]).NavigationContainer,{children:(0,r(d[5]).jsx)(t.default,{})})}}),695,[1,696,178,776,1343,223,939]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"BaseButton",{enumerable:!0,get:function(){return r(d[1]).BaseButton}}),Object.defineProperty(e,"BorderlessButton",{enumerable:!0,get:function(){return r(d[1]).BorderlessButton}}),Object.defineProperty(e,"Directions",{enumerable:!0,get:function(){return r(d[2]).Directions}}),Object.defineProperty(e,"DrawerLayout",{enumerable:!0,get:function(){return l.default}}),Object.defineProperty(e,"DrawerLayoutAndroid",{enumerable:!0,get:function(){return r(d[3]).DrawerLayoutAndroid}}),Object.defineProperty(e,"FlatList",{enumerable:!0,get:function(){return r(d[3]).FlatList}}),Object.defineProperty(e,"FlingGestureHandler",{enumerable:!0,get:function(){return r(d[4]).FlingGestureHandler}}),Object.defineProperty(e,"ForceTouchGestureHandler",{enumerable:!0,get:function(){return r(d[5]).ForceTouchGestureHandler}}),Object.defineProperty(e,"Gesture",{enumerable:!0,get:function(){return r(d[6]).GestureObjects}}),Object.defineProperty(e,"GestureDetector",{enumerable:!0,get:function(){return r(d[7]).GestureDetector}}),Object.defineProperty(e,"GestureHandlerRootView",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(e,"HoverEffect",{enumerable:!0,get:function(){return r(d[8]).HoverEffect}}),Object.defineProperty(e,"LongPressGestureHandler",{enumerable:!0,get:function(){return r(d[9]).LongPressGestureHandler}}),Object.defineProperty(e,"MouseButton",{enumerable:!0,get:function(){return r(d[10]).MouseButton}}),Object.defineProperty(e,"NativeViewGestureHandler",{enumerable:!0,get:function(){return r(d[11]).NativeViewGestureHandler}}),Object.defineProperty(e,"PanGestureHandler",{enumerable:!0,get:function(){return r(d[12]).PanGestureHandler}}),Object.defineProperty(e,"PinchGestureHandler",{enumerable:!0,get:function(){return r(d[13]).PinchGestureHandler}}),Object.defineProperty(e,"PointerType",{enumerable:!0,get:function(){return r(d[14]).PointerType}}),Object.defineProperty(e,"Pressable",{enumerable:!0,get:function(){return b.default}}),Object.defineProperty(e,"PureNativeButton",{enumerable:!0,get:function(){return r(d[1]).PureNativeButton}}),Object.defineProperty(e,"RawButton",{enumerable:!0,get:function(){return r(d[1]).RawButton}}),Object.defineProperty(e,"RectButton",{enumerable:!0,get:function(){return r(d[1]).RectButton}}),Object.defineProperty(e,"RefreshControl",{enumerable:!0,get:function(){return r(d[3]).RefreshControl}}),Object.defineProperty(e,"RotationGestureHandler",{enumerable:!0,get:function(){return r(d[15]).RotationGestureHandler}}),Object.defineProperty(e,"ScrollView",{enumerable:!0,get:function(){return r(d[3]).ScrollView}}),Object.defineProperty(e,"State",{enumerable:!0,get:function(){return r(d[16]).State}}),Object.defineProperty(e,"Swipeable",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(e,"Switch",{enumerable:!0,get:function(){return r(d[3]).Switch}}),Object.defineProperty(e,"TapGestureHandler",{enumerable:!0,get:function(){return r(d[17]).TapGestureHandler}}),Object.defineProperty(e,"Text",{enumerable:!0,get:function(){return r(d[18]).Text}}),Object.defineProperty(e,"TextInput",{enumerable:!0,get:function(){return r(d[3]).TextInput}}),Object.defineProperty(e,"TouchableHighlight",{enumerable:!0,get:function(){return r(d[19]).TouchableHighlight}}),Object.defineProperty(e,"TouchableNativeFeedback",{enumerable:!0,get:function(){return r(d[19]).TouchableNativeFeedback}}),Object.defineProperty(e,"TouchableOpacity",{enumerable:!0,get:function(){return r(d[19]).TouchableOpacity}}),Object.defineProperty(e,"TouchableWithoutFeedback",{enumerable:!0,get:function(){return r(d[19]).TouchableWithoutFeedback}}),Object.defineProperty(e,"createNativeWrapper",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(e,"enableExperimentalWebImplementation",{enumerable:!0,get:function(){return r(d[20]).enableExperimentalWebImplementation}}),Object.defineProperty(e,"enableLegacyWebImplementation",{enumerable:!0,get:function(){return r(d[20]).enableLegacyWebImplementation}}),Object.defineProperty(e,"gestureHandlerRootHOC",{enumerable:!0,get:function(){return n.default}});var n=t(r(d[21])),u=t(r(d[22])),o=t(r(d[23])),c=t(r(d[24])),b=t(r(d[25])),l=t(r(d[26]));(0,r(d[27]).initialize)()}),696,[1,697,717,718,719,720,722,735,733,739,714,699,738,754,755,756,707,737,757,758,744,764,768,698,771,772,775,770]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.BorderlessButton=_e.BaseButton=void 0,Object.defineProperty(_e,"PureNativeButton",{enumerable:!0,get:function(){return c.default}}),_e.RectButton=_e.RawButton=void 0;var t=e(_r(d[1])),n=e(_r(d[2])),r=e(_r(d[3])),o=e(_r(d[4])),a=e(_r(d[5])),s=e(_r(d[6])),i=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=h(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var s=o?Object.getOwnPropertyDescriptor(e,a):null;s&&(s.get||s.set)?Object.defineProperty(r,a,s):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r})(_r(d[7])),u=_r(d[8]),l=e(_r(d[9])),c=e(_r(d[10])),p=["rippleColor","style"],f=["children","style"],v=["children","style","innerRef"];function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(h=function(e){return e?n:t})(e)}function y(e,t,n){return t=(0,a.default)(t),(0,o.default)(e,C()?Reflect.construct(t,n||[],(0,a.default)(e).constructor):t.apply(e,n))}function C(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(C=function(){return!!e})()}var S=_e.RawButton=(0,l.default)(c.default,{shouldCancelWhenOutside:!1,shouldActivateOnStart:!1}),P=null,R=(function(e){function o(e){var t;return(0,n.default)(this,o),(t=y(this,o,[e])).handleEvent=function(e){var n=e.nativeEvent,r=n.state,o=n.oldState,a=n.pointerInside,s=a&&r===_r(d[11]).State.ACTIVE;s!==t.lastActive&&t.props.onActiveStateChange&&t.props.onActiveStateChange(s),!t.longPressDetected&&o===_r(d[11]).State.ACTIVE&&r!==_r(d[11]).State.CANCELLED&&t.lastActive&&t.props.onPress&&t.props.onPress(a),!t.lastActive&&r===('android'!==u.Platform.OS?_r(d[11]).State.ACTIVE:_r(d[11]).State.BEGAN)&&a?(t.longPressDetected=!1,t.props.onLongPress&&(t.longPressTimeout=setTimeout(t.onLongPress,t.props.delayLongPress))):(r!==_r(d[11]).State.ACTIVE||a||void 0===t.longPressTimeout)&&(void 0===t.longPressTimeout||r!==_r(d[11]).State.END&&r!==_r(d[11]).State.CANCELLED&&r!==_r(d[11]).State.FAILED)||(clearTimeout(t.longPressTimeout),t.longPressTimeout=void 0),t.lastActive=s},t.onLongPress=function(){t.longPressDetected=!0,null==t.props.onLongPress||t.props.onLongPress()},t.onHandlerStateChange=function(e){null==t.props.onHandlerStateChange||t.props.onHandlerStateChange(e),t.handleEvent(e)},t.onGestureEvent=function(e){null==t.props.onGestureEvent||t.props.onGestureEvent(e),t.handleEvent(e)},t.lastActive=!1,t.longPressDetected=!1,t}return(0,s.default)(o,e),(0,r.default)(o,[{key:"render",value:function(){var e=this.props,n=e.rippleColor,r=e.style,o=(0,t.default)(e,p);null===P&&(P=(0,_r(d[12]).isFabric)());var a=P?n:(0,u.processColor)(null!=n?n:void 0);return(0,_r(d[13]).jsx)(S,Object.assign({ref:this.props.innerRef,rippleColor:a,style:[r,'ios'===u.Platform.OS&&{cursor:void 0}]},o,{onGestureEvent:this.onGestureEvent,onHandlerStateChange:this.onHandlerStateChange}))}}])})(i.Component);R.defaultProps={delayLongPress:600};var b=u.Animated.createAnimatedComponent(R),A=_e.BaseButton=i.forwardRef((function(e,t){return(0,_r(d[13]).jsx)(R,Object.assign({innerRef:t},e))})),O=i.forwardRef((function(e,t){return(0,_r(d[13]).jsx)(b,Object.assign({innerRef:t},e))})),j=u.StyleSheet.create({underlay:{position:'absolute',left:0,right:0,bottom:0,top:0}}),B=(function(e){function o(e){var t;return(0,n.default)(this,o),(t=y(this,o,[e])).onActiveStateChange=function(e){'android'!==u.Platform.OS&&t.opacity.setValue(e?t.props.activeOpacity:0),null==t.props.onActiveStateChange||t.props.onActiveStateChange(e)},t.opacity=new u.Animated.Value(0),t}return(0,s.default)(o,e),(0,r.default)(o,[{key:"render",value:function(){var e=this.props,n=e.children,r=e.style,o=(0,t.default)(e,f),a=u.StyleSheet.flatten(null!=r?r:{});return(0,_r(d[13]).jsxs)(A,Object.assign({},o,{ref:this.props.innerRef,style:a,onActiveStateChange:this.onActiveStateChange,children:[(0,_r(d[13]).jsx)(u.Animated.View,{style:[j.underlay,{opacity:this.opacity,backgroundColor:this.props.underlayColor,borderRadius:a.borderRadius,borderTopLeftRadius:a.borderTopLeftRadius,borderTopRightRadius:a.borderTopRightRadius,borderBottomLeftRadius:a.borderBottomLeftRadius,borderBottomRightRadius:a.borderBottomRightRadius}]}),n]}))}}])})(i.Component);B.defaultProps={activeOpacity:.105,underlayColor:'black'};_e.RectButton=i.forwardRef((function(e,t){return(0,_r(d[13]).jsx)(B,Object.assign({innerRef:t},e))}));var E=(function(e){function o(e){var t;return(0,n.default)(this,o),(t=y(this,o,[e])).onActiveStateChange=function(e){'android'!==u.Platform.OS&&t.opacity.setValue(e?t.props.activeOpacity:1),null==t.props.onActiveStateChange||t.props.onActiveStateChange(e)},t.opacity=new u.Animated.Value(1),t}return(0,s.default)(o,e),(0,r.default)(o,[{key:"render",value:function(){var e=this.props,n=e.children,r=e.style,o=e.innerRef,a=(0,t.default)(e,v);return(0,_r(d[13]).jsx)(O,Object.assign({},a,{innerRef:o,onActiveStateChange:this.onActiveStateChange,style:[r,'ios'===u.Platform.OS&&{opacity:this.opacity}],children:n}))}}])})(i.Component);E.defaultProps={activeOpacity:.3,borderless:!0};_e.BorderlessButton=i.forwardRef((function(e,t){return(0,_r(d[13]).jsx)(E,Object.assign({innerRef:t},e))}))}),697,[1,134,12,13,23,25,28,178,2,698,715,707,706,223]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=function(e){var r,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},l=t.forwardRef((function(r,t){var l=Object.keys(r).reduce((function(e,n){return u.includes(n)?e.gestureHandlerProps[n]=r[n]:e.childProps[n]=r[n],e}),{gestureHandlerProps:Object.assign({},a),childProps:{enabled:r.enabled,hitSlop:r.hitSlop,testID:r.testID}}),o=l.gestureHandlerProps,i=l.childProps,s=(0,n.useRef)(null),c=(0,n.useRef)(null);return(0,n.useImperativeHandle)(t,(function(){var e=c.current;return s.current&&e?(s.current.handlerTag=e.handlerTag,s.current):null}),[s,c]),(0,_r(d[4]).jsx)(_r(d[3]).NativeViewGestureHandler,Object.assign({},o,{ref:c,children:(0,_r(d[4]).jsx)(e,Object.assign({},i,{ref:s}))}))}));return l.displayName=(null==e?void 0:e.displayName)||(null==e||null==(r=e.render)?void 0:r.name)||'string'==typeof e&&e||'ComponentWrapper',l};var r=e(_r(d[1])),n=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=a(r);if(n&&n.has(e))return n.get(e);var t={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var o=u?Object.getOwnPropertyDescriptor(e,l):null;o&&(o.get||o.set)?Object.defineProperty(t,l,o):t[l]=e[l]}return t.default=e,n&&n.set(e,t),t})(_r(d[2])),t=n;function a(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(a=function(e){return e?n:r})(e)}var u=[].concat((0,r.default)(_r(d[3]).nativeViewProps),['onGestureHandlerEvent','onGestureHandlerStateChange'])}),698,[1,6,178,699,223]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.nativeViewProps=e.nativeViewHandlerName=e.nativeViewGestureHandlerProps=e.NativeViewGestureHandler=void 0;var n=t(r(d[1])),l=t(r(d[2])),o=e.nativeViewGestureHandlerProps=['shouldActivateOnStart','disallowInterruption'],s=e.nativeViewProps=[].concat((0,n.default)(r(d[3]).baseGestureHandlerProps),o),v=e.nativeViewHandlerName='NativeViewGestureHandler';e.NativeViewGestureHandler=(0,l.default)({name:v,allowedProps:s,config:{}})}),699,[1,6,700,714]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=function(e){var s=e.name,h=e.allowedProps,E=void 0===h?[]:h,H=e.config,y=void 0===H?{}:H,T=e.transformProps,w=e.customNativeProps,G=void 0===w?[]:w,S=(function(e){function f(e){var t,r,i,c;if((0,n.default)(this,f),r=this,i=f,c=[e],i=(0,o.default)(i),(t=(0,a.default)(r,v()?Reflect.construct(i,c||[],(0,o.default)(r).constructor):i.apply(r,c))).handlerTag=-1,t.onGestureHandlerEvent=function(e){e.nativeEvent.handlerTag===t.handlerTag?'function'==typeof t.props.onGestureEvent&&(null==t.props.onGestureEvent||t.props.onGestureEvent(e)):null==t.props.onGestureHandlerEvent||t.props.onGestureHandlerEvent(e)},t.onGestureHandlerStateChange=function(e){if(e.nativeEvent.handlerTag===t.handlerTag){'function'==typeof t.props.onHandlerStateChange&&(null==t.props.onHandlerStateChange||t.props.onHandlerStateChange(e));var n=e.nativeEvent.state,r=O[n],a=r&&t.props[r];a&&'function'==typeof a&&a(e)}else null==t.props.onGestureHandlerStateChange||t.props.onGestureHandlerStateChange(e)},t.refHandler=function(e){var n;t.viewNode=e;var r=l.Children.only(t.props.children),a=(0,_r(d[14]).isReact19)()?null==(n=r.props)?void 0:n.ref:null==r?void 0:r.ref;a&&('function'==typeof a?a(e):a.current=e)},t.createGestureHandler=function(e){t.handlerTag=(0,_r(d[16]).getNextHandlerTag)(),t.config=e,p.default.createGestureHandler(s,t.handlerTag,e)},t.attachGestureHandler=function(e){if(t.viewTag=e,'web'===u.Platform.OS)p.default.attachGestureHandler(t.handlerTag,e,_r(d[17]).ActionType.JS_FUNCTION_OLD_API,t.propsRef);else{(0,_r(d[18]).registerOldGestureHandler)(t.handlerTag,{onGestureEvent:t.onGestureHandlerEvent,onGestureStateChange:t.onGestureHandlerStateChange});var n=(o=null==(r=t.props)?void 0:r.onGestureEvent,i=o&&('current'in o||'workletEventHandler'in o),s=null==(a=t.props)?void 0:a.onHandlerStateChange,i||s&&('current'in s||'workletEventHandler'in s)?_r(d[17]).ActionType.REANIMATED_WORKLET:o&&'__isNative'in o?_r(d[17]).ActionType.NATIVE_ANIMATED_EVENT:_r(d[17]).ActionType.JS_FUNCTION_OLD_API);p.default.attachGestureHandler(t.handlerTag,e,n)}var r,a,o,i,s;(0,_r(d[19]).scheduleFlushOperations)(),(0,_r(d[20]).ghQueueMicrotask)((function(){_r(d[21]).MountRegistry.gestureHandlerWillMount(t)}))},t.updateGestureHandler=function(e){t.config=e,p.default.updateGestureHandler(t.handlerTag,e),(0,_r(d[19]).scheduleFlushOperations)()},t.config={},t.propsRef=l.createRef(),t.isMountedRef=l.createRef(),t.state={allowTouches:C},e.id){if(void 0!==_r(d[18]).handlerIDToTag[e.id])throw new Error(`Handler with ID "${e.id}" already registered`);_r(d[18]).handlerIDToTag[e.id]=t.handlerTag}return t}return(0,i.default)(f,e),(0,r.default)(f,[{key:"componentDidMount",value:function(){var e=this,n=this.props;if(this.isMountedRef.current=!0,N(n)&&(0,_r(d[20]).ghQueueMicrotask)((function(){e.update(D)})),this.createGestureHandler((0,_r(d[19]).filterConfig)(T?T(this.props):this.props,[].concat((0,t.default)(E),(0,t.default)(G)),y)),!this.viewNode)throw new Error(`[Gesture Handler] Failed to obtain view for ${f.displayName}. Note that old API doesn't support functional components.`);this.attachGestureHandler((0,c.default)(this.viewNode))}},{key:"componentDidUpdate",value:function(){var e=(0,c.default)(this.viewNode);this.viewTag!==e&&this.attachGestureHandler(e),this.update(D)}},{key:"componentWillUnmount",value:function(){var e;null==(e=this.inspectorToggleListener)||e.remove(),this.isMountedRef.current=!1,'web'!==u.Platform.OS&&(0,_r(d[18]).unregisterOldGestureHandler)(this.handlerTag),p.default.dropGestureHandler(this.handlerTag),(0,_r(d[19]).scheduleFlushOperations)();var t=this.props.id;t&&delete _r(d[18]).handlerIDToTag[t],_r(d[21]).MountRegistry.gestureHandlerWillUnmount(this)}},{key:"update",value:function(e){var n=this;if(this.isMountedRef.current)if(N(this.props)&&e>0)(0,_r(d[20]).ghQueueMicrotask)((function(){n.update(e-1)}));else{var r=(0,_r(d[19]).filterConfig)(T?T(this.props):this.props,[].concat((0,t.default)(E),(0,t.default)(G)),y);(0,_r(d[14]).deepEqual)(this.config,r)||this.updateGestureHandler(r)}}},{key:"setNativeProps",value:function(e){var n=Object.assign({},this.props,e),r=(0,_r(d[19]).filterConfig)(T?T(n):n,[].concat((0,t.default)(E),(0,t.default)(G)),y);this.updateGestureHandler(r)}},{key:"render",value:function(){var e,t=this.onGestureHandlerEvent,n=this.props,r=n.onGestureEvent,a=n.onGestureHandlerEvent;if(r&&'function'!=typeof r){if(a)throw new Error('Nesting touch handlers with native animated driver is not supported yet');t=r}else if(a&&'function'!=typeof a)throw new Error('Nesting touch handlers with native animated driver is not supported yet');var o=this.onGestureHandlerStateChange,i=this.props,u=i.onHandlerStateChange,p=i.onGestureHandlerStateChange;if(u&&'function'!=typeof u){if(p)throw new Error('Nesting touch handlers with native animated driver is not supported yet');o=u}else if(p&&'function'!=typeof p)throw new Error('Nesting touch handlers with native animated driver is not supported yet');var c={onGestureHandlerEvent:this.state.allowTouches?t:void 0,onGestureHandlerStateChange:this.state.allowTouches?o:void 0};this.propsRef.current=c;var f=null;try{f=l.Children.only(this.props.children)}catch(e){throw new Error((0,_r(d[14]).tagMessage)(`${s} got more than one view as a child. If you want the gesture to work on multiple views, wrap them with a common parent and attach the gesture to that view.`))}var h=f.props.children;return l.cloneElement(f,Object.assign({ref:this.refHandler,collapsable:!1},(0,_r(d[14]).isTestEnv)()?{handlerType:s,handlerTag:this.handlerTag,enabled:this.props.enabled}:{},{testID:null!=(e=this.props.testID)?e:f.props.testID},c),h)}}])})(l.Component);return S.displayName=s,S.contextType=f.default,S};var t=e(_r(d[1])),n=e(_r(d[2])),r=e(_r(d[3])),a=e(_r(d[4])),o=e(_r(d[5])),i=e(_r(d[6])),s=e(_r(d[7])),l=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=h(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(r,o,i):r[o]=e[o]}return r.default=e,n&&n.set(e,r),r})(_r(d[8])),u=_r(d[9]),p=e(_r(d[10])),c=e(_r(d[11])),f=e(_r(d[12]));function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(h=function(e){return e?n:t})(e)}function v(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(v=function(){return!!e})()}var E=u.UIManager;_r(d[13]).customDirectEventTypes.topGestureHandlerEvent={registrationName:'onGestureHandlerEvent'};var H=Object.assign({onGestureHandlerEvent:{registrationName:'onGestureHandlerEvent'},onGestureHandlerStateChange:{registrationName:'onGestureHandlerStateChange'}},(0,_r(d[14]).isFabric)()&&'android'===u.Platform.OS&&{topOnGestureHandlerEvent:{registrationName:'onGestureHandlerEvent'},topOnGestureHandlerStateChange:{registrationName:'onGestureHandlerStateChange'}});E.genericDirectEventTypes=Object.assign({},E.genericDirectEventTypes,H);var y=null==E.getViewManagerConfig?void 0:E.getViewManagerConfig('getConstants');y&&(y.genericDirectEventTypes=Object.assign({},y.genericDirectEventTypes,H));var T=E.setJSResponder,w=void 0===T?function(){}:T,G=E.clearJSResponder,S=void 0===G?function(){}:G;E.setJSResponder=function(e,t){p.default.handleSetJSResponder(e,t),w(e,t)},E.clearJSResponder=function(){p.default.handleClearJSResponder(),S()};var C=!0;function N(e){var t=function(e){return Array.isArray(e)?e.some((function(e){return e&&null===e.current})):e&&null===e.current};return t(e.simultaneousHandlers)||t(e.waitFor)}var O=(0,s.default)((0,s.default)((0,s.default)((0,s.default)((0,s.default)((0,s.default)({},_r(d[15]).State.UNDETERMINED,void 0),_r(d[15]).State.BEGAN,'onBegan'),_r(d[15]).State.FAILED,'onFailed'),_r(d[15]).State.CANCELLED,'onCancelled'),_r(d[15]).State.ACTIVE,'onActivated'),_r(d[15]).State.END,'onEnded'),D=1}),700,[1,6,12,13,23,25,28,198,178,2,701,703,704,705,706,707,708,709,710,711,712,713]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=t(r(d[1]));e.default=u.default}),701,[1,702]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=r(d[0]);e.default=u.TurboModuleRegistry.getEnforcing('RNGestureHandlerModule')}),702,[2]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var f=r(d[0]);e.default=f.findNodeHandle}),703,[2]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=t(r(d[1]));e.default=u.default.createContext(!1)}),704,[1,178]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"customDirectEventTypes",{enumerable:!0,get:function(){return r(d[0]).customDirectEventTypes}})}),705,[216]); +__d((function(g,r,_i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.INT32_MAX=void 0,e.deepEqual=function n(t,u){if(t===u)return!0;if('object'!=typeof t||'object'!=typeof u||null===t||null===u)return!1;var i=Object.keys(t),o=Object.keys(u);if(i.length!==o.length)return!1;for(var c of i)if(!o.includes(c)||!n(t[c],u[c]))return!1;return!0},e.hasProperty=i,e.isFabric=function(){var n;return!(null==(n=g)||!n.nativeFabricUIManager)},e.isReact19=function(){return u.default.version.startsWith('19.')},e.isRemoteDebuggingEnabled=function(){var n=g;return!(n.nativeCallSyncHook&&!n.__REMOTEDEV__||n.RN$Bridgeless)},e.isTestEnv=function(){return i(g,'process')&&!1},e.tagMessage=function(n){return`[react-native-gesture-handler] ${n}`},e.toArray=function(n){if(!Array.isArray(n))return[n];return n},e.withPrevAndCurrent=function(n,u){var i=[null],o=(0,t.default)(n),c=[];return o.forEach((function(n,t){var o=i[t],f=u(o,n);i.push(f),c.push(f)})),c};var t=n(r(d[1])),u=n(r(d[2]));function i(n,t){return Object.prototype.hasOwnProperty.call(n,t)}e.INT32_MAX=2147483647}),706,[1,6,178]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.State=void 0;e.State={UNDETERMINED:0,FAILED:1,BEGAN:2,CANCELLED:3,ACTIVE:4,END:5}}),707,[]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.getNextHandlerTag=function(){return n++};var n=1}),708,[]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.ActionType=void 0;e.ActionType={REANIMATED_WORKLET:1,NATIVE_ANIMATED_EVENT:2,JS_FUNCTION_OLD_API:3,JS_FUNCTION_NEW_API:4}}),709,[]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.findHandler=u,e.findHandlerByTestID=function(n){var t,s=l.get(n);return void 0!==s&&null!=(t=u(s))?t:null},e.findOldGestureHandler=function(n){return t.get(n)},e.handlerIDToTag=void 0,e.registerHandler=function(t,u,s){n.set(t,u),(0,r(d[0]).isTestEnv)()&&s&&l.set(s,t)},e.registerOldGestureHandler=function(n,l){t.set(n,l)},e.unregisterHandler=function(t,u){n.delete(t),(0,r(d[0]).isTestEnv)()&&u&&l.delete(u)},e.unregisterOldGestureHandler=function(n){t.delete(n)};e.handlerIDToTag={};var n=new Map,t=new Map,l=new Map;function u(t){return n.get(t)}}),710,[706]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.filterConfig=function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},f=Object.assign({},o);for(var l of t){var c=n[l];v=l,void 0===(s=c)||s===Object(s)&&'__isNative'in s||'onHandlerStateChange'===v||'onGestureEvent'===v||('simultaneousHandlers'===l||'waitFor'===l?c=u(n[l]):'hitSlop'===l&&'object'!=typeof c&&(c={top:c,left:c,bottom:c,right:c}),f[l]=c)}var s,v;return f},e.findNodeHandle=function(n){if('web'===t.Platform.OS)return n;return(0,t.findNodeHandle)(n)},e.scheduleFlushOperations=function(){f||(f=!0,(0,r(d[5]).ghQueueMicrotask)((function(){o.default.flushOperations(),f=!1})))},e.transformIntoHandlerTags=u;var t=r(d[1]),o=n(r(d[2]));function u(n){return n=(0,r(d[3]).toArray)(n),'web'===t.Platform.OS?n.map((function(n){return n.current})).filter((function(n){return n})):n.map((function(n){var t;return r(d[4]).handlerIDToTag[n]||(null==(t=n.current)?void 0:t.handlerTag)||-1})).filter((function(n){return n>0}))}var f=!1}),711,[1,2,701,706,710,712]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.ghQueueMicrotask=void 0;e.ghQueueMicrotask='function'==typeof setImmediate?setImmediate.bind(null):'function'==typeof requestAnimationFrame?requestAnimationFrame.bind(null):queueMicrotask.bind(null)}),712,[]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.MountRegistry=void 0;var t=n(r(d[1])),u=n(r(d[2])),o=e.MountRegistry=(function(){return(0,u.default)((function n(){(0,t.default)(this,n)}),null,[{key:"addMountListener",value:function(n){var t=this;return this.mountListeners.add(n),function(){t.mountListeners.delete(n)}}},{key:"addUnmountListener",value:function(n){var t=this;return this.unmountListeners.add(n),function(){t.unmountListeners.delete(n)}}},{key:"gestureHandlerWillMount",value:function(n){this.mountListeners.forEach((function(t){return t(n)}))}},{key:"gestureHandlerWillUnmount",value:function(n){this.unmountListeners.forEach((function(t){return t(n)}))}},{key:"gestureWillMount",value:function(n){this.mountListeners.forEach((function(t){return t(n)}))}},{key:"gestureWillUnmount",value:function(n){this.unmountListeners.forEach((function(t){return t(n)}))}}])})();o.mountListeners=new Set,o.unmountListeners=new Set}),713,[1,12,13]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.baseGestureHandlerWithDetectorProps=e.baseGestureHandlerProps=e.MouseButton=void 0;var n=['id','enabled','shouldCancelWhenOutside','hitSlop','cancelsTouchesInView','userSelect','activeCursor','mouseButton','enableContextMenu','touchAction'];e.baseGestureHandlerProps=[].concat(n,['waitFor','simultaneousHandlers','blocksHandlers'],['onBegan','onFailed','onCancelled','onActivated','onEnded','onGestureEvent','onHandlerStateChange']),e.baseGestureHandlerWithDetectorProps=[].concat(n,['needsPointerData','manualActivation']),e.MouseButton=(function(n){return n[n.LEFT=1]="LEFT",n[n.RIGHT=2]="RIGHT",n[n.MIDDLE=4]="MIDDLE",n[n.BUTTON_4=8]="BUTTON_4",n[n.BUTTON_5=16]="BUTTON_5",n[n.ALL=31]="ALL",n})({})}),714,[]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=t(r(d[1]));e.default=u.default}),715,[1,716]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;t(r(d[1]));var o=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RNGestureHandlerButton',validAttributes:{exclusive:!0,foreground:!0,borderless:!0,enabled:!0,rippleColor:{process:r(d[2]).default},rippleRadius:!0,touchSoundDisabled:!0,borderWidth:!0,borderColor:{process:r(d[2]).default},borderStyle:!0}};e.default=r(d[3]).get('RNGestureHandlerButton',(function(){return o}))}),716,[1,463,188,185]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.Directions=e.DiagonalDirections=void 0;e.Directions={RIGHT:1,LEFT:2,UP:4,DOWN:8},e.DiagonalDirections={UP_RIGHT:5,DOWN_RIGHT:9,UP_LEFT:6,DOWN_LEFT:10}}),717,[]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.TextInput=_e.Switch=_e.ScrollView=_e.RefreshControl=_e.FlatList=_e.DrawerLayoutAndroid=void 0;var r=e(_r(d[1])),t=e(_r(d[2])),n=e(_r(d[3])),o=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=f(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var a=o?Object.getOwnPropertyDescriptor(e,l):null;a&&(a.get||a.set)?Object.defineProperty(n,l,a):n[l]=e[l]}return n.default=e,t&&t.set(e,n),n})(_r(d[4])),l=_r(d[5]),a=e(_r(d[6])),u=["refreshControl","waitFor"],i=["waitFor","refreshControl"];function f(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(f=function(e){return e?t:r})(e)}_e.RefreshControl=(0,a.default)(l.RefreshControl,{disallowInterruption:!0,shouldCancelWhenOutside:!1});var s=(0,a.default)(l.ScrollView,{disallowInterruption:!0,shouldCancelWhenOutside:!1}),c=_e.ScrollView=o.forwardRef((function(e,r){var l=o.useRef(null),a=e.refreshControl,i=e.waitFor,f=(0,n.default)(e,u);return(0,_r(d[7]).jsx)(s,Object.assign({},f,{ref:r,waitFor:[].concat((0,t.default)((0,_r(d[8]).toArray)(null!=i?i:[])),[l]),refreshControl:a?o.cloneElement(a,{ref:l}):void 0}))}));_e.Switch=(0,a.default)(l.Switch,{shouldCancelWhenOutside:!1,shouldActivateOnStart:!0,disallowInterruption:!0}),_e.TextInput=(0,a.default)(l.TextInput),_e.DrawerLayoutAndroid=(0,a.default)(l.DrawerLayoutAndroid,{disallowInterruption:!0}),_e.FlatList=o.forwardRef((function(e,a){var u=o.useRef(null),f=e.waitFor,s=e.refreshControl,w=(0,n.default)(e,i),p={},h={};for(var v of Object.entries(w)){var O=(0,r.default)(v,2),j=O[0],y=O[1];_r(d[9]).nativeViewProps.includes(j)?h[j]=y:p[j]=y}return(0,_r(d[7]).jsx)(l.FlatList,Object.assign({ref:a},p,{renderScrollComponent:function(e){return(0,_r(d[7]).jsx)(c,Object.assign({},Object.assign({},e,h,{waitFor:[].concat((0,t.default)((0,_r(d[8]).toArray)(null!=f?f:[])),[u])})))},refreshControl:s?o.cloneElement(s,{ref:u}):void 0}))}))}),718,[1,38,6,134,178,2,698,223,706,699]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.flingHandlerName=e.flingGestureHandlerProps=e.FlingGestureHandler=void 0;var l=n(r(d[1])),t=n(r(d[2])),o=e.flingGestureHandlerProps=['numberOfPointers','direction'],s=e.flingHandlerName='FlingGestureHandler';e.FlingGestureHandler=(0,t.default)({name:s,allowedProps:[].concat((0,l.default)(r(d[3]).baseGestureHandlerProps),o),config:{}})}),719,[1,6,700,714]); +__d((function(g,r,i,a,m,_e,d){var e=r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.forceTouchHandlerName=_e.forceTouchGestureHandlerProps=_e.ForceTouchGestureHandler=void 0;var o=e(r(d[1])),t=e(r(d[2])),c=e(r(d[3])),u=e(r(d[4])),l=e(r(d[5])),n=e(r(d[6])),f=e(r(d[7])),s=e(r(d[8])),h=e(r(d[9]));function v(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(v=function(){return!!e})()}var p=_e.forceTouchGestureHandlerProps=['minForce','maxForce','feedbackOnActivation'],T=(function(e){function o(){return(0,t.default)(this,o),e=this,c=o,n=arguments,c=(0,l.default)(c),(0,u.default)(e,v()?Reflect.construct(c,n||[],(0,l.default)(e).constructor):c.apply(e,n));var e,c,n}return(0,n.default)(o,e),(0,c.default)(o,[{key:"componentDidMount",value:function(){console.warn((0,r(d[10]).tagMessage)('ForceTouchGestureHandler is not available on this platform. Please use ForceTouchGestureHandler.forceTouchAvailable to conditionally render other components that would provide a fallback behavior specific to your usecase'))}},{key:"render",value:function(){return this.props.children}}])})(f.default.Component);T.forceTouchAvailable=!1;var b=_e.forceTouchHandlerName='ForceTouchGestureHandler';(_e.ForceTouchGestureHandler=null!=s.default&&s.default.forceTouchAvailable?(0,h.default)({name:b,allowedProps:[].concat((0,o.default)(r(d[11]).baseGestureHandlerProps),p),config:{}}):T).forceTouchAvailable=(null==s.default?void 0:s.default.forceTouchAvailable)||!1}),720,[1,6,12,13,23,25,28,178,721,700,706,714]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t,l=r(d[0]);e.default=null!=(t=null==l.NativeModules?void 0:l.NativeModules.PlatformConstants)?t:l.Platform.constants}),721,[2]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.GestureObjects=void 0;var t=n(r(d[1]));e.GestureObjects={Tap:function(){return new(r(d[2]).TapGesture)},Pan:function(){return new(r(d[3]).PanGesture)},Pinch:function(){return new(r(d[4]).PinchGesture)},Rotation:function(){return new(r(d[5]).RotationGesture)},Fling:function(){return new(r(d[6]).FlingGesture)},LongPress:function(){return new(r(d[7]).LongPressGesture)},ForceTouch:function(){return new(r(d[8]).ForceTouchGesture)},Native:function(){return new(r(d[9]).NativeGesture)},Manual:function(){return new(r(d[10]).ManualGesture)},Hover:function(){return new(r(d[11]).HoverGesture)},Race:function(){for(var n=arguments.length,u=new Array(n),o=0;o0})))?n:[]}}),736,[1,38,6,2,178,714,737,738,739,720,719,733,699,724,706,740,741,744]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.tapHandlerName=e.tapGestureHandlerProps=e.TapGestureHandler=void 0;var n=t(r(d[1])),l=t(r(d[2])),s=e.tapGestureHandlerProps=['maxDurationMs','maxDelayMs','numberOfTaps','maxDeltaX','maxDeltaY','maxDist','minPointers'],u=e.tapHandlerName='TapGestureHandler';e.TapGestureHandler=(0,l.default)({name:u,allowedProps:[].concat((0,n.default)(r(d[3]).baseGestureHandlerProps),s),config:{shouldCancelWhenOutside:!0}})}),737,[1,6,700,714]); +__d((function(g,r,i,a,m,e,d){var f=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.PanGestureHandler=void 0,e.managePanProps=v,e.panHandlerName=e.panGestureHandlerProps=e.panGestureHandlerCustomNativeProps=void 0;var t=f(r(d[1])),s=f(r(d[2])),O=e.panGestureHandlerProps=['activeOffsetY','activeOffsetX','failOffsetY','failOffsetX','minDist','minVelocity','minVelocityX','minVelocityY','minPointers','maxPointers','avgTouches','enableTrackpadTwoFingerGesture','activateAfterLongPress'],n=e.panGestureHandlerCustomNativeProps=['activeOffsetYStart','activeOffsetYEnd','activeOffsetXStart','activeOffsetXEnd','failOffsetYStart','failOffsetYEnd','failOffsetXStart','failOffsetXEnd'],l=e.panHandlerName='PanGestureHandler';e.PanGestureHandler=(0,s.default)({name:l,allowedProps:[].concat((0,t.default)(r(d[3]).baseGestureHandlerProps),O),config:{},transformProps:v,customNativeProps:n});function c(f){var t=Object.assign({},f);return void 0!==f.activeOffsetX&&(delete t.activeOffsetX,Array.isArray(f.activeOffsetX)?(t.activeOffsetXStart=f.activeOffsetX[0],t.activeOffsetXEnd=f.activeOffsetX[1]):f.activeOffsetX<0?t.activeOffsetXStart=f.activeOffsetX:t.activeOffsetXEnd=f.activeOffsetX),void 0!==f.activeOffsetY&&(delete t.activeOffsetY,Array.isArray(f.activeOffsetY)?(t.activeOffsetYStart=f.activeOffsetY[0],t.activeOffsetYEnd=f.activeOffsetY[1]):f.activeOffsetY<0?t.activeOffsetYStart=f.activeOffsetY:t.activeOffsetYEnd=f.activeOffsetY),void 0!==f.failOffsetX&&(delete t.failOffsetX,Array.isArray(f.failOffsetX)?(t.failOffsetXStart=f.failOffsetX[0],t.failOffsetXEnd=f.failOffsetX[1]):f.failOffsetX<0?t.failOffsetXStart=f.failOffsetX:t.failOffsetXEnd=f.failOffsetX),void 0!==f.failOffsetY&&(delete t.failOffsetY,Array.isArray(f.failOffsetY)?(t.failOffsetYStart=f.failOffsetY[0],t.failOffsetYEnd=f.failOffsetY[1]):f.failOffsetY<0?t.failOffsetYStart=f.failOffsetY:t.failOffsetYEnd=f.failOffsetY),t}function v(f){return c(f)}}),738,[1,6,700,714]); +__d((function(g,r,i,a,m,e,d){var s=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.longPressHandlerName=e.longPressGestureHandlerProps=e.LongPressGestureHandler=void 0;var n=s(r(d[1])),o=s(r(d[2])),l=e.longPressGestureHandlerProps=['minDurationMs','maxDist','numberOfPointers'],t=e.longPressHandlerName='LongPressGestureHandler';e.LongPressGestureHandler=(0,o.default)({name:t,allowedProps:[].concat((0,n.default)(r(d[3]).baseGestureHandlerProps),l),config:{shouldCancelWhenOutside:!0}})}),739,[1,6,700,714]); +__d((function(g,r,i,a,m,_e,d){var e,t;Object.defineProperty(_e,"__esModule",{value:!0}),_e.Reanimated=void 0;try{_e.Reanimated=t=r(d[0])}catch(e){_e.Reanimated=t=void 0}null!=(e=t)&&e.useSharedValue||(_e.Reanimated=t=void 0);var s,n={code:"function reactNativeGestureHandler_reanimatedWrapperTs1(){const{tagMessage}=this.__closure;console.warn(tagMessage('Please use newer version of react-native-reanimated in order to control state of the gestures.'));}"};void 0===t||t.setGestureState||(t.setGestureState=((s=function(){console.warn((0,r(d[1]).tagMessage)('Please use newer version of react-native-reanimated in order to control state of the gestures.'))}).__closure={tagMessage:r(d[1]).tagMessage},s.__workletHash=6487932999118,s.__initData=n,s))}),740,[244,706]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.onGestureHandlerEvent=E,e.startListening=function(){T(),l=n.DeviceEventEmitter.addListener('onGestureHandlerEvent',E),t=n.DeviceEventEmitter.addListener('onGestureHandlerStateChange',E)},e.stopListening=T;var n=r(d[0]),l=null,t=null,o=new Map,s=[];function h(n){return null!=n.oldState}function u(n){return null!=n.eventType}function E(n){var l,t,E,T,c=(0,r(d[1]).findHandler)(n.handlerTag);if(c)if(h(n))n.oldState===r(d[2]).State.UNDETERMINED&&n.state===r(d[2]).State.BEGAN?null==c.handlers.onBegin||c.handlers.onBegin(n):n.oldState!==r(d[2]).State.BEGAN&&n.oldState!==r(d[2]).State.UNDETERMINED||n.state!==r(d[2]).State.ACTIVE?n.oldState!==n.state&&n.state===r(d[2]).State.END?(n.oldState===r(d[2]).State.ACTIVE&&(null==c.handlers.onEnd||c.handlers.onEnd(n,!0)),null==c.handlers.onFinalize||c.handlers.onFinalize(n,!0),s[c.handlers.handlerTag]=void 0):n.state!==r(d[2]).State.FAILED&&n.state!==r(d[2]).State.CANCELLED||n.oldState===n.state||(n.oldState===r(d[2]).State.ACTIVE&&(null==c.handlers.onEnd||c.handlers.onEnd(n,!1)),null==c.handlers.onFinalize||c.handlers.onFinalize(n,!1),o.delete(n.handlerTag),s[c.handlers.handlerTag]=void 0):(null==c.handlers.onStart||c.handlers.onStart(n),s[c.handlers.handlerTag]=n);else if(u(n)){o.has(n.handlerTag)||o.set(n.handlerTag,r(d[3]).GestureStateManager.create(n.handlerTag));var v=o.get(n.handlerTag);switch(n.eventType){case r(d[4]).TouchEventType.TOUCHES_DOWN:null==(l=c.handlers)||null==l.onTouchesDown||l.onTouchesDown(n,v);break;case r(d[4]).TouchEventType.TOUCHES_MOVE:null==(t=c.handlers)||null==t.onTouchesMove||t.onTouchesMove(n,v);break;case r(d[4]).TouchEventType.TOUCHES_UP:null==(E=c.handlers)||null==E.onTouchesUp||E.onTouchesUp(n,v);break;case r(d[4]).TouchEventType.TOUCHES_CANCELLED:null==(T=c.handlers)||null==T.onTouchesCancelled||T.onTouchesCancelled(n,v)}}else null==c.handlers.onUpdate||c.handlers.onUpdate(n),c.handlers.onChange&&c.handlers.changeEventCalculator&&(null==c.handlers.onChange||c.handlers.onChange(null==c.handlers.changeEventCalculator?void 0:c.handlers.changeEventCalculator(n,s[c.handlers.handlerTag])),s[c.handlers.handlerTag]=n);else{var S=(0,r(d[1]).findOldGestureHandler)(n.handlerTag);if(S){var C={nativeEvent:n};return void(h(n)?S.onGestureStateChange(C):S.onGestureEvent(C))}}}function T(){l&&(l.remove(),l=null),t&&(t.remove(),t=null)}}),741,[2,710,707,742,743]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.GestureStateManager=void 0;var t=(0,r(d[0]).tagMessage)('react-native-reanimated is required in order to use synchronous state management'),n=void 0!==(null==r(d[1]).Reanimated?void 0:r(d[1]).Reanimated.useSharedValue),s=null==r(d[1]).Reanimated?void 0:r(d[1]).Reanimated.setGestureState,A={code:"function create_reactNativeGestureHandler_gestureStateManagerTs1(handlerTag){const{REANIMATED_AVAILABLE,setGestureState,State,warningMessage}=this.__closure;return{begin:function(){'worklet';if(REANIMATED_AVAILABLE){setGestureState(handlerTag,State.BEGAN);}else{console.warn(warningMessage);}},activate:function(){'worklet';if(REANIMATED_AVAILABLE){setGestureState(handlerTag,State.ACTIVE);}else{console.warn(warningMessage);}},fail:function(){'worklet';if(REANIMATED_AVAILABLE){setGestureState(handlerTag,State.FAILED);}else{console.warn(warningMessage);}},end:function(){'worklet';if(REANIMATED_AVAILABLE){setGestureState(handlerTag,State.END);}else{console.warn(warningMessage);}}};}"},o={code:"function reactNativeGestureHandler_gestureStateManagerTs2(){const{REANIMATED_AVAILABLE,setGestureState,handlerTag,State,warningMessage}=this.__closure;if(REANIMATED_AVAILABLE){setGestureState(handlerTag,State.BEGAN);}else{console.warn(warningMessage);}}"},l={code:"function reactNativeGestureHandler_gestureStateManagerTs3(){const{REANIMATED_AVAILABLE,setGestureState,handlerTag,State,warningMessage}=this.__closure;if(REANIMATED_AVAILABLE){setGestureState(handlerTag,State.ACTIVE);}else{console.warn(warningMessage);}}"},u={code:"function reactNativeGestureHandler_gestureStateManagerTs4(){const{REANIMATED_AVAILABLE,setGestureState,handlerTag,State,warningMessage}=this.__closure;if(REANIMATED_AVAILABLE){setGestureState(handlerTag,State.FAILED);}else{console.warn(warningMessage);}}"},_={code:"function reactNativeGestureHandler_gestureStateManagerTs5(){const{REANIMATED_AVAILABLE,setGestureState,handlerTag,State,warningMessage}=this.__closure;if(REANIMATED_AVAILABLE){setGestureState(handlerTag,State.END);}else{console.warn(warningMessage);}}"},E=(function(){var E=function(A){return{begin:(M=function(){n?s(A,r(d[2]).State.BEGAN):console.warn(t)},M.__closure={REANIMATED_AVAILABLE:n,setGestureState:s,handlerTag:A,State:r(d[2]).State,warningMessage:t},M.__workletHash=0x968d9ddc767,M.__initData=o,M),activate:(S=function(){n?s(A,r(d[2]).State.ACTIVE):console.warn(t)},S.__closure={REANIMATED_AVAILABLE:n,setGestureState:s,handlerTag:A,State:r(d[2]).State,warningMessage:t},S.__workletHash=292529391077,S.__initData=l,S),fail:(c=function(){n?s(A,r(d[2]).State.FAILED):console.warn(t)},c.__closure={REANIMATED_AVAILABLE:n,setGestureState:s,handlerTag:A,State:r(d[2]).State,warningMessage:t},c.__workletHash=0xe2bc5716e8d,c.__initData=u,c),end:(E=function(){n?s(A,r(d[2]).State.END):console.warn(t)},E.__closure={REANIMATED_AVAILABLE:n,setGestureState:s,handlerTag:A,State:r(d[2]).State,warningMessage:t},E.__workletHash=0xfb2caf540a0,E.__initData=_,E)};var E,c,S,M};return E.__closure={REANIMATED_AVAILABLE:n,setGestureState:s,State:r(d[2]).State,warningMessage:t},E.__workletHash=0xb1078bd325b,E.__initData=A,E})();e.GestureStateManager={create:E}}),742,[706,740,707]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.TouchEventType=void 0;e.TouchEventType={UNDETERMINED:0,TOUCHES_DOWN:1,TOUCHES_MOVE:2,TOUCHES_UP:3,TOUCHES_CANCELLED:4}}),743,[]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.enableExperimentalWebImplementation=function(){console.warn((0,r(d[1]).tagMessage)('New web implementation is enabled by default. This function will be removed in Gesture Handler 3.'))},e.enableLegacyWebImplementation=function(){var o=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(console.warn((0,r(d[1]).tagMessage)('Legacy web implementation is deprecated. This function will be removed in Gesture Handler 3.')),'web'!==n.Platform.OS||t===!o)return;if(l)return void console.error('Some parts of this application have already started using the new gesture handler implementation. No changes will be applied. You can try enabling legacy implementation earlier.');t=!o},e.isNewWebImplementationEnabled=function(){return l=!0,t};var n=r(d[0]),t=!0,l=!1}),744,[2,706]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.useDetectorUpdater=function(t,o,s,v,c){var l=(0,r(d[3]).useForceRender)();return(0,n.useCallback)((function(n){var f=(0,u.default)(t.viewRef),p=f!==t.previousViewTag;p||(0,r(d[4]).needsToReattach)(o,s)?((0,r(d[3]).validateDetectorChildren)(t.viewRef),(0,r(d[5]).dropHandlers)(o),(0,r(d[6]).attachHandlers)({preparedGesture:o,gestureConfig:v,gesturesToAttach:s,webEventHandlersRef:c,viewTag:f}),p&&(t.previousViewTag=f,t.forceRebuildReanimatedEvent=!0,l())):n||(0,r(d[7]).updateHandlers)(o,v,s)}),[l,v,s,o,t,c])};var n=r(d[1]),u=t(r(d[2]))}),745,[1,178,703,736,746,747,748,749]); +__d((function(g,r,_i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.needsToReattach=function(t,n){if(n.length!==t.attachedGestures.length)return!0;for(var s=0;s3?C-3:0),T=3;T=23}}),759,[1,134,12,13,23,25,28,2,178,760,223]); +__d((function(g,_r,_i,_a,m,_e,d){var t=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=_e.TOUCHABLE_STATE=void 0;var e=t(_r(d[1])),s=t(_r(d[2])),o=t(_r(d[3])),i=t(_r(d[4])),n=t(_r(d[5])),r=(function(t,e){if(!e&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var s=a(e);if(s&&s.has(t))return s.get(t);var o={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in t)if("default"!==n&&{}.hasOwnProperty.call(t,n)){var r=i?Object.getOwnPropertyDescriptor(t,n):null;r&&(r.get||r.set)?Object.defineProperty(o,n,r):o[n]=t[n]}return o.default=t,s&&s.set(t,o),o})(_r(d[6])),l=_r(d[7]);function a(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,s=new WeakMap;return(a=function(t){return t?s:e})(t)}function u(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(u=function(){return!!t})()}var p=_e.TOUCHABLE_STATE={UNDETERMINED:0,BEGAN:1,MOVED_OUTSIDE:2},c=_e.default=(function(t){function r(){var t,s,n,a;(0,e.default)(this,r);for(var c=arguments.length,h=new Array(c),T=0;T0:w,O=t.overshootRight,b=void 0===O?v>0:O,A=s.Animated.add(r,a.interpolate({inputRange:[0,o],outputRange:[0,1]})).interpolate({inputRange:[-v-1,-v,p,p+1],outputRange:[-v-(b?1/i:0),-v,p,p+(S?1/i:0)]});n.transX=A,n.showLeftAction=p>0?A.interpolate({inputRange:[-1,0,p],outputRange:[0,0,1]}):new s.Animated.Value(0),n.leftActionTranslate=n.showLeftAction.interpolate({inputRange:[0,Number.MIN_VALUE],outputRange:[-1e4,0],extrapolate:'clamp'}),n.showRightAction=v>0?A.interpolate({inputRange:[-v,0,1],outputRange:[1,0,0]}):new s.Animated.Value(0),n.rightActionTranslate=n.showRightAction.interpolate({inputRange:[0,Number.MIN_VALUE],outputRange:[-1e4,0],extrapolate:'clamp'})},n.onTapHandlerStateChange=function(t){t.nativeEvent.oldState===_r(d[8]).State.ACTIVE&&n.close()},n.onHandlerStateChange=function(t){if(t.nativeEvent.oldState===_r(d[8]).State.ACTIVE&&n.handleRelease(t),t.nativeEvent.state===_r(d[8]).State.ACTIVE){var e=t.nativeEvent,o=e.velocityX,i=e.translationX,a=n.state.rowState,r=n.props.friction,s=-1===a?'right':1===a||(i+.05*o)/r>0?'left':'right';0===a?null==n.props.onSwipeableOpenStartDrag||n.props.onSwipeableOpenStartDrag(s):null==n.props.onSwipeableCloseStartDrag||n.props.onSwipeableCloseStartDrag(s)}},n.handleRelease=function(t){var e=t.nativeEvent,o=e.velocityX,i=e.translationX,a=n.state,r=a.leftWidth,s=void 0===r?0:r,l=a.rowWidth,p=void 0===l?0:l,u=a.rowState,f=n.state.rightOffset,h=p-(void 0===f?p:f),c=n.props,v=c.friction,w=c.leftThreshold,S=void 0===w?s/2:w,O=c.rightThreshold,b=void 0===O?h/2:O,A=n.currentOffset()+i/v,R=(i+.05*o)/v,y=0;0===u?R>S?y=s:R<-b&&(y=-h):1===u?R>-S&&(y=s):R0)null==n.props.onSwipeableLeftOpen||n.props.onSwipeableLeftOpen(),null==n.props.onSwipeableOpen||n.props.onSwipeableOpen('left',n);else if(e<0)null==n.props.onSwipeableRightOpen||n.props.onSwipeableRightOpen(),null==n.props.onSwipeableOpen||n.props.onSwipeableOpen('right',n);else{var i=t>0?'left':'right';null==n.props.onSwipeableClose||n.props.onSwipeableClose(i,n)}})),e>0)null==n.props.onSwipeableLeftWillOpen||n.props.onSwipeableLeftWillOpen(),null==n.props.onSwipeableWillOpen||n.props.onSwipeableWillOpen('left');else if(e<0)null==n.props.onSwipeableRightWillOpen||n.props.onSwipeableRightWillOpen(),null==n.props.onSwipeableWillOpen||n.props.onSwipeableWillOpen('right');else{var l=t>0?'left':'right';null==n.props.onSwipeableWillClose||n.props.onSwipeableWillClose(l)}},n.onRowLayout=function(t){var e=t.nativeEvent;n.setState({rowWidth:e.layout.width})},n.currentOffset=function(){var t=n.state,e=t.leftWidth,o=void 0===e?0:e,i=t.rowWidth,a=void 0===i?0:i,r=t.rowState,s=n.state.rightOffset;return 1===r?o:-1===r?-(a-(void 0===s?a:s)):0},n.close=function(){n.animateRow(n.currentOffset(),0)},n.openLeft=function(){var t=n.state.leftWidth,e=void 0===t?0:t;n.animateRow(n.currentOffset(),e)},n.openRight=function(){var t=n.state.rowWidth,e=void 0===t?0:t,o=n.state.rightOffset,i=e-(void 0===o?e:o);n.animateRow(n.currentOffset(),-i)},n.reset=function(){var t=n.state,e=t.dragX,o=t.rowTranslation;e.setValue(0),o.setValue(0),n.setState({rowState:0})};var f=new s.Animated.Value(0);return n.state={dragX:f,rowTranslation:new s.Animated.Value(0),rowState:0,leftWidth:void 0,rightOffset:void 0,rowWidth:void 0},n.updateAnimatedEvent(t,n.state),n.onGestureEvent=s.Animated.event([{nativeEvent:{translationX:f}}],{useNativeDriver:t.useNativeAnimations}),n}return(0,a.default)(r,t),(0,n.default)(r,[{key:"shouldComponentUpdate",value:function(t,e){return this.props.friction===t.friction&&this.props.overshootLeft===t.overshootLeft&&this.props.overshootRight===t.overshootRight&&this.props.overshootFriction===t.overshootFriction&&this.state.leftWidth===e.leftWidth&&this.state.rightOffset===e.rightOffset&&this.state.rowWidth===e.rowWidth||this.updateAnimatedEvent(t,e),!0}},{key:"render",value:function(){var t=this,e=this.state.rowState,n=this.props,o=n.children,i=n.renderLeftActions,a=n.renderRightActions,r=n.dragOffsetFromLeftEdge,l=void 0===r?10:r,p=n.dragOffsetFromRightEdge,f=void 0===p?10:p,h=i&&(0,_r(d[9]).jsxs)(s.Animated.View,{style:[u.leftActions,{transform:[{translateX:this.leftActionTranslate}]}],children:[i(this.showLeftAction,this.transX,this),(0,_r(d[9]).jsx)(s.View,{onLayout:function(e){var n=e.nativeEvent;return t.setState({leftWidth:n.layout.x})}})]}),c=a&&(0,_r(d[9]).jsxs)(s.Animated.View,{style:[u.rightActions,{transform:[{translateX:this.rightActionTranslate}]}],children:[a(this.showRightAction,this.transX,this),(0,_r(d[9]).jsx)(s.View,{onLayout:function(e){var n=e.nativeEvent;return t.setState({rightOffset:n.layout.x})}})]});return(0,_r(d[9]).jsx)(_r(d[10]).PanGestureHandler,Object.assign({activeOffsetX:[-f,l],touchAction:"pan-y"},this.props,{onGestureEvent:this.onGestureEvent,onHandlerStateChange:this.onHandlerStateChange,children:(0,_r(d[9]).jsxs)(s.Animated.View,{onLayout:this.onRowLayout,style:[u.container,this.props.containerStyle],children:[h,c,(0,_r(d[9]).jsx)(_r(d[11]).TapGestureHandler,{enabled:0!==e,touchAction:"pan-y",onHandlerStateChange:this.onTapHandlerStateChange,children:(0,_r(d[9]).jsx)(s.Animated.View,{pointerEvents:0===e?'auto':'box-only',style:[{transform:[{translateX:this.transX}]},this.props.childrenContainerStyle],children:o})})]})}))}}])})(r.Component)).defaultProps={friction:1,overshootFriction:1,useNativeAnimations:!0};var u=s.StyleSheet.create({container:{overflow:'hidden'},leftActions:Object.assign({},s.StyleSheet.absoluteFillObject,{flexDirection:s.I18nManager.isRTL?'row-reverse':'row'}),rightActions:Object.assign({},s.StyleSheet.absoluteFillObject,{flexDirection:s.I18nManager.isRTL?'row':'row-reverse'})})}),771,[1,12,13,23,25,28,178,2,707,223,738,737]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return n.default}});var n=t(r(d[1]))}),772,[1,773]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var r=e(_r(d[1])),n=e(_r(d[2])),t=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=l(r);if(n&&n.has(e))return n.get(e);var t={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var s=u?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(t,o,s):t[o]=e[o]}return t.default=e,n&&n.set(e,t),t})(_r(d[3])),u=_r(d[4]),o=e(_r(d[5])),s=["testOnly_pressed","hitSlop","pressRetentionOffset","delayHoverIn","onHoverIn","delayHoverOut","onHoverOut","delayLongPress","unstable_pressDelay","onPress","onPressIn","onPressOut","onLongPress","style","children","android_disableSound","android_ripple","disabled","accessible"];function l(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(l=function(e){return e?n:r})(e)}var a=(0,_r(d[6]).isTestEnv)(),c=null,i={code:"function reactNativeGestureHandler_PressableTsx1(event){const{hoverInTimeout,clearTimeout,delayHoverOut,hoverOutTimeout,setTimeout,onHoverOut,gestureToPressableEvent}=this.__closure;var _onHoverOut2;if(hoverInTimeout.current){clearTimeout(hoverInTimeout.current);}if(delayHoverOut){hoverOutTimeout.current=setTimeout(function(){var _onHoverOut;return(_onHoverOut=onHoverOut)===null||_onHoverOut===void 0?void 0:_onHoverOut(gestureToPressableEvent(event));},delayHoverOut);return;}(_onHoverOut2=onHoverOut)===null||_onHoverOut2===void 0||_onHoverOut2(gestureToPressableEvent(event));}"},v={code:"function reactNativeGestureHandler_PressableTsx2(event){const{hoverOutTimeout,clearTimeout,delayHoverIn,hoverInTimeout,setTimeout,onHoverIn,gestureToPressableEvent}=this.__closure;var _onHoverIn2;if(hoverOutTimeout.current){clearTimeout(hoverOutTimeout.current);}if(delayHoverIn){hoverInTimeout.current=setTimeout(function(){var _onHoverIn;return(_onHoverIn=onHoverIn)===null||_onHoverIn===void 0?void 0:_onHoverIn(gestureToPressableEvent(event));},delayHoverIn);return;}(_onHoverIn2=onHoverIn)===null||_onHoverIn2===void 0||_onHoverIn2(gestureToPressableEvent(event));}"},f={code:"function reactNativeGestureHandler_PressableTsx3(event){const{isPressCallbackEnabled,handlingOnTouchesDown,cancelledMidPress,onEndHandlingTouchesDown,pressOutHandler,gestureTouchToPressableEvent,hasPassedBoundsChecks}=this.__closure;isPressCallbackEnabled.current=false;if(handlingOnTouchesDown.current){cancelledMidPress.current=true;onEndHandlingTouchesDown.current=function(){return pressOutHandler(gestureTouchToPressableEvent(event));};return;}if(!hasPassedBoundsChecks.current||event.allTouches.length>event.changedTouches.length){return;}pressOutHandler(gestureTouchToPressableEvent(event));}"},h={code:"function reactNativeGestureHandler_PressableTsx4(event){const{handlingOnTouchesDown,onEndHandlingTouchesDown,pressOutHandler,gestureTouchToPressableEvent,deferredEventPayload,shouldPreventNativeEffects}=this.__closure;if(handlingOnTouchesDown.current){onEndHandlingTouchesDown.current=function(){return pressOutHandler(gestureTouchToPressableEvent(event));};return;}if(deferredEventPayload.current!==null){shouldPreventNativeEffects.current=true;}pressOutHandler(gestureTouchToPressableEvent(event));}"},T={code:"function reactNativeGestureHandler_PressableTsx5(event){const{handlingOnTouchesDown,pressableRef,measureCallback,innerPressableRef}=this.__closure;handlingOnTouchesDown.current=true;if(pressableRef){var _current;(_current=pressableRef.current)===null||_current===void 0||_current.measure(function(_x,_y,width,height){measureCallback(width,height,event);});}else{var _innerPressableRef$cu;(_innerPressableRef$cu=innerPressableRef.current)===null||_innerPressableRef$cu===void 0||_innerPressableRef$cu.measure(function(_x,_y,width,height){measureCallback(width,height,event);});}}"},P={code:"function reactNativeGestureHandler_PressableTsx6(){const{Platform,isTouchPropagationAllowed,deferredEventPayload,hasPassedBoundsChecks,pressInHandler,pressOutHandler,shouldPreventNativeEffects,handlingOnTouchesDown}=this.__closure;if(Platform.OS==='web'){isTouchPropagationAllowed.current=true;}if(Platform.OS!=='ios'){return;}if(deferredEventPayload.current){isTouchPropagationAllowed.current=true;if(hasPassedBoundsChecks.current){pressInHandler(deferredEventPayload.current);deferredEventPayload.current=null;}else{pressOutHandler(deferredEventPayload.current);isTouchPropagationAllowed.current=false;}return;}if(hasPassedBoundsChecks.current){isTouchPropagationAllowed.current=true;return;}if(shouldPreventNativeEffects.current){shouldPreventNativeEffects.current=false;if(!handlingOnTouchesDown.current){return;}}isTouchPropagationAllowed.current=true;}"},_={code:"function reactNativeGestureHandler_PressableTsx7(){const{Platform,isTouchPropagationAllowed}=this.__closure;if(Platform.OS==='android'||Platform.OS==='macos'){isTouchPropagationAllowed.current=true;}}"},b=(0,t.forwardRef)((function(e,l){var b,O=e.testOnly_pressed,H=e.hitSlop,p=e.pressRetentionOffset,E=e.delayHoverIn,w=e.onHoverIn,y=e.delayHoverOut,I=e.onHoverOut,D=e.delayLongPress,k=e.unstable_pressDelay,R=e.onPress,C=e.onPressIn,S=e.onPressOut,x=e.onLongPress,N=e.style,M=e.children,A=e.android_disableSound,j=e.android_ripple,G=e.disabled,B=e.accessible,L=(0,n.default)(e,s),W=(0,t.useState)(null!=O&&O),$=(0,r.default)(W,2),F=$[0],V=$[1],X=(0,t.useRef)(!0),z=(0,t.useRef)(!1),J=(0,t.useRef)(!1),U=(0,t.useMemo)((function(){return'number'==typeof H?(0,_r(d[7]).numberAsInset)(H):null!=H?H:{}}),[H]),q=(0,t.useMemo)((function(){return'number'==typeof p?(0,_r(d[7]).numberAsInset)(p):null!=p?p:{}}),[p]),K=(0,t.useRef)(null),Q=(0,t.useRef)(null),Y=(0,t.useMemo)((function(){return _r(d[8]).GestureObjects.Hover().manualActivation(!0).cancelsTouchesInView(!1).onBegin((r=function(e){Q.current&&clearTimeout(Q.current),E?K.current=setTimeout((function(){return null==w?void 0:w((0,_r(d[7]).gestureToPressableEvent)(e))}),E):null==w||w((0,_r(d[7]).gestureToPressableEvent)(e))},r.__closure={hoverOutTimeout:Q,clearTimeout:clearTimeout,delayHoverIn:E,hoverInTimeout:K,setTimeout:setTimeout,onHoverIn:w,gestureToPressableEvent:_r(d[7]).gestureToPressableEvent},r.__workletHash=0xa8e62cc3dc1,r.__initData=v,r)).onFinalize(((e=function(e){K.current&&clearTimeout(K.current),y?Q.current=setTimeout((function(){return null==I?void 0:I((0,_r(d[7]).gestureToPressableEvent)(e))}),y):null==I||I((0,_r(d[7]).gestureToPressableEvent)(e))}).__closure={hoverInTimeout:K,clearTimeout:clearTimeout,delayHoverOut:y,hoverOutTimeout:Q,setTimeout:setTimeout,onHoverOut:I,gestureToPressableEvent:_r(d[7]).gestureToPressableEvent},e.__workletHash=4292053914731,e.__initData=i,e));var e,r}),[E,y,w,I]),Z=(0,t.useRef)(null),ee=(0,t.useRef)(!1),re=(0,t.useRef)(null),ne=(0,t.useCallback)((function(e){ue.current&&(re.current=e),ee.current&&(re.current=null,null==C||C(e),X.current=!0,Z.current=null,V(!0))}),[C]),te=(0,t.useCallback)((function(e){if(!ee.current)return z.current=!1,X.current=!0,re.current=null,ae.current&&(clearTimeout(ae.current),ae.current=null),void(Z.current&&(clearTimeout(Z.current),Z.current=null));!z.current||e.nativeEvent.touches.length>e.nativeEvent.changedTouches.length||(k&&null!==Z.current&&(clearTimeout(Z.current),ne(e)),re.current&&(null==C||C(re.current),re.current=null),null==S||S(e),X.current&&(null==R||R(e)),ae.current&&(clearTimeout(ae.current),ae.current=null),ee.current=!1,z.current=!1,X.current=!0,V(!1))}),[R,C,S,ne,k]),ue=(0,t.useRef)(!1),oe=(0,t.useRef)(null),se=(0,t.useRef)(!1),le=(0,t.useCallback)((function(e){ee.current&&(z.current&&(null==x||x((0,_r(d[7]).gestureTouchToPressableEvent)(e)),X.current=!1),ae.current&&(clearTimeout(ae.current),ae.current=null))}),[x]),ae=(0,t.useRef)(null),ce=(null!=D?D:500)+(null!=k?k:0),ie=(0,t.useRef)(null),de=(0,t.useCallback)((function(e,r,n){if(!(0,_r(d[7]).isTouchWithinInset)({width:e,height:r},U,n.changedTouches.at(-1))||z.current||se.current)return se.current=!1,oe.current=null,void(ue.current=!1);z.current=!0,null===ae.current&&(ae.current=setTimeout((function(){return le(n)}),ce)),k?Z.current=setTimeout((function(){ne((0,_r(d[7]).gestureTouchToPressableEvent)(n))}),k):ne((0,_r(d[7]).gestureTouchToPressableEvent)(n)),null==oe.current||oe.current(),oe.current=null,ue.current=!1}),[le,ce,U,ne,k]),ve=(0,t.useMemo)((function(){return _r(d[8]).GestureObjects.LongPress().minDuration(_r(d[6]).INT32_MAX).maxDistance(_r(d[6]).INT32_MAX).cancelsTouchesInView(!1).onTouchesDown((n=function(e){var r,n;ue.current=!0,l?null==(r=l.current)||r.measure((function(r,n,t,u){de(t,u,e)})):null==(n=ie.current)||n.measure((function(r,n,t,u){de(t,u,e)}))},n.__closure={handlingOnTouchesDown:ue,pressableRef:l,measureCallback:de,innerPressableRef:ie},n.__workletHash=0xf33ac5a4a92,n.__initData=T,n)).onTouchesUp((r=function(e){ue.current?oe.current=function(){return te((0,_r(d[7]).gestureTouchToPressableEvent)(e))}:(null!==re.current&&(J.current=!0),te((0,_r(d[7]).gestureTouchToPressableEvent)(e)))},r.__closure={handlingOnTouchesDown:ue,onEndHandlingTouchesDown:oe,pressOutHandler:te,gestureTouchToPressableEvent:_r(d[7]).gestureTouchToPressableEvent,deferredEventPayload:re,shouldPreventNativeEffects:J},r.__workletHash=0x9ae4f454503,r.__initData=h,r)).onTouchesCancelled(((e=function(e){if(X.current=!1,ue.current)return se.current=!0,void(oe.current=function(){return te((0,_r(d[7]).gestureTouchToPressableEvent)(e))});!z.current||e.allTouches.length>e.changedTouches.length||te((0,_r(d[7]).gestureTouchToPressableEvent)(e))}).__closure={isPressCallbackEnabled:X,handlingOnTouchesDown:ue,cancelledMidPress:se,onEndHandlingTouchesDown:oe,pressOutHandler:te,gestureTouchToPressableEvent:_r(d[7]).gestureTouchToPressableEvent,hasPassedBoundsChecks:z},e.__workletHash=0xc4055506543,e.__initData=f,e));var e,r,n}),[l,de,te]),fe=(0,t.useMemo)((function(){return _r(d[8]).GestureObjects.Native().onBegin((r=function(){'android'!==u.Platform.OS&&'macos'!==u.Platform.OS||(ee.current=!0)},r.__closure={Platform:u.Platform,isTouchPropagationAllowed:ee},r.__workletHash=0xc4cd6173a9f,r.__initData=_,r)).onStart(((e=function(){if('web'===u.Platform.OS&&(ee.current=!0),'ios'===u.Platform.OS)return re.current?(ee.current=!0,void(z.current?(ne(re.current),re.current=null):(te(re.current),ee.current=!1))):void(z.current?ee.current=!0:J.current&&(J.current=!1,!ue.current)||(ee.current=!0))}).__closure={Platform:u.Platform,isTouchPropagationAllowed:ee,deferredEventPayload:re,hasPassedBoundsChecks:z,pressInHandler:ne,pressOutHandler:te,shouldPreventNativeEffects:J,handlingOnTouchesDown:ue},e.__workletHash=1735733851648,e.__initData=P,e));var e,r}),[ne,te]),he=(0,_r(d[7]).addInsets)(U,q),Te=!0!==G,Pe=[fe,ve,Y];for(var be of Pe)be.enabled(Te),be.runOnJS(!0),be.hitSlop(he),be.shouldCancelWhenOutside('web'!==u.Platform.OS);fe.hitSlop(U);var ge=_r(d[8]).GestureObjects.Simultaneous.apply(_r(d[8]).GestureObjects,Pe),Oe='web'===u.Platform.OS?{cursor:'pointer'}:{},me='function'==typeof N?N({pressed:F}):N,He='function'==typeof M?M({pressed:F}):M,pe=(0,t.useMemo)((function(){var e;null===c&&(c=(0,_r(d[6]).isFabric)());var r=j?void 0:'transparent',n=null!=(e=null==j?void 0:j.color)?e:r;return c?n:(0,u.processColor)(n)}),[j]);return(0,_r(d[9]).jsx)(_r(d[10]).GestureDetector,{gesture:ge,children:(0,_r(d[9]).jsxs)(o.default,Object.assign({},L,{ref:null!=l?l:ie,accessible:!1!==B,hitSlop:he,enabled:Te,touchSoundDisabled:null!=A?A:void 0,rippleColor:pe,rippleRadius:null!=(b=null==j?void 0:j.radius)?b:void 0,style:[Oe,me],testOnly_onPress:a?R:void 0,testOnly_onPressIn:a?C:void 0,testOnly_onPressOut:a?S:void 0,testOnly_onLongPress:a?x:void 0,children:[He,null]}))})}));_e.default=b}),773,[1,38,134,178,2,715,706,774,722,223,735]); +__d((function(g,r,i,_a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.numberAsInset=e.isTouchWithinInset=e.gestureTouchToPressableEvent=e.gestureToPressableEvent=e.addInsets=void 0;e.numberAsInset=function(t){return{left:t,right:t,top:t,bottom:t}},e.addInsets=function(t,n){var l,o,u,a,s,c,h,v;return{left:(null!=(l=t.left)?l:0)+(null!=(o=n.left)?o:0),right:(null!=(u=t.right)?u:0)+(null!=(a=n.right)?a:0),top:(null!=(s=t.top)?s:0)+(null!=(c=n.top)?c:0),bottom:(null!=(h=t.bottom)?h:0)+(null!=(v=n.bottom)?v:0)}};var t=function(t,n,l){return{identifier:t.id,locationX:t.x,locationY:t.y,pageX:t.absoluteX,pageY:t.absoluteY,target:l,timestamp:n,touches:[],changedTouches:[]}},n=function(t,n,l){return{identifier:t.handlerTag,locationX:t.x,locationY:t.y,pageX:t.absoluteX,pageY:t.absoluteY,target:l,timestamp:n,touches:[],changedTouches:[]}};e.isTouchWithinInset=function(t,n,l){var o,u,a,s,c,h,v,f;return(null!=(o=null==l?void 0:l.x)?o:0)<(null!=(u=n.right)?u:0)+t.width&&(null!=(a=null==l?void 0:l.y)?a:0)<(null!=(s=n.bottom)?s:0)+t.height&&(null!=(c=null==l?void 0:l.x)?c:0)>-(null!=(h=n.left)?h:0)&&(null!=(v=null==l?void 0:l.y)?v:0)>-(null!=(f=n.top)?f:0)},e.gestureToPressableEvent=function(t){var l=Date.now(),o=n(t,l,0);return{nativeEvent:{touches:[o],changedTouches:[o],identifier:o.identifier,locationX:t.x,locationY:t.y,pageX:t.absoluteX,pageY:t.absoluteY,target:0,timestamp:l,force:void 0}}},e.gestureTouchToPressableEvent=function(n){var l,o,u,a,s,c,h,v,f=Date.now();return{nativeEvent:{touches:n.allTouches.map((function(n){return t(n,f,0)})),changedTouches:n.changedTouches.map((function(n){return t(n,f,0)})),identifier:n.handlerTag,locationX:null!=(l=null==(o=n.allTouches.at(0))?void 0:o.x)?l:-1,locationY:null!=(u=null==(a=n.allTouches.at(0))?void 0:a.y)?u:-1,pageX:null!=(s=null==(c=n.allTouches.at(0))?void 0:c.absoluteX)?s:-1,pageY:null!=(h=null==(v=n.allTouches.at(0))?void 0:v.absoluteY)?h:-1,target:0,timestamp:f,force:void 0}}}}),774,[]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),a=e(_r(d[2])),r=e(_r(d[3])),n=e(_r(d[4])),i=e(_r(d[5])),o=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var a=p(t);if(a&&a.has(e))return a.get(e);var r={__proto__:null},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var o=n?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(r,i,o):r[i]=e[i]}return r.default=e,a&&a.set(e,r),r})(_r(d[6])),s=o,l=e(_r(d[7])),u=_r(d[8]);function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,a=new WeakMap;return(p=function(e){return e?a:t})(e)}function c(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(c=function(){return!!e})()}var w='Idle',h='Dragging',v='Settling',f=_e.default=(function(e){function o(e){var a,i,p,f;(0,t.default)(this,o),i=this,p=o,f=[e],p=(0,n.default)(p),(a=(0,r.default)(i,c()?Reflect.construct(p,f||[],(0,n.default)(i).constructor):p.apply(i,f))).accessibilityIsModalView=s.createRef(),a.pointerEventsView=s.createRef(),a.panGestureHandler=s.createRef(),a.drawerShown=!1,a.updateAnimatedEvent=function(e,t){var r=e.drawerPosition,n=e.drawerWidth,i=e.drawerType,o=t.dragX,s=t.touchX,l=t.drawerTranslation,p=t.containerWidth,c=o,w=s;'left'!==r?(c=u.Animated.multiply(new u.Animated.Value(-1),o),w=u.Animated.add(new u.Animated.Value(p),u.Animated.multiply(new u.Animated.Value(-1),s)),s.setValue(p)):s.setValue(0);var h=c;if('front'===i){var v=u.Animated.add(w,u.Animated.multiply(new u.Animated.Value(-1),c)).interpolate({inputRange:[n-1,n,n+1],outputRange:[0,0,1]});h=u.Animated.add(c,v)}a.openValue=u.Animated.add(h,l).interpolate({inputRange:[0,n],outputRange:[0,1],extrapolate:'clamp'});var f={useNativeDriver:e.useNativeAnimations};a.props.onDrawerSlide&&(f.listener=function(e){var t=Math.floor(Math.abs(e.nativeEvent.translationX))/a.state.containerWidth;null==a.props.onDrawerSlide||a.props.onDrawerSlide(t)}),a.onGestureEvent=u.Animated.event([{nativeEvent:{translationX:o,x:s}}],f)},a.handleContainerLayout=function(e){var t=e.nativeEvent;a.setState({containerWidth:t.layout.width})},a.emitStateChanged=function(e,t){null==a.props.onDrawerStateChanged||a.props.onDrawerStateChanged(e,t)},a.openingHandlerStateChange=function(e){var t=e.nativeEvent;t.oldState===_r(d[9]).State.ACTIVE?a.handleRelease({nativeEvent:t}):t.state===_r(d[9]).State.ACTIVE&&(a.emitStateChanged(h,!1),a.setState({drawerState:h}),'on-drag'===a.props.keyboardDismissMode&&u.Keyboard.dismiss(),a.props.hideStatusBar&&u.StatusBar.setHidden(!0,a.props.statusBarAnimation||'slide'))},a.onTapHandlerStateChange=function(e){var t=e.nativeEvent;a.drawerShown&&t.oldState===_r(d[9]).State.ACTIVE&&'locked-open'!==a.props.drawerLockMode&&a.closeDrawer()},a.handleRelease=function(e){var t=e.nativeEvent,r=a.props,n=r.drawerWidth,i=r.drawerPosition,o=r.drawerType,s=a.state.containerWidth,l=t.translationX,u=t.velocityX,p=t.x;'left'!==i&&(l=-l,p=s-p,u=-u);var c=p-l,w=0;'front'===o&&(w=c>n?c-n:0);var h=l+w+(a.drawerShown?n:0);h+.05*u>n/2?a.animateDrawer(h,n,u):a.animateDrawer(h,0,u)},a.updateShowing=function(e){var t,r,n;a.drawerShown=e,null==(t=a.accessibilityIsModalView.current)||t.setNativeProps({accessibilityViewIsModal:e}),null==(r=a.pointerEventsView.current)||r.setNativeProps({pointerEvents:e?'auto':'none'});var i=a.props,o=i.drawerPosition,s=i.minSwipeDistance,l=i.edgeWidth,u='left'===o,p=(u?1:-1)*(a.drawerShown?-1:1),c=u?{left:0,width:e?void 0:l}:{right:0,width:e?void 0:l};null==(n=a.panGestureHandler.current)||n.setNativeProps({hitSlop:c,activeOffsetX:p*s})},a.animateDrawer=function(e,t,r,n){if(a.state.dragX.setValue(0),a.state.touchX.setValue('left'===a.props.drawerPosition?0:a.state.containerWidth),null!=e){var i=e;a.props.useNativeAnimations&&(e0?i=Math.min(e+r/60,t):e>t&&r<0&&(i=Math.max(e+r/60,t))),a.state.drawerTranslation.setValue(i)}var o=0!==t;a.updateShowing(o),a.emitStateChanged(v,o),a.setState({drawerState:v}),a.props.hideStatusBar&&u.StatusBar.setHidden(o,a.props.statusBarAnimation||'slide'),u.Animated.spring(a.state.drawerTranslation,{velocity:r,bounciness:0,toValue:t,useNativeDriver:a.props.useNativeAnimations,speed:null!=n?n:void 0}).start((function(e){e.finished&&(a.emitStateChanged(w,o),a.setState({drawerOpened:o}),a.state.drawerState!==h&&a.setState({drawerState:w}),o?null==a.props.onDrawerOpen||a.props.onDrawerOpen():null==a.props.onDrawerClose||a.props.onDrawerClose())}))},a.openDrawer=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};a.animateDrawer(void 0,a.props.drawerWidth,e.velocity?e.velocity:0,e.speed),a.forceUpdate()},a.closeDrawer=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};a.animateDrawer(void 0,0,e.velocity?e.velocity:0,e.speed),a.forceUpdate()},a.renderOverlay=function(){(0,l.default)(a.openValue,'should be set');var e={opacity:a.state.drawerState!==w?a.openValue:a.state.drawerOpened?1:0,backgroundColor:a.props.overlayColor};return(0,_r(d[10]).jsx)(_r(d[11]).TapGestureHandler,{onHandlerStateChange:a.onTapHandlerStateChange,children:(0,_r(d[10]).jsx)(u.Animated.View,{pointerEvents:a.drawerShown?'auto':'none',ref:a.pointerEventsView,style:[S.overlay,e]})})},a.renderDrawer=function(){var e,t=a.props,r=t.drawerBackgroundColor,n=t.drawerWidth,i=t.drawerPosition,o=t.drawerType,s=t.drawerContainerStyle,p=t.contentContainerStyle,c='left'===i,h='back'!==o,v='front'!==o,f=u.I18nManager.isRTL?c:!c,y={backgroundColor:r,width:n},b=a.openValue;((0,l.default)(b,'should be set'),v)&&(e={transform:[{translateX:b.interpolate({inputRange:[0,1],outputRange:c?[0,n]:[0,-n],extrapolate:'clamp'})}]});var V=0;if(h){var C=c?-n:n;V=a.state.drawerState!==w?b.interpolate({inputRange:[0,1],outputRange:[C,0],extrapolate:'clamp'}):a.state.drawerOpened?0:C}var A={transform:[{translateX:V}],flexDirection:f?'row-reverse':'row'};return(0,_r(d[10]).jsxs)(u.Animated.View,{style:S.main,onLayout:a.handleContainerLayout,children:[(0,_r(d[10]).jsxs)(u.Animated.View,{style:['front'===o?S.containerOnBack:S.containerInFront,e,p],importantForAccessibility:a.drawerShown?'no-hide-descendants':'yes',children:['function'==typeof a.props.children?a.props.children(a.openValue):a.props.children,a.renderOverlay()]}),(0,_r(d[10]).jsx)(u.Animated.View,{pointerEvents:"box-none",ref:a.accessibilityIsModalView,accessibilityViewIsModal:a.drawerShown,style:[S.drawerContainer,A,s],children:(0,_r(d[10]).jsx)(u.View,{style:y,children:a.props.renderNavigationView(a.openValue)})})]})},a.setPanGestureRef=function(e){a.panGestureHandler.current=e,null==a.props.onGestureRef||a.props.onGestureRef(e)};var y=new u.Animated.Value(0),b=new u.Animated.Value(0),V=new u.Animated.Value(0);return a.state={dragX:y,touchX:b,drawerTranslation:V,containerWidth:0,drawerState:w,drawerOpened:!1},a.updateAnimatedEvent(e,a.state),a}return(0,i.default)(o,e),(0,a.default)(o,[{key:"shouldComponentUpdate",value:function(e,t){return this.props.drawerPosition===e.drawerPosition&&this.props.drawerWidth===e.drawerWidth&&this.props.drawerType===e.drawerType&&this.state.containerWidth===t.containerWidth||this.updateAnimatedEvent(e,t),!0}},{key:"render",value:function(){var e=this.props,t=e.drawerPosition,a=e.drawerLockMode,r=e.edgeWidth,n=e.minSwipeDistance,i='left'===t,o=(i?1:-1)*(this.drawerShown?-1:1),s=i?{left:0,width:this.drawerShown?void 0:r}:{right:0,width:this.drawerShown?void 0:r};return(0,_r(d[10]).jsx)(_r(d[12]).PanGestureHandler,{userSelect:this.props.userSelect,activeCursor:this.props.activeCursor,mouseButton:this.props.mouseButton,enableContextMenu:this.props.enableContextMenu,ref:this.setPanGestureRef,hitSlop:s,activeOffsetX:o*n,failOffsetY:[-15,15],onGestureEvent:this.onGestureEvent,onHandlerStateChange:this.openingHandlerStateChange,enableTrackpadTwoFingerGesture:this.props.enableTrackpadTwoFingerGesture,enabled:'locked-closed'!==a&&'locked-open'!==a,children:this.renderDrawer()})}}])})(o.Component);f.defaultProps={drawerWidth:200,drawerPosition:'left',useNativeAnimations:!0,drawerType:'front',edgeWidth:20,minSwipeDistance:3,overlayColor:'rgba(0, 0, 0, 0.7)',drawerLockMode:'unlocked',enableTrackpadTwoFingerGesture:!1},f.positions={Left:'left',Right:'right'};var S=u.StyleSheet.create({drawerContainer:Object.assign({},u.StyleSheet.absoluteFillObject,{zIndex:1001,flexDirection:'row'}),containerInFront:Object.assign({},u.StyleSheet.absoluteFillObject,{zIndex:1002}),containerOnBack:Object.assign({},u.StyleSheet.absoluteFillObject),main:{flex:1,zIndex:0,overflow:'hidden'},overlay:Object.assign({},u.StyleSheet.absoluteFillObject,{zIndex:1e3})})}),775,[1,12,13,23,25,28,178,20,2,707,223,737,738]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;n(r(d[1]));var t=n(r(d[2])),o=n(r(d[3])),c=n(r(d[4])),l=n(r(d[5])),u=n(r(d[6])),s=n(r(d[7]));e.default=function(n){var f=(0,r(d[8]).createNativeStackNavigator)();return(0,r(d[9]).jsx)(u.default,{children:(0,r(d[9]).jsx)(l.default,{children:(0,r(d[9]).jsx)(s.default,{children:(0,r(d[9]).jsxs)(f.Navigator,{id:void 0,screenOptions:{headerShown:!1},children:[(0,r(d[9]).jsx)(f.Screen,{name:"Login",component:t.default}),(0,r(d[9]).jsx)(f.Screen,{name:"Register",component:o.default}),(0,r(d[9]).jsx)(f.Screen,{name:"MainTabNavigation",component:c.default})]})})})})}}),776,[1,178,777,850,897,794,787,934,937,223]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),n=e(_r(d[2])),r=_r(d[3]),a=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=u(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var o=a?Object.getOwnPropertyDescriptor(e,l):null;o&&(o.get||o.set)?Object.defineProperty(r,l,o):r[l]=e[l]}return r.default=e,n&&n.set(e,r),r})(_r(d[4])),l=e(_r(d[5])),o=e(_r(d[6])),i=e(_r(d[7])),s=e(_r(d[8]));function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(u=function(e){return e?n:t})(e)}_e.default=function(e){var u=e.navigation,c=(0,a.useState)(!1),f=(0,n.default)(c,2),p=f[0],y=f[1],x=(0,a.useState)(""),h=(0,n.default)(x,2),b=h[0],v=h[1],j=(0,a.useState)(""),N=(0,n.default)(j,2),T=N[0],w=N[1],E=(0,_r(d[9]).useTokenContext)().setToken,F=(0,_r(d[10]).useSettingsContext)(),O=F.language,k=F.setLanguage,_=F.darkmode,P=F.setDarkmode,L=F.setLefthand;(0,a.useEffect)((function(){B(),C(),M(),D()}),[]);var M=(function(){var e=(0,t.default)((function*(){var e=yield l.default.get("token");e&&(E(e),(0,_r(d[11]).resetNavigation)(u,"MainTabNavigation"))}));return function(){return e.apply(this,arguments)}})(),B=(function(){var e=(0,t.default)((function*(){try{var e=yield o.default.getItem("darkMode");P("true"===e)}catch(e){r.Alert.alert("Error",e.response.data)}}));return function(){return e.apply(this,arguments)}})(),C=(function(){var e=(0,t.default)((function*(){try{var e=yield o.default.getItem("language");k(e)}catch(e){r.Alert.alert("Error",e.response.data)}}));return function(){return e.apply(this,arguments)}})(),D=(function(){var e=(0,t.default)((function*(){try{var e=yield o.default.getItem("lefthand");L("true"===e)}catch(e){r.Alert.alert("Error",e.response.data)}}));return function(){return e.apply(this,arguments)}})(),S=(function(){var e=(0,t.default)((function*(){try{var e=yield(0,_r(d[12]).login)(b,T);E(e),(0,_r(d[11]).resetNavigation)(u,"MainTabNavigation")}catch(e){r.Alert.alert("Error",e.response.data)}}));return function(){return e.apply(this,arguments)}})();return(0,_r(d[13]).jsx)(r.View,{className:`flex-1 ${(0,_r(d[11]).cardBgColor)(_)} justify-center items-center`,children:(0,_r(d[13]).jsxs)(r.View,{className:`justify-evenly ${_?"bg-[#E8E2F0]":"bg-white"} rounded-2xl w-96`,style:{height:400},children:[(0,_r(d[13]).jsxs)(r.View,{className:"m-10 mb-5",children:[(0,_r(d[13]).jsx)(s.default,{label:_r(d[14]).translations[O||"en-EN"].screens.Login.email,name:b,setText:function(e){return v(e)},mode:"email"}),(0,_r(d[13]).jsx)(r.TextInput,{placeholder:_r(d[14]).translations[O||"en-EN"].screens.Login.password,placeholderTextColor:""+(_?"#E0D3F5":"#4B0082"),secureTextEntry:!p,className:"text-lg mb-5 pl-3 rounded-lg border-2 "+(_?"bg-[#4B294F] text-white border-[#B28DFF]":"bg-[#F8F7FE] text-black border-[#4B0082]"),onChangeText:function(e){return w(e)}}),(0,_r(d[13]).jsx)(r.TouchableOpacity,{onPress:function(){return y(!p)},children:(0,_r(d[13]).jsx)(r.Text,{className:"text-[#4B0082] font-bold text-lg mt-3",style:{fontFamily:"Lexend-Regular"},children:p?"Hide":"Show"})})]}),(0,_r(d[13]).jsxs)(r.View,{className:"m-10 mt-5",children:[(0,_r(d[13]).jsx)(r.TouchableOpacity,{onPress:S,className:"bg-[#F65261] rounded-lg py-3 mb-5",children:(0,_r(d[13]).jsx)(r.Text,{className:i.default.utils.button,style:{fontFamily:"Lexend-Regular"},children:_r(d[14]).translations[O||"en-EN"].screens.Login.login})}),(0,_r(d[13]).jsx)(r.TouchableOpacity,{onPress:function(){return(0,_r(d[11]).resetNavigation)(u,"Register")},className:"border-[#F65261] border-2 rounded-lg py-1",children:(0,_r(d[13]).jsx)(r.Text,{className:"text-[#7D3C98] font-bold text-2xl text-center",children:_r(d[14]).translations[O||"en-EN"].screens.Login.register})})]})]})})}}),777,[1,564,38,2,178,778,779,785,786,794,787,788,795,223,789]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.ACCESSIBLE=void 0;var c=r(d[0]),s=(e.ACCESSIBLE={WHEN_UNLOCKED:'AccessibleWhenUnlocked',AFTER_FIRST_UNLOCK:'AccessibleAfterFirstUnlock',ALWAYS:'AccessibleAlways',WHEN_PASSCODE_SET_THIS_DEVICE_ONLY:'AccessibleWhenPasscodeSetThisDeviceOnly',WHEN_UNLOCKED_THIS_DEVICE_ONLY:'AccessibleWhenUnlockedThisDeviceOnly',AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY:'AccessibleAfterFirstUnlockThisDeviceOnly',ALWAYS_THIS_DEVICE_ONLY:'AccessibleAlwaysThisDeviceOnly'},c.NativeModules.RNSecureKeyStore);e.default=s}),778,[2]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0,Object.defineProperty(e,"useAsyncStorage",{enumerable:!0,get:function(){return r(d[1]).useAsyncStorage}});var u=t(r(d[2]));e.default=u.default}),779,[1,780,781]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.useAsyncStorage=function(t){return{getItem:function(){for(var u=arguments.length,f=new Array(u),o=0;o1&&"string"!=typeof s){if(null==s)throw new Error(`[AsyncStorage] Passing null/undefined as value is not supported. If you want to remove value, Use .removeItem method instead.\nPassed value: ${s}\nPassed key: ${o}\n`);console.warn(`[AsyncStorage] The value for key "${o}" is not a string. This can lead to unexpected behavior/errors. Consider stringifying it.\nPassed value: ${s}\nPassed key: ${o}\n`)}},_e.convertError=e,_e.convertErrors=function(t){var o=n(t);return o?o.map((function(n){return e(n)})):null}}),784,[]); +__d((function(t,e,n,o,x,i,l){x.exports={utils:{button:"text-white font-bold text-3xl text-center"}}}),785,[]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=r(d[1]);t(r(d[2])),e.default=function(t){var l=(0,r(d[3]).useSettingsContext)().darkmode;return(0,r(d[4]).jsx)(o.TextInput,{placeholder:t.label,placeholderTextColor:l?"#E0D3F5":"#4B0082",inputMode:t.mode,className:`text-lg mb-5 pl-3 rounded-lg border-2 ${l?"bg-[#4B294F]":"bg-[#F8F7FE]"} ${(0,r(d[5]).textColor)(l)} ${(0,r(d[5]).borderColor)(l)}`,onChangeText:function(o){return t.setText(o)},value:t.name})}}),786,[1,2,178,787,223,788]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.useSettingsContext=_e.default=_e.AppContext=void 0;var t=e(_r(d[1])),n=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var u={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var f=a?Object.getOwnPropertyDescriptor(e,o):null;f&&(f.get||f.set)?Object.defineProperty(u,o,f):u[o]=e[o]}return u.default=e,n&&n.set(e,u),u})(_r(d[2]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}var u=_e.AppContext=(0,n.createContext)({});_e.useSettingsContext=function(){return(0,n.useContext)(u)},_e.default=function(e){var r=(0,n.useState)("en-EN"),a=(0,t.default)(r,2),o=a[0],f=a[1],l=(0,n.useState)(!0),i=(0,t.default)(l,2),c=i[0],s=i[1],p=(0,n.useState)(!1),v=(0,t.default)(p,2),_={language:o,setLanguage:f,darkmode:c,setDarkmode:s,lefthand:v[0],setLefthand:v[1]};return(0,_r(d[3]).jsx)(u.Provider,{value:_,children:e.children})}}),787,[1,38,178,223]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.uri=e.textColor=e.resetNavigation=e.neo4jUri=e.limit=e.languages=e.iconColor=e.convertQuantityToString=e.cardBgColor=e.borderColor=e.bgColor=void 0;var n=e.uri="http://64.226.71.234:8080";e.neo4jUri=n+"/graphql",e.limit=10,e.resetNavigation=function(n,t){n.navigate(t),n.reset({index:0,routes:[{name:t}]})},e.convertQuantityToString=function(n){return n>=1e6?parseFloat((n/1e6).toFixed(2)).toString()+"M":n>=1e3?parseFloat((n/1e3).toFixed(2)).toString()+"K":null==n?void 0:n.toString()},e.languages=function(n){return[{label:r(d[0]).translations[n||"en-EN"].screens.Settings.languages.english,value:"en-EN"},{label:r(d[0]).translations[n||"en-EN"].screens.Settings.languages.spanish,value:"es-ES"},{label:r(d[0]).translations[n||"en-EN"].screens.Settings.languages.french,value:"fr-FR"},{label:r(d[0]).translations[n||"en-EN"].screens.Settings.languages.german,value:"de-DE"}]},e.borderColor=function(n){return n?"border-[#B28DFF]":"border-[#7D3C98]"},e.bgColor=function(n){return n?"bg-[#1C1C1E]":"bg-[#FCFCFC]"},e.cardBgColor=function(n){return n?"bg-[#4B294F]":"bg-[#E8E2F0]"},e.iconColor=function(n){return n?"#B28DFF":"#7D3C98"},e.textColor=function(n){return n?"text-white":"text-[#1C1C1E]"}}),788,[789]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.translations=void 0;var l=t(r(d[1])),n=t(r(d[2])),f=t(r(d[3])),u=t(r(d[4]));e.translations={'en-EN':l.default,'es-ES':n.default,'fr-FR':f.default,'de-DE':u.default}}),789,[1,790,791,792,793]); +__d((function(e,i,t,a,o,r,l){o.exports={screens:{Activities:{name:"Name"},ActivityDetails:{numOfTimes:"Number of times",frequency:"Frequency",add:"Add",timeRates:{daily:"daily",weekly:"weekly",monthly:"monthly",yearly:"yearly"}},ActivityForm:{title:"Title",description:"Description",timeRate:"Time rate",timesRequired:"Times required",post:"Post",timeRates:{daily:"daily",weekly:"weekly",monthly:"monthly",yearly:"yearly"}},Home:{search:"Search",type:{following:"following",home:"home",activity:"activity"}},Login:{email:"Email",password:"Password",login:"Login",register:"Register"},Profile:{followers:"followers",following:"following",follow:"follow",unfollow:"unfollow"},ProfileForm:{email:"Email",image:"Image",nationality:"Nationality",phoneNumber:"Phone number",username:"Username",password:"Password",update:"Update"},Register:{username:"Username",confirmPassword:"Confirm password"},Settings:{language:"Language",darkMode:"Dark Mode",lightMode:"Light Mode",logout:"Logout",settings:"Settings",editProfile:"Edit profile",leftHand:{left:"Left hand",right:"Right hand"},languages:{english:"English",spanish:"Spanish",french:"French",german:"German"}},Streaks:{myStreaks:"My streaks",timesRemaining:"Times remaining"},UploadForm:{title:"Upload post",takeFromCamera:"Take from camera",selectFromLibrary:"Select from library",selectactivity:"Select a activity",changePicture:"Change picture",postButton:"Post",timesRemaining:"Times remaining"},Events:{timeLeft:"Time left",progress:"Event progress",finalMessage:"Keep contributing to earn the medals!"}}}}),790,[]); +__d((function(e,a,i,r,o,s,n){o.exports={screens:{Activities:{name:"Nombre"},ActivityDetails:{numOfTimes:"N\xfamero de veces",frequency:"Frecuencia",add:"Agregar",timeRates:{daily:"diario",weekly:"semanal",monthly:"mensual",yearly:"anual"}},ActivityForm:{title:"T\xedtulo",description:"Descripci\xf3n",timeRate:"Frecuencia de tiempo",timesRequired:"Veces requeridas",post:"Publicar",timeRates:{daily:"diario",weekly:"semanal",monthly:"mensual",yearly:"anual"}},Home:{search:"Buscar",type:{following:"siguiendo",home:"inicio",activity:"actividad"}},Login:{email:"Correo electr\xf3nico",password:"Contrase\xf1a",login:"Iniciar sesi\xf3n",register:"Registrarse"},Profile:{followers:"seguidores",following:"siguiendo",follow:"seguir",unfollow:"dejar de seguir"},ProfileForm:{email:"Correo electr\xf3nico",image:"Imagen",nationality:"Nacionalidad",phoneNumber:"N\xfamero de tel\xe9fono",username:"Nombre de usuario",password:"Contrase\xf1a",update:"Actualizar"},Register:{username:"Nombre de usuario",confirmPassword:"Confirmar contrase\xf1a"},Settings:{language:"Idioma",darkMode:"Modo oscuro",lightMode:"Modo claro",logout:"Cerrar sesi\xf3n",settings:"Configuraci\xf3n",editProfile:"Editar perfil",leftHand:{left:"Mano izquierda",right:"Mano derecha"},languages:{english:"Ingl\xe9s",spanish:"Espa\xf1ol",french:"Franc\xe9s",german:"Alem\xe1n"}},Streaks:{myStreaks:"Mis rachas",timesRemaining:"Veces restantes"},UploadForm:{title:"Subir publicaci\xf3n",takeFromCamera:"Tomar con c\xe1mara",selectFromLibrary:"Seleccionar de la galer\xeda",selectactivity:"Seleccionar una actividad",changePicture:"Cambiar imagen",postButton:"Publicar",timesRemaining:"Veces restantes"},Events:{timeLeft:"Tiempo restante",progress:"Progreso del evento",finalMessage:"\xa1Sigue contribuyendo para alcanzar las medallas!"}}}}),791,[]); +__d((function(e,i,t,a,n,r,o){n.exports={screens:{Activities:{name:"Nom"},ActivityDetails:{numOfTimes:"Nombre de fois",frequency:"Fr\xe9quence",add:"Ajouter",timeRates:{daily:"quotidien",weekly:"hebdomadaire",monthly:"mensuel",yearly:"annuel"}},ActivityForm:{title:"Titre",description:"Description",timeRate:"Fr\xe9quence de temps",timesRequired:"Nombre requis",post:"Publier",timeRates:{daily:"quotidien",weekly:"hebdomadaire",monthly:"mensuel",yearly:"annuel"}},Home:{search:"Rechercher",type:{following:"abonnements",home:"accueil",activity:"activit\xe9"}},Login:{email:"Email",password:"Mot de passe",login:"Connexion",register:"Inscription"},Profile:{followers:"abonn\xe9s",following:"abonnements",follow:"suivre",unfollow:"ne plus suivre"},ProfileForm:{email:"Email",image:"Image",nationality:"Nationalit\xe9",phoneNumber:"Num\xe9ro de t\xe9l\xe9phone",username:"Nom d'utilisateur",password:"Mot de passe",update:"Mettre \xe0 jour"},Register:{username:"Nom d'utilisateur",confirmPassword:"Confirmer le mot de passe"},Settings:{language:"Langue",darkMode:"Mode sombre",lightMode:"Mode clair",logout:"D\xe9connexion",settings:"Param\xe8tres",editProfile:"Modifier le profil",leftHand:{left:"Main gauche",right:"Main droite"},languages:{english:"Anglais",spanish:"Espagnol",french:"Fran\xe7ais",german:"Allemand"}},Streaks:{myStreaks:"Mes s\xe9ries",timesRemaining:"Fois restantes"},UploadForm:{title:"T\xe9l\xe9verser une publication",takeFromCamera:"Prendre avec la cam\xe9ra",selectFromLibrary:"Choisir depuis la galerie",selectactivity:"S\xe9lectionner une activit\xe9",changePicture:"Changer l'image",postButton:"Publier",timesRemaining:"Fois restantes"},Events:{timeLeft:"Temps restant",progress:"Progr\xe8s de l'\xe9v\xe9nement",finalMessage:"Continuez \xe0 contribuer pour obtenir les m\xe9dailles !"}}}}),792,[]); +__d((function(e,i,t,n,l,a,r){l.exports={screens:{Activities:{name:"Name"},ActivityDetails:{numOfTimes:"Anzahl der Male",frequency:"H\xe4ufigkeit",add:"Hinzuf\xfcgen",timeRates:{daily:"t\xe4glich",weekly:"w\xf6chentlich",monthly:"monatlich",yearly:"j\xe4hrlich"}},ActivityForm:{title:"Titel",description:"Beschreibung",timeRate:"Zeitintervall",timesRequired:"Ben\xf6tigte Anzahl",post:"Ver\xf6ffentlichen",timeRates:{daily:"t\xe4glich",weekly:"w\xf6chentlich",monthly:"monatlich",yearly:"j\xe4hrlich"}},Home:{search:"Suche",type:{following:"folgend",home:"Startseite",activity:"Aktivit\xe4t"}},Login:{email:"E-Mail",password:"Passwort",login:"Anmelden",register:"Registrieren"},Profile:{followers:"Follower",following:"folgend",follow:"folgen",unfollow:"nicht mehr folgen"},ProfileForm:{email:"E-Mail",image:"Bild",nationality:"Nationalit\xe4t",phoneNumber:"Telefonnummer",username:"Benutzername",password:"Passwort",update:"Aktualisieren"},Register:{username:"Benutzername",confirmPassword:"Passwort best\xe4tigen"},Settings:{language:"Sprache",darkMode:"Dunkelmodus",lightMode:"Hellmodus",logout:"Abmelden",settings:"Einstellungen",editProfile:"Profil bearbeiten",leftHand:{left:"Linke Hand",right:"Rechte Hand"},languages:{english:"Englisch",spanish:"Spanisch",french:"Franz\xf6sisch",german:"Deutsch"}},Streaks:{myStreaks:"Meine Serien",timesRemaining:"Verbleibende Male"},UploadForm:{title:"Beitrag hochladen",takeFromCamera:"Mit Kamera aufnehmen",selectFromLibrary:"Aus Bibliothek ausw\xe4hlen",selectactivity:"Aktivit\xe4t ausw\xe4hlen",changePicture:"Bild \xe4ndern",postButton:"Ver\xf6ffentlichen",timesRemaining:"Verbleibende Male"},Events:{timeLeft:"Verbleibende Zeit",progress:"Fortschritt der Veranstaltung",finalMessage:"Leiste weiterhin Beitr\xe4ge, um die Medaillen zu erhalten!"}}}}),793,[]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.useTokenContext=_e.default=_e.AppContext=void 0;var t=e(_r(d[1])),n=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=u?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(o,a,f):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o})(_r(d[2]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}var o=_e.AppContext=(0,n.createContext)({});_e.useTokenContext=function(){return(0,n.useContext)(o)},_e.default=function(e){var r=(0,n.useState)(""),u=(0,t.default)(r,2),a=u[0],f=u[1],i=(0,n.useState)(""),l=(0,t.default)(i,2),c={token:a,setToken:f,email:l[0],setEmail:l[1]};return(0,_r(d[3]).jsx)(o.Provider,{value:c,children:e.children})}}),794,[1,38,178,223]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.login=_e.getToken=void 0;var t=e(_r(d[1])),r=e(_r(d[2])),n=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=o(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u]}return n.default=e,r&&r.set(e,n),n})(_r(d[3]));function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(o=function(e){return e?r:t})(e)}_e.login=(function(){var e=(0,t.default)((function*(e,t){try{var o=yield r.default.post(_r(d[4]).uri+"/auth/login?email="+e+"&password="+t),a=o.status,u=o.data;if(200===a)return yield n.default.set("token",u,{accessible:n.ACCESSIBLE.ALWAYS_THIS_DEVICE_ONLY}),yield n.default.get("token")}catch(e){throw console.error("Error:",e.response.data),e}}));return function(t,r){return e.apply(this,arguments)}})(),_e.getToken=(function(){var e=(0,t.default)((function*(){try{return yield n.default.get("token")}catch(e){throw console.error("Error:",e.response.data),e}}));return function(){return e.apply(this,arguments)}})()}),795,[1,564,796,778,788]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.all=e.VERSION=e.HttpStatusCode=e.CanceledError=e.CancelToken=e.Cancel=e.AxiosHeaders=e.AxiosError=e.Axios=void 0,Object.defineProperty(e,"default",{enumerable:!0,get:function(){return o.default}}),e.toFormData=e.spread=e.mergeConfig=e.isCancel=e.isAxiosError=e.getAdapter=e.formToJSON=void 0;var o=t(r(d[1]));e.Axios=o.default.Axios,e.AxiosError=o.default.AxiosError,e.CanceledError=o.default.CanceledError,e.isCancel=o.default.isCancel,e.CancelToken=o.default.CancelToken,e.VERSION=o.default.VERSION,e.all=o.default.all,e.Cancel=o.default.Cancel,e.isAxiosError=o.default.isAxiosError,e.spread=o.default.spread,e.toFormData=o.default.toFormData,e.AxiosHeaders=o.default.AxiosHeaders,e.HttpStatusCode=o.default.HttpStatusCode,e.formToJSON=o.default.formToJSON,e.getAdapter=o.default.getAdapter,e.mergeConfig=o.default.mergeConfig}),796,[1,797]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var l=t(r(d[1])),u=t(r(d[2])),f=t(r(d[3])),o=t(r(d[4])),n=t(r(d[5])),s=t(r(d[6])),c=t(r(d[7])),p=t(r(d[8])),C=t(r(d[9])),v=t(r(d[10])),x=t(r(d[11])),A=t(r(d[12])),E=t(r(d[13])),O=t(r(d[14])),y=t(r(d[15])),w=t(r(d[16]));var S=(function t(n){var s=new f.default(n),c=(0,u.default)(f.default.prototype.request,s);return l.default.extend(c,f.default.prototype,s,{allOwnKeys:!0}),l.default.extend(c,s,null,{allOwnKeys:!0}),c.create=function(l){return t((0,o.default)(n,l))},c})(n.default);S.Axios=f.default,S.CanceledError=c.default,S.CancelToken=p.default,S.isCancel=C.default,S.VERSION=r(d[17]).VERSION,S.toFormData=v.default,S.AxiosError=x.default,S.Cancel=S.CanceledError,S.all=function(t){return Promise.all(t)},S.spread=A.default,S.isAxiosError=E.default,S.mergeConfig=o.default,S.AxiosHeaders=O.default,S.formToJSON=function(t){return(0,s.default)(l.default.isHTMLForm(t)?new FormData(t):t)},S.getAdapter=y.default.getAdapter,S.HttpStatusCode=w.default,S.default=S;e.default=S}),797,[1,798,799,800,833,809,818,822,846,821,803,804,847,848,819,823,849,845]); +__d((function(g,r,_i,_a,_m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n,o=t(r(d[1])),i=t(r(d[2])),u=Object.prototype.toString,a=Object.getPrototypeOf,f=(n=Object.create(null),function(t){var o=u.call(t);return n[o]||(n[o]=o.slice(8,-1).toLowerCase())}),s=function(t){return t=t.toLowerCase(),function(n){return f(n)===t}},c=function(t){return function(n){return typeof n===t}},l=Array.isArray,p=c('undefined');var y=s('ArrayBuffer');var b=c('string'),m=c('function'),v=c('number'),O=function(t){return null!==t&&'object'==typeof t},h=function(t){if('object'!==f(t))return!1;var n=a(t);return!(null!==n&&n!==Object.prototype&&null!==Object.getPrototypeOf(n)||Symbol.toStringTag in t||Symbol.iterator in t)},w=s('Date'),j=s('File'),F=s('Blob'),S=s('FileList'),A=s('URLSearchParams'),P=['ReadableStream','Request','Response','Headers'].map(s),x=(0,o.default)(P,4),B=x[0],C=x[1],L=x[2],E=x[3];function T(t,n){var o,i,u=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).allOwnKeys,a=void 0!==u&&u;if(null!=t)if('object'!=typeof t&&(t=[t]),l(t))for(o=0,i=t.length;o0;)if(n===(o=i[u]).toLowerCase())return o;return null}var M="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:'undefined'!=typeof window?window:g,R=function(t){return!p(t)&&t!==M};var k,N=(k='undefined'!=typeof Uint8Array&&a(Uint8Array),function(t){return k&&t instanceof k}),U=s('HTMLFormElement'),_=(function(){var t=Object.prototype.hasOwnProperty;return function(n,o){return t.call(n,o)}})(),q=s('RegExp'),H=function(t,n){var o=Object.getOwnPropertyDescriptors(t),i={};T(o,(function(o,u){var a;!1!==(a=n(o,u,t))&&(i[u]=a||o)})),Object.defineProperties(t,i)};var K,I,V,z,J=s('AsyncFunction'),$=(K='function'==typeof setImmediate,I=m(M.postMessage),K?setImmediate:I?(V=`axios@${Math.random()}`,z=[],M.addEventListener("message",(function(t){var n=t.source,o=t.data;n===M&&o===V&&z.length&&z.shift()()}),!1),function(t){z.push(t),M.postMessage(V,"*")}):function(t){return setTimeout(t)}),W='undefined'!=typeof queueMicrotask?queueMicrotask.bind(M):'undefined'!=typeof process&&process.nextTick||$;e.default={isArray:l,isArrayBuffer:y,isBuffer:function(t){return null!==t&&!p(t)&&null!==t.constructor&&!p(t.constructor)&&m(t.constructor.isBuffer)&&t.constructor.isBuffer(t)},isFormData:function(t){var n;return t&&('function'==typeof FormData&&t instanceof FormData||m(t.append)&&('formdata'===(n=f(t))||'object'===n&&m(t.toString)&&'[object FormData]'===t.toString()))},isArrayBufferView:function(t){return'undefined'!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&y(t.buffer)},isString:b,isNumber:v,isBoolean:function(t){return!0===t||!1===t},isObject:O,isPlainObject:h,isReadableStream:B,isRequest:C,isResponse:L,isHeaders:E,isUndefined:p,isDate:w,isFile:j,isBlob:F,isRegExp:q,isFunction:m,isStream:function(t){return O(t)&&m(t.pipe)},isURLSearchParams:A,isTypedArray:N,isFileList:S,forEach:T,merge:function t(){for(var n=(R(this)&&this||{}).caseless,o={},i=function(i,u){var a=n&&D(o,u)||u;h(o[a])&&h(i)?o[a]=t(o[a],i):h(i)?o[a]=t({},i):l(i)?o[a]=i.slice():o[a]=i},u=0,a=arguments.length;u3&&void 0!==arguments[3]?arguments[3]:{}).allOwnKeys}),t},trim:function(t){return t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,'')},stripBOM:function(t){return 65279===t.charCodeAt(0)&&(t=t.slice(1)),t},inherits:function(t,n,o,i){t.prototype=Object.create(n.prototype,i),t.prototype.constructor=t,Object.defineProperty(t,'super',{value:n.prototype}),o&&Object.assign(t.prototype,o)},toFlatObject:function(t,n,o,i){var u,f,s,c={};if(n=n||{},null==t)return n;do{for(f=(u=Object.getOwnPropertyNames(t)).length;f-- >0;)s=u[f],i&&!i(s,t,n)||c[s]||(n[s]=t[s],c[s]=!0);t=!1!==o&&a(t)}while(t&&(!o||o(t,n))&&t!==Object.prototype);return n},kindOf:f,kindOfTest:s,endsWith:function(t,n,o){t=String(t),(void 0===o||o>t.length)&&(o=t.length),o-=n.length;var i=t.indexOf(n,o);return-1!==i&&i===o},toArray:function(t){if(!t)return null;if(l(t))return t;var n=t.length;if(!v(n))return null;for(var o=new Array(n);n-- >0;)o[n]=t[n];return o},forEachEntry:function(t,n){for(var o,i=(t&&t[Symbol.iterator]).call(t);(o=i.next())&&!o.done;){var u=o.value;n.call(t,u[0],u[1])}},matchAll:function(t,n){for(var o,i=[];null!==(o=t.exec(n));)i.push(o);return i},isHTMLForm:U,hasOwnProperty:_,hasOwnProp:_,reduceDescriptors:H,freezeMethods:function(t){H(t,(function(n,o){if(m(t)&&-1!==['arguments','caller','callee'].indexOf(o))return!1;var i=t[o];m(i)&&(n.enumerable=!1,'writable'in n?n.writable=!1:n.set||(n.set=function(){throw Error('Can not rewrite read-only method \''+o+'\'')}))}))},toObjectSet:function(t,n){var o={},i=function(t){t.forEach((function(t){o[t]=!0}))};return l(t)?i(t):i(String(t).split(n)),o},toCamelCase:function(t){return t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(t,n,o){return n.toUpperCase()+o}))},noop:function(){},toFiniteNumber:function(t,n){return null!=t&&Number.isFinite(t=+t)?t:n},findKey:D,global:M,isContextDefined:R,isSpecCompliantForm:function(t){return!!(t&&m(t.append)&&'FormData'===t[Symbol.toStringTag]&&t[Symbol.iterator])},toJSONObject:function(t){var n=new Array(10),o=function(t,i){if(O(t)){if(n.indexOf(t)>=0)return;if(!('toJSON'in t)){n[i]=t;var u=l(t)?[]:{};return T(t,(function(t,n){var a=o(t,i+1);!p(a)&&(u[n]=a)})),n[i]=void 0,u}}return t};return o(t,0)},isAsyncFn:J,isThenable:function(t){return t&&(O(t)||m(t))&&m(t.then)&&m(t.catch)},setImmediate:$,asap:W}}),798,[1,38,799]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,n){return function(){return t.apply(n,arguments)}}}),799,[]); +__d((function(g,r,_i,a,m,_e,d){'use strict';var t=r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=t(r(d[1])),l=t(r(d[2])),o=t(r(d[3])),n=t(r(d[4])),s=t(r(d[5])),u=t(r(d[6])),i=t(r(d[7])),f=t(r(d[8])),c=t(r(d[9])),h=t(r(d[10])),p=t(r(d[11])),v=h.default.validators,y=(function(){return(0,o.default)((function t(e){(0,l.default)(this,t),this.defaults=e,this.interceptors={request:new u.default,response:new u.default}}),[{key:"request",value:(t=(0,e.default)((function*(t,e){try{return yield this._request(t,e)}catch(t){if(t instanceof Error){var l={};Error.captureStackTrace?Error.captureStackTrace(l):l=new Error;var o=l.stack?l.stack.replace(/^.+\n/,''):'';try{t.stack?o&&!String(t.stack).endsWith(o.replace(/^.+\n.+\n/,''))&&(t.stack+='\n'+o):t.stack=o}catch(t){}}throw t}})),function(e,l){return t.apply(this,arguments)})},{key:"_request",value:function(t,e){'string'==typeof t?(e=e||{}).url=t:e=t||{};var l=e=(0,f.default)(this.defaults,e),o=l.transitional,s=l.paramsSerializer,u=l.headers;void 0!==o&&h.default.assertOptions(o,{silentJSONParsing:v.transitional(v.boolean),forcedJSONParsing:v.transitional(v.boolean),clarifyTimeoutError:v.transitional(v.boolean)},!1),null!=s&&(n.default.isFunction(s)?e.paramsSerializer={serialize:s}:h.default.assertOptions(s,{encode:v.function,serialize:v.function},!0)),void 0!==e.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?e.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:e.allowAbsoluteUrls=!0),h.default.assertOptions(e,{baseUrl:v.spelling('baseURL'),withXsrfToken:v.spelling('withXSRFToken')},!0),e.method=(e.method||this.defaults.method||'get').toLowerCase();var c=u&&n.default.merge(u.common,u[e.method]);u&&n.default.forEach(['delete','get','head','post','put','patch','common'],(function(t){delete u[t]})),e.headers=p.default.concat(c,u);var y=[],b=!0;this.interceptors.request.forEach((function(t){'function'==typeof t.runWhen&&!1===t.runWhen(e)||(b=b&&t.synchronous,y.unshift(t.fulfilled,t.rejected))}));var k,w=[];this.interceptors.response.forEach((function(t){w.push(t.fulfilled,t.rejected)}));var E,U=0;if(!b){var S=[i.default.bind(this),void 0];for(S.unshift.apply(S,y),S.push.apply(S,w),E=S.length,k=Promise.resolve(e);U-1,h=e.default.isObject(t);if(h&&e.default.isHTMLForm(t)&&(t=new FormData(t)),e.default.isFormData(t))return c?JSON.stringify((0,l.default)(t)):t;if(e.default.isArrayBuffer(t)||e.default.isBuffer(t)||e.default.isStream(t)||e.default.isFile(t)||e.default.isBlob(t)||e.default.isReadableStream(t))return t;if(e.default.isArrayBufferView(t))return t.buffer;if(e.default.isURLSearchParams(t))return n.setContentType('application/x-www-form-urlencoded;charset=utf-8',!1),t.toString();if(h){if(u.indexOf('application/x-www-form-urlencoded')>-1)return(0,o.default)(t,this.formSerializer).toString();if((f=e.default.isFileList(t))||u.indexOf('multipart/form-data')>-1){var S=this.env&&this.env.FormData;return(0,s.default)(f?{'files[]':t}:t,S&&new S,this.formSerializer)}}return h||c?(n.setContentType('application/json',!1),p(t)):t}],transformResponse:[function(t){var f=this.transitional||c.transitional,s=f&&f.forcedJSONParsing,o='json'===this.responseType;if(e.default.isResponse(t)||e.default.isReadableStream(t))return t;if(t&&e.default.isString(t)&&(s&&!this.responseType||o)){var u=!(f&&f.silentJSONParsing)&&o;try{return JSON.parse(t)}catch(t){if(u){if('SyntaxError'===t.name)throw n.default.from(t,n.default.ERR_BAD_RESPONSE,this,null,this.response);throw t}}}return t}],timeout:0,xsrfCookieName:'XSRF-TOKEN',xsrfHeaderName:'X-XSRF-TOKEN',maxContentLength:-1,maxBodyLength:-1,env:{FormData:u.default.classes.FormData,Blob:u.default.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:'application/json, text/plain, */*','Content-Type':void 0}}};e.default.forEach(['delete','get','head','post','put','patch'],(function(t){c.headers[t]={}}));_e.default=c}),809,[1,798,804,810,803,811,812,818]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1}}),810,[]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,f){return(0,u.default)(t,new n.default.classes.URLSearchParams,Object.assign({visitor:function(t,u,f,l){return n.default.isNode&&s.default.isBuffer(t)?(this.append(u,t.toString('base64')),!1):l.defaultVisitor.apply(this,arguments)}},f))};var s=t(r(d[1])),u=t(r(d[2])),n=t(r(d[3]))}),811,[1,798,803,812]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),r=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var u={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var o=a?Object.getOwnPropertyDescriptor(e,f):null;o&&(o.get||o.set)?Object.defineProperty(u,f,o):u[f]=e[f]}return u.default=e,r&&r.set(e,u),u})(_r(d[2]));function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}_e.default=Object.assign({},r,t.default)}),812,[1,813,817]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var l=t(r(d[1])),o=t(r(d[2])),s=t(r(d[3]));e.default={isBrowser:!0,classes:{URLSearchParams:l.default,FormData:o.default,Blob:s.default},protocols:['http','https','file','blob','url','data']}}),813,[1,814,815,816]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=t(r(d[1]));e.default='undefined'!=typeof URLSearchParams?URLSearchParams:u.default}),814,[1,802]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default='undefined'!=typeof FormData?FormData:null}),815,[]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;e.default='undefined'!=typeof Blob?Blob:null}),816,[]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.origin=e.navigator=e.hasStandardBrowserWebWorkerEnv=e.hasStandardBrowserEnv=e.hasBrowserEnv=void 0;var o=e.hasBrowserEnv='undefined'!=typeof window&&'undefined'!=typeof document,n=e.navigator='object'==typeof navigator&&navigator||void 0;e.hasStandardBrowserEnv=o&&(!n||['ReactNative','NativeScript','NS'].indexOf(n.product)<0),e.hasStandardBrowserWebWorkerEnv='undefined'!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&'function'==typeof self.importScripts,e.origin=o&&window.location.href||'http://localhost'}),817,[]); +__d((function(g,r,_i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(r(d[1]));function u(t){return n.default.matchAll(/\w+|\[(\w*)]/g,t).map((function(t){return'[]'===t[0]?'':t[1]||t[0]}))}function f(t){var n,u,f={},i=Object.keys(t),l=i.length;for(n=0;n=t.length;return c=!c&&n.default.isArray(l)?l.length:c,v?(n.default.hasOwnProp(l,c)?l[c]=[l[c],u]:l[c]=u,!s):(l[c]&&n.default.isObject(l[c])||(l[c]=[]),i(t,u,l[c],o)&&n.default.isArray(l[c])&&(l[c]=f(l[c])),!s)}if(n.default.isFormData(t)&&n.default.isFunction(t.entries)){var l={};return n.default.forEachEntry(t,(function(t,n){i(u(t),n,l,0)})),l}return null}}),818,[1,798]); +__d((function(g,r,_i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(r(d[1])),i=t(r(d[2])),u=t(r(d[3])),o=t(r(d[4])),f=t(r(d[5])),s=Symbol('internals');function c(t){return t&&String(t).trim().toLowerCase()}function l(t){return!1===t||null==t?t:o.default.isArray(t)?t.map(l):String(t)}function h(t){for(var n,i=Object.create(null),u=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;n=u.exec(t);)i[n[1]]=n[2];return i}function v(t,n,i,u,f){return o.default.isFunction(u)?u.call(this,n,i):(f&&(n=i),o.default.isString(n)?o.default.isString(u)?-1!==n.indexOf(u):o.default.isRegExp(u)?u.test(n):void 0:void 0)}function y(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(t,n,i){return n.toUpperCase()+i}))}function p(t,n){var i=o.default.toCamelCase(' '+n);['get','set','has'].forEach((function(u){Object.defineProperty(t,u+i,{value:function(t,i,o){return this[u].call(this,n,t,i,o)},configurable:!0})}))}var b=(function(){return(0,u.default)((function t(n){(0,i.default)(this,t),n&&this.set(n)}),[{key:"set",value:function(t,i,u){var s=this;function h(t,n,i){var u=c(n);if(!u)throw new Error('header name must be a non-empty string');var f=o.default.findKey(s,u);(!f||void 0===s[f]||!0===i||void 0===i&&!1!==s[f])&&(s[f||n]=l(t))}var v=function(t,n){return o.default.forEach(t,(function(t,i){return h(t,i,n)}))};if(o.default.isPlainObject(t)||t instanceof this.constructor)v(t,i);else if(o.default.isString(t)&&(t=t.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim()))v((0,f.default)(t),i);else if(o.default.isHeaders(t))for(var y of t.entries()){var p=(0,n.default)(y,2),b=p[0];h(p[1],b,u)}else null!=t&&h(i,t,u);return this}},{key:"get",value:function(t,n){if(t=c(t)){var i=o.default.findKey(this,t);if(i){var u=this[i];if(!n)return u;if(!0===n)return h(u);if(o.default.isFunction(n))return n.call(this,u,i);if(o.default.isRegExp(n))return n.exec(u);throw new TypeError('parser must be boolean|regexp|function')}}}},{key:"has",value:function(t,n){if(t=c(t)){var i=o.default.findKey(this,t);return!(!i||void 0===this[i]||n&&!v(0,this[i],i,n))}return!1}},{key:"delete",value:function(t,n){var i=this,u=!1;function f(t){if(t=c(t)){var f=o.default.findKey(i,t);!f||n&&!v(0,i[f],f,n)||(delete i[f],u=!0)}}return o.default.isArray(t)?t.forEach(f):f(t),u}},{key:"clear",value:function(t){for(var n=Object.keys(this),i=n.length,u=!1;i--;){var o=n[i];t&&!v(0,this[o],o,t,!0)||(delete this[o],u=!0)}return u}},{key:"normalize",value:function(t){var n=this,i={};return o.default.forEach(this,(function(u,f){var s=o.default.findKey(i,f);if(s)return n[s]=l(u),void delete n[f];var c=t?y(f):String(f).trim();c!==f&&delete n[f],n[c]=l(u),i[c]=!0})),this}},{key:"concat",value:function(){for(var t,n=arguments.length,i=new Array(n),u=0;u1?i-1:0),o=1;o1?'since :\n'+b.map(c).join('\n'):' '+c(b[0]):'as no adapter specified';throw new f.default("There is no suitable adapter to dispatch the request "+w,'ERR_NOT_SUPPORT')}return u},adapters:l}}),823,[1,38,798,805,824,837,804]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(r(d[1])),o=t(r(d[2])),s=t(r(d[3])),u=t(r(d[4])),l=t(r(d[5])),f=t(r(d[6])),c=t(r(d[7])),p=t(r(d[8])),E=t(r(d[9])),v=t(r(d[10])),T='undefined'!=typeof XMLHttpRequest;e.default=T&&function(t){return new Promise((function(T,R){var w,b,y,O,L,h=(0,v.default)(t),x=h.data,U=E.default.from(h.headers).normalize(),C=h.responseType,N=h.onUploadProgress,_=h.onDownloadProgress;function k(){O&&O(),L&&L(),h.cancelToken&&h.cancelToken.unsubscribe(w),h.signal&&h.signal.removeEventListener('abort',w)}var q=new XMLHttpRequest;function H(){if(q){var n=E.default.from('getAllResponseHeaders'in q&&q.getAllResponseHeaders()),o={data:C&&'text'!==C&&'json'!==C?q.response:q.responseText,status:q.status,statusText:q.statusText,headers:n,config:t,request:q};(0,s.default)((function(t){T(t),k()}),(function(t){R(t),k()}),o),q=null}}if(q.open(h.method.toUpperCase(),h.url,!0),q.timeout=h.timeout,'onloadend'in q?q.onloadend=H:q.onreadystatechange=function(){q&&4===q.readyState&&(0!==q.status||q.responseURL&&0===q.responseURL.indexOf('file:'))&&setTimeout(H)},q.onabort=function(){q&&(R(new l.default('Request aborted',l.default.ECONNABORTED,t,q)),q=null)},q.onerror=function(){R(new l.default('Network Error',l.default.ERR_NETWORK,t,q)),q=null},q.ontimeout=function(){var n=h.timeout?'timeout of '+h.timeout+'ms exceeded':'timeout exceeded',o=h.transitional||u.default;h.timeoutErrorMessage&&(n=h.timeoutErrorMessage),R(new l.default(n,o.clarifyTimeoutError?l.default.ETIMEDOUT:l.default.ECONNABORTED,t,q)),q=null},void 0===x&&U.setContentType(null),'setRequestHeader'in q&&o.default.forEach(U.toJSON(),(function(t,n){q.setRequestHeader(n,t)})),o.default.isUndefined(h.withCredentials)||(q.withCredentials=!!h.withCredentials),C&&'json'!==C&&(q.responseType=h.responseType),_){var M=(0,r(d[11]).progressEventReducer)(_,!0),A=(0,n.default)(M,2);y=A[0],L=A[1],q.addEventListener('progress',y)}if(N&&q.upload){var D=(0,r(d[11]).progressEventReducer)(N),P=(0,n.default)(D,2);b=P[0],O=P[1],q.upload.addEventListener('progress',b),q.upload.addEventListener('loadend',O)}(h.cancelToken||h.signal)&&(w=function(n){q&&(R(!n||n.type?new f.default(null,t,q):n),q.abort(),q=null)},h.cancelToken&&h.cancelToken.subscribe(w),h.signal&&(h.signal.aborted?w():h.signal.addEventListener('abort',w)));var j=(0,c.default)(h.url);j&&-1===p.default.protocols.indexOf(j)?R(new l.default('Unsupported protocol '+j+':',l.default.ERR_BAD_REQUEST,t)):q.send(x||null)}))}}),824,[1,38,798,825,810,804,822,826,812,819,827,834]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,s,f){var l=f.config.validateStatus;f.status&&l&&!l(f.status)?s(new u.default('Request failed with status code '+f.status,[u.default.ERR_BAD_REQUEST,u.default.ERR_BAD_RESPONSE][Math.floor(f.status/100)-4],f.config,f.request,f)):t(f)};var u=t(r(d[1]))}),825,[1,804]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var u=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return u&&u[1]||''}}),826,[]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=t(r(d[1])),n=t(r(d[2])),s=t(r(d[3])),u=t(r(d[4])),l=t(r(d[5])),f=t(r(d[6])),p=t(r(d[7])),c=t(r(d[8])),v=t(r(d[9])),h=t(r(d[10]));e.default=function(t){var w,b=(0,c.default)({},t),B=b.data,C=b.withXSRFToken,S=b.xsrfHeaderName,y=b.xsrfCookieName,T=b.headers,_=b.auth;if(b.headers=T=v.default.from(T),b.url=(0,h.default)((0,p.default)(b.baseURL,b.url,b.allowAbsoluteUrls),t.params,t.paramsSerializer),_&&T.set('Authorization','Basic '+btoa((_.username||'')+':'+(_.password?unescape(encodeURIComponent(_.password)):''))),u.default.isFormData(B))if(s.default.hasStandardBrowserEnv||s.default.hasStandardBrowserWebWorkerEnv)T.setContentType(void 0);else if(!1!==(w=T.getContentType())){var k=w?w.split(';').map((function(t){return t.trim()})).filter(Boolean):[],E=(0,n.default)(k),F=E[0],R=E.slice(1);T.setContentType([F||'multipart/form-data'].concat((0,o.default)(R)).join('; '))}if(s.default.hasStandardBrowserEnv&&(C&&u.default.isFunction(C)&&(C=C(b)),C||!1!==C&&(0,l.default)(b.url))){var U=S&&y&&f.default.read(y);U&&T.set(S,U)}return b}}),827,[1,6,242,812,798,828,829,830,833,819,801]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o,n,u=t(r(d[1]));e.default=u.default.hasStandardBrowserEnv?(o=new URL(u.default.origin),n=u.default.navigator&&/(msie|trident)/i.test(u.default.navigator.userAgent),function(t){return t=new URL(t,u.default.origin),o.protocol===t.protocol&&o.host===t.host&&(n||o.port===t.port)}):function(){return!0}}),828,[1,812]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=n(r(d[1])),o=n(r(d[2]));e.default=o.default.hasStandardBrowserEnv?{write:function(n,o,u,c,f,s){var l=[n+'='+encodeURIComponent(o)];t.default.isNumber(u)&&l.push('expires='+new Date(u).toGMTString()),t.default.isString(c)&&l.push('path='+c),t.default.isString(f)&&l.push('domain='+f),!0===s&&l.push('secure'),document.cookie=l.join('; ')},read:function(n){var t=document.cookie.match(new RegExp('(^|;\\s*)('+n+')=([^;]*)'));return t?decodeURIComponent(t[3]):null},remove:function(n){this.write(n,'',Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}}),829,[1,798,812]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,n,l){var c=!(0,u.default)(n);if(t&&(c||0==l))return(0,f.default)(t,n);return n};var u=t(r(d[1])),f=t(r(d[2]))}),830,[1,831,832]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}}),831,[]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,u){return u?t.replace(/\/?\/$/,'')+'/'+u.replace(/^\/+/,''):t}}),832,[]); +__d((function(g,r,i,_a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,a){a=a||{};var o={};function u(t,a,s,o){return n.default.isPlainObject(t)&&n.default.isPlainObject(a)?n.default.merge.call({caseless:o},t,a):n.default.isPlainObject(a)?n.default.merge({},a):n.default.isArray(a)?a.slice():a}function f(t,a,s,o){return n.default.isUndefined(a)?n.default.isUndefined(t)?void 0:u(void 0,t,0,o):u(t,a,0,o)}function l(t,a){if(!n.default.isUndefined(a))return u(void 0,a)}function c(t,a){return n.default.isUndefined(a)?n.default.isUndefined(t)?void 0:u(void 0,t):u(void 0,a)}function v(n,s,o){return o in a?u(n,s):o in t?u(void 0,n):void 0}var p={url:l,method:l,data:l,baseURL:c,transformRequest:c,transformResponse:c,paramsSerializer:c,timeout:c,timeoutMessage:c,withCredentials:c,withXSRFToken:c,adapter:c,responseType:c,xsrfCookieName:c,xsrfHeaderName:c,onUploadProgress:c,onDownloadProgress:c,decompress:c,maxContentLength:c,maxBodyLength:c,beforeRedirect:c,transport:c,httpAgent:c,httpsAgent:c,cancelToken:c,socketPath:c,responseEncoding:c,validateStatus:v,headers:function(t,n,a){return f(s(t),s(n),0,!0)}};return n.default.forEach(Object.keys(Object.assign({},t,a)),(function(s){var u=p[s]||f,l=u(t[s],a[s],s);n.default.isUndefined(l)&&u!==v||(o[s]=l)})),o};var n=t(r(d[1])),a=t(r(d[2])),s=function(t){return t instanceof a.default?Object.assign({},t):t}}),833,[1,798,819]); +__d((function(g,r,i,a,m,_e,d){var e=r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.progressEventReducer=_e.progressEventDecorator=_e.asyncDecorator=void 0;var t=e(r(d[1])),o=e(r(d[2])),n=e(r(d[3])),u=e(r(d[4]));_e.progressEventReducer=function(e,u){var l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3,v=0,c=(0,o.default)(50,250);return(0,n.default)((function(o){var n=o.loaded,l=o.lengthComputable?o.total:void 0,s=n-v,f=c(s),p=n<=l;v=n;var y=(0,t.default)({loaded:n,total:l,progress:l?n/l:void 0,bytes:s,rate:f||void 0,estimated:f&&l&&p?(l-n)/f:void 0,event:o,lengthComputable:null!=l},u?'download':'upload',!0);e(y)}),l)},_e.progressEventDecorator=function(e,t){var o=null!=e;return[function(n){return t[0]({lengthComputable:o,total:e,loaded:n})},t[1]]},_e.asyncDecorator=function(e){return function(){for(var t=arguments.length,o=new Array(t),n=0;n1&&void 0!==arguments[1]?arguments[1]:Date.now();o=f,u=null,l&&(clearTimeout(l),l=null),n.apply(null,t)};return[function(){for(var n=Date.now(),t=n-o,v=arguments.length,_=new Array(v),p=0;p=f?c(_,n):(u=_,l||(l=setTimeout((function(){l=null,c(u)}),f-t)))},function(){return u&&c(u)}]}}),836,[]); +__d((function(g,r,i,a,m,_e,d){var e=r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t,n,o=e(r(d[1])),u=e(r(d[2])),s=e(r(d[3])),f=e(r(d[4])),l=e(r(d[5])),c=e(r(d[6])),y=e(r(d[7])),p=e(r(d[8])),h=e(r(d[9])),v='function'==typeof fetch&&'function'==typeof Request&&'function'==typeof Response,b=v&&'function'==typeof ReadableStream,R=v&&('function'==typeof TextEncoder?(t=new TextEncoder,function(e){return t.encode(e)}):(function(){var e=(0,u.default)((function*(e){return new Uint8Array(yield new Response(e).arrayBuffer())}));return function(t){return e.apply(this,arguments)}})()),w=function(e){try{for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o0;){var l=u[f],s=o[l];if(s){var c=n[l],v=void 0===c||s(c,l,n);if(!0!==v)throw new t.default('option '+l+' must be '+v,t.default.ERR_BAD_OPTION_VALUE)}else if(!0!==i)throw new t.default('Unknown option '+l,t.default.ERR_BAD_OPTION)}},validators:o}}),844,[1,804,845]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.VERSION=void 0;e.VERSION="1.8.4"}),845,[]); +__d((function(g,r,_i,a,m,e,d){'use strict';var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=n(r(d[1])),s=n(r(d[2])),i=n(r(d[3])),u=(function(){function n(s){if((0,t.default)(this,n),'function'!=typeof s)throw new TypeError('executor must be a function.');var u;this.promise=new Promise((function(n){u=n}));var o=this;this.promise.then((function(n){if(o._listeners){for(var t=o._listeners.length;t-- >0;)o._listeners[t](n);o._listeners=null}})),this.promise.then=function(n){var t,s=new Promise((function(n){o.subscribe(n),t=n})).then(n);return s.cancel=function(){o.unsubscribe(t)},s},s((function(n,t,s){o.reason||(o.reason=new i.default(n,t,s),u(o.reason))}))}return(0,s.default)(n,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(n){this.reason?n(this.reason):this._listeners?this._listeners.push(n):this._listeners=[n]}},{key:"unsubscribe",value:function(n){if(this._listeners){var t=this._listeners.indexOf(n);-1!==t&&this._listeners.splice(t,1)}}},{key:"toAbortSignal",value:function(){var n=this,t=new AbortController,s=function(n){t.abort(n)};return this.subscribe(s),t.signal.unsubscribe=function(){return n.unsubscribe(s)},t.signal}}],[{key:"source",value:function(){var t;return{token:new n((function(n){t=n})),cancel:t}}}])})();e.default=u}),846,[1,12,13,822]); +__d((function(g,r,i,a,m,e,d){'use strict';Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(n){return function(t){return n.apply(null,t)}}}),847,[]); +__d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){return u.default.isObject(t)&&!0===t.isAxiosError};var u=t(r(d[1]))}),848,[1,798]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=t(r(d[1])),n={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(n).forEach((function(t){var u=(0,o.default)(t,2),l=u[0],s=u[1];n[s]=l}));e.default=n}),849,[1,38]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),r=e(_r(d[2])),n=_r(d[3]),a=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=o(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&{}.hasOwnProperty.call(e,s)){var l=a?Object.getOwnPropertyDescriptor(e,s):null;l&&(l.get||l.set)?Object.defineProperty(n,s,l):n[s]=e[s]}return n.default=e,r&&r.set(e,n),n})(_r(d[4])),s=e(_r(d[5])),l=e(_r(d[6]));function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(o=function(e){return e?r:t})(e)}_e.default=function(e){var o=e.navigation,i=(e.route,(0,a.useState)(!1)),c=(0,r.default)(i,2),u=c[0],f=c[1],x=(0,a.useState)({}),b=(0,r.default)(x,2),h=b[0],p=b[1],y=(0,a.useRef)(null),F=(0,a.useState)(null),j=(0,r.default)(F,2),w=j[0],N=j[1],E=(0,_r(d[7]).useSettingsContext)(),T=E.language,O=E.darkmode,B=(function(){var e=(0,t.default)((function*(){if(!(h.username&&h.email&&h.password&&h.phoneNumber&&h.nationality))return n.Alert.alert("Missing data");if(w!==h.password)return n.Alert.alert("Passwords do not match");try{yield(0,_r(d[8]).register)(Object.assign({},h,{image:"null.jpg"})),n.Alert.alert(_r(d[9]).translations[T||"en-EN"].screens.Register.success,_r(d[9]).translations[T||"en-EN"].screens.Register.successMessage)}catch(e){n.Alert.alert("Error",e.response.data)}}));return function(){return e.apply(this,arguments)}})();return(0,_r(d[10]).jsx)(n.View,{className:`flex-1 ${(0,_r(d[11]).cardBgColor)(O)} justify-center items-center`,children:(0,_r(d[10]).jsxs)(n.View,{className:"justify-evenly bg-white rounded-2xl w-96",style:{height:700},children:[(0,_r(d[10]).jsxs)(n.View,{className:"m-10",children:[(0,_r(d[10]).jsx)(l.default,{label:_r(d[9]).translations[T||"en-EN"].screens.Register.username,name:h.username,setText:function(e){return p(Object.assign({},h,{username:e}))},mode:"text"}),(0,_r(d[10]).jsx)(l.default,{label:_r(d[9]).translations[T||"en-EN"].screens.Login.email,name:h.email,setText:function(e){return p(Object.assign({},h,{email:e}))},mode:"email"}),(0,_r(d[10]).jsx)(l.default,{label:_r(d[9]).translations[T||"en-EN"].screens.ProfileForm.nationality,name:h.nationality,setText:function(e){return p(Object.assign({},h,{nationality:e}))},mode:"text"}),(0,_r(d[10]).jsx)(n.View,{className:"mb-5 rounded-lg border-2 "+(O?"bg-[#4B294F] border-[#B28DFF]":"bg-[#F8F7FE] border-[#4B0082]"),children:(0,_r(d[10]).jsx)(s.default,{ref:y,defaultCode:"ES",layout:"first",containerStyle:{width:"100%",height:50,backgroundColor:O?"#4B294F":"#F8F7FE",borderRadius:8},textContainerStyle:{backgroundColor:O?"#4B294F":"#F8F7FE",borderRadius:8},textInputStyle:{color:O?"white":"black",fontSize:16,height:50,paddingVertical:0},codeTextStyle:{color:O?"white":"black",fontSize:16},onChangeFormattedText:function(e){return p(Object.assign({},h,{phoneNumber:e}))}})}),(0,_r(d[10]).jsx)(n.TextInput,{placeholder:_r(d[9]).translations[T||"en-EN"].screens.Login.password,placeholderTextColor:""+(O?"#E0D3F5":"#4B0082"),secureTextEntry:!u,className:"text-lg mb-5 pl-3 rounded-lg border-2 "+(O?"bg-[#4B294F] text-white border-[#B28DFF]":"bg-[#F8F7FE] text-black border-[#4B0082]"),onChangeText:function(e){return p(Object.assign({},h,{password:e}))}}),(0,_r(d[10]).jsx)(n.TextInput,{placeholder:_r(d[9]).translations[T||"en-EN"].screens.Register.confirmPassword,placeholderTextColor:""+(O?"#E0D3F5":"#4B0082"),secureTextEntry:!u,className:"text-lg mb-5 pl-3 rounded-lg border-2 "+(O?"bg-[#4B294F] text-white border-[#B28DFF]":"bg-[#F8F7FE] text-black border-[#4B0082]"),onChangeText:function(e){return N(e)}}),(0,_r(d[10]).jsx)(n.TouchableOpacity,{onPress:function(){return f(!u)},children:(0,_r(d[10]).jsx)(n.Text,{className:"text-[#4B0082] font-bold text-lg",style:{fontFamily:"Lexend-Regular"},children:u?"Hide":"Show"})})]}),(0,_r(d[10]).jsxs)(n.View,{className:"mx-8",children:[(0,_r(d[10]).jsx)(n.TouchableOpacity,{onPress:B,className:"bg-[#F65261] rounded-lg py-3 mb-5",children:(0,_r(d[10]).jsx)(n.Text,{className:"text-white font-bold text-xl text-center",children:_r(d[9]).translations[T||"en-EN"].screens.Login.register})}),(0,_r(d[10]).jsx)(n.TouchableOpacity,{onPress:function(){return(0,_r(d[11]).resetNavigation)(o,"Login")},className:"border-[#F65261] border-2 rounded-lg py-1",children:(0,_r(d[10]).jsx)(n.Text,{className:"text-[#7D3C98] font-bold text-lg text-center",children:_r(d[9]).translations[T||"en-EN"].screens.Login.login})})]})]})})}}),850,[1,564,38,2,178,851,786,787,896,789,223,788]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.isValidNumber=_e.default=void 0;var t=e(_r(d[1])),r=e(_r(d[2])),n=e(_r(d[3])),a=e(_r(d[4])),o=e(_r(d[5])),u=e(_r(d[6])),l=p(_r(d[7])),i=_r(d[8]),s=p(_r(d[9])),c=e(_r(d[10]));function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(f=function(e){return e?r:t})(e)}function p(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=f(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var u=a?Object.getOwnPropertyDescriptor(e,o):null;u&&(u.get||u.set)?Object.defineProperty(n,o,u):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}function y(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(y=function(){return!!e})()}var b=_r(d[11]).PhoneNumberUtil.getInstance();_e.default=(function(e){function f(e){var t,n,u,l;return(0,r.default)(this,f),n=this,u=f,l=[e],u=(0,o.default)(u),(t=(0,a.default)(n,y()?Reflect.construct(u,l||[],(0,o.default)(n).constructor):u.apply(n,l))).getCountryCode=function(){return t.state.countryCode},t.getCallingCode=function(){return t.state.code},t.isValidNumber=function(e){try{var r=t.state.countryCode,n=b.parse(e,r);return b.isValidNumber(n)}catch(e){return!1}},t.onSelect=function(e){var r=t.props.onChangeCountry;t.setState({countryCode:e.cca2,code:e.callingCode[0]},(function(){var r=t.props.onChangeFormattedText;r&&(e.callingCode[0]?r(`+${e.callingCode[0]}${t.state.number}`):r(t.state.number))})),r&&r(e)},t.onChangeText=function(e){t.setState({number:e});var r=t.props,n=r.onChangeText,a=r.onChangeFormattedText;if(n&&n(e),a){var o=t.state.code;a(o&&e.length>0?`+${o}${e}`:e)}},t.renderDropdownImage=function(){return(0,_r(d[12]).jsx)(i.Image,{source:{uri:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAi0lEQVRYR+3WuQ6AIBRE0eHL1T83FBqU5S1szdiY2NyTKcCAzU/Y3AcBXIALcIF0gRPAsehgugDEXnYQrUC88RIgfpuJ+MRrgFmILN4CjEYU4xJgFKIa1wB6Ec24FuBFiHELwIpQxa0ALUId9wAkhCnuBdQQ5ngP4I9wxXsBDyJ9m+8y/g9wAS7ABW4giBshQZji3AAAAABJRU5ErkJggg=="},resizeMode:"contain",style:c.default.dropDownImage})},t.renderFlagButton=function(e){var r=t.props,n=r.layout,a=void 0===n?"first":n,o=r.flagSize,u=t.state.countryCode;return"first"===a?(0,_r(d[12]).jsx)(s.Flag,{countryCode:u,flagSize:o||s.DEFAULT_THEME.flagSize}):(0,_r(d[12]).jsx)(i.View,{})},t.state={code:e.defaultCode?void 0:"91",number:e.value?e.value:e.defaultValue?e.defaultValue:"",modalVisible:!1,countryCode:e.defaultCode?e.defaultCode:"IN",disabled:e.disabled||!1},t}return(0,u.default)(f,e),(0,n.default)(f,[{key:"componentDidMount",value:(p=(0,t.default)((function*(){var e=this.props.defaultCode;if(e){var t=yield(0,s.getCallingCode)(e);this.setState({code:t})}})),function(){return p.apply(this,arguments)})},{key:"getNumberAfterPossiblyEliminatingZero",value:function(){var e=this.state,t=e.number,r=e.code;return t.length>0&&t.startsWith("0")?{number:t=t.substr(1),formattedNumber:r?`+${r}${t}`:t}:{number:t,formattedNumber:r?`+${r}${t}`:t}}},{key:"render",value:function(){var e=this,t=this.props,r=t.withShadow,n=t.withDarkTheme,a=t.codeTextStyle,o=t.textInputProps,u=t.textInputStyle,f=t.autoFocus,p=t.placeholder,y=t.disableArrowIcon,b=t.flagButtonStyle,h=t.containerStyle,v=t.textContainerStyle,C=t.renderDropdownImage,A=t.countryPickerProps,x=void 0===A?{}:A,w=t.filterProps,j=void 0===w?{}:w,T=t.countryPickerButtonStyle,S=t.layout,B=void 0===S?"first":S,P=this.state,F=P.modalVisible,I=P.code,E=P.countryCode,V=P.number,k=P.disabled;return(0,_r(d[12]).jsx)(s.CountryModalProvider,{children:(0,_r(d[12]).jsxs)(i.View,{style:[c.default.container,r?c.default.shadow:{},h||{}],children:[(0,_r(d[12]).jsxs)(i.TouchableOpacity,{style:[c.default.flagButtonView,"second"===B?c.default.flagButtonExtraWidth:{},b||{},T||{}],disabled:k,onPress:function(){return e.setState({modalVisible:!0})},children:[(0,_r(d[12]).jsx)(s.default,Object.assign({onSelect:this.onSelect,withEmoji:!0,withFilter:!0,withFlag:!0,filterProps:j,countryCode:E,withCallingCode:!0,disableNativeModal:k,visible:F,theme:n?s.DARK_THEME:s.DEFAULT_THEME,renderFlagButton:this.renderFlagButton,onClose:function(){return e.setState({modalVisible:!1})}},x)),I&&"second"===B&&(0,_r(d[12]).jsx)(i.Text,{style:[c.default.codeText,a||{}],children:`+${I}`}),!y&&(0,_r(d[12]).jsx)(l.default.Fragment,{children:C||this.renderDropdownImage()})]}),(0,_r(d[12]).jsxs)(i.View,{style:[c.default.textContainer,v||{}],children:[I&&"first"===B&&(0,_r(d[12]).jsx)(i.Text,{style:[c.default.codeText,a||{}],children:`+${I}`}),(0,_r(d[12]).jsx)(i.TextInput,Object.assign({style:[c.default.numberText,u||{}],placeholder:p||"Phone Number",onChangeText:this.onChangeText,value:V,editable:!k,selectionColor:"black",keyboardAppearance:n?"dark":"default",keyboardType:"number-pad",autoFocus:f},o))]})]})})}}],[{key:"getDerivedStateFromProps",value:function(e,t){return e.disabled!==t.disabled?!e.value&&""!==e.value||e.value===t.number?{disabled:e.disabled}:{disabled:e.disabled,number:e.value}:null}}]);var p})(l.PureComponent),_e.isValidNumber=function(e,t){try{var r=b.parse(e,t);return b.isValidNumber(r)}catch(e){return!1}}}),851,[1,564,12,13,23,25,28,178,2,852,894,895,223]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0});var t={DARK_THEME:!0,DEFAULT_THEME:!0,getAllCountries:!0,getCallingCode:!0,CountryModal:!0,CountryFilter:!0,CountryList:!0,FlagButton:!0,Flag:!0,HeaderModal:!0,CountryModalProvider:!0};Object.defineProperty(_e,"CountryFilter",{enumerable:!0,get:function(){return _r(d[1]).CountryFilter}}),Object.defineProperty(_e,"CountryList",{enumerable:!0,get:function(){return _r(d[2]).CountryList}}),Object.defineProperty(_e,"CountryModal",{enumerable:!0,get:function(){return _r(d[3]).CountryModal}}),Object.defineProperty(_e,"CountryModalProvider",{enumerable:!0,get:function(){return _r(d[4]).CountryModalProvider}}),Object.defineProperty(_e,"DARK_THEME",{enumerable:!0,get:function(){return _r(d[5]).DARK_THEME}}),Object.defineProperty(_e,"DEFAULT_THEME",{enumerable:!0,get:function(){return _r(d[5]).DEFAULT_THEME}}),Object.defineProperty(_e,"Flag",{enumerable:!0,get:function(){return _r(d[6]).Flag}}),Object.defineProperty(_e,"FlagButton",{enumerable:!0,get:function(){return _r(d[7]).FlagButton}}),Object.defineProperty(_e,"HeaderModal",{enumerable:!0,get:function(){return _r(d[8]).HeaderModal}}),_e.default=void 0,Object.defineProperty(_e,"getAllCountries",{enumerable:!0,get:function(){return _r(d[9]).getCountriesAsync}}),Object.defineProperty(_e,"getCallingCode",{enumerable:!0,get:function(){return _r(d[9]).getCountryCallingCodeAsync}});var r=e(_r(d[10])),n=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=u(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n})(_r(d[11]));e(_r(d[12]));Object.keys(_r(d[13])).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(t,e)||e in _e&&_e[e]===_r(d[13])[e]||Object.defineProperty(_e,e,{enumerable:!0,get:function(){return _r(d[13])[e]}}))}));var o=["theme","translation"];function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(u=function(e){return e?r:t})(e)}var a=function(e){var t=e.theme,u=e.translation,a=(0,r.default)(e,o);return n.createInteropElement(_r(d[5]).ThemeProvider,{theme:Object.assign({},_r(d[5]).DEFAULT_THEME,t)},n.createInteropElement(_r(d[14]).CountryProvider,{value:Object.assign({},_r(d[14]).DEFAULT_COUNTRY_CONTEXT,{translation:u})},n.createInteropElement(_r(d[15]).CountryPicker,Object.assign({},a))))};a.defaultProps={onSelect:function(){},withEmoji:!0};_e.default=a}),852,[1,853,865,880,881,858,867,884,885,869,134,854,178,871,868,893]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.CountryFilter=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var a=l?Object.getOwnPropertyDescriptor(e,u):null;a&&(a.get||a.set)?Object.defineProperty(o,u,a):o[u]=e[u]}return o.default=e,r&&r.set(e,o),o})(_r(d[1])),r=(e(_r(d[2])),_r(d[3]));function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}var o=r.StyleSheet.create({input:Object.assign({height:48,width:'70%'},r.Platform.select({web:{outlineWidth:0,outlineColor:'transparent',outlineOffset:0}}))});(_e.CountryFilter=function(e){var n=(0,_r(d[4]).useTheme)(),l=n.filterPlaceholderTextColor,u=n.fontFamily,a=n.fontSize,i=n.onBackgroundTextColor;return t.createInteropElement(r.TextInput,Object.assign({testID:"text-input-country-filter",autoCorrect:!1,placeholderTextColor:l,style:[o.input,{fontFamily:u,fontSize:a,color:i}]},e))}).defaultProps={autoFocus:!1,placeholder:'Enter country name'}}),853,[1,854,178,2,858]); +__d((function(g,r,i,a,_m,e,d){"use strict";var t=this&&this.__createBinding||(Object.create?function(t,n,o,u){void 0===u&&(u=o);var c=Object.getOwnPropertyDescriptor(n,o);c&&!("get"in c?!n.__esModule:c.writable||c.configurable)||(c={enumerable:!0,get:function(){return n[o]}}),Object.defineProperty(t,u,c)}:function(t,n,o,u){void 0===u&&(u=o),t[u]=n[o]}),n=this&&this.__exportStar||function(n,o){for(var u in n)"default"===u||Object.prototype.hasOwnProperty.call(o,u)||t(o,n,u)},o=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.vars=e.useUnstableNativeVariable=e.useSafeAreaEnv=e.useColorScheme=e.remapProps=e.rem=e.cssInterop=e.createInteropElement=e.colorScheme=e.StyleSheet=e.wrapJSX=e.createElement=void 0;var u=r(d[0]);Object.defineProperty(e,"createElement",{enumerable:!0,get:function(){return u.createElement}}),Object.defineProperty(e,"wrapJSX",{enumerable:!0,get:function(){return o(r(d[1])).default}}),n(r(d[2]),e),Object.defineProperty(e,"StyleSheet",{enumerable:!0,get:function(){return r(d[3]).StyleSheet}}),Object.defineProperty(e,"colorScheme",{enumerable:!0,get:function(){return r(d[3]).colorScheme}}),Object.defineProperty(e,"createInteropElement",{enumerable:!0,get:function(){return r(d[3]).createInteropElement}}),Object.defineProperty(e,"cssInterop",{enumerable:!0,get:function(){return r(d[3]).cssInterop}}),Object.defineProperty(e,"rem",{enumerable:!0,get:function(){return r(d[3]).rem}}),Object.defineProperty(e,"remapProps",{enumerable:!0,get:function(){return r(d[3]).remapProps}}),Object.defineProperty(e,"useColorScheme",{enumerable:!0,get:function(){return r(d[3]).useColorScheme}}),Object.defineProperty(e,"useSafeAreaEnv",{enumerable:!0,get:function(){return r(d[3]).useSafeAreaEnv}}),Object.defineProperty(e,"useUnstableNativeVariable",{enumerable:!0,get:function(){return r(d[3]).useUnstableNativeVariable}}),Object.defineProperty(e,"vars",{enumerable:!0,get:function(){return r(d[3]).vars}})}),854,[178,226,855,857]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.verifyJSX=function(){return!0===r(d[0]).jsx("react-native-css-interop-jsx-pragma-check",{})},e.verifyData=function(){if(!1===r(d[1]))throw new Error("Your 'metro.config.js' has overridden the 'config.resolver.resolveRequest' config setting in a non-composable manner. Your styles will not work until this issue is resolved. Note that 'require('metro-config').mergeConfig' is a shallow merge and does not compose existing resolveRequest functions together.");return r(d[2]).flags.has("enabled")},e.verifyFlag=function(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"true";return r(d[2]).flags.get(t)===o}}),855,[223,856,234]); +__d((function(g,r,i,a,m,e,d){}),856,[]); +__d((function(g,r,i,a,_m,e,d){"use strict";var t=this&&this.__createBinding||(Object.create?function(t,n,o,c){void 0===c&&(c=o);var u=Object.getOwnPropertyDescriptor(n,o);u&&!("get"in u?!n.__esModule:u.writable||u.configurable)||(u={enumerable:!0,get:function(){return n[o]}}),Object.defineProperty(t,c,u)}:function(t,n,o,c){void 0===c&&(c=o),t[c]=n[o]}),n=this&&this.__exportStar||function(n,o){for(var c in n)"default"===c||Object.prototype.hasOwnProperty.call(o,c)||t(o,n,c)};Object.defineProperty(e,"__esModule",{value:!0}),e.createInteropElement=void 0,n(r(d[0]),e),Object.defineProperty(e,"createInteropElement",{enumerable:!0,get:function(){return r(d[1]).createInteropElement}})}),857,[229,223]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.useTheme=e.ThemeProvider=e.DEFAULT_THEME=e.DARK_THEME=void 0;var o=r(d[0]),t=e.DEFAULT_THEME={primaryColor:'#ccc',primaryColorVariant:'#eee',backgroundColor:'#ffffff',onBackgroundTextColor:'#000000',fontSize:16,fontFamily:o.Platform.select({ios:'System',android:'Roboto',web:'Arial'}),filterPlaceholderTextColor:'#aaa',activeOpacity:.5,itemHeight:(0,r(d[1]).getHeightPercent)(7),flagSize:o.Platform.select({android:20,default:30}),flagSizeButton:o.Platform.select({android:20,default:30})},l=(e.DARK_THEME=Object.assign({},t,{primaryColor:'#222',primaryColorVariant:'#444',backgroundColor:'#000',onBackgroundTextColor:'#fff'}),(0,r(d[2]).createTheming)(t));e.ThemeProvider=l.ThemeProvider,e.useTheme=l.useTheme}),858,[2,859,860]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.getHeightPercent=void 0;var t=r(d[0]),n=t.Dimensions.get('window').height,o='android'===t.Platform.OS?n-24:n;e.getHeightPercent=function(t){return Math.round(o*(t/100))}}),859,[2]); +__d((function(g,r,i,a,m,e,d){"use strict";e.__esModule=!0;var t,u=(t=r(d[0]))&&t.__esModule?t:{default:t};e.createTheming=u.default}),860,[861]); +__d((function(g,r,i,a,m,e,d){"use strict";e.__esModule=!0,e.default=function(f){var c=t.createContext(f),l=(0,u.default)(f,c),s=(0,o.default)(l,c);return{ThemeContext:c,ThemeProvider:l,withTheme:s,useTheme:function(u){var o=t.useContext(c);return t.useMemo((function(){return o&&u?(0,n.default)(o,u):o||u}),[o,u])}}};var t=(function(t){if(t&&t.__esModule)return t;var n={};if(null!=t)for(var u in t)if(Object.prototype.hasOwnProperty.call(t,u)){var o=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,u):{};o.get||o.set?Object.defineProperty(n,u,o):n[u]=t[u]}return n.default=t,n})(r(d[0])),n=f(r(d[1])),u=f(r(d[2])),o=f(r(d[3]));function f(t){return t&&t.__esModule?t:{default:t}}}),861,[178,862,863,864]); +__d((function(g,r,i,a,m,e,d){var t,n;t=this,n=function(){'use strict';var t=function(t){return n(t)&&!o(t)};function n(t){return!!t&&'object'==typeof t}function o(t){var n=Object.prototype.toString.call(t);return'[object RegExp]'===n||'[object Date]'===n||u(t)}var c='function'==typeof Symbol&&Symbol.for?Symbol.for('react.element'):60103;function u(t){return t.$$typeof===c}function f(t,n){return!1!==n.clone&&n.isMergeableObject(t)?j((o=t,Array.isArray(o)?[]:{}),t,n):t;var o}function y(t,n,o){return t.concat(n).map((function(t){return f(t,o)}))}function b(t,n){if(!n.customMerge)return j;var o=n.customMerge(t);return'function'==typeof o?o:j}function s(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter((function(n){return t.propertyIsEnumerable(n)})):[]}function l(t){return Object.keys(t).concat(s(t))}function p(t,n,o){var c={};return o.isMergeableObject(t)&&l(t).forEach((function(n){c[n]=f(t[n],o)})),l(n).forEach((function(u){o.isMergeableObject(n[u])&&t[u]?c[u]=b(u,o)(t[u],n[u],o):c[u]=f(n[u],o)})),c}function j(n,o,c){(c=c||{}).arrayMerge=c.arrayMerge||y,c.isMergeableObject=c.isMergeableObject||t;var u=Array.isArray(o);return u===Array.isArray(n)?u?c.arrayMerge(n,o,c):p(n,o,c):f(o,c)}return j.all=function(t,n){if(!Array.isArray(t))throw new Error('first argument should be an array');return t.reduce((function(t,o){return j(t,o,n)}),{})},j},'object'==typeof e&&void 0!==m?m.exports=n():'function'==typeof define&&define.amd?define(n):(t=t||self).deepmerge=n()}),862,[]); +__d((function(g,r,i,a,m,e,d){"use strict";e.__esModule=!0,e.default=void 0;var t=(function(t){if(t&&t.__esModule)return t;var o={};if(null!=t)for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var p=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,n):{};p.get||p.set?Object.defineProperty(o,n,p):o[n]=t[n]}return o.default=t,o})(r(d[0]));var o=function(o,n){var p,u,c,f,l;return u=p=(function(o){var p,u;function c(){return o.apply(this,arguments)||this}return u=o,(p=c).prototype=Object.create(u.prototype),p.prototype.constructor=p,p.__proto__=u,c.prototype.render=function(){return t.createElement(n.Provider,{value:this.props.theme},this.props.children)},c})(t.Component),l={theme:o},(f="defaultProps")in(c=p)?Object.defineProperty(c,f,{value:l,enumerable:!0,configurable:!0,writable:!0}):c[f]=l,u};e.default=o}),863,[178]); +__d((function(g,r,_i,_a,m,e,d){"use strict";e.__esModule=!0,e.default=void 0;var t=(function(t){if(t&&t.__esModule)return t;var n={};if(null!=t)for(var o in t)if(Object.prototype.hasOwnProperty.call(t,o)){var u=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,o):{};u.get||u.set?Object.defineProperty(n,o,u):n[o]=t[o]}return n.default=t,n})(r(d[0])),n=u(r(d[1])),o=u(r(d[2]));function u(t){return t&&t.__esModule?t:{default:t}}function a(){return a=Object.assign||function(t){for(var n=1;n=0||(a[o]=t[o]);return a}function c(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function f(t,n,o){return n in t?Object.defineProperty(t,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[n]=o,t}var l=function(u,l){return function(u){var p=(function(o){var p,s;function v(){for(var t,u=arguments.length,a=new Array(u),i=0;i0&&h.push(`+${a.callingCode.join('|')}`),p&&a.currency&&a.currency.length>0&&h.push(a.currency.join('|')),n.createInteropElement(o.TouchableOpacity,Object.assign({key:a.cca2,testID:`country-selector-${a.cca2}`,onPress:function(){return u(a)}},{activeOpacity:r}),n.createInteropElement(o.View,{style:[c.itemCountry,{height:i}]},s&&n.createInteropElement(_r(d[7]).Flag,Object.assign({},{withEmoji:f,countryCode:a.cca2,flagSize:l})),n.createInteropElement(o.View,{style:c.itemCountryName},n.createInteropElement(_r(d[6]).CountryText,{allowFontScaling:!1,numberOfLines:2,ellipsizeMode:'tail'},a.name,h.length>0&&` (${h.join(', ')})`))))};s.defaultProps={withFlag:!0,withCallingCode:!1};var f=(0,r.memo)(s),y=function(e){return function(t){var r=t.item;return n.createInteropElement(f,Object.assign({},Object.assign({country:r},e)))}},p=function(e){return e.cca2},h=function(){var e=(0,_r(d[5]).useTheme)().primaryColorVariant;return n.createInteropElement(o.View,{style:[c.sep,{borderBottomColor:e}]})},w=o.Dimensions.get('window').height,C=_e.CountryList=function(e){var i=e.data,l=e.withAlphaFilter,s=e.withEmoji,f=e.withFlag,C=e.withCallingCode,I=e.withCurrency,j=e.onSelect,b=e.filter,v=e.flatListProps,O=e.filterFocus,E=(0,r.useRef)(null),T=(0,r.useState)(''),x=(0,t.default)(T,2),S=x[0],P=x[1],F=(0,_r(d[5]).useTheme)(),k=F.itemHeight,_=F.backgroundColor,D=i.map((function(e){return e.name.substr(0,1)})).join(''),L=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=D.indexOf(e);P(e),E.current&&E.current.scrollToIndex({animated:t,index:n})},M=(0,_r(d[8]).useContext)(),V=M.search,z=(0,M.getLetters)(i);(0,r.useEffect)((function(){i&&i.length>0&&O&&!b&&L(z[0],!1)}),[O]);var R=Math.round(w/(k||1));return n.createInteropElement(o.View,{style:[c.container,{backgroundColor:_}]},n.createInteropElement(o.FlatList,Object.assign({onScrollToIndexFailed:!0,ref:E,testID:'list-countries',keyboardShouldPersistTaps:'handled',automaticallyAdjustContentInsets:!1,scrollEventThrottle:1,getItemLayout:function(e,t){return{length:k+a,offset:(k+a)*t,index:t}},renderItem:y({withEmoji:s,withFlag:f,withCallingCode:C,withCurrency:I,onSelect:j})},{data:V(b,i),keyExtractor:p,onScrollToIndexFailed:function(e){E.current&&(E.current.scrollToEnd(),L(S))},ItemSeparatorComponent:h,initialNumToRender:R},v)),l&&n.createInteropElement(o.ScrollView,{contentContainerStyle:c.letters,keyboardShouldPersistTaps:'always'},z.map((function(e){return n.createInteropElement(u,Object.assign({key:e},{letter:e,scrollTo:L}))}))))};C.defaultProps={filterFocus:void 0}}),865,[1,38,854,178,2,858,866,867,868]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.CountryText=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=u?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(o,a,f):o[a]=e[a]}return o.default=e,r&&r.set(e,o),o})(_r(d[1])),r=(e(_r(d[2])),_r(d[3]));function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}_e.CountryText=function(e){var n=(0,_r(d[4]).useTheme)(),o=n.fontFamily,u=n.fontSize,a=n.onBackgroundTextColor;return t.createInteropElement(r.Text,Object.assign({},e,{style:{fontFamily:o,fontSize:u,color:a}}))}}),866,[1,854,178,2,858]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.Flag=void 0;var e=o(_r(d[0])),t=o(_r(d[1])),n=_r(d[2]);function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var l=a?Object.getOwnPropertyDescriptor(e,i):null;l&&(l.get||l.set)?Object.defineProperty(o,i,l):o[i]=e[i]}return o.default=e,n&&n.set(e,o),o}var a=n.StyleSheet.create({container:{justifyContent:'center',alignItems:'center',width:30,marginRight:10},emojiFlag:{alignItems:'center',justifyContent:'center',borderWidth:1/n.PixelRatio.get(),borderColor:'transparent',backgroundColor:'transparent'},imageFlag:{resizeMode:'contain',width:25,height:19,borderWidth:1/n.PixelRatio.get(),opacity:.8}}),i=(0,t.memo)((function(t){var r=t.countryCode,o=t.flagSize,i=(0,_r(d[3]).useContext)().getImageFlagAsync,l=(0,_r(d[4]).useAsync)(i,[r]);return l.loading?e.createInteropElement(n.ActivityIndicator,{size:'small'}):e.createInteropElement(n.Image,{resizeMode:'contain',style:[a.imageFlag,{borderColor:'transparent',height:o}],source:{uri:l.result}})})),l=(0,t.memo)((function(t){var r=t.countryCode,o=t.flagSize,i=(0,_r(d[3]).useContext)().getEmojiFlagAsync,l=(0,_r(d[4]).useAsync)(i,[r]);return l.loading?e.createInteropElement(n.ActivityIndicator,{size:'small'}):e.createInteropElement(n.Text,{style:[a.emojiFlag,{fontSize:o}],allowFontScaling:!1},e.createInteropElement(_r(d[5]).Emoji,Object.assign({},{name:l.result})))}));(_e.Flag=function(t){var r=t.countryCode,o=t.withEmoji,c=t.withFlagButton,u=t.flagSize;return c?e.createInteropElement(n.View,{style:a.container},o?e.createInteropElement(l,Object.assign({},{countryCode:r,flagSize:u})):e.createInteropElement(i,Object.assign({},{countryCode:r,flagSize:u}))):null}).defaultProps={withEmoji:!0,withFlagButton:!0}}),867,[854,178,2,868,873,875]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.useContext=_e.DEFAULT_COUNTRY_CONTEXT=_e.CountryProvider=_e.CountryContext=_e.CountryConsumer=void 0;var e=(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=t(n);if(r&&r.has(e))return r.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var y in e)if("default"!==y&&{}.hasOwnProperty.call(e,y)){var c=u?Object.getOwnPropertyDescriptor(e,y):null;c&&(c.get||c.set)?Object.defineProperty(o,y,c):o[y]=e[y]}return o.default=e,r&&r.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(t=function(e){return e?r:n})(e)}var n=_e.DEFAULT_COUNTRY_CONTEXT={translation:'common',getCountryNameAsync:_r(d[1]).getCountryNameAsync,getImageFlagAsync:_r(d[1]).getImageFlagAsync,getEmojiFlagAsync:_r(d[1]).getEmojiFlagAsync,getCountriesAsync:_r(d[1]).getCountriesAsync,getCountryCallingCodeAsync:_r(d[1]).getCountryCallingCodeAsync,getCountryCurrencyAsync:_r(d[1]).getCountryCurrencyAsync,search:_r(d[1]).search,getLetters:_r(d[1]).getLetters,getCountryInfoAsync:_r(d[1]).getCountryInfoAsync},r=_e.CountryContext=e.createContext(n);_e.useContext=function(){return e.useContext(r)},_e.CountryProvider=r.Provider,_e.CountryConsumer=r.Consumer}),868,[178,869]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.search=e.loadDataAsync=e.getLetters=e.getImageFlagAsync=e.getEmojiFlagAsync=e.getCountryNameAsync=e.getCountryInfoAsync=e.getCountryCurrencyAsync=e.getCountryCallingCodeAsync=e.getCountriesAsync=void 0;var t,o,u=n(r(d[1])),c=n(r(d[2])),l=n(r(d[3])),f={emojiCountries:void 0,imageCountries:void 0},s=e.loadDataAsync=(t=f,function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r(d[4]).FlagType.EMOJI;return new Promise((function(o,u){n===r(d[4]).FlagType.FLAT?t.imageCountries?o(t.imageCountries):fetch("https://xcarpentier.github.io/react-native-country-picker-modal/countries/").then((function(n){return n.json()})).then((function(n){t.imageCountries=n,o(t.imageCountries)})).catch(u):(t.emojiCountries||(t.emojiCountries=r(d[5])),o(t.emojiCountries))}))}),y=(e.getEmojiFlagAsync=(function(){var n=(0,c.default)((function*(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:'FR',t=yield s();if(!t)throw new Error('Unable to find emoji because emojiCountries is undefined');return t[n].flag}));return function(){return n.apply(this,arguments)}})(),e.getImageFlagAsync=(function(){var n=(0,c.default)((function*(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:'FR',t=yield s(r(d[4]).FlagType.FLAT);if(!t)throw new Error('Unable to find image because imageCountries is undefined');return t[n].flag}));return function(){return n.apply(this,arguments)}})(),e.getCountryNameAsync=(function(){var n=(0,c.default)((function*(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:'FR',t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:'common',o=yield s();if(!o)throw new Error('Unable to find image because imageCountries is undefined');return o[n].name?o[n].name[t]:o[n].name.common}));return function(){return n.apply(this,arguments)}})()),h=e.getCountryCallingCodeAsync=(function(){var n=(0,c.default)((function*(n){var t=yield s();if(!t)throw new Error('Unable to find image because imageCountries is undefined');return t[n].callingCode[0]}));return function(t){return n.apply(this,arguments)}})(),C=e.getCountryCurrencyAsync=(function(){var n=(0,c.default)((function*(n){var t=yield s();if(!t)throw new Error('Unable to find image because imageCountries is undefined');return t[n].currency[0]}));return function(t){return n.apply(this,arguments)}})(),v=function(n){return function(t){return!!n[t]}},p=function(n){return function(t){return!n||t.region===n}},A=function(n){return function(t){return!n||t.subregion===n}},b=function(n){return function(t){return!(n&&n.length>0)||n.includes(t.cca2)}},j=function(n){return function(t){return!(n&&n.length>0)||!n.includes(t.cca2)}},w=(e.getCountriesAsync=(function(){var n=(0,c.default)((function*(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:'common',o=arguments.length>2?arguments[2]:void 0,c=arguments.length>3?arguments[3]:void 0,l=arguments.length>4?arguments[4]:void 0,f=arguments.length>5?arguments[5]:void 0,y=arguments.length>6?arguments[6]:void 0,h=arguments.length>7?arguments[7]:void 0,C=yield s(n);return C?y&&!h?[].concat((0,u.default)(y),(0,u.default)(r(d[4]).CountryCodeList.filter((function(n){return!y.includes(n)})))).filter(v(C)).map((function(n){return Object.assign({cca2:n},Object.assign({},C[n],{name:C[n].name[t]||C[n].name.common}))})).filter(p(o)).filter(A(c)).filter(b(l)).filter(j(f)):r(d[4]).CountryCodeList.filter(v(C)).map((function(n){return Object.assign({cca2:n},Object.assign({},C[n],{name:C[n].name[t]||C[n].name.common}))})).filter(p(o)).filter(A(c)).filter(b(l)).filter(j(f)).sort((function(n,t){return n.name.localeCompare(t.name)})):[]}));return function(t){return n.apply(this,arguments)}})(),{shouldSort:!0,threshold:.3,location:0,distance:100,maxPatternLength:32,minMatchCharLength:1,keys:['name','cca2','callingCode']});e.search=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:'',t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:w;return 0===t.length?[]:(o||(o=new l.default(t,u)),n&&''!==n?o.search(n):t)},e.getLetters=function(n){return t=n.map((function(n){return n.name.substr(0,1).toLocaleUpperCase()})).sort((function(n,t){return n.localeCompare(t)})),Array.from(new Set(t));var t},e.getCountryInfoAsync=(function(){var n=(0,c.default)((function*(n){var t=n.countryCode,o=n.translation;return{countryName:yield y(t,o||'common'),currency:yield C(t),callingCode:yield h(t)}}));return function(t){return n.apply(this,arguments)}})()}),869,[1,6,564,870,871,872]); +__d((function(_g,_r,_i,_a,_m,_e,_d){var e,t;e=this,t=function(){return(function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)})([function(e,t){e.exports=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{limit:!1};this._log('---------\nSearch pattern: "'.concat(e,'"'));var n=this._prepareSearchers(e),r=n.tokenSearchers,o=n.fullSearcher,i=this._search(r,o),a=i.weights,s=i.results;return this._computeScore(a,s),this.options.shouldSort&&this._sort(s),t.limit&&"number"==typeof t.limit&&(s=s.slice(0,t.limit)),this._format(s)}},{key:"_prepareSearchers",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=[];if(this.options.tokenize)for(var n=e.split(this.options.tokenSeparator),r=0,o=n.length;r0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,n=this.list,r={},o=[];if("string"==typeof n[0]){for(var i=0,a=n.length;i1)throw new Error("Key weight has to be > 0 and <= 1");d=d.name}else s[d]={weight:1};this._analyze({key:d,value:this.options.getFn(l,d),record:l,index:c},{resultMap:r,results:o,tokenSearchers:e,fullSearcher:t})}return{weights:s,results:o}}},{key:"_analyze",value:function(e,t){var n=e.key,r=e.arrayIndex,o=void 0===r?-1:r,i=e.value,a=e.record,c=e.index,h=t.tokenSearchers,l=void 0===h?[]:h,u=t.fullSearcher,f=void 0===u?[]:u,d=t.resultMap,v=void 0===d?{}:d,p=t.results,g=void 0===p?[]:p;if(null!=i){var y=!1,m=-1,k=0;if("string"==typeof i){this._log("\nKey: ".concat(""===n?"-":n));var S=f.search(i);if(this._log('Full text: "'.concat(i,'", score: ').concat(S.score)),this.options.tokenize){for(var b=i.split(this.options.tokenSeparator),x=[],M=0;M-1&&(P=(P+m)/2),this._log("Score average:",P);var F=!this.options.tokenize||!this.options.matchAllTokens||k>=l.length;if(this._log("\nCheck Matches: ".concat(F)),(y||S.isMatch)&&F){var T=v[c];T?T.output.push({key:n,arrayIndex:o,value:i,score:P,matchedIndices:S.matchedIndices}):(v[c]={item:a,output:[{key:n,arrayIndex:o,value:i,score:P,matchedIndices:S.matchedIndices}]},g.push(v[c]))}}else if(s(i))for(var z=0,E=i.length;z-1&&(a.arrayIndex=i.arrayIndex),t.matches.push(a)}}})),this.options.includeScore&&o.push((function(e,t){t.score=e.score}));for(var i=0,a=e.length;in)return o(e,this.pattern,r);var a=this.options,s=a.location,c=a.distance,h=a.threshold,l=a.findAllMatches,u=a.minMatchCharLength;return i(e,this.pattern,this.patternAlphabet,{location:s,distance:c,threshold:h,findAllMatches:l,minMatchCharLength:u})}}])&&r(t.prototype,n),e})();e.exports=s},function(e,t){var n=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;e.exports=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,o=new RegExp(t.replace(n,"\\$&").replace(r,"|")),i=e.match(o),a=!!i,s=[];if(a)for(var c=0,h=i.length;c=P;z-=1){var E=z-1,K=n[e.charAt(E)];if(K&&(b[E]=1),T[z]=(T[z+1]<<1|1)&K,0!==I&&(T[z]|=(L[z+1]|L[z])<<1|1|L[z+1]),T[z]&C&&(w=r(t,{errors:I,currentLocation:E,expectedLocation:g,distance:h}))<=m){if(m=w,(k=E)<=g)break;P=Math.max(1,2*g-k)}}if(r(t,{errors:I+1,currentLocation:g,expectedLocation:g,distance:h})>m)break;L=T}return{isMatch:k>=0,score:0===w?.001:w,matchedIndices:o(b,p)}}},function(e,t){e.exports=function(e,t){var n=t.errors,r=void 0===n?0:n,o=t.currentLocation,i=void 0===o?0:o,a=t.expectedLocation,s=void 0===a?0:a,c=t.distance,h=void 0===c?100:c,l=r/e.length,u=Math.abs(s-i);return h?l+u/h:u?1:l}},function(e,t){e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=[],r=-1,o=-1,i=0,a=e.length;i=t&&n.push([r,o]),r=-1)}return e[i-1]&&i-r>=t&&n.push([r,i-1]),n}},function(e,t){e.exports=function(e){for(var t={},n=e.length,r=0;r-1?t===n.length-1?i(n=n.substring(0,t)):i(n=n.substr(t+1)):n}function o(n){return'string'==typeof n&&n.length>0?':'+n+':':n}var u=String.fromCharCode(65039),f=new RegExp(u,'g');function c(n){return n.replace(f,'')}var y=Object.keys(r(d[0])).reduce((function(n,t){return n[c(r(d[0])[t])]=t,n}),{}),s={emoji:r(d[0]),_get:function(n){return r(d[0]).hasOwnProperty(n)?r(d[0])[n]:'string'==typeof(t=n)&&':'!==t[0]?o(t):t;var t},get:function(n){return n=i(n),s._get(n)},find:function(n){return s.findByName(n)||s.findByCode(n)},findByName:function(n){var t=i(n),o=r(d[0])[t];return o?{emoji:o,key:t}:void 0},findByCode:function(n){var t=c(n),i=y[t];return i?{emoji:r(d[0])[i],key:i}:void 0},hasEmoji:function(n){return s.hasEmojiByName(n)||s.hasEmojiByCode(n)},hasEmojiByName:function(n){var t=s.findByName(n);return!!t&&t.key===i(n)},hasEmojiByCode:function(n){var t=s.findByCode(n);return!!t&&c(t.emoji)===c(n)},which:function(n,t){var i=c(n),u=y[i];return t?o(u):u},emojify:function(t,i,o){return t?t.split(n).map((function(n,t){if(t%2==0)return n;var u=s._get(n),f=u.indexOf(':')>-1;return f&&'function'==typeof i?i(n):f||'function'!=typeof o?u:o(u,n)})).join(''):''},random:function(){var n=Object.keys(r(d[0])),t=n[Math.floor(Math.random()*n.length)];return{key:t,emoji:s._get(t)}},search:function(n){var t=Object.keys(r(d[0])),o=i(n);return t.filter((function(n){return 0===n.toString().indexOf(o)})).map((function(n){return{key:n,emoji:s._get(n)}}))},unemojify:function(n){return n?r(d[1])(n).map((function(n){return s.which(n,!0)||n})).join(''):''},replace:function(n,i,o){if(!n)return'';var u='function'==typeof i?i:function(){return i},f=r(d[1])(n),c=f.map((function(n,t){var i=s.findByCode(n);return i&&o&&' '===f[t+1]&&(f[t+1]=''),i?u(i):n})).join('');return o?c.replace(t,''):c},strip:function(n){return s.replace(n,'',!0)}};m.exports=s}),877,[878,879]); +__d((function(a,e,l,o,n,i,_){n.exports={100:"\ud83d\udcaf",1234:"\ud83d\udd22",umbrella_with_rain_drops:"\u2614",coffee:"\u2615",aries:"\u2648",taurus:"\u2649",sagittarius:"\u2650",capricorn:"\u2651",aquarius:"\u2652",pisces:"\u2653",anchor:"\u2693",white_check_mark:"\u2705",sparkles:"\u2728",question:"\u2753",grey_question:"\u2754",grey_exclamation:"\u2755",exclamation:"\u2757",heavy_exclamation_mark:"\u2757",heavy_plus_sign:"\u2795",heavy_minus_sign:"\u2796",heavy_division_sign:"\u2797",hash:"#\ufe0f\u20e3",keycap_star:"*\ufe0f\u20e3",zero:"0\ufe0f\u20e3",one:"1\ufe0f\u20e3",two:"2\ufe0f\u20e3",three:"3\ufe0f\u20e3",four:"4\ufe0f\u20e3",five:"5\ufe0f\u20e3",six:"6\ufe0f\u20e3",seven:"7\ufe0f\u20e3",eight:"8\ufe0f\u20e3",nine:"9\ufe0f\u20e3",copyright:"\xa9\ufe0f",registered:"\xae\ufe0f",mahjong:"\ud83c\udc04",black_joker:"\ud83c\udccf",a:"\ud83c\udd70\ufe0f",b:"\ud83c\udd71\ufe0f",o2:"\ud83c\udd7e\ufe0f",parking:"\ud83c\udd7f\ufe0f",ab:"\ud83c\udd8e",cl:"\ud83c\udd91",cool:"\ud83c\udd92",free:"\ud83c\udd93",id:"\ud83c\udd94",new:"\ud83c\udd95",ng:"\ud83c\udd96",ok:"\ud83c\udd97",sos:"\ud83c\udd98",up:"\ud83c\udd99",vs:"\ud83c\udd9a","flag-ac":"\ud83c\udde6\ud83c\udde8","flag-ad":"\ud83c\udde6\ud83c\udde9","flag-ae":"\ud83c\udde6\ud83c\uddea","flag-af":"\ud83c\udde6\ud83c\uddeb","flag-ag":"\ud83c\udde6\ud83c\uddec","flag-ai":"\ud83c\udde6\ud83c\uddee","flag-al":"\ud83c\udde6\ud83c\uddf1","flag-am":"\ud83c\udde6\ud83c\uddf2","flag-ao":"\ud83c\udde6\ud83c\uddf4","flag-aq":"\ud83c\udde6\ud83c\uddf6","flag-ar":"\ud83c\udde6\ud83c\uddf7","flag-as":"\ud83c\udde6\ud83c\uddf8","flag-at":"\ud83c\udde6\ud83c\uddf9","flag-au":"\ud83c\udde6\ud83c\uddfa","flag-aw":"\ud83c\udde6\ud83c\uddfc","flag-ax":"\ud83c\udde6\ud83c\uddfd","flag-az":"\ud83c\udde6\ud83c\uddff","flag-ba":"\ud83c\udde7\ud83c\udde6","flag-bb":"\ud83c\udde7\ud83c\udde7","flag-bd":"\ud83c\udde7\ud83c\udde9","flag-be":"\ud83c\udde7\ud83c\uddea","flag-bf":"\ud83c\udde7\ud83c\uddeb","flag-bg":"\ud83c\udde7\ud83c\uddec","flag-bh":"\ud83c\udde7\ud83c\udded","flag-bi":"\ud83c\udde7\ud83c\uddee","flag-bj":"\ud83c\udde7\ud83c\uddef","flag-bl":"\ud83c\udde7\ud83c\uddf1","flag-bm":"\ud83c\udde7\ud83c\uddf2","flag-bn":"\ud83c\udde7\ud83c\uddf3","flag-bo":"\ud83c\udde7\ud83c\uddf4","flag-bq":"\ud83c\udde7\ud83c\uddf6","flag-br":"\ud83c\udde7\ud83c\uddf7","flag-bs":"\ud83c\udde7\ud83c\uddf8","flag-bt":"\ud83c\udde7\ud83c\uddf9","flag-bv":"\ud83c\udde7\ud83c\uddfb","flag-bw":"\ud83c\udde7\ud83c\uddfc","flag-by":"\ud83c\udde7\ud83c\uddfe","flag-bz":"\ud83c\udde7\ud83c\uddff","flag-ca":"\ud83c\udde8\ud83c\udde6","flag-cc":"\ud83c\udde8\ud83c\udde8","flag-cd":"\ud83c\udde8\ud83c\udde9","flag-cf":"\ud83c\udde8\ud83c\uddeb","flag-cg":"\ud83c\udde8\ud83c\uddec","flag-ch":"\ud83c\udde8\ud83c\udded","flag-ci":"\ud83c\udde8\ud83c\uddee","flag-ck":"\ud83c\udde8\ud83c\uddf0","flag-cl":"\ud83c\udde8\ud83c\uddf1","flag-cm":"\ud83c\udde8\ud83c\uddf2",cn:"\ud83c\udde8\ud83c\uddf3","flag-cn":"\ud83c\udde8\ud83c\uddf3","flag-co":"\ud83c\udde8\ud83c\uddf4","flag-cp":"\ud83c\udde8\ud83c\uddf5","flag-cr":"\ud83c\udde8\ud83c\uddf7","flag-cu":"\ud83c\udde8\ud83c\uddfa","flag-cv":"\ud83c\udde8\ud83c\uddfb","flag-cw":"\ud83c\udde8\ud83c\uddfc","flag-cx":"\ud83c\udde8\ud83c\uddfd","flag-cy":"\ud83c\udde8\ud83c\uddfe","flag-cz":"\ud83c\udde8\ud83c\uddff",de:"\ud83c\udde9\ud83c\uddea","flag-de":"\ud83c\udde9\ud83c\uddea","flag-dg":"\ud83c\udde9\ud83c\uddec","flag-dj":"\ud83c\udde9\ud83c\uddef","flag-dk":"\ud83c\udde9\ud83c\uddf0","flag-dm":"\ud83c\udde9\ud83c\uddf2","flag-do":"\ud83c\udde9\ud83c\uddf4","flag-dz":"\ud83c\udde9\ud83c\uddff","flag-ea":"\ud83c\uddea\ud83c\udde6","flag-ec":"\ud83c\uddea\ud83c\udde8","flag-ee":"\ud83c\uddea\ud83c\uddea","flag-eg":"\ud83c\uddea\ud83c\uddec","flag-eh":"\ud83c\uddea\ud83c\udded","flag-er":"\ud83c\uddea\ud83c\uddf7",es:"\ud83c\uddea\ud83c\uddf8","flag-es":"\ud83c\uddea\ud83c\uddf8","flag-et":"\ud83c\uddea\ud83c\uddf9","flag-eu":"\ud83c\uddea\ud83c\uddfa","flag-fi":"\ud83c\uddeb\ud83c\uddee","flag-fj":"\ud83c\uddeb\ud83c\uddef","flag-fk":"\ud83c\uddeb\ud83c\uddf0","flag-fm":"\ud83c\uddeb\ud83c\uddf2","flag-fo":"\ud83c\uddeb\ud83c\uddf4",fr:"\ud83c\uddeb\ud83c\uddf7","flag-fr":"\ud83c\uddeb\ud83c\uddf7","flag-ga":"\ud83c\uddec\ud83c\udde6",gb:"\ud83c\uddec\ud83c\udde7",uk:"\ud83c\uddec\ud83c\udde7","flag-gb":"\ud83c\uddec\ud83c\udde7","flag-gd":"\ud83c\uddec\ud83c\udde9","flag-ge":"\ud83c\uddec\ud83c\uddea","flag-gf":"\ud83c\uddec\ud83c\uddeb","flag-gg":"\ud83c\uddec\ud83c\uddec","flag-gh":"\ud83c\uddec\ud83c\udded","flag-gi":"\ud83c\uddec\ud83c\uddee","flag-gl":"\ud83c\uddec\ud83c\uddf1","flag-gm":"\ud83c\uddec\ud83c\uddf2","flag-gn":"\ud83c\uddec\ud83c\uddf3","flag-gp":"\ud83c\uddec\ud83c\uddf5","flag-gq":"\ud83c\uddec\ud83c\uddf6","flag-gr":"\ud83c\uddec\ud83c\uddf7","flag-gs":"\ud83c\uddec\ud83c\uddf8","flag-gt":"\ud83c\uddec\ud83c\uddf9","flag-gu":"\ud83c\uddec\ud83c\uddfa","flag-gw":"\ud83c\uddec\ud83c\uddfc","flag-gy":"\ud83c\uddec\ud83c\uddfe","flag-hk":"\ud83c\udded\ud83c\uddf0","flag-hm":"\ud83c\udded\ud83c\uddf2","flag-hn":"\ud83c\udded\ud83c\uddf3","flag-hr":"\ud83c\udded\ud83c\uddf7","flag-ht":"\ud83c\udded\ud83c\uddf9","flag-hu":"\ud83c\udded\ud83c\uddfa","flag-ic":"\ud83c\uddee\ud83c\udde8","flag-id":"\ud83c\uddee\ud83c\udde9","flag-ie":"\ud83c\uddee\ud83c\uddea","flag-il":"\ud83c\uddee\ud83c\uddf1","flag-im":"\ud83c\uddee\ud83c\uddf2","flag-in":"\ud83c\uddee\ud83c\uddf3","flag-io":"\ud83c\uddee\ud83c\uddf4","flag-iq":"\ud83c\uddee\ud83c\uddf6","flag-ir":"\ud83c\uddee\ud83c\uddf7","flag-is":"\ud83c\uddee\ud83c\uddf8",it:"\ud83c\uddee\ud83c\uddf9","flag-it":"\ud83c\uddee\ud83c\uddf9","flag-je":"\ud83c\uddef\ud83c\uddea","flag-jm":"\ud83c\uddef\ud83c\uddf2","flag-jo":"\ud83c\uddef\ud83c\uddf4",jp:"\ud83c\uddef\ud83c\uddf5","flag-jp":"\ud83c\uddef\ud83c\uddf5","flag-ke":"\ud83c\uddf0\ud83c\uddea","flag-kg":"\ud83c\uddf0\ud83c\uddec","flag-kh":"\ud83c\uddf0\ud83c\udded","flag-ki":"\ud83c\uddf0\ud83c\uddee","flag-km":"\ud83c\uddf0\ud83c\uddf2","flag-kn":"\ud83c\uddf0\ud83c\uddf3","flag-kp":"\ud83c\uddf0\ud83c\uddf5",kr:"\ud83c\uddf0\ud83c\uddf7","flag-kr":"\ud83c\uddf0\ud83c\uddf7","flag-kw":"\ud83c\uddf0\ud83c\uddfc","flag-ky":"\ud83c\uddf0\ud83c\uddfe","flag-kz":"\ud83c\uddf0\ud83c\uddff","flag-la":"\ud83c\uddf1\ud83c\udde6","flag-lb":"\ud83c\uddf1\ud83c\udde7","flag-lc":"\ud83c\uddf1\ud83c\udde8","flag-li":"\ud83c\uddf1\ud83c\uddee","flag-lk":"\ud83c\uddf1\ud83c\uddf0","flag-lr":"\ud83c\uddf1\ud83c\uddf7","flag-ls":"\ud83c\uddf1\ud83c\uddf8","flag-lt":"\ud83c\uddf1\ud83c\uddf9","flag-lu":"\ud83c\uddf1\ud83c\uddfa","flag-lv":"\ud83c\uddf1\ud83c\uddfb","flag-ly":"\ud83c\uddf1\ud83c\uddfe","flag-ma":"\ud83c\uddf2\ud83c\udde6","flag-mc":"\ud83c\uddf2\ud83c\udde8","flag-md":"\ud83c\uddf2\ud83c\udde9","flag-me":"\ud83c\uddf2\ud83c\uddea","flag-mf":"\ud83c\uddf2\ud83c\uddeb","flag-mg":"\ud83c\uddf2\ud83c\uddec","flag-mh":"\ud83c\uddf2\ud83c\udded","flag-mk":"\ud83c\uddf2\ud83c\uddf0","flag-ml":"\ud83c\uddf2\ud83c\uddf1","flag-mm":"\ud83c\uddf2\ud83c\uddf2","flag-mn":"\ud83c\uddf2\ud83c\uddf3","flag-mo":"\ud83c\uddf2\ud83c\uddf4","flag-mp":"\ud83c\uddf2\ud83c\uddf5","flag-mq":"\ud83c\uddf2\ud83c\uddf6","flag-mr":"\ud83c\uddf2\ud83c\uddf7","flag-ms":"\ud83c\uddf2\ud83c\uddf8","flag-mt":"\ud83c\uddf2\ud83c\uddf9","flag-mu":"\ud83c\uddf2\ud83c\uddfa","flag-mv":"\ud83c\uddf2\ud83c\uddfb","flag-mw":"\ud83c\uddf2\ud83c\uddfc","flag-mx":"\ud83c\uddf2\ud83c\uddfd","flag-my":"\ud83c\uddf2\ud83c\uddfe","flag-mz":"\ud83c\uddf2\ud83c\uddff","flag-na":"\ud83c\uddf3\ud83c\udde6","flag-nc":"\ud83c\uddf3\ud83c\udde8","flag-ne":"\ud83c\uddf3\ud83c\uddea","flag-nf":"\ud83c\uddf3\ud83c\uddeb","flag-ng":"\ud83c\uddf3\ud83c\uddec","flag-ni":"\ud83c\uddf3\ud83c\uddee","flag-nl":"\ud83c\uddf3\ud83c\uddf1","flag-no":"\ud83c\uddf3\ud83c\uddf4","flag-np":"\ud83c\uddf3\ud83c\uddf5","flag-nr":"\ud83c\uddf3\ud83c\uddf7","flag-nu":"\ud83c\uddf3\ud83c\uddfa","flag-nz":"\ud83c\uddf3\ud83c\uddff","flag-om":"\ud83c\uddf4\ud83c\uddf2","flag-pa":"\ud83c\uddf5\ud83c\udde6","flag-pe":"\ud83c\uddf5\ud83c\uddea","flag-pf":"\ud83c\uddf5\ud83c\uddeb","flag-pg":"\ud83c\uddf5\ud83c\uddec","flag-ph":"\ud83c\uddf5\ud83c\udded","flag-pk":"\ud83c\uddf5\ud83c\uddf0","flag-pl":"\ud83c\uddf5\ud83c\uddf1","flag-pm":"\ud83c\uddf5\ud83c\uddf2","flag-pn":"\ud83c\uddf5\ud83c\uddf3","flag-pr":"\ud83c\uddf5\ud83c\uddf7","flag-ps":"\ud83c\uddf5\ud83c\uddf8","flag-pt":"\ud83c\uddf5\ud83c\uddf9","flag-pw":"\ud83c\uddf5\ud83c\uddfc","flag-py":"\ud83c\uddf5\ud83c\uddfe","flag-qa":"\ud83c\uddf6\ud83c\udde6","flag-re":"\ud83c\uddf7\ud83c\uddea","flag-ro":"\ud83c\uddf7\ud83c\uddf4","flag-rs":"\ud83c\uddf7\ud83c\uddf8",ru:"\ud83c\uddf7\ud83c\uddfa","flag-ru":"\ud83c\uddf7\ud83c\uddfa","flag-rw":"\ud83c\uddf7\ud83c\uddfc","flag-sa":"\ud83c\uddf8\ud83c\udde6","flag-sb":"\ud83c\uddf8\ud83c\udde7","flag-sc":"\ud83c\uddf8\ud83c\udde8","flag-sd":"\ud83c\uddf8\ud83c\udde9","flag-se":"\ud83c\uddf8\ud83c\uddea","flag-sg":"\ud83c\uddf8\ud83c\uddec","flag-sh":"\ud83c\uddf8\ud83c\udded","flag-si":"\ud83c\uddf8\ud83c\uddee","flag-sj":"\ud83c\uddf8\ud83c\uddef","flag-sk":"\ud83c\uddf8\ud83c\uddf0","flag-sl":"\ud83c\uddf8\ud83c\uddf1","flag-sm":"\ud83c\uddf8\ud83c\uddf2","flag-sn":"\ud83c\uddf8\ud83c\uddf3","flag-so":"\ud83c\uddf8\ud83c\uddf4","flag-sr":"\ud83c\uddf8\ud83c\uddf7","flag-ss":"\ud83c\uddf8\ud83c\uddf8","flag-st":"\ud83c\uddf8\ud83c\uddf9","flag-sv":"\ud83c\uddf8\ud83c\uddfb","flag-sx":"\ud83c\uddf8\ud83c\uddfd","flag-sy":"\ud83c\uddf8\ud83c\uddfe","flag-sz":"\ud83c\uddf8\ud83c\uddff","flag-ta":"\ud83c\uddf9\ud83c\udde6","flag-tc":"\ud83c\uddf9\ud83c\udde8","flag-td":"\ud83c\uddf9\ud83c\udde9","flag-tf":"\ud83c\uddf9\ud83c\uddeb","flag-tg":"\ud83c\uddf9\ud83c\uddec","flag-th":"\ud83c\uddf9\ud83c\udded","flag-tj":"\ud83c\uddf9\ud83c\uddef","flag-tk":"\ud83c\uddf9\ud83c\uddf0","flag-tl":"\ud83c\uddf9\ud83c\uddf1","flag-tm":"\ud83c\uddf9\ud83c\uddf2","flag-tn":"\ud83c\uddf9\ud83c\uddf3","flag-to":"\ud83c\uddf9\ud83c\uddf4","flag-tr":"\ud83c\uddf9\ud83c\uddf7","flag-tt":"\ud83c\uddf9\ud83c\uddf9","flag-tv":"\ud83c\uddf9\ud83c\uddfb","flag-tw":"\ud83c\uddf9\ud83c\uddfc","flag-tz":"\ud83c\uddf9\ud83c\uddff","flag-ua":"\ud83c\uddfa\ud83c\udde6","flag-ug":"\ud83c\uddfa\ud83c\uddec","flag-um":"\ud83c\uddfa\ud83c\uddf2","flag-un":"\ud83c\uddfa\ud83c\uddf3",us:"\ud83c\uddfa\ud83c\uddf8","flag-us":"\ud83c\uddfa\ud83c\uddf8","flag-uy":"\ud83c\uddfa\ud83c\uddfe","flag-uz":"\ud83c\uddfa\ud83c\uddff","flag-va":"\ud83c\uddfb\ud83c\udde6","flag-vc":"\ud83c\uddfb\ud83c\udde8","flag-ve":"\ud83c\uddfb\ud83c\uddea","flag-vg":"\ud83c\uddfb\ud83c\uddec","flag-vi":"\ud83c\uddfb\ud83c\uddee","flag-vn":"\ud83c\uddfb\ud83c\uddf3","flag-vu":"\ud83c\uddfb\ud83c\uddfa","flag-wf":"\ud83c\uddfc\ud83c\uddeb","flag-ws":"\ud83c\uddfc\ud83c\uddf8","flag-xk":"\ud83c\uddfd\ud83c\uddf0","flag-ye":"\ud83c\uddfe\ud83c\uddea","flag-yt":"\ud83c\uddfe\ud83c\uddf9","flag-za":"\ud83c\uddff\ud83c\udde6","flag-zm":"\ud83c\uddff\ud83c\uddf2","flag-zw":"\ud83c\uddff\ud83c\uddfc",koko:"\ud83c\ude01",sa:"\ud83c\ude02\ufe0f",u7121:"\ud83c\ude1a",u6307:"\ud83c\ude2f",u7981:"\ud83c\ude32",u7a7a:"\ud83c\ude33",u5408:"\ud83c\ude34",u6e80:"\ud83c\ude35",u6709:"\ud83c\ude36",u6708:"\ud83c\ude37\ufe0f",u7533:"\ud83c\ude38",u5272:"\ud83c\ude39",u55b6:"\ud83c\ude3a",ideograph_advantage:"\ud83c\ude50",accept:"\ud83c\ude51",cyclone:"\ud83c\udf00",foggy:"\ud83c\udf01",closed_umbrella:"\ud83c\udf02",night_with_stars:"\ud83c\udf03",sunrise_over_mountains:"\ud83c\udf04",sunrise:"\ud83c\udf05",city_sunset:"\ud83c\udf06",city_sunrise:"\ud83c\udf07",rainbow:"\ud83c\udf08",bridge_at_night:"\ud83c\udf09",ocean:"\ud83c\udf0a",volcano:"\ud83c\udf0b",milky_way:"\ud83c\udf0c",earth_africa:"\ud83c\udf0d",earth_americas:"\ud83c\udf0e",earth_asia:"\ud83c\udf0f",globe_with_meridians:"\ud83c\udf10",new_moon:"\ud83c\udf11",waxing_crescent_moon:"\ud83c\udf12",first_quarter_moon:"\ud83c\udf13",moon:"\ud83c\udf14",waxing_gibbous_moon:"\ud83c\udf14",full_moon:"\ud83c\udf15",waning_gibbous_moon:"\ud83c\udf16",last_quarter_moon:"\ud83c\udf17",waning_crescent_moon:"\ud83c\udf18",crescent_moon:"\ud83c\udf19",new_moon_with_face:"\ud83c\udf1a",first_quarter_moon_with_face:"\ud83c\udf1b",last_quarter_moon_with_face:"\ud83c\udf1c",full_moon_with_face:"\ud83c\udf1d",sun_with_face:"\ud83c\udf1e",star2:"\ud83c\udf1f",stars:"\ud83c\udf20",thermometer:"\ud83c\udf21\ufe0f",mostly_sunny:"\ud83c\udf24\ufe0f",sun_small_cloud:"\ud83c\udf24\ufe0f",barely_sunny:"\ud83c\udf25\ufe0f",sun_behind_cloud:"\ud83c\udf25\ufe0f",partly_sunny_rain:"\ud83c\udf26\ufe0f",sun_behind_rain_cloud:"\ud83c\udf26\ufe0f",rain_cloud:"\ud83c\udf27\ufe0f",snow_cloud:"\ud83c\udf28\ufe0f",lightning:"\ud83c\udf29\ufe0f",lightning_cloud:"\ud83c\udf29\ufe0f",tornado:"\ud83c\udf2a\ufe0f",tornado_cloud:"\ud83c\udf2a\ufe0f",fog:"\ud83c\udf2b\ufe0f",wind_blowing_face:"\ud83c\udf2c\ufe0f",hotdog:"\ud83c\udf2d",taco:"\ud83c\udf2e",burrito:"\ud83c\udf2f",chestnut:"\ud83c\udf30",seedling:"\ud83c\udf31",evergreen_tree:"\ud83c\udf32",deciduous_tree:"\ud83c\udf33",palm_tree:"\ud83c\udf34",cactus:"\ud83c\udf35",hot_pepper:"\ud83c\udf36\ufe0f",tulip:"\ud83c\udf37",cherry_blossom:"\ud83c\udf38",rose:"\ud83c\udf39",hibiscus:"\ud83c\udf3a",sunflower:"\ud83c\udf3b",blossom:"\ud83c\udf3c",corn:"\ud83c\udf3d",ear_of_rice:"\ud83c\udf3e",herb:"\ud83c\udf3f",four_leaf_clover:"\ud83c\udf40",maple_leaf:"\ud83c\udf41",fallen_leaf:"\ud83c\udf42",leaves:"\ud83c\udf43",mushroom:"\ud83c\udf44",tomato:"\ud83c\udf45",eggplant:"\ud83c\udf46",grapes:"\ud83c\udf47",melon:"\ud83c\udf48",watermelon:"\ud83c\udf49",tangerine:"\ud83c\udf4a",lemon:"\ud83c\udf4b",banana:"\ud83c\udf4c",pineapple:"\ud83c\udf4d",apple:"\ud83c\udf4e",green_apple:"\ud83c\udf4f",pear:"\ud83c\udf50",peach:"\ud83c\udf51",cherries:"\ud83c\udf52",strawberry:"\ud83c\udf53",hamburger:"\ud83c\udf54",pizza:"\ud83c\udf55",meat_on_bone:"\ud83c\udf56",poultry_leg:"\ud83c\udf57",rice_cracker:"\ud83c\udf58",rice_ball:"\ud83c\udf59",rice:"\ud83c\udf5a",curry:"\ud83c\udf5b",ramen:"\ud83c\udf5c",spaghetti:"\ud83c\udf5d",bread:"\ud83c\udf5e",fries:"\ud83c\udf5f",sweet_potato:"\ud83c\udf60",dango:"\ud83c\udf61",oden:"\ud83c\udf62",sushi:"\ud83c\udf63",fried_shrimp:"\ud83c\udf64",fish_cake:"\ud83c\udf65",icecream:"\ud83c\udf66",shaved_ice:"\ud83c\udf67",ice_cream:"\ud83c\udf68",doughnut:"\ud83c\udf69",cookie:"\ud83c\udf6a",chocolate_bar:"\ud83c\udf6b",candy:"\ud83c\udf6c",lollipop:"\ud83c\udf6d",custard:"\ud83c\udf6e",honey_pot:"\ud83c\udf6f",cake:"\ud83c\udf70",bento:"\ud83c\udf71",stew:"\ud83c\udf72",fried_egg:"\ud83c\udf73",cooking:"\ud83c\udf73",fork_and_knife:"\ud83c\udf74",tea:"\ud83c\udf75",sake:"\ud83c\udf76",wine_glass:"\ud83c\udf77",cocktail:"\ud83c\udf78",tropical_drink:"\ud83c\udf79",beer:"\ud83c\udf7a",beers:"\ud83c\udf7b",baby_bottle:"\ud83c\udf7c",knife_fork_plate:"\ud83c\udf7d\ufe0f",champagne:"\ud83c\udf7e",popcorn:"\ud83c\udf7f",ribbon:"\ud83c\udf80",gift:"\ud83c\udf81",birthday:"\ud83c\udf82",jack_o_lantern:"\ud83c\udf83",christmas_tree:"\ud83c\udf84",santa:"\ud83c\udf85",fireworks:"\ud83c\udf86",sparkler:"\ud83c\udf87",balloon:"\ud83c\udf88",tada:"\ud83c\udf89",confetti_ball:"\ud83c\udf8a",tanabata_tree:"\ud83c\udf8b",crossed_flags:"\ud83c\udf8c",bamboo:"\ud83c\udf8d",dolls:"\ud83c\udf8e",flags:"\ud83c\udf8f",wind_chime:"\ud83c\udf90",rice_scene:"\ud83c\udf91",school_satchel:"\ud83c\udf92",mortar_board:"\ud83c\udf93",medal:"\ud83c\udf96\ufe0f",reminder_ribbon:"\ud83c\udf97\ufe0f",studio_microphone:"\ud83c\udf99\ufe0f",level_slider:"\ud83c\udf9a\ufe0f",control_knobs:"\ud83c\udf9b\ufe0f",film_frames:"\ud83c\udf9e\ufe0f",admission_tickets:"\ud83c\udf9f\ufe0f",carousel_horse:"\ud83c\udfa0",ferris_wheel:"\ud83c\udfa1",roller_coaster:"\ud83c\udfa2",fishing_pole_and_fish:"\ud83c\udfa3",microphone:"\ud83c\udfa4",movie_camera:"\ud83c\udfa5",cinema:"\ud83c\udfa6",headphones:"\ud83c\udfa7",art:"\ud83c\udfa8",tophat:"\ud83c\udfa9",circus_tent:"\ud83c\udfaa",ticket:"\ud83c\udfab",clapper:"\ud83c\udfac",performing_arts:"\ud83c\udfad",video_game:"\ud83c\udfae",dart:"\ud83c\udfaf",slot_machine:"\ud83c\udfb0","8ball":"\ud83c\udfb1",game_die:"\ud83c\udfb2",bowling:"\ud83c\udfb3",flower_playing_cards:"\ud83c\udfb4",musical_note:"\ud83c\udfb5",notes:"\ud83c\udfb6",saxophone:"\ud83c\udfb7",guitar:"\ud83c\udfb8",musical_keyboard:"\ud83c\udfb9",trumpet:"\ud83c\udfba",violin:"\ud83c\udfbb",musical_score:"\ud83c\udfbc",running_shirt_with_sash:"\ud83c\udfbd",tennis:"\ud83c\udfbe",ski:"\ud83c\udfbf",basketball:"\ud83c\udfc0",checkered_flag:"\ud83c\udfc1",snowboarder:"\ud83c\udfc2","woman-running":"\ud83c\udfc3\u200d\u2640\ufe0f","man-running":"\ud83c\udfc3\u200d\u2642\ufe0f",runner:"\ud83c\udfc3\u200d\u2642\ufe0f",running:"\ud83c\udfc3\u200d\u2642\ufe0f","woman-surfing":"\ud83c\udfc4\u200d\u2640\ufe0f","man-surfing":"\ud83c\udfc4\u200d\u2642\ufe0f",surfer:"\ud83c\udfc4\u200d\u2642\ufe0f",sports_medal:"\ud83c\udfc5",trophy:"\ud83c\udfc6",horse_racing:"\ud83c\udfc7",football:"\ud83c\udfc8",rugby_football:"\ud83c\udfc9","woman-swimming":"\ud83c\udfca\u200d\u2640\ufe0f","man-swimming":"\ud83c\udfca\u200d\u2642\ufe0f",swimmer:"\ud83c\udfca\u200d\u2642\ufe0f","woman-lifting-weights":"\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f","man-lifting-weights":"\ud83c\udfcb\ufe0f\u200d\u2642\ufe0f",weight_lifter:"\ud83c\udfcb\ufe0f\u200d\u2642\ufe0f","woman-golfing":"\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f","man-golfing":"\ud83c\udfcc\ufe0f\u200d\u2642\ufe0f",golfer:"\ud83c\udfcc\ufe0f\u200d\u2642\ufe0f",racing_motorcycle:"\ud83c\udfcd\ufe0f",racing_car:"\ud83c\udfce\ufe0f",cricket_bat_and_ball:"\ud83c\udfcf",volleyball:"\ud83c\udfd0",field_hockey_stick_and_ball:"\ud83c\udfd1",ice_hockey_stick_and_puck:"\ud83c\udfd2",table_tennis_paddle_and_ball:"\ud83c\udfd3",snow_capped_mountain:"\ud83c\udfd4\ufe0f",camping:"\ud83c\udfd5\ufe0f",beach_with_umbrella:"\ud83c\udfd6\ufe0f",building_construction:"\ud83c\udfd7\ufe0f",house_buildings:"\ud83c\udfd8\ufe0f",cityscape:"\ud83c\udfd9\ufe0f",derelict_house_building:"\ud83c\udfda\ufe0f",classical_building:"\ud83c\udfdb\ufe0f",desert:"\ud83c\udfdc\ufe0f",desert_island:"\ud83c\udfdd\ufe0f",national_park:"\ud83c\udfde\ufe0f",stadium:"\ud83c\udfdf\ufe0f",house:"\ud83c\udfe0",house_with_garden:"\ud83c\udfe1",office:"\ud83c\udfe2",post_office:"\ud83c\udfe3",european_post_office:"\ud83c\udfe4",hospital:"\ud83c\udfe5",bank:"\ud83c\udfe6",atm:"\ud83c\udfe7",hotel:"\ud83c\udfe8",love_hotel:"\ud83c\udfe9",convenience_store:"\ud83c\udfea",school:"\ud83c\udfeb",department_store:"\ud83c\udfec",factory:"\ud83c\udfed",izakaya_lantern:"\ud83c\udfee",lantern:"\ud83c\udfee",japanese_castle:"\ud83c\udfef",european_castle:"\ud83c\udff0","rainbow-flag":"\ud83c\udff3\ufe0f\u200d\ud83c\udf08",waving_white_flag:"\ud83c\udff3\ufe0f","flag-england":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","flag-scotland":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f","flag-wales":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f",waving_black_flag:"\ud83c\udff4",rosette:"\ud83c\udff5\ufe0f",label:"\ud83c\udff7\ufe0f",badminton_racquet_and_shuttlecock:"\ud83c\udff8",bow_and_arrow:"\ud83c\udff9",amphora:"\ud83c\udffa","skin-tone-2":"\ud83c\udffb","skin-tone-3":"\ud83c\udffc","skin-tone-4":"\ud83c\udffd","skin-tone-5":"\ud83c\udffe","skin-tone-6":"\ud83c\udfff",rat:"\ud83d\udc00",mouse2:"\ud83d\udc01",ox:"\ud83d\udc02",water_buffalo:"\ud83d\udc03",cow2:"\ud83d\udc04",tiger2:"\ud83d\udc05",leopard:"\ud83d\udc06",rabbit2:"\ud83d\udc07",cat2:"\ud83d\udc08",dragon:"\ud83d\udc09",crocodile:"\ud83d\udc0a",whale2:"\ud83d\udc0b",snail:"\ud83d\udc0c",snake:"\ud83d\udc0d",racehorse:"\ud83d\udc0e",ram:"\ud83d\udc0f",goat:"\ud83d\udc10",sheep:"\ud83d\udc11",monkey:"\ud83d\udc12",rooster:"\ud83d\udc13",chicken:"\ud83d\udc14",dog2:"\ud83d\udc15",pig2:"\ud83d\udc16",boar:"\ud83d\udc17",elephant:"\ud83d\udc18",octopus:"\ud83d\udc19",shell:"\ud83d\udc1a",bug:"\ud83d\udc1b",ant:"\ud83d\udc1c",bee:"\ud83d\udc1d",honeybee:"\ud83d\udc1d",beetle:"\ud83d\udc1e",fish:"\ud83d\udc1f",tropical_fish:"\ud83d\udc20",blowfish:"\ud83d\udc21",turtle:"\ud83d\udc22",hatching_chick:"\ud83d\udc23",baby_chick:"\ud83d\udc24",hatched_chick:"\ud83d\udc25",bird:"\ud83d\udc26",penguin:"\ud83d\udc27",koala:"\ud83d\udc28",poodle:"\ud83d\udc29",dromedary_camel:"\ud83d\udc2a",camel:"\ud83d\udc2b",dolphin:"\ud83d\udc2c",flipper:"\ud83d\udc2c",mouse:"\ud83d\udc2d",cow:"\ud83d\udc2e",tiger:"\ud83d\udc2f",rabbit:"\ud83d\udc30",cat:"\ud83d\udc31",dragon_face:"\ud83d\udc32",whale:"\ud83d\udc33",horse:"\ud83d\udc34",monkey_face:"\ud83d\udc35",dog:"\ud83d\udc36",pig:"\ud83d\udc37",frog:"\ud83d\udc38",hamster:"\ud83d\udc39",wolf:"\ud83d\udc3a",bear:"\ud83d\udc3b",panda_face:"\ud83d\udc3c",pig_nose:"\ud83d\udc3d",feet:"\ud83d\udc3e",paw_prints:"\ud83d\udc3e",chipmunk:"\ud83d\udc3f\ufe0f",eyes:"\ud83d\udc40","eye-in-speech-bubble":"\ud83d\udc41\ufe0f\u200d\ud83d\udde8\ufe0f",eye:"\ud83d\udc41\ufe0f",ear:"\ud83d\udc42",nose:"\ud83d\udc43",lips:"\ud83d\udc44",tongue:"\ud83d\udc45",point_up_2:"\ud83d\udc46",point_down:"\ud83d\udc47",point_left:"\ud83d\udc48",point_right:"\ud83d\udc49",facepunch:"\ud83d\udc4a",punch:"\ud83d\udc4a",wave:"\ud83d\udc4b",ok_hand:"\ud83d\udc4c","+1":"\ud83d\udc4d",thumbsup:"\ud83d\udc4d","-1":"\ud83d\udc4e",thumbsdown:"\ud83d\udc4e",clap:"\ud83d\udc4f",open_hands:"\ud83d\udc50",crown:"\ud83d\udc51",womans_hat:"\ud83d\udc52",eyeglasses:"\ud83d\udc53",necktie:"\ud83d\udc54",shirt:"\ud83d\udc55",tshirt:"\ud83d\udc55",jeans:"\ud83d\udc56",dress:"\ud83d\udc57",kimono:"\ud83d\udc58",bikini:"\ud83d\udc59",womans_clothes:"\ud83d\udc5a",purse:"\ud83d\udc5b",handbag:"\ud83d\udc5c",pouch:"\ud83d\udc5d",mans_shoe:"\ud83d\udc5e",shoe:"\ud83d\udc5e",athletic_shoe:"\ud83d\udc5f",high_heel:"\ud83d\udc60",sandal:"\ud83d\udc61",boot:"\ud83d\udc62",footprints:"\ud83d\udc63",bust_in_silhouette:"\ud83d\udc64",busts_in_silhouette:"\ud83d\udc65",boy:"\ud83d\udc66",girl:"\ud83d\udc67","male-farmer":"\ud83d\udc68\u200d\ud83c\udf3e","male-cook":"\ud83d\udc68\u200d\ud83c\udf73","male-student":"\ud83d\udc68\u200d\ud83c\udf93","male-singer":"\ud83d\udc68\u200d\ud83c\udfa4","male-artist":"\ud83d\udc68\u200d\ud83c\udfa8","male-teacher":"\ud83d\udc68\u200d\ud83c\udfeb","male-factory-worker":"\ud83d\udc68\u200d\ud83c\udfed","man-boy-boy":"\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66","man-boy":"\ud83d\udc68\u200d\ud83d\udc66","man-girl-boy":"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66","man-girl-girl":"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67","man-girl":"\ud83d\udc68\u200d\ud83d\udc67","man-man-boy":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66","man-man-boy-boy":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66","man-man-girl":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67","man-man-girl-boy":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66","man-man-girl-girl":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67","man-woman-boy":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66",family:"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66","man-woman-boy-boy":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66","man-woman-girl":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67","man-woman-girl-boy":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66","man-woman-girl-girl":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67","male-technologist":"\ud83d\udc68\u200d\ud83d\udcbb","male-office-worker":"\ud83d\udc68\u200d\ud83d\udcbc","male-mechanic":"\ud83d\udc68\u200d\ud83d\udd27","male-scientist":"\ud83d\udc68\u200d\ud83d\udd2c","male-astronaut":"\ud83d\udc68\u200d\ud83d\ude80","male-firefighter":"\ud83d\udc68\u200d\ud83d\ude92","male-doctor":"\ud83d\udc68\u200d\u2695\ufe0f","male-judge":"\ud83d\udc68\u200d\u2696\ufe0f","male-pilot":"\ud83d\udc68\u200d\u2708\ufe0f","man-heart-man":"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68","man-kiss-man":"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68",man:"\ud83d\udc68","female-farmer":"\ud83d\udc69\u200d\ud83c\udf3e","female-cook":"\ud83d\udc69\u200d\ud83c\udf73","female-student":"\ud83d\udc69\u200d\ud83c\udf93","female-singer":"\ud83d\udc69\u200d\ud83c\udfa4","female-artist":"\ud83d\udc69\u200d\ud83c\udfa8","female-teacher":"\ud83d\udc69\u200d\ud83c\udfeb","female-factory-worker":"\ud83d\udc69\u200d\ud83c\udfed","woman-boy-boy":"\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66","woman-boy":"\ud83d\udc69\u200d\ud83d\udc66","woman-girl-boy":"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66","woman-girl-girl":"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67","woman-girl":"\ud83d\udc69\u200d\ud83d\udc67","woman-woman-boy":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66","woman-woman-boy-boy":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66","woman-woman-girl":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67","woman-woman-girl-boy":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66","woman-woman-girl-girl":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67","female-technologist":"\ud83d\udc69\u200d\ud83d\udcbb","female-office-worker":"\ud83d\udc69\u200d\ud83d\udcbc","female-mechanic":"\ud83d\udc69\u200d\ud83d\udd27","female-scientist":"\ud83d\udc69\u200d\ud83d\udd2c","female-astronaut":"\ud83d\udc69\u200d\ud83d\ude80","female-firefighter":"\ud83d\udc69\u200d\ud83d\ude92","female-doctor":"\ud83d\udc69\u200d\u2695\ufe0f","female-judge":"\ud83d\udc69\u200d\u2696\ufe0f","female-pilot":"\ud83d\udc69\u200d\u2708\ufe0f","woman-heart-man":"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc68",couple_with_heart:"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc68","woman-heart-woman":"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69","woman-kiss-man":"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68",couplekiss:"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68","woman-kiss-woman":"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69",woman:"\ud83d\udc69",couple:"\ud83d\udc6b",man_and_woman_holding_hands:"\ud83d\udc6b",two_men_holding_hands:"\ud83d\udc6c",two_women_holding_hands:"\ud83d\udc6d","female-police-officer":"\ud83d\udc6e\u200d\u2640\ufe0f","male-police-officer":"\ud83d\udc6e\u200d\u2642\ufe0f",cop:"\ud83d\udc6e\u200d\u2642\ufe0f","woman-with-bunny-ears-partying":"\ud83d\udc6f\u200d\u2640\ufe0f",dancers:"\ud83d\udc6f\u200d\u2640\ufe0f","man-with-bunny-ears-partying":"\ud83d\udc6f\u200d\u2642\ufe0f",bride_with_veil:"\ud83d\udc70","blond-haired-woman":"\ud83d\udc71\u200d\u2640\ufe0f","blond-haired-man":"\ud83d\udc71\u200d\u2642\ufe0f",person_with_blond_hair:"\ud83d\udc71\u200d\u2642\ufe0f",man_with_gua_pi_mao:"\ud83d\udc72","woman-wearing-turban":"\ud83d\udc73\u200d\u2640\ufe0f","man-wearing-turban":"\ud83d\udc73\u200d\u2642\ufe0f",man_with_turban:"\ud83d\udc73\u200d\u2642\ufe0f",older_man:"\ud83d\udc74",older_woman:"\ud83d\udc75",baby:"\ud83d\udc76","female-construction-worker":"\ud83d\udc77\u200d\u2640\ufe0f","male-construction-worker":"\ud83d\udc77\u200d\u2642\ufe0f",construction_worker:"\ud83d\udc77\u200d\u2642\ufe0f",princess:"\ud83d\udc78",japanese_ogre:"\ud83d\udc79",japanese_goblin:"\ud83d\udc7a",ghost:"\ud83d\udc7b",angel:"\ud83d\udc7c",alien:"\ud83d\udc7d",space_invader:"\ud83d\udc7e",imp:"\ud83d\udc7f",skull:"\ud83d\udc80","woman-tipping-hand":"\ud83d\udc81\u200d\u2640\ufe0f",information_desk_person:"\ud83d\udc81\u200d\u2640\ufe0f","man-tipping-hand":"\ud83d\udc81\u200d\u2642\ufe0f","female-guard":"\ud83d\udc82\u200d\u2640\ufe0f","male-guard":"\ud83d\udc82\u200d\u2642\ufe0f",guardsman:"\ud83d\udc82\u200d\u2642\ufe0f",dancer:"\ud83d\udc83",lipstick:"\ud83d\udc84",nail_care:"\ud83d\udc85","woman-getting-massage":"\ud83d\udc86\u200d\u2640\ufe0f",massage:"\ud83d\udc86\u200d\u2640\ufe0f","man-getting-massage":"\ud83d\udc86\u200d\u2642\ufe0f","woman-getting-haircut":"\ud83d\udc87\u200d\u2640\ufe0f",haircut:"\ud83d\udc87\u200d\u2640\ufe0f","man-getting-haircut":"\ud83d\udc87\u200d\u2642\ufe0f",barber:"\ud83d\udc88",syringe:"\ud83d\udc89",pill:"\ud83d\udc8a",kiss:"\ud83d\udc8b",love_letter:"\ud83d\udc8c",ring:"\ud83d\udc8d",gem:"\ud83d\udc8e",bouquet:"\ud83d\udc90",wedding:"\ud83d\udc92",heartbeat:"\ud83d\udc93",broken_heart:"\ud83d\udc94",two_hearts:"\ud83d\udc95",sparkling_heart:"\ud83d\udc96",heartpulse:"\ud83d\udc97",cupid:"\ud83d\udc98",blue_heart:"\ud83d\udc99",green_heart:"\ud83d\udc9a",yellow_heart:"\ud83d\udc9b",purple_heart:"\ud83d\udc9c",gift_heart:"\ud83d\udc9d",revolving_hearts:"\ud83d\udc9e",heart_decoration:"\ud83d\udc9f",diamond_shape_with_a_dot_inside:"\ud83d\udca0",bulb:"\ud83d\udca1",anger:"\ud83d\udca2",bomb:"\ud83d\udca3",zzz:"\ud83d\udca4",boom:"\ud83d\udca5",collision:"\ud83d\udca5",sweat_drops:"\ud83d\udca6",droplet:"\ud83d\udca7",dash:"\ud83d\udca8",hankey:"\ud83d\udca9",poop:"\ud83d\udca9",shit:"\ud83d\udca9",muscle:"\ud83d\udcaa",dizzy:"\ud83d\udcab",speech_balloon:"\ud83d\udcac",thought_balloon:"\ud83d\udcad",white_flower:"\ud83d\udcae",moneybag:"\ud83d\udcb0",currency_exchange:"\ud83d\udcb1",heavy_dollar_sign:"\ud83d\udcb2",credit_card:"\ud83d\udcb3",yen:"\ud83d\udcb4",dollar:"\ud83d\udcb5",euro:"\ud83d\udcb6",pound:"\ud83d\udcb7",money_with_wings:"\ud83d\udcb8",chart:"\ud83d\udcb9",seat:"\ud83d\udcba",computer:"\ud83d\udcbb",briefcase:"\ud83d\udcbc",minidisc:"\ud83d\udcbd",floppy_disk:"\ud83d\udcbe",cd:"\ud83d\udcbf",dvd:"\ud83d\udcc0",file_folder:"\ud83d\udcc1",open_file_folder:"\ud83d\udcc2",page_with_curl:"\ud83d\udcc3",page_facing_up:"\ud83d\udcc4",date:"\ud83d\udcc5",calendar:"\ud83d\udcc6",card_index:"\ud83d\udcc7",chart_with_upwards_trend:"\ud83d\udcc8",chart_with_downwards_trend:"\ud83d\udcc9",bar_chart:"\ud83d\udcca",clipboard:"\ud83d\udccb",pushpin:"\ud83d\udccc",round_pushpin:"\ud83d\udccd",paperclip:"\ud83d\udcce",straight_ruler:"\ud83d\udccf",triangular_ruler:"\ud83d\udcd0",bookmark_tabs:"\ud83d\udcd1",ledger:"\ud83d\udcd2",notebook:"\ud83d\udcd3",notebook_with_decorative_cover:"\ud83d\udcd4",closed_book:"\ud83d\udcd5",book:"\ud83d\udcd6",open_book:"\ud83d\udcd6",green_book:"\ud83d\udcd7",blue_book:"\ud83d\udcd8",orange_book:"\ud83d\udcd9",books:"\ud83d\udcda",name_badge:"\ud83d\udcdb",scroll:"\ud83d\udcdc",memo:"\ud83d\udcdd",pencil:"\ud83d\udcdd",telephone_receiver:"\ud83d\udcde",pager:"\ud83d\udcdf",fax:"\ud83d\udce0",satellite_antenna:"\ud83d\udce1",loudspeaker:"\ud83d\udce2",mega:"\ud83d\udce3",outbox_tray:"\ud83d\udce4",inbox_tray:"\ud83d\udce5",package:"\ud83d\udce6","e-mail":"\ud83d\udce7",incoming_envelope:"\ud83d\udce8",envelope_with_arrow:"\ud83d\udce9",mailbox_closed:"\ud83d\udcea",mailbox:"\ud83d\udceb",mailbox_with_mail:"\ud83d\udcec",mailbox_with_no_mail:"\ud83d\udced",postbox:"\ud83d\udcee",postal_horn:"\ud83d\udcef",newspaper:"\ud83d\udcf0",iphone:"\ud83d\udcf1",calling:"\ud83d\udcf2",vibration_mode:"\ud83d\udcf3",mobile_phone_off:"\ud83d\udcf4",no_mobile_phones:"\ud83d\udcf5",signal_strength:"\ud83d\udcf6",camera:"\ud83d\udcf7",camera_with_flash:"\ud83d\udcf8",video_camera:"\ud83d\udcf9",tv:"\ud83d\udcfa",radio:"\ud83d\udcfb",vhs:"\ud83d\udcfc",film_projector:"\ud83d\udcfd\ufe0f",prayer_beads:"\ud83d\udcff",twisted_rightwards_arrows:"\ud83d\udd00",repeat:"\ud83d\udd01",repeat_one:"\ud83d\udd02",arrows_clockwise:"\ud83d\udd03",arrows_counterclockwise:"\ud83d\udd04",low_brightness:"\ud83d\udd05",high_brightness:"\ud83d\udd06",mute:"\ud83d\udd07",speaker:"\ud83d\udd08",sound:"\ud83d\udd09",loud_sound:"\ud83d\udd0a",battery:"\ud83d\udd0b",electric_plug:"\ud83d\udd0c",mag:"\ud83d\udd0d",mag_right:"\ud83d\udd0e",lock_with_ink_pen:"\ud83d\udd0f",closed_lock_with_key:"\ud83d\udd10",key:"\ud83d\udd11",lock:"\ud83d\udd12",unlock:"\ud83d\udd13",bell:"\ud83d\udd14",no_bell:"\ud83d\udd15",bookmark:"\ud83d\udd16",link:"\ud83d\udd17",radio_button:"\ud83d\udd18",back:"\ud83d\udd19",end:"\ud83d\udd1a",on:"\ud83d\udd1b",soon:"\ud83d\udd1c",top:"\ud83d\udd1d",underage:"\ud83d\udd1e",keycap_ten:"\ud83d\udd1f",capital_abcd:"\ud83d\udd20",abcd:"\ud83d\udd21",symbols:"\ud83d\udd23",abc:"\ud83d\udd24",fire:"\ud83d\udd25",flashlight:"\ud83d\udd26",wrench:"\ud83d\udd27",hammer:"\ud83d\udd28",nut_and_bolt:"\ud83d\udd29",hocho:"\ud83d\udd2a",knife:"\ud83d\udd2a",gun:"\ud83d\udd2b",microscope:"\ud83d\udd2c",telescope:"\ud83d\udd2d",crystal_ball:"\ud83d\udd2e",six_pointed_star:"\ud83d\udd2f",beginner:"\ud83d\udd30",trident:"\ud83d\udd31",black_square_button:"\ud83d\udd32",white_square_button:"\ud83d\udd33",red_circle:"\ud83d\udd34",large_blue_circle:"\ud83d\udd35",large_orange_diamond:"\ud83d\udd36",large_blue_diamond:"\ud83d\udd37",small_orange_diamond:"\ud83d\udd38",small_blue_diamond:"\ud83d\udd39",small_red_triangle:"\ud83d\udd3a",small_red_triangle_down:"\ud83d\udd3b",arrow_up_small:"\ud83d\udd3c",arrow_down_small:"\ud83d\udd3d",om_symbol:"\ud83d\udd49\ufe0f",dove_of_peace:"\ud83d\udd4a\ufe0f",kaaba:"\ud83d\udd4b",mosque:"\ud83d\udd4c",synagogue:"\ud83d\udd4d",menorah_with_nine_branches:"\ud83d\udd4e",clock1:"\ud83d\udd50",clock2:"\ud83d\udd51",clock3:"\ud83d\udd52",clock4:"\ud83d\udd53",clock5:"\ud83d\udd54",clock6:"\ud83d\udd55",clock7:"\ud83d\udd56",clock8:"\ud83d\udd57",clock9:"\ud83d\udd58",clock10:"\ud83d\udd59",clock11:"\ud83d\udd5a",clock12:"\ud83d\udd5b",clock130:"\ud83d\udd5c",clock230:"\ud83d\udd5d",clock330:"\ud83d\udd5e",clock430:"\ud83d\udd5f",clock530:"\ud83d\udd60",clock630:"\ud83d\udd61",clock730:"\ud83d\udd62",clock830:"\ud83d\udd63",clock930:"\ud83d\udd64",clock1030:"\ud83d\udd65",clock1130:"\ud83d\udd66",clock1230:"\ud83d\udd67",candle:"\ud83d\udd6f\ufe0f",mantelpiece_clock:"\ud83d\udd70\ufe0f",hole:"\ud83d\udd73\ufe0f",man_in_business_suit_levitating:"\ud83d\udd74\ufe0f","female-detective":"\ud83d\udd75\ufe0f\u200d\u2640\ufe0f","male-detective":"\ud83d\udd75\ufe0f\u200d\u2642\ufe0f",sleuth_or_spy:"\ud83d\udd75\ufe0f\u200d\u2642\ufe0f",dark_sunglasses:"\ud83d\udd76\ufe0f",spider:"\ud83d\udd77\ufe0f",spider_web:"\ud83d\udd78\ufe0f",joystick:"\ud83d\udd79\ufe0f",man_dancing:"\ud83d\udd7a",linked_paperclips:"\ud83d\udd87\ufe0f",lower_left_ballpoint_pen:"\ud83d\udd8a\ufe0f",lower_left_fountain_pen:"\ud83d\udd8b\ufe0f",lower_left_paintbrush:"\ud83d\udd8c\ufe0f",lower_left_crayon:"\ud83d\udd8d\ufe0f",raised_hand_with_fingers_splayed:"\ud83d\udd90\ufe0f",middle_finger:"\ud83d\udd95",reversed_hand_with_middle_finger_extended:"\ud83d\udd95","spock-hand":"\ud83d\udd96",black_heart:"\ud83d\udda4",desktop_computer:"\ud83d\udda5\ufe0f",printer:"\ud83d\udda8\ufe0f",three_button_mouse:"\ud83d\uddb1\ufe0f",trackball:"\ud83d\uddb2\ufe0f",frame_with_picture:"\ud83d\uddbc\ufe0f",card_index_dividers:"\ud83d\uddc2\ufe0f",card_file_box:"\ud83d\uddc3\ufe0f",file_cabinet:"\ud83d\uddc4\ufe0f",wastebasket:"\ud83d\uddd1\ufe0f",spiral_note_pad:"\ud83d\uddd2\ufe0f",spiral_calendar_pad:"\ud83d\uddd3\ufe0f",compression:"\ud83d\udddc\ufe0f",old_key:"\ud83d\udddd\ufe0f",rolled_up_newspaper:"\ud83d\uddde\ufe0f",dagger_knife:"\ud83d\udde1\ufe0f",speaking_head_in_silhouette:"\ud83d\udde3\ufe0f",left_speech_bubble:"\ud83d\udde8\ufe0f",right_anger_bubble:"\ud83d\uddef\ufe0f",ballot_box_with_ballot:"\ud83d\uddf3\ufe0f",world_map:"\ud83d\uddfa\ufe0f",mount_fuji:"\ud83d\uddfb",tokyo_tower:"\ud83d\uddfc",statue_of_liberty:"\ud83d\uddfd",japan:"\ud83d\uddfe",moyai:"\ud83d\uddff",grinning:"\ud83d\ude00",grin:"\ud83d\ude01",joy:"\ud83d\ude02",smiley:"\ud83d\ude03",smile:"\ud83d\ude04",sweat_smile:"\ud83d\ude05",laughing:"\ud83d\ude06",satisfied:"\ud83d\ude06",innocent:"\ud83d\ude07",smiling_imp:"\ud83d\ude08",wink:"\ud83d\ude09",blush:"\ud83d\ude0a",yum:"\ud83d\ude0b",relieved:"\ud83d\ude0c",heart_eyes:"\ud83d\ude0d",sunglasses:"\ud83d\ude0e",smirk:"\ud83d\ude0f",neutral_face:"\ud83d\ude10",expressionless:"\ud83d\ude11",unamused:"\ud83d\ude12",sweat:"\ud83d\ude13",pensive:"\ud83d\ude14",confused:"\ud83d\ude15",confounded:"\ud83d\ude16",kissing:"\ud83d\ude17",kissing_heart:"\ud83d\ude18",kissing_smiling_eyes:"\ud83d\ude19",kissing_closed_eyes:"\ud83d\ude1a",stuck_out_tongue:"\ud83d\ude1b",stuck_out_tongue_winking_eye:"\ud83d\ude1c",stuck_out_tongue_closed_eyes:"\ud83d\ude1d",disappointed:"\ud83d\ude1e",worried:"\ud83d\ude1f",angry:"\ud83d\ude20",rage:"\ud83d\ude21",cry:"\ud83d\ude22",persevere:"\ud83d\ude23",triumph:"\ud83d\ude24",disappointed_relieved:"\ud83d\ude25",frowning:"\ud83d\ude26",anguished:"\ud83d\ude27",fearful:"\ud83d\ude28",weary:"\ud83d\ude29",sleepy:"\ud83d\ude2a",tired_face:"\ud83d\ude2b",grimacing:"\ud83d\ude2c",sob:"\ud83d\ude2d",open_mouth:"\ud83d\ude2e",hushed:"\ud83d\ude2f",cold_sweat:"\ud83d\ude30",scream:"\ud83d\ude31",astonished:"\ud83d\ude32",flushed:"\ud83d\ude33",sleeping:"\ud83d\ude34",dizzy_face:"\ud83d\ude35",no_mouth:"\ud83d\ude36",mask:"\ud83d\ude37",smile_cat:"\ud83d\ude38",joy_cat:"\ud83d\ude39",smiley_cat:"\ud83d\ude3a",heart_eyes_cat:"\ud83d\ude3b",smirk_cat:"\ud83d\ude3c",kissing_cat:"\ud83d\ude3d",pouting_cat:"\ud83d\ude3e",crying_cat_face:"\ud83d\ude3f",scream_cat:"\ud83d\ude40",slightly_frowning_face:"\ud83d\ude41",slightly_smiling_face:"\ud83d\ude42",upside_down_face:"\ud83d\ude43",face_with_rolling_eyes:"\ud83d\ude44","woman-gesturing-no":"\ud83d\ude45\u200d\u2640\ufe0f",no_good:"\ud83d\ude45\u200d\u2640\ufe0f","man-gesturing-no":"\ud83d\ude45\u200d\u2642\ufe0f","woman-gesturing-ok":"\ud83d\ude46\u200d\u2640\ufe0f",ok_woman:"\ud83d\ude46\u200d\u2640\ufe0f","man-gesturing-ok":"\ud83d\ude46\u200d\u2642\ufe0f","woman-bowing":"\ud83d\ude47\u200d\u2640\ufe0f","man-bowing":"\ud83d\ude47\u200d\u2642\ufe0f",bow:"\ud83d\ude47\u200d\u2642\ufe0f",see_no_evil:"\ud83d\ude48",hear_no_evil:"\ud83d\ude49",speak_no_evil:"\ud83d\ude4a","woman-raising-hand":"\ud83d\ude4b\u200d\u2640\ufe0f",raising_hand:"\ud83d\ude4b\u200d\u2640\ufe0f","man-raising-hand":"\ud83d\ude4b\u200d\u2642\ufe0f",raised_hands:"\ud83d\ude4c","woman-frowning":"\ud83d\ude4d\u200d\u2640\ufe0f",person_frowning:"\ud83d\ude4d\u200d\u2640\ufe0f","man-frowning":"\ud83d\ude4d\u200d\u2642\ufe0f","woman-pouting":"\ud83d\ude4e\u200d\u2640\ufe0f",person_with_pouting_face:"\ud83d\ude4e\u200d\u2640\ufe0f","man-pouting":"\ud83d\ude4e\u200d\u2642\ufe0f",pray:"\ud83d\ude4f",rocket:"\ud83d\ude80",helicopter:"\ud83d\ude81",steam_locomotive:"\ud83d\ude82",railway_car:"\ud83d\ude83",bullettrain_side:"\ud83d\ude84",bullettrain_front:"\ud83d\ude85",train2:"\ud83d\ude86",metro:"\ud83d\ude87",light_rail:"\ud83d\ude88",station:"\ud83d\ude89",tram:"\ud83d\ude8a",train:"\ud83d\ude8b",bus:"\ud83d\ude8c",oncoming_bus:"\ud83d\ude8d",trolleybus:"\ud83d\ude8e",busstop:"\ud83d\ude8f",minibus:"\ud83d\ude90",ambulance:"\ud83d\ude91",fire_engine:"\ud83d\ude92",police_car:"\ud83d\ude93",oncoming_police_car:"\ud83d\ude94",taxi:"\ud83d\ude95",oncoming_taxi:"\ud83d\ude96",car:"\ud83d\ude97",red_car:"\ud83d\ude97",oncoming_automobile:"\ud83d\ude98",blue_car:"\ud83d\ude99",truck:"\ud83d\ude9a",articulated_lorry:"\ud83d\ude9b",tractor:"\ud83d\ude9c",monorail:"\ud83d\ude9d",mountain_railway:"\ud83d\ude9e",suspension_railway:"\ud83d\ude9f",mountain_cableway:"\ud83d\udea0",aerial_tramway:"\ud83d\udea1",ship:"\ud83d\udea2","woman-rowing-boat":"\ud83d\udea3\u200d\u2640\ufe0f","man-rowing-boat":"\ud83d\udea3\u200d\u2642\ufe0f",rowboat:"\ud83d\udea3\u200d\u2642\ufe0f",speedboat:"\ud83d\udea4",traffic_light:"\ud83d\udea5",vertical_traffic_light:"\ud83d\udea6",construction:"\ud83d\udea7",rotating_light:"\ud83d\udea8",triangular_flag_on_post:"\ud83d\udea9",door:"\ud83d\udeaa",no_entry_sign:"\ud83d\udeab",smoking:"\ud83d\udeac",no_smoking:"\ud83d\udead",put_litter_in_its_place:"\ud83d\udeae",do_not_litter:"\ud83d\udeaf",potable_water:"\ud83d\udeb0","non-potable_water":"\ud83d\udeb1",bike:"\ud83d\udeb2",no_bicycles:"\ud83d\udeb3","woman-biking":"\ud83d\udeb4\u200d\u2640\ufe0f","man-biking":"\ud83d\udeb4\u200d\u2642\ufe0f",bicyclist:"\ud83d\udeb4\u200d\u2642\ufe0f","woman-mountain-biking":"\ud83d\udeb5\u200d\u2640\ufe0f","man-mountain-biking":"\ud83d\udeb5\u200d\u2642\ufe0f",mountain_bicyclist:"\ud83d\udeb5\u200d\u2642\ufe0f","woman-walking":"\ud83d\udeb6\u200d\u2640\ufe0f","man-walking":"\ud83d\udeb6\u200d\u2642\ufe0f",walking:"\ud83d\udeb6\u200d\u2642\ufe0f",no_pedestrians:"\ud83d\udeb7",children_crossing:"\ud83d\udeb8",mens:"\ud83d\udeb9",womens:"\ud83d\udeba",restroom:"\ud83d\udebb",baby_symbol:"\ud83d\udebc",toilet:"\ud83d\udebd",wc:"\ud83d\udebe",shower:"\ud83d\udebf",bath:"\ud83d\udec0",bathtub:"\ud83d\udec1",passport_control:"\ud83d\udec2",customs:"\ud83d\udec3",baggage_claim:"\ud83d\udec4",left_luggage:"\ud83d\udec5",couch_and_lamp:"\ud83d\udecb\ufe0f",sleeping_accommodation:"\ud83d\udecc",shopping_bags:"\ud83d\udecd\ufe0f",bellhop_bell:"\ud83d\udece\ufe0f",bed:"\ud83d\udecf\ufe0f",place_of_worship:"\ud83d\uded0",octagonal_sign:"\ud83d\uded1",shopping_trolley:"\ud83d\uded2",hammer_and_wrench:"\ud83d\udee0\ufe0f",shield:"\ud83d\udee1\ufe0f",oil_drum:"\ud83d\udee2\ufe0f",motorway:"\ud83d\udee3\ufe0f",railway_track:"\ud83d\udee4\ufe0f",motor_boat:"\ud83d\udee5\ufe0f",small_airplane:"\ud83d\udee9\ufe0f",airplane_departure:"\ud83d\udeeb",airplane_arriving:"\ud83d\udeec",satellite:"\ud83d\udef0\ufe0f",passenger_ship:"\ud83d\udef3\ufe0f",scooter:"\ud83d\udef4",motor_scooter:"\ud83d\udef5",canoe:"\ud83d\udef6",sled:"\ud83d\udef7",flying_saucer:"\ud83d\udef8",zipper_mouth_face:"\ud83e\udd10",money_mouth_face:"\ud83e\udd11",face_with_thermometer:"\ud83e\udd12",nerd_face:"\ud83e\udd13",thinking_face:"\ud83e\udd14",face_with_head_bandage:"\ud83e\udd15",robot_face:"\ud83e\udd16",hugging_face:"\ud83e\udd17",the_horns:"\ud83e\udd18",sign_of_the_horns:"\ud83e\udd18",call_me_hand:"\ud83e\udd19",raised_back_of_hand:"\ud83e\udd1a","left-facing_fist":"\ud83e\udd1b","right-facing_fist":"\ud83e\udd1c",handshake:"\ud83e\udd1d",crossed_fingers:"\ud83e\udd1e",hand_with_index_and_middle_fingers_crossed:"\ud83e\udd1e",i_love_you_hand_sign:"\ud83e\udd1f",face_with_cowboy_hat:"\ud83e\udd20",clown_face:"\ud83e\udd21",nauseated_face:"\ud83e\udd22",rolling_on_the_floor_laughing:"\ud83e\udd23",drooling_face:"\ud83e\udd24",lying_face:"\ud83e\udd25","woman-facepalming":"\ud83e\udd26\u200d\u2640\ufe0f","man-facepalming":"\ud83e\udd26\u200d\u2642\ufe0f",face_palm:"\ud83e\udd26",sneezing_face:"\ud83e\udd27",face_with_raised_eyebrow:"\ud83e\udd28",face_with_one_eyebrow_raised:"\ud83e\udd28","star-struck":"\ud83e\udd29",grinning_face_with_star_eyes:"\ud83e\udd29",zany_face:"\ud83e\udd2a",grinning_face_with_one_large_and_one_small_eye:"\ud83e\udd2a",shushing_face:"\ud83e\udd2b",face_with_finger_covering_closed_lips:"\ud83e\udd2b",face_with_symbols_on_mouth:"\ud83e\udd2c",serious_face_with_symbols_covering_mouth:"\ud83e\udd2c",face_with_hand_over_mouth:"\ud83e\udd2d",smiling_face_with_smiling_eyes_and_hand_covering_mouth:"\ud83e\udd2d",face_vomiting:"\ud83e\udd2e",face_with_open_mouth_vomiting:"\ud83e\udd2e",exploding_head:"\ud83e\udd2f",shocked_face_with_exploding_head:"\ud83e\udd2f",pregnant_woman:"\ud83e\udd30","breast-feeding":"\ud83e\udd31",palms_up_together:"\ud83e\udd32",selfie:"\ud83e\udd33",prince:"\ud83e\udd34",man_in_tuxedo:"\ud83e\udd35",mrs_claus:"\ud83e\udd36",mother_christmas:"\ud83e\udd36","woman-shrugging":"\ud83e\udd37\u200d\u2640\ufe0f","man-shrugging":"\ud83e\udd37\u200d\u2642\ufe0f",shrug:"\ud83e\udd37","woman-cartwheeling":"\ud83e\udd38\u200d\u2640\ufe0f","man-cartwheeling":"\ud83e\udd38\u200d\u2642\ufe0f",person_doing_cartwheel:"\ud83e\udd38","woman-juggling":"\ud83e\udd39\u200d\u2640\ufe0f","man-juggling":"\ud83e\udd39\u200d\u2642\ufe0f",juggling:"\ud83e\udd39",fencer:"\ud83e\udd3a","woman-wrestling":"\ud83e\udd3c\u200d\u2640\ufe0f","man-wrestling":"\ud83e\udd3c\u200d\u2642\ufe0f",wrestlers:"\ud83e\udd3c","woman-playing-water-polo":"\ud83e\udd3d\u200d\u2640\ufe0f","man-playing-water-polo":"\ud83e\udd3d\u200d\u2642\ufe0f",water_polo:"\ud83e\udd3d","woman-playing-handball":"\ud83e\udd3e\u200d\u2640\ufe0f","man-playing-handball":"\ud83e\udd3e\u200d\u2642\ufe0f",handball:"\ud83e\udd3e",wilted_flower:"\ud83e\udd40",drum_with_drumsticks:"\ud83e\udd41",clinking_glasses:"\ud83e\udd42",tumbler_glass:"\ud83e\udd43",spoon:"\ud83e\udd44",goal_net:"\ud83e\udd45",first_place_medal:"\ud83e\udd47",second_place_medal:"\ud83e\udd48",third_place_medal:"\ud83e\udd49",boxing_glove:"\ud83e\udd4a",martial_arts_uniform:"\ud83e\udd4b",curling_stone:"\ud83e\udd4c",croissant:"\ud83e\udd50",avocado:"\ud83e\udd51",cucumber:"\ud83e\udd52",bacon:"\ud83e\udd53",potato:"\ud83e\udd54",carrot:"\ud83e\udd55",baguette_bread:"\ud83e\udd56",green_salad:"\ud83e\udd57",shallow_pan_of_food:"\ud83e\udd58",stuffed_flatbread:"\ud83e\udd59",egg:"\ud83e\udd5a",glass_of_milk:"\ud83e\udd5b",peanuts:"\ud83e\udd5c",kiwifruit:"\ud83e\udd5d",pancakes:"\ud83e\udd5e",dumpling:"\ud83e\udd5f",fortune_cookie:"\ud83e\udd60",takeout_box:"\ud83e\udd61",chopsticks:"\ud83e\udd62",bowl_with_spoon:"\ud83e\udd63",cup_with_straw:"\ud83e\udd64",coconut:"\ud83e\udd65",broccoli:"\ud83e\udd66",pie:"\ud83e\udd67",pretzel:"\ud83e\udd68",cut_of_meat:"\ud83e\udd69",sandwich:"\ud83e\udd6a",canned_food:"\ud83e\udd6b",crab:"\ud83e\udd80",lion_face:"\ud83e\udd81",scorpion:"\ud83e\udd82",turkey:"\ud83e\udd83",unicorn_face:"\ud83e\udd84",eagle:"\ud83e\udd85",duck:"\ud83e\udd86",bat:"\ud83e\udd87",shark:"\ud83e\udd88",owl:"\ud83e\udd89",fox_face:"\ud83e\udd8a",butterfly:"\ud83e\udd8b",deer:"\ud83e\udd8c",gorilla:"\ud83e\udd8d",lizard:"\ud83e\udd8e",rhinoceros:"\ud83e\udd8f",shrimp:"\ud83e\udd90",squid:"\ud83e\udd91",giraffe_face:"\ud83e\udd92",zebra_face:"\ud83e\udd93",hedgehog:"\ud83e\udd94",sauropod:"\ud83e\udd95","t-rex":"\ud83e\udd96",cricket:"\ud83e\udd97",cheese_wedge:"\ud83e\uddc0",face_with_monocle:"\ud83e\uddd0",adult:"\ud83e\uddd1",child:"\ud83e\uddd2",older_adult:"\ud83e\uddd3",bearded_person:"\ud83e\uddd4",person_with_headscarf:"\ud83e\uddd5",woman_in_steamy_room:"\ud83e\uddd6\u200d\u2640\ufe0f",man_in_steamy_room:"\ud83e\uddd6\u200d\u2642\ufe0f",person_in_steamy_room:"\ud83e\uddd6\u200d\u2642\ufe0f",woman_climbing:"\ud83e\uddd7\u200d\u2640\ufe0f",person_climbing:"\ud83e\uddd7\u200d\u2640\ufe0f",man_climbing:"\ud83e\uddd7\u200d\u2642\ufe0f",woman_in_lotus_position:"\ud83e\uddd8\u200d\u2640\ufe0f",person_in_lotus_position:"\ud83e\uddd8\u200d\u2640\ufe0f",man_in_lotus_position:"\ud83e\uddd8\u200d\u2642\ufe0f",female_mage:"\ud83e\uddd9\u200d\u2640\ufe0f",mage:"\ud83e\uddd9\u200d\u2640\ufe0f",male_mage:"\ud83e\uddd9\u200d\u2642\ufe0f",female_fairy:"\ud83e\uddda\u200d\u2640\ufe0f",fairy:"\ud83e\uddda\u200d\u2640\ufe0f",male_fairy:"\ud83e\uddda\u200d\u2642\ufe0f",female_vampire:"\ud83e\udddb\u200d\u2640\ufe0f",vampire:"\ud83e\udddb\u200d\u2640\ufe0f",male_vampire:"\ud83e\udddb\u200d\u2642\ufe0f",mermaid:"\ud83e\udddc\u200d\u2640\ufe0f",merman:"\ud83e\udddc\u200d\u2642\ufe0f",merperson:"\ud83e\udddc\u200d\u2642\ufe0f",female_elf:"\ud83e\udddd\u200d\u2640\ufe0f",male_elf:"\ud83e\udddd\u200d\u2642\ufe0f",elf:"\ud83e\udddd\u200d\u2642\ufe0f",female_genie:"\ud83e\uddde\u200d\u2640\ufe0f",male_genie:"\ud83e\uddde\u200d\u2642\ufe0f",genie:"\ud83e\uddde\u200d\u2642\ufe0f",female_zombie:"\ud83e\udddf\u200d\u2640\ufe0f",male_zombie:"\ud83e\udddf\u200d\u2642\ufe0f",zombie:"\ud83e\udddf\u200d\u2642\ufe0f",brain:"\ud83e\udde0",orange_heart:"\ud83e\udde1",billed_cap:"\ud83e\udde2",scarf:"\ud83e\udde3",gloves:"\ud83e\udde4",coat:"\ud83e\udde5",socks:"\ud83e\udde6",bangbang:"\u203c\ufe0f",interrobang:"\u2049\ufe0f",tm:"\u2122\ufe0f",information_source:"\u2139\ufe0f",left_right_arrow:"\u2194\ufe0f",arrow_up_down:"\u2195\ufe0f",arrow_upper_left:"\u2196\ufe0f",arrow_upper_right:"\u2197\ufe0f",arrow_lower_right:"\u2198\ufe0f",arrow_lower_left:"\u2199\ufe0f",leftwards_arrow_with_hook:"\u21a9\ufe0f",arrow_right_hook:"\u21aa\ufe0f",watch:"\u231a",hourglass:"\u231b",keyboard:"\u2328\ufe0f",eject:"\u23cf\ufe0f",fast_forward:"\u23e9",rewind:"\u23ea",arrow_double_up:"\u23eb",arrow_double_down:"\u23ec",black_right_pointing_double_triangle_with_vertical_bar:"\u23ed\ufe0f",black_left_pointing_double_triangle_with_vertical_bar:"\u23ee\ufe0f",black_right_pointing_triangle_with_double_vertical_bar:"\u23ef\ufe0f",alarm_clock:"\u23f0",stopwatch:"\u23f1\ufe0f",timer_clock:"\u23f2\ufe0f",hourglass_flowing_sand:"\u23f3",double_vertical_bar:"\u23f8\ufe0f",black_square_for_stop:"\u23f9\ufe0f",black_circle_for_record:"\u23fa\ufe0f",m:"\u24c2\ufe0f",black_small_square:"\u25aa\ufe0f",white_small_square:"\u25ab\ufe0f",arrow_forward:"\u25b6\ufe0f",arrow_backward:"\u25c0\ufe0f",white_medium_square:"\u25fb\ufe0f",black_medium_square:"\u25fc\ufe0f",white_medium_small_square:"\u25fd",black_medium_small_square:"\u25fe",sunny:"\u2600\ufe0f",cloud:"\u2601\ufe0f",umbrella:"\u2602\ufe0f",snowman:"\u2603\ufe0f",comet:"\u2604\ufe0f",phone:"\u260e\ufe0f",telephone:"\u260e\ufe0f",ballot_box_with_check:"\u2611\ufe0f",shamrock:"\u2618\ufe0f",point_up:"\u261d\ufe0f",skull_and_crossbones:"\u2620\ufe0f",radioactive_sign:"\u2622\ufe0f",biohazard_sign:"\u2623\ufe0f",orthodox_cross:"\u2626\ufe0f",star_and_crescent:"\u262a\ufe0f",peace_symbol:"\u262e\ufe0f",yin_yang:"\u262f\ufe0f",wheel_of_dharma:"\u2638\ufe0f",white_frowning_face:"\u2639\ufe0f",relaxed:"\u263a\ufe0f",female_sign:"\u2640\ufe0f",male_sign:"\u2642\ufe0f",gemini:"\u264a",cancer:"\u264b",leo:"\u264c",virgo:"\u264d",libra:"\u264e",scorpius:"\u264f",spades:"\u2660\ufe0f",clubs:"\u2663\ufe0f",hearts:"\u2665\ufe0f",diamonds:"\u2666\ufe0f",hotsprings:"\u2668\ufe0f",recycle:"\u267b\ufe0f",wheelchair:"\u267f",hammer_and_pick:"\u2692\ufe0f",crossed_swords:"\u2694\ufe0f",medical_symbol:"\u2695\ufe0f",staff_of_aesculapius:"\u2695\ufe0f",scales:"\u2696\ufe0f",alembic:"\u2697\ufe0f",gear:"\u2699\ufe0f",atom_symbol:"\u269b\ufe0f",fleur_de_lis:"\u269c\ufe0f",warning:"\u26a0\ufe0f",zap:"\u26a1",white_circle:"\u26aa",black_circle:"\u26ab",coffin:"\u26b0\ufe0f",funeral_urn:"\u26b1\ufe0f",soccer:"\u26bd",baseball:"\u26be",snowman_without_snow:"\u26c4",partly_sunny:"\u26c5",thunder_cloud_and_rain:"\u26c8\ufe0f",ophiuchus:"\u26ce",pick:"\u26cf\ufe0f",helmet_with_white_cross:"\u26d1\ufe0f",chains:"\u26d3\ufe0f",no_entry:"\u26d4",shinto_shrine:"\u26e9\ufe0f",church:"\u26ea",mountain:"\u26f0\ufe0f",umbrella_on_ground:"\u26f1\ufe0f",fountain:"\u26f2",golf:"\u26f3",ferry:"\u26f4\ufe0f",boat:"\u26f5",sailboat:"\u26f5",skier:"\u26f7\ufe0f",ice_skate:"\u26f8\ufe0f","woman-bouncing-ball":"\u26f9\ufe0f\u200d\u2640\ufe0f","man-bouncing-ball":"\u26f9\ufe0f\u200d\u2642\ufe0f",person_with_ball:"\u26f9\ufe0f\u200d\u2642\ufe0f",tent:"\u26fa",fuelpump:"\u26fd",scissors:"\u2702\ufe0f",airplane:"\u2708\ufe0f",email:"\u2709\ufe0f",envelope:"\u2709\ufe0f",fist:"\u270a",hand:"\u270b",raised_hand:"\u270b",v:"\u270c\ufe0f",writing_hand:"\u270d\ufe0f",pencil2:"\u270f\ufe0f",black_nib:"\u2712\ufe0f",heavy_check_mark:"\u2714\ufe0f",heavy_multiplication_x:"\u2716\ufe0f",latin_cross:"\u271d\ufe0f",star_of_david:"\u2721\ufe0f",eight_spoked_asterisk:"\u2733\ufe0f",eight_pointed_black_star:"\u2734\ufe0f",snowflake:"\u2744\ufe0f",sparkle:"\u2747\ufe0f",x:"\u274c",negative_squared_cross_mark:"\u274e",heavy_heart_exclamation_mark_ornament:"\u2763\ufe0f",heart:"\u2764\ufe0f",arrow_right:"\u27a1\ufe0f",curly_loop:"\u27b0",loop:"\u27bf",arrow_heading_up:"\u2934\ufe0f",arrow_heading_down:"\u2935\ufe0f",arrow_left:"\u2b05\ufe0f",arrow_up:"\u2b06\ufe0f",arrow_down:"\u2b07\ufe0f",black_large_square:"\u2b1b",white_large_square:"\u2b1c",star:"\u2b50",o:"\u2b55",wavy_dash:"\u3030\ufe0f",part_alternation_mark:"\u303d\ufe0f",congratulations:"\u3297\ufe0f",secret:"\u3299\ufe0f"}}),878,[]); +__d((function(g,r,i,a,m,_e,d){var t=9007199254740991,n='[object Map]',u='[object Promise]',e='[object Set]',f='[object WeakMap]',c='[object DataView]',o=/^\[object .+?Constructor\]$/,l=/^(?:0|[1-9]\d*)$/,s="(?:\\ud83c[\\udde6-\\uddff]){2}",b="[\\ud800-\\udbff][\\udc00-\\udfff]",p="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?"+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",s,b].join('|')+")[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*"),y='(?:'+["[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?","[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]",s,b,"[\\ud800-\\udfff]"].join('|')+')',v=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+y+p,'g'),j=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ufe0e\\ufe0f]"),h='object'==typeof g&&g&&g.Object===Object&&g,O='object'==typeof self&&self&&self.Object===Object&&self,w=h||O||Function('return this')();function A(t,n){for(var u=-1,e=t?t.length:0,f=Array(e);++u-1&&n%1==0&&n-1&&n%1==0&&n<=t}function Or(t){var n=typeof t;return!!t&&('object'==n||'function'==n)}function wr(t){return!!t&&'object'==typeof t}function mr(t){return'string'==typeof t||!yr(t)&&wr(t)&&"[object String]"==q.call(t)}function Ar(t){return vr(t)?fr(t):or(t)}function Sr(t){return t?E(t,Ar(t)):[]}m.exports=function(t){if(!t)return[];if(vr(t))return mr(t)?x(u=t)?R(u):S(u):ir(t);var u;if(K&&t[K])return P(t[K]());var f=lr(t);return(f==n?F:f==e?M:Sr)(t)}}),879,[]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.CountryModal=void 0;var t=e(_r(d[1])),r=i(_r(d[2])),n=i(_r(d[3])),a=_r(d[4]),o=["children","withModal","disableNativeModal"];function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(l=function(e){return e?r:t})(e)}function i(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=l(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}var u=a.StyleSheet.create({container:{flex:1}});(_e.CountryModal=function(e){var l=e.children,i=e.withModal,c=e.disableNativeModal,f=(0,t.default)(e,o),s=(0,_r(d[5]).useTheme)().backgroundColor,p=n.useContext(_r(d[6]).CountryModalContext).teleport,M=r.createInteropElement(a.SafeAreaView,{style:[u.container,{backgroundColor:s}]},l);return n.useEffect((function(){c&&p(r.createInteropElement(_r(d[7]).AnimatedModal,Object.assign({},f),M))}),[c]),i?'web'===a.Platform.OS?r.createInteropElement(_r(d[8]).Modal,Object.assign({},f),M):c?null:r.createInteropElement(_r(d[8]).Modal,Object.assign({},f),M):M}).defaultProps={animationType:'slide',animated:!0,withModal:!0,disableNativeModal:!1}}),880,[1,134,854,178,2,858,881,882,883]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.CountryModalProvider=_e.CountryModalContext=void 0;var t=e(_r(d[1])),r=u(_r(d[2])),n=u(_r(d[3]));function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(o=function(e){return e?r:t})(e)}function u(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=o(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var i=u?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n}var a=_e.CountryModalContext=n.createContext({gate:void 0,teleport:void 0});_e.CountryModalProvider=function(e){var o=e.children,u=n.useState(void 0),i=(0,t.default)(u,2),l=i[0],f=i[1];return r.createInteropElement(a.Provider,{value:{gate:l,teleport:function(e){return f(e)}}},o,l)}}),881,[1,38,854,178]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.AnimatedModal=void 0;var e=i(_r(d[0])),t=i(_r(d[1])),n=_r(d[2]);function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}function i(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var i={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var u=a?Object.getOwnPropertyDescriptor(e,o):null;u&&(u.get||u.set)?Object.defineProperty(i,o,u):i[o]=e[o]}return i.default=e,n&&n.set(e,i),i}var a=n.Dimensions.get('window').height,o=!0;(_e.AnimatedModal=function(r){var i=r.children,u=r.visible,l=new n.Animated.Value(a),f=n.Animated.timing(l,{toValue:0,duration:300,useNativeDriver:o}).start,s=n.Animated.timing(l,{toValue:a,duration:300,useNativeDriver:o}).start;return t.useEffect((function(){u?f():s()}),[u]),e.createInteropElement(n.Animated.View,{style:Object.assign({},n.StyleSheet.absoluteFillObject,{transform:[{translateY:l}],zIndex:99})},i)}).defaultProps={visible:!1}}),882,[854,178,2]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"Modal",{enumerable:!0,get:function(){return n.Modal}});var n=r(d[0])}),883,[2]); +__d((function(g,_r,_i,_a,m,_e,d){var t=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.FlagButton=void 0;var e=t(_r(d[1])),n=a(_r(d[2])),o=a(_r(d[3])),r=_r(d[4]);function i(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,n=new WeakMap;return(i=function(t){return t?n:e})(t)}function a(t,e){if(!e&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var n=i(e);if(n&&n.has(t))return n.get(t);var o={__proto__:null},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in t)if("default"!==a&&{}.hasOwnProperty.call(t,a)){var l=r?Object.getOwnPropertyDescriptor(t,a):null;l&&(l.get||l.set)?Object.defineProperty(o,a,l):o[a]=t[a]}return o.default=t,n&&n.set(t,o),o}var l=r.StyleSheet.create({container:{alignItems:'flex-start',justifyContent:'flex-start'},containerWithEmoji:{marginTop:0},containerWithoutEmoji:{marginTop:5},flagWithSomethingContainer:{flexDirection:'row',flexWrap:'wrap',alignItems:'center'},something:{fontSize:16}}),u=function(t){return n.createInteropElement(_r(d[5]).CountryText,Object.assign({},t,{style:l.something}))},c=(0,o.memo)((function(t){var i=t.countryCode,a=t.withEmoji,c=t.withCountryNameButton,f=t.withCurrencyButton,h=t.withCallingCodeButton,y=t.withFlagButton,p=t.flagSize,s=t.placeholder,w=(0,_r(d[6]).useContext)(),C=w.translation,B=w.getCountryInfoAsync,E=(0,o.useState)({countryName:'',currency:'',callingCode:''}),j=(0,e.default)(E,2),O=j[0],v=j[1],I=O.countryName,S=O.currency,b=O.callingCode;return(0,o.useEffect)((function(){i&&B({countryCode:i,translation:C}).then(v).catch(console.warn)}),[i,c,f,h]),n.createInteropElement(r.View,{style:l.flagWithSomethingContainer},i?n.createInteropElement(_r(d[7]).Flag,Object.assign({},{withEmoji:a,countryCode:i,withFlagButton:y,flagSize:p})):n.createInteropElement(u,null,s),c&&I?n.createInteropElement(u,null,I+' '):null,f&&S?n.createInteropElement(u,null,`(${S}) `):null,h&&b?n.createInteropElement(u,null,`+${b}`):null)}));(_e.FlagButton=function(t){var e=t.withEmoji,o=t.withCountryNameButton,i=t.withCallingCodeButton,a=t.withCurrencyButton,u=t.withFlagButton,f=t.countryCode,h=t.containerButtonStyle,y=t.onOpen,p=t.placeholder,s=(0,_r(d[8]).useTheme)().flagSizeButton;return n.createInteropElement(r.TouchableOpacity,{activeOpacity:.7,onPress:y},n.createInteropElement(r.View,{style:[l.container,e?l.containerWithEmoji:l.containerWithoutEmoji,h]},n.createInteropElement(c,Object.assign({},{countryCode:f,withEmoji:e,withCountryNameButton:o,withCallingCodeButton:i,withCurrencyButton:a,withFlagButton:u,flagSize:s,placeholder:p}))))}).defaultProps={withEmoji:!0,withCountryNameButton:!1,withCallingCodeButton:!1,withCurrencyButton:!1,withFlagButton:!0}}),884,[1,38,854,178,2,866,868,867,858]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.HeaderModal=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=o(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var i=a?Object.getOwnPropertyDescriptor(e,l):null;i&&(i.get||i.set)?Object.defineProperty(n,l,i):n[l]=e[l]}return n.default=e,r&&r.set(e,n),n})(_r(d[1])),r=(e(_r(d[2])),_r(d[3])),n=e(_r(d[4]));function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(o=function(e){return e?r:t})(e)}var a=r.StyleSheet.create({container:{flexDirection:'row',alignItems:'center'}});(_e.HeaderModal=function(e){var o=e.withFilter,l=e.withCloseButton,i=e.closeButtonImage,u=e.closeButtonStyle,c=e.closeButtonImageStyle,f=e.onClose,s=e.renderFilter;return t.createInteropElement(r.View,{style:a.container},l&&t.createInteropElement(n.default,{image:i,style:u,imageStyle:c,onPress:f}),o&&s(e))}).defaultProps={withCloseButton:!0}}),885,[1,854,178,2,886]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var i=o?Object.getOwnPropertyDescriptor(e,l):null;i&&(i.get||i.set)?Object.defineProperty(n,l,i):n[l]=e[l]}return n.default=e,r&&r.set(e,n),n})(_r(d[1])),r=(e(_r(d[2])),_r(d[3])),n=e(_r(d[4]));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}var o=r.StyleSheet.create({container:{height:48,width:'15%',alignItems:'center',justifyContent:'center'},imageStyle:{height:25,width:25,resizeMode:'contain'}}),l=function(e){var n=_r(d[5]);e.image&&(n=e.image);var a=(0,_r(d[6]).useTheme)().onBackgroundTextColor;return t.createInteropElement(r.View,{style:[o.container,e.style]},t.createInteropElement(r.TouchableNativeFeedback,{background:r.Platform.Version<21?r.TouchableNativeFeedback.SelectableBackground():r.TouchableNativeFeedback.SelectableBackgroundBorderless(),onPress:e.onPress},t.createInteropElement(r.View,null,t.createInteropElement(r.Image,{source:n,style:[o.imageStyle,e.imageStyle,{tintColor:a}]}))))},i=function(e){var n=_r(d[7]);e.image&&(n=e.image);var a=(0,_r(d[6]).useTheme)().onBackgroundTextColor;return t.createInteropElement(r.View,{style:[o.container,e.style]},t.createInteropElement(r.TouchableOpacity,{onPress:e.onPress},t.createInteropElement(r.Image,{source:n,style:[o.imageStyle,e.imageStyle,{tintColor:a}]})))},c={onPress:n.default.func,image:n.default.any};i.prototype=c,l.prototype=c;_e.default=r.Platform.select({ios:i,android:l,web:i})}),886,[1,854,178,2,887,890,858,892]); +__d((function(g,r,i,a,m,e,d){m.exports=r(d[0])()}),887,[888]); +__d((function(g,r,i,a,m,e,d){'use strict';function n(){}function t(){}t.resetWarningCache=n,m.exports=function(){function o(n,t,o,p,c,s){if(s!==r(d[0])){var y=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw y.name='Invariant Violation',y}}function p(){return o}o.isRequired=o;var c={array:o,bool:o,func:o,number:o,object:o,string:o,symbol:o,any:o,arrayOf:p,element:o,elementType:o,instanceOf:p,node:o,objectOf:p,oneOf:p,oneOfType:p,shape:p,exact:p,checkPropTypes:t,resetWarningCache:n};return c.PropTypes=c,c}}),888,[889]); +__d((function(g,r,i,a,m,e,d){'use strict';m.exports='SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'}),889,[]); +__d((function(g,r,i,a,m,e,d){m.exports=r(d[0]).registerAsset({__packager_asset:!0,httpServerLocation:"/assets/node_modules/react-native-country-picker-modal/lib/assets/images",width:512,height:512,scales:[1],hash:"12466ff36f23f268e95685369ab6883b",name:"close",type:"png"})}),890,[891]); +__d((function(g,r,i,a,m,e,d){'use strict';m.exports=r(d[0])}),891,[208]); +__d((function(g,r,i,a,m,e,d){m.exports=r(d[0]).registerAsset({__packager_asset:!0,httpServerLocation:"/assets/node_modules/react-native-country-picker-modal/lib/assets/images",width:512,height:512,scales:[1],hash:"0dc8a49d999a851497c910bbb0afbba2",name:"close.ios",type:"png"})}),892,[891]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.CountryPicker=void 0;var t=e(_r(d[1])),n=i(_r(d[2])),r=i(_r(d[3]));function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(o=function(e){return e?n:t})(e)}function i(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=o(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var u=i?Object.getOwnPropertyDescriptor(e,l):null;u&&(u.get||u.set)?Object.defineProperty(r,l,u):r[l]=e[l]}return r.default=e,n&&n.set(e,r),r}var l=function(e){return e.renderFlagButton?e.renderFlagButton(e):n.createInteropElement(_r(d[4]).FlagButton,Object.assign({},e))},u=function(e){return e.renderCountryFilter?e.renderCountryFilter(e):n.createInteropElement(_r(d[5]).CountryFilter,Object.assign({},e))};(_e.CountryPicker=function(e){var o=e.countryCode,i=e.region,a=e.subregion,s=e.countryCodes,c=e.renderFlagButton,f=e.renderCountryFilter,h=e.filterProps,C=e.modalProps,p=e.flatListProps,y=e.onSelect,b=e.withEmoji,w=e.withFilter,F=e.withCloseButton,v=e.withCountryNameButton,O=e.withCallingCodeButton,B=e.withCurrencyButton,j=e.containerButtonStyle,M=e.withAlphaFilter,P=e.withCallingCode,E=e.withCurrency,I=e.withFlag,S=e.withModal,_=e.disableNativeModal,k=e.withFlagButton,A=e.onClose,L=e.onOpen,N=e.closeButtonImage,T=e.closeButtonStyle,x=e.closeButtonImageStyle,D=e.excludeCountries,W=e.placeholder,q=e.preferredCountries,H=(0,r.useState)({visible:e.visible||!1,countries:[],filter:'',filterFocus:!1}),J=(0,t.default)(H,2),R=J[0],z=J[1],G=(0,_r(d[6]).useContext)(),K=G.translation,Q=G.getCountriesAsync,U=R.visible,V=R.filter,X=R.countries,Y=R.filterFocus;(0,r.useEffect)((function(){R.visible!==e.visible&&z(Object.assign({},R,{visible:e.visible||!1}))}),[e.visible]);var Z=function(){z(Object.assign({},R,{filter:'',visible:!1})),A&&A()},$=function(e){return z(Object.assign({},R,{filter:e}))},ee=function(e){return z(Object.assign({},R,{countries:e}))},te=function(){return z(Object.assign({},R,{filterFocus:!0}))},ne=function(){return z(Object.assign({},R,{filterFocus:!1}))},re={countryCode:o,withEmoji:b,withCountryNameButton:v,withCallingCodeButton:O,withCurrencyButton:B,withFlagButton:k,renderFlagButton:c,onOpen:function(){z(Object.assign({},R,{visible:!0})),L&&L()},containerButtonStyle:j,placeholder:W};return(0,r.useEffect)((function(){Q(b?_r(d[7]).FlagType.EMOJI:_r(d[7]).FlagType.FLAT,K,i,a,s,D,q,M).then(ee).catch(console.warn)}),[K,b]),n.createInteropElement(r.default.Fragment,null,S&&l(re),n.createInteropElement(_r(d[8]).CountryModal,Object.assign({},Object.assign({visible:U,withModal:S,disableNativeModal:_},C),{onRequestClose:Z,onDismiss:Z}),n.createInteropElement(_r(d[9]).HeaderModal,Object.assign({},{withFilter:w,onClose:Z,closeButtonImage:N,closeButtonImageStyle:x,closeButtonStyle:T,withCloseButton:F},{renderFilter:function(e){return u(Object.assign({},e,{renderCountryFilter:f,onChangeText:$,value:V,onFocus:te,onBlur:ne},h))}})),n.createInteropElement(_r(d[10]).CountryList,Object.assign({},{onSelect:function(e){y(e),Z()},data:X,letters:[],withAlphaFilter:M&&''===V,withCallingCode:P,withCurrency:E,withFlag:I,withEmoji:b,filter:V,filterFocus:Y,flatListProps:p}))))}).defaultProps={withModal:!0,withAlphaFilter:!1,withCallingCode:!1,placeholder:'Select Country'}}),893,[1,38,854,178,884,853,868,871,880,885,865]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=r(d[0]),o=t.Dimensions.get('window'),n=o.width,h=o.height;function l(t){var o=t*n/100;return Math.round(o)}var f,w,c=t.StyleSheet.create({container:{width:l(80),backgroundColor:'white',flexDirection:'row'},flagButtonView:{width:l(20),height:'100%',minWidth:32,justifyContent:'center',flexDirection:'row',alignItems:'center'},flagButtonExtraWidth:{width:l(23)},shadow:{shadowColor:'rgba(0,0,0,0.4)',shadowOffset:{width:1,height:5},shadowOpacity:.34,shadowRadius:6.27,elevation:10},dropDownImage:{height:14,width:12},textContainer:{flex:1,backgroundColor:'#F8F9F9',paddingHorizontal:l(4),paddingVertical:(f=2,w=f*h/100,Math.round(w)),textAlign:'left',flexDirection:'row',alignItems:'center'},codeText:{fontSize:16,marginRight:10,fontWeight:'500',color:'#000000'},numberText:{fontSize:16,color:'#000000',flex:1}});e.default=c}),894,[2]); +__d((function(global,_$$_REQUIRE,_$$_IMPORT_DEFAULT,_$$_IMPORT_ALL,module,exports,_dependencyMap){!(function(e){if("object"==typeof exports&&void 0!==module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:void 0!==global?global:"undefined"!=typeof self?self:this).libphonenumber=e()}})((function(){var define,module,exports;return(function e(t,o,r){function n(i,a){if(!o[i]){if(!t[i]){var s="function"==typeof _$$_REQUIRE&&_$$_REQUIRE;if(!a&&s)return s(i,!0);if(d)return d(i,!0);var g=new Error("Cannot find module '"+i+"'");throw g.code="MODULE_NOT_FOUND",g}var u=o[i]={exports:{}};t[i][0].call(u.exports,(function(e){return n(t[i][1][e]||e)}),u,u.exports,e,t,o,r)}return o[i].exports}for(var d="function"==typeof _$$_REQUIRE&&_$$_REQUIRE,i=0;i=r}}),"es6","es3"),$jscomp.findInternal=function(e,t,o){e instanceof String&&(e=String(e));for(var r=e.length,n=0;n=n}}),"es6","es3"),$jscomp.polyfill("String.prototype.repeat",(function(e){return e||function(e){var t=$jscomp.checkStringArgs(this,null,"repeat");if(0>e||1342177279>>=1)&&(t+=t);return o}}),"es6","es3"),$jscomp.initSymbol=function(){},$jscomp.polyfill("Symbol",(function(e){if(e)return e;var t=function(e,t){this.$jscomp$symbol$id_=e,$jscomp.defineProperty(this,"description",{configurable:!0,writable:!0,value:t})};t.prototype.toString=function(){return this.$jscomp$symbol$id_};var o=0,r=function(e){if(this instanceof r)throw new TypeError("Symbol is not a constructor");return new t("jscomp_symbol_"+(e||"")+"_"+o++,e)};return r}),"es6","es3"),$jscomp.polyfill("Symbol.iterator",(function(e){if(e)return e;e=Symbol("Symbol.iterator");for(var t="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),o=0;o(t=t||0)&&(t=Math.max(t+r,0));t>>0),goog.uidCounter_=0,goog.cloneObject=function(e){var t=goog.typeOf(e);if("object"==t||"array"==t){if("function"==typeof e.clone)return e.clone();for(var o in t="array"==t?[]:{},e)t[o]=goog.cloneObject(e[o]);return t}return e},goog.bindNative_=function(e,t,o){return e.call.apply(e.bind,arguments)},goog.bindJs_=function(e,t,o){if(!e)throw Error();if(2").replace(/'/g,"'").replace(/"/g,'"').replace(/&/g,"&")),t&&(e=e.replace(/\{\$([^}]+)}/g,(function(e,o){return null!=t&&o in t?t[o]:e}))),e},goog.getMsgWithFallback=function(e,t){return e},goog.exportSymbol=function(e,t,o){goog.exportPath_(e,t,!0,o)},goog.exportProperty=function(e,t,o){e[t]=o},goog.inherits=function(e,t){function o(){}o.prototype=t.prototype,e.superClass_=t.prototype,e.prototype=new o,e.prototype.constructor=e,e.base=function(e,o,r){for(var n=Array(arguments.length-2),d=2;do?Math.max(0,e.length+o):o,"string"==typeof e)return"string"!=typeof t||1!=t.length?-1:e.indexOf(t,o);for(;o(o=null==o?e.length-1:o)&&(o=Math.max(0,e.length+o)),"string"==typeof e)return"string"!=typeof t||1!=t.length?-1:e.lastIndexOf(t,o);for(;0<=o;o--)if(o in e&&e[o]===t)return o;return-1};goog.array.lastIndexOf=module$contents$goog$array_lastIndexOf;var module$contents$goog$array_forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(e,t,o){goog.asserts.assert(null!=e.length),Array.prototype.forEach.call(e,t,o)}:function(e,t,o){for(var r=e.length,n="string"==typeof e?e.split(""):e,d=0;d(t=module$contents$goog$array_findIndex(e,t,o))?null:"string"==typeof e?e.charAt(t):e[t]}function module$contents$goog$array_findIndex(e,t,o){for(var r=e.length,n="string"==typeof e?e.split(""):e,d=0;d(t=module$contents$goog$array_findIndexRight(e,t,o))?null:"string"==typeof e?e.charAt(t):e[t]}function module$contents$goog$array_findIndexRight(e,t,o){var r=e.length,n="string"==typeof e?e.split(""):e;for(--r;0<=r;r--)if(r in n&&t.call(o,n[r],r,e))return r;return-1}function module$contents$goog$array_contains(e,t){return 0<=module$contents$goog$array_indexOf(e,t)}function module$contents$goog$array_isEmpty(e){return 0==e.length}function module$contents$goog$array_clear(e){if(!Array.isArray(e))for(var t=e.length-1;0<=t;t--)delete e[t];e.length=0}function module$contents$goog$array_insert(e,t){module$contents$goog$array_contains(e,t)||e.push(t)}function module$contents$goog$array_insertAt(e,t,o){module$contents$goog$array_splice(e,o,0,t)}function module$contents$goog$array_insertArrayAt(e,t,o){goog.partial(module$contents$goog$array_splice,e,o,0).apply(null,t)}function module$contents$goog$array_insertBefore(e,t,o){var r;2==arguments.length||0>(r=module$contents$goog$array_indexOf(e,o))?e.push(t):module$contents$goog$array_insertAt(e,t,r)}function module$contents$goog$array_remove(e,t){var o;return(o=0<=(t=module$contents$goog$array_indexOf(e,t)))&&module$contents$goog$array_removeAt(e,t),o}function module$contents$goog$array_removeLast(e,t){return 0<=(t=module$contents$goog$array_lastIndexOf(e,t))&&(module$contents$goog$array_removeAt(e,t),!0)}function module$contents$goog$array_removeAt(e,t){return goog.asserts.assert(null!=e.length),1==Array.prototype.splice.call(e,t,1).length}function module$contents$goog$array_removeIf(e,t,o){return 0<=(t=module$contents$goog$array_findIndex(e,t,o))&&(module$contents$goog$array_removeAt(e,t),!0)}function module$contents$goog$array_removeAllIf(e,t,o){var r=0;return module$contents$goog$array_forEachRight(e,(function(n,d){t.call(o,n,d,e)&&module$contents$goog$array_removeAt(e,d)&&r++})),r}function module$contents$goog$array_concat(e){return Array.prototype.concat.apply([],arguments)}function module$contents$goog$array_join(e){return Array.prototype.concat.apply([],arguments)}function module$contents$goog$array_toArray(e){var t=e.length;if(0=arguments.length?Array.prototype.slice.call(e,t):Array.prototype.slice.call(e,t,o)}function module$contents$goog$array_removeDuplicates(e,t,o){t=t||e;var r=function(e){return goog.isObject(e)?"o"+goog.getUid(e):(typeof e).charAt(0)+e};o=o||r,r={};for(var n=0,d=0;d>>1),g=o?t.call(n,e[s],s,e):t(r,e[s]);0t?1:e(o=module$contents$goog$array_binarySearch(e,t,o))&&(module$contents$goog$array_insertAt(e,t,-(o+1)),!0)}function module$contents$goog$array_binaryRemove(e,t,o){return 0<=(t=module$contents$goog$array_binarySearch(e,t,o))&&module$contents$goog$array_removeAt(e,t)}function module$contents$goog$array_bucket(e,t,o){for(var r={},n=0;n(o=o||1)*(d-n))return[];if(0d;e+=o)r.push(e);return r}function module$contents$goog$array_repeat(e,t){for(var o=[],r=0;rt&&Array.prototype.push.apply(e,e.splice(0,-t))),e}function module$contents$goog$array_moveItem(e,t,o){goog.asserts.assert(0<=t&&t"}},goog.dom.asserts.getWindow_=function(e){try{var t=e&&e.ownerDocument,o=t&&(t.defaultView||t.parentWindow);if((o=o||goog.global).Element&&o.Location)return o}catch(e){}return null},goog.dom.HtmlElement=function(){},goog.functions={},goog.functions.constant=function(e){return function(){return e}},goog.functions.FALSE=function(){return!1},goog.functions.TRUE=function(){return!0},goog.functions.NULL=function(){return null},goog.functions.identity=function(e,t){return e},goog.functions.error=function(e){return function(){throw Error(e)}},goog.functions.fail=function(e){return function(){throw e}},goog.functions.lock=function(e,t){return t=t||0,function(){return e.apply(this,Array.prototype.slice.call(arguments,0,t))}},goog.functions.nth=function(e){return function(){return arguments[e]}},goog.functions.partialRight=function(e,t){var o=Array.prototype.slice.call(arguments,1);return function(){var t=this;t===goog.global&&(t=void 0);var r=Array.prototype.slice.call(arguments);return r.push.apply(r,o),e.apply(t,r)}},goog.functions.withReturnValue=function(e,t){return goog.functions.sequence(e,goog.functions.constant(t))},goog.functions.equalTo=function(e,t){return function(o){return t?e==o:e===o}},goog.functions.compose=function(e,t){var o=arguments,r=o.length;return function(){var e;r&&(e=o[r-1].apply(this,arguments));for(var t=r-2;0<=t;t--)e=o[t].call(this,e);return e}},goog.functions.sequence=function(e){var t=arguments,o=t.length;return function(){for(var e,r=0;re?goog.i18n.bidi.Dir.RTL:t?null:goog.i18n.bidi.Dir.NEUTRAL:null==e?null:e?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR},goog.i18n.bidi.ltrChars_="A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\u02b8\u0300-\u0590\u0900-\u1fff\u200e\u2c00-\ud801\ud804-\ud839\ud83c-\udbff\uf900-\ufb1c\ufe00-\ufe6f\ufefd-\uffff",goog.i18n.bidi.rtlChars_="\u0591-\u06ef\u06fa-\u08ff\u200f\ud802-\ud803\ud83a-\ud83b\ufb1d-\ufdff\ufe70-\ufefc",goog.i18n.bidi.htmlSkipReg_=/<[^>]*>|&[^;]+;/g,goog.i18n.bidi.stripHtmlIfNeeded_=function(e,t){return t?e.replace(goog.i18n.bidi.htmlSkipReg_,""):e},goog.i18n.bidi.rtlCharReg_=new RegExp("["+goog.i18n.bidi.rtlChars_+"]"),goog.i18n.bidi.ltrCharReg_=new RegExp("["+goog.i18n.bidi.ltrChars_+"]"),goog.i18n.bidi.hasAnyRtl=function(e,t){return goog.i18n.bidi.rtlCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.hasRtlChar=goog.i18n.bidi.hasAnyRtl,goog.i18n.bidi.hasAnyLtr=function(e,t){return goog.i18n.bidi.ltrCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.ltrRe_=new RegExp("^["+goog.i18n.bidi.ltrChars_+"]"),goog.i18n.bidi.rtlRe_=new RegExp("^["+goog.i18n.bidi.rtlChars_+"]"),goog.i18n.bidi.isRtlChar=function(e){return goog.i18n.bidi.rtlRe_.test(e)},goog.i18n.bidi.isLtrChar=function(e){return goog.i18n.bidi.ltrRe_.test(e)},goog.i18n.bidi.isNeutralChar=function(e){return!goog.i18n.bidi.isLtrChar(e)&&!goog.i18n.bidi.isRtlChar(e)},goog.i18n.bidi.ltrDirCheckRe_=new RegExp("^[^"+goog.i18n.bidi.rtlChars_+"]*["+goog.i18n.bidi.ltrChars_+"]"),goog.i18n.bidi.rtlDirCheckRe_=new RegExp("^[^"+goog.i18n.bidi.ltrChars_+"]*["+goog.i18n.bidi.rtlChars_+"]"),goog.i18n.bidi.startsWithRtl=function(e,t){return goog.i18n.bidi.rtlDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.isRtlText=goog.i18n.bidi.startsWithRtl,goog.i18n.bidi.startsWithLtr=function(e,t){return goog.i18n.bidi.ltrDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.isLtrText=goog.i18n.bidi.startsWithLtr,goog.i18n.bidi.isRequiredLtrRe_=/^http:\/\/.*/,goog.i18n.bidi.isNeutralText=function(e,t){return e=goog.i18n.bidi.stripHtmlIfNeeded_(e,t),goog.i18n.bidi.isRequiredLtrRe_.test(e)||!goog.i18n.bidi.hasAnyLtr(e)&&!goog.i18n.bidi.hasAnyRtl(e)},goog.i18n.bidi.ltrExitDirCheckRe_=new RegExp("["+goog.i18n.bidi.ltrChars_+"][^"+goog.i18n.bidi.rtlChars_+"]*$"),goog.i18n.bidi.rtlExitDirCheckRe_=new RegExp("["+goog.i18n.bidi.rtlChars_+"][^"+goog.i18n.bidi.ltrChars_+"]*$"),goog.i18n.bidi.endsWithLtr=function(e,t){return goog.i18n.bidi.ltrExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.isLtrExitText=goog.i18n.bidi.endsWithLtr,goog.i18n.bidi.endsWithRtl=function(e,t){return goog.i18n.bidi.rtlExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(e,t))},goog.i18n.bidi.isRtlExitText=goog.i18n.bidi.endsWithRtl,goog.i18n.bidi.rtlLocalesRe_=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i,goog.i18n.bidi.isRtlLanguage=function(e){return goog.i18n.bidi.rtlLocalesRe_.test(e)},goog.i18n.bidi.bracketGuardTextRe_=/(\(.*?\)+)|(\[.*?\]+)|(\{.*?\}+)|(<.*?>+)/g,goog.i18n.bidi.guardBracketInText=function(e,t){return t=(void 0===t?goog.i18n.bidi.hasAnyRtl(e):t)?goog.i18n.bidi.Format.RLM:goog.i18n.bidi.Format.LRM,e.replace(goog.i18n.bidi.bracketGuardTextRe_,t+"$&"+t)},goog.i18n.bidi.enforceRtlInHtml=function(e){return"<"==e.charAt(0)?e.replace(/<\w+/,"$& dir=rtl"):"\n"+e+""},goog.i18n.bidi.enforceRtlInText=function(e){return goog.i18n.bidi.Format.RLE+e+goog.i18n.bidi.Format.PDF},goog.i18n.bidi.enforceLtrInHtml=function(e){return"<"==e.charAt(0)?e.replace(/<\w+/,"$& dir=ltr"):"\n"+e+""},goog.i18n.bidi.enforceLtrInText=function(e){return goog.i18n.bidi.Format.LRE+e+goog.i18n.bidi.Format.PDF},goog.i18n.bidi.dimensionsRe_=/:\s*([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)/g,goog.i18n.bidi.leftRe_=/left/gi,goog.i18n.bidi.rightRe_=/right/gi,goog.i18n.bidi.tempRe_=/%%%%/g,goog.i18n.bidi.mirrorCSS=function(e){return e.replace(goog.i18n.bidi.dimensionsRe_,":$1 $4 $3 $2").replace(goog.i18n.bidi.leftRe_,"%%%%").replace(goog.i18n.bidi.rightRe_,goog.i18n.bidi.LEFT).replace(goog.i18n.bidi.tempRe_,goog.i18n.bidi.RIGHT)},goog.i18n.bidi.doubleQuoteSubstituteRe_=/([\u0591-\u05f2])"/g,goog.i18n.bidi.singleQuoteSubstituteRe_=/([\u0591-\u05f2])'/g,goog.i18n.bidi.normalizeHebrewQuote=function(e){return e.replace(goog.i18n.bidi.doubleQuoteSubstituteRe_,"$1\u05f4").replace(goog.i18n.bidi.singleQuoteSubstituteRe_,"$1\u05f3")},goog.i18n.bidi.wordSeparatorRe_=/\s+/,goog.i18n.bidi.hasNumeralsRe_=/[\d\u06f0-\u06f9]/,goog.i18n.bidi.rtlDetectionThreshold_=.4,goog.i18n.bidi.estimateDirection=function(e,t){var o=0,r=0,n=!1;for(e=goog.i18n.bidi.stripHtmlIfNeeded_(e,t).split(goog.i18n.bidi.wordSeparatorRe_),t=0;tgoog.i18n.bidi.rtlDetectionThreshold_?goog.i18n.bidi.Dir.RTL:goog.i18n.bidi.Dir.LTR},goog.i18n.bidi.detectRtlDirectionality=function(e,t){return goog.i18n.bidi.estimateDirection(e,t)==goog.i18n.bidi.Dir.RTL},goog.i18n.bidi.setElementDirAndAlign=function(e,t){e&&(t=goog.i18n.bidi.toDir(t))&&(e.style.textAlign=t==goog.i18n.bidi.Dir.RTL?goog.i18n.bidi.RIGHT:goog.i18n.bidi.LEFT,e.dir=t==goog.i18n.bidi.Dir.RTL?"rtl":"ltr")},goog.i18n.bidi.setElementDirByTextDirectionality=function(e,t){switch(goog.i18n.bidi.estimateDirection(t)){case goog.i18n.bidi.Dir.LTR:"ltr"!==e.dir&&(e.dir="ltr");break;case goog.i18n.bidi.Dir.RTL:"rtl"!==e.dir&&(e.dir="rtl");break;default:e.removeAttribute("dir")}},goog.i18n.bidi.DirectionalString=function(){},goog.html.TrustedResourceUrl=function(e,t){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=t===goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_?e:""},goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0,goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString()},goog.html.TrustedResourceUrl.prototype.implementsGoogI18nBidiDirectionalString=!0,goog.html.TrustedResourceUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR},goog.html.TrustedResourceUrl.prototype.cloneWithParams=function(e,t){var o=goog.html.TrustedResourceUrl.unwrap(this),r=(o=goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(o))[3]||"";return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(o[1]+goog.html.TrustedResourceUrl.stringifyParams_("?",o[2]||"",e)+goog.html.TrustedResourceUrl.stringifyParams_("#",r,t))},goog.DEBUG&&(goog.html.TrustedResourceUrl.prototype.toString=function(){return"TrustedResourceUrl{"+this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+"}"}),goog.html.TrustedResourceUrl.unwrap=function(e){return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(e).toString()},goog.html.TrustedResourceUrl.unwrapTrustedScriptURL=function(e){return e instanceof goog.html.TrustedResourceUrl&&e.constructor===goog.html.TrustedResourceUrl?e.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_:(goog.asserts.fail("expected object of type TrustedResourceUrl, got '"+e+"' of type "+goog.typeOf(e)),"type_error:TrustedResourceUrl")},goog.html.TrustedResourceUrl.format=function(e,t){var o=goog.string.Const.unwrap(e);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(o))throw Error("Invalid TrustedResourceUrl format: "+o);return e=o.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,(function(e,r){if(!Object.prototype.hasOwnProperty.call(t,r))throw Error('Found marker, "'+r+'", in format string, "'+o+'", but no valid label mapping found in args: '+JSON.stringify(t));return(e=t[r])instanceof goog.string.Const?goog.string.Const.unwrap(e):encodeURIComponent(String(e))})),goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\w+)}/g,goog.html.TrustedResourceUrl.BASE_URL_=/^((https:)?\/\/[0-9a-z.:[\]-]+\/|\/[^/\\]|[^:/\\%]+\/|[^:/\\%]*[?#]|about:blank#)/i,goog.html.TrustedResourceUrl.URL_PARAM_PARSER_=/^([^?#]*)(\?[^#]*)?(#[\s\S]*)?/,goog.html.TrustedResourceUrl.formatWithParams=function(e,t,o,r){return goog.html.TrustedResourceUrl.format(e,t).cloneWithParams(o,r)},goog.html.TrustedResourceUrl.fromConstant=function(e){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(e))},goog.html.TrustedResourceUrl.fromConstants=function(e){for(var t="",o=0;oe.length?"&":"")+encodeURIComponent(r)+"="+encodeURIComponent(String(i)))}}return t},goog.string.internal={},goog.string.internal.startsWith=function(e,t){return 0==e.lastIndexOf(t,0)},goog.string.internal.endsWith=function(e,t){var o=e.length-t.length;return 0<=o&&e.indexOf(t,o)==o},goog.string.internal.caseInsensitiveStartsWith=function(e,t){return 0==goog.string.internal.caseInsensitiveCompare(t,e.substr(0,t.length))},goog.string.internal.caseInsensitiveEndsWith=function(e,t){return 0==goog.string.internal.caseInsensitiveCompare(t,e.substr(e.length-t.length,t.length))},goog.string.internal.caseInsensitiveEquals=function(e,t){return e.toLowerCase()==t.toLowerCase()},goog.string.internal.isEmptyOrWhitespace=function(e){return/^[\s\xa0]*$/.test(e)},goog.string.internal.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(e){return e.trim()}:function(e){return/^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(e)[1]},goog.string.internal.caseInsensitiveCompare=function(e,t){return(e=String(e).toLowerCase())<(t=String(t).toLowerCase())?-1:e==t?0:1},goog.string.internal.newLineToBr=function(e,t){return e.replace(/(\r\n|\r|\n)/g,t?"
":"
")},goog.string.internal.htmlEscape=function(e,t){if(t)e=e.replace(goog.string.internal.AMP_RE_,"&").replace(goog.string.internal.LT_RE_,"<").replace(goog.string.internal.GT_RE_,">").replace(goog.string.internal.QUOT_RE_,""").replace(goog.string.internal.SINGLE_QUOTE_RE_,"'").replace(goog.string.internal.NULL_RE_,"�");else{if(!goog.string.internal.ALL_RE_.test(e))return e;-1!=e.indexOf("&")&&(e=e.replace(goog.string.internal.AMP_RE_,"&")),-1!=e.indexOf("<")&&(e=e.replace(goog.string.internal.LT_RE_,"<")),-1!=e.indexOf(">")&&(e=e.replace(goog.string.internal.GT_RE_,">")),-1!=e.indexOf('"')&&(e=e.replace(goog.string.internal.QUOT_RE_,""")),-1!=e.indexOf("'")&&(e=e.replace(goog.string.internal.SINGLE_QUOTE_RE_,"'")),-1!=e.indexOf("\0")&&(e=e.replace(goog.string.internal.NULL_RE_,"�"))}return e},goog.string.internal.AMP_RE_=/&/g,goog.string.internal.LT_RE_=//g,goog.string.internal.QUOT_RE_=/"/g,goog.string.internal.SINGLE_QUOTE_RE_=/'/g,goog.string.internal.NULL_RE_=/\x00/g,goog.string.internal.ALL_RE_=/[\x00&<>"']/,goog.string.internal.whitespaceEscape=function(e,t){return goog.string.internal.newLineToBr(e.replace(/ /g,"  "),t)},goog.string.internal.contains=function(e,t){return-1!=e.indexOf(t)},goog.string.internal.caseInsensitiveContains=function(e,t){return goog.string.internal.contains(e.toLowerCase(),t.toLowerCase())},goog.string.internal.compareVersions=function(e,t){var o=0;e=goog.string.internal.trim(String(e)).split("."),t=goog.string.internal.trim(String(t)).split(".");for(var r=Math.max(e.length,t.length),n=0;0==o&&nt?1:0},goog.html.SafeUrl=function(e,t){this.privateDoNotAccessOrElseSafeUrlWrappedValue_=t===goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_?e:""},goog.html.SafeUrl.INNOCUOUS_STRING="about:invalid#zClosurez",goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0,goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()},goog.html.SafeUrl.prototype.implementsGoogI18nBidiDirectionalString=!0,goog.html.SafeUrl.prototype.getDirection=function(){return goog.i18n.bidi.Dir.LTR},goog.DEBUG&&(goog.html.SafeUrl.prototype.toString=function(){return"SafeUrl{"+this.privateDoNotAccessOrElseSafeUrlWrappedValue_+"}"}),goog.html.SafeUrl.unwrap=function(e){return e instanceof goog.html.SafeUrl&&e.constructor===goog.html.SafeUrl?e.privateDoNotAccessOrElseSafeUrlWrappedValue_:(goog.asserts.fail("expected object of type SafeUrl, got '"+e+"' of type "+goog.typeOf(e)),"type_error:SafeUrl")},goog.html.SafeUrl.fromConstant=function(e){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(e))},goog.html.SAFE_MIME_TYPE_PATTERN_=/^(?:audio\/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|font\/\w+|image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon)|video\/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\w+=(?:\w+|"[\w;,= ]+"))*$/i,goog.html.SafeUrl.isSafeMimeType=function(e){return goog.html.SAFE_MIME_TYPE_PATTERN_.test(e)},goog.html.SafeUrl.fromBlob=function(e){return e=goog.html.SafeUrl.isSafeMimeType(e.type)?goog.fs.url.createObjectUrl(e):goog.html.SafeUrl.INNOCUOUS_STRING,goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.revokeObjectUrl=function(e){(e=e.getTypedStringValue())!==goog.html.SafeUrl.INNOCUOUS_STRING&&goog.fs.url.revokeObjectUrl(e)},goog.html.SafeUrl.fromMediaSource=function(e){return goog.asserts.assert("MediaSource"in goog.global,"No support for MediaSource"),e=e instanceof MediaSource?goog.fs.url.createObjectUrl(e):goog.html.SafeUrl.INNOCUOUS_STRING,goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.DATA_URL_PATTERN_=/^data:(.*);base64,[a-z0-9+\/]+=*$/i,goog.html.SafeUrl.tryFromDataUrl=function(e){var t=(e=(e=String(e)).replace(/(%0A|%0D)/g,"")).match(goog.html.DATA_URL_PATTERN_);return t&&goog.html.SafeUrl.isSafeMimeType(t[1])?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e):null},goog.html.SafeUrl.fromDataUrl=function(e){return goog.html.SafeUrl.tryFromDataUrl(e)||goog.html.SafeUrl.INNOCUOUS_URL},goog.html.SafeUrl.fromTelUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"tel:")||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SIP_URL_PATTERN_=/^sip[s]?:[+a-z0-9_.!$%&'*\/=^`{|}~-]+@([a-z0-9-]+\.)+[a-z0-9]{2,63}$/i,goog.html.SafeUrl.fromSipUrl=function(e){return goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(e))||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.fromFacebookMessengerUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"fb-messenger://share")||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.fromWhatsAppUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"whatsapp://send")||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.fromSmsUrl=function(e){return goog.string.internal.caseInsensitiveStartsWith(e,"sms:")&&goog.html.SafeUrl.isSmsUrlBodyValid_(e)||(e=goog.html.SafeUrl.INNOCUOUS_STRING),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(e)},goog.html.SafeUrl.isSmsUrlBodyValid_=function(e){var t=e.indexOf("#");if(0+~[\]()=^$|]+$/.test(o))throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|] and strings, got: "+e);if(!module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.hasBalancedBrackets_(o))throw Error("() and [] in selector must be balanced, got: "+e);return t instanceof goog.html.SafeStyle||(t=goog.html.SafeStyle.create(t)),e=e+"{"+goog.html.SafeStyle.unwrap(t).replace(/.":"");if(e.toUpperCase()in goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_)throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES?"Tag name <"+e+"> is not allowed for SafeHtml.":"")},goog.html.SafeHtml.createIframe=function(e,t,o,r){e&&goog.html.TrustedResourceUrl.unwrap(e);var n={};return n.src=e||null,n.srcdoc=t&&goog.html.SafeHtml.unwrap(t),e=goog.html.SafeHtml.combineAttributes(n,{sandbox:""},o),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",e,r)},goog.html.SafeHtml.createSandboxIframe=function(e,t,o,r){if(!goog.html.SafeHtml.canUseSandboxIframe())throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES?"The browser does not support sandboxed iframes.":"");var n={};return n.src=e?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(e)):null,n.srcdoc=t||null,n.sandbox="",e=goog.html.SafeHtml.combineAttributes(n,{},o),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",e,r)},goog.html.SafeHtml.canUseSandboxIframe=function(){return goog.global.HTMLIFrameElement&&"sandbox"in goog.global.HTMLIFrameElement.prototype},goog.html.SafeHtml.createScriptSrc=function(e,t){return goog.html.TrustedResourceUrl.unwrap(e),e=goog.html.SafeHtml.combineAttributes({src:e},{},t),goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",e)},goog.html.SafeHtml.createScript=function(e,t){for(var o in t)if(Object.prototype.hasOwnProperty.call(t,o)){var r=o.toLowerCase();if("language"==r||"src"==r||"text"==r||"type"==r)throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES?'Cannot set "'+r+'" attribute':"")}for(o="",e=module$contents$goog$array_concat(e),r=0;r does not allow content."),n+=">"):(r=goog.html.SafeHtml.concat(o),n+=">"+goog.html.SafeHtml.unwrap(r)+"",r=r.getDirection()),(e=t&&t.dir)&&(r=/^(ltr|rtl|auto)$/i.test(e)?goog.i18n.bidi.Dir.NEUTRAL:null),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(n,r)},goog.html.SafeHtml.stringifyAttributes=function(e,t){var o="";if(t)for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){if(!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(r))throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES?'Invalid attribute name "'+r+'".':"");var n=t[r];null!=n&&(o+=" "+goog.html.SafeHtml.getAttrNameAndValue_(e,r,n))}return o},goog.html.SafeHtml.combineAttributes=function(e,t,o){var r,n={};for(r in e)Object.prototype.hasOwnProperty.call(e,r)&&(goog.asserts.assert(r.toLowerCase()==r,"Must be lower case"),n[r]=e[r]);for(r in t)Object.prototype.hasOwnProperty.call(t,r)&&(goog.asserts.assert(r.toLowerCase()==r,"Must be lower case"),n[r]=t[r]);if(o)for(r in o)if(Object.prototype.hasOwnProperty.call(o,r)){var d=r.toLowerCase();if(d in e)throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES?'Cannot override "'+d+'" attribute, got "'+r+'" with value "'+o[r]+'"':"");d in t&&delete n[d],n[r]=o[r]}return n},goog.html.SafeHtml.DOCTYPE_HTML=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("",goog.i18n.bidi.Dir.NEUTRAL),goog.html.SafeHtml.EMPTY=new goog.html.SafeHtml(goog.global.trustedTypes&&goog.global.trustedTypes.emptyHTML||"",goog.i18n.bidi.Dir.NEUTRAL,goog.html.SafeHtml.CONSTRUCTOR_TOKEN_PRIVATE_),goog.html.SafeHtml.BR=goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("
",goog.i18n.bidi.Dir.NEUTRAL),goog.html.uncheckedconversions={},goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(e,t,o){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(t,o||null)},goog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(t)},goog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(t)},goog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(t)},goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(t)},goog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(e,t){return goog.asserts.assertString(goog.string.Const.unwrap(e),"must provide justification"),goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(e)),"must provide non-empty justification"),goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(t)},goog.dom.safe={},goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:"afterbegin",AFTEREND:"afterend",BEFOREBEGIN:"beforebegin",BEFOREEND:"beforeend"},goog.dom.safe.insertAdjacentHtml=function(e,t,o){e.insertAdjacentHTML(t,goog.html.SafeHtml.unwrapTrustedHTML(o))},goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0},goog.dom.safe.isInnerHtmlCleanupRecursive_=goog.functions.cacheReturnValue((function(){if(goog.DEBUG&&"undefined"==typeof document)return!1;var e=document.createElement("div"),t=document.createElement("div");return t.appendChild(document.createElement("div")),e.appendChild(t),!(goog.DEBUG&&!e.firstChild)&&(t=e.firstChild.firstChild,e.innerHTML=goog.html.SafeHtml.unwrapTrustedHTML(goog.html.SafeHtml.EMPTY),!t.parentElement)})),goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse=function(e,t){if(goog.dom.safe.isInnerHtmlCleanupRecursive_())for(;e.lastChild;)e.removeChild(e.lastChild);e.innerHTML=goog.html.SafeHtml.unwrapTrustedHTML(t)},goog.dom.safe.setInnerHtml=function(e,t){if(goog.asserts.ENABLE_ASSERTS&&e.tagName){var o=e.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[o])throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of "+e.tagName+".")}goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(e,t)},goog.dom.safe.setInnerHtmlFromConstant=function(e,t){goog.dom.safe.setInnerHtml(e,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Constant HTML to be immediatelly used."),goog.string.Const.unwrap(t)))},goog.dom.safe.setOuterHtml=function(e,t){e.outerHTML=goog.html.SafeHtml.unwrapTrustedHTML(t)},goog.dom.safe.setFormElementAction=function(e,t){t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),goog.dom.asserts.assertIsHTMLFormElement(e).action=goog.html.SafeUrl.unwrap(t)},goog.dom.safe.setButtonFormAction=function(e,t){t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),goog.dom.asserts.assertIsHTMLButtonElement(e).formAction=goog.html.SafeUrl.unwrap(t)},goog.dom.safe.setInputFormAction=function(e,t){t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),goog.dom.asserts.assertIsHTMLInputElement(e).formAction=goog.html.SafeUrl.unwrap(t)},goog.dom.safe.setStyle=function(e,t){e.style.cssText=goog.html.SafeStyle.unwrap(t)},goog.dom.safe.documentWrite=function(e,t){e.write(goog.html.SafeHtml.unwrapTrustedHTML(t))},goog.dom.safe.setAnchorHref=function(e,t){goog.dom.asserts.assertIsHTMLAnchorElement(e),t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),e.href=goog.html.SafeUrl.unwrap(t)},goog.dom.safe.setImageSrc=function(e,t){if(goog.dom.asserts.assertIsHTMLImageElement(e),!(t instanceof goog.html.SafeUrl)){var o=/^data:image\//i.test(t);t=goog.html.SafeUrl.sanitizeAssertUnchanged(t,o)}e.src=goog.html.SafeUrl.unwrap(t)},goog.dom.safe.setAudioSrc=function(e,t){if(goog.dom.asserts.assertIsHTMLAudioElement(e),!(t instanceof goog.html.SafeUrl)){var o=/^data:audio\//i.test(t);t=goog.html.SafeUrl.sanitizeAssertUnchanged(t,o)}e.src=goog.html.SafeUrl.unwrap(t)},goog.dom.safe.setVideoSrc=function(e,t){if(goog.dom.asserts.assertIsHTMLVideoElement(e),!(t instanceof goog.html.SafeUrl)){var o=/^data:video\//i.test(t);t=goog.html.SafeUrl.sanitizeAssertUnchanged(t,o)}e.src=goog.html.SafeUrl.unwrap(t)},goog.dom.safe.setEmbedSrc=function(e,t){goog.dom.asserts.assertIsHTMLEmbedElement(e),e.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(t)},goog.dom.safe.setFrameSrc=function(e,t){goog.dom.asserts.assertIsHTMLFrameElement(e),e.src=goog.html.TrustedResourceUrl.unwrap(t)},goog.dom.safe.setIframeSrc=function(e,t){goog.dom.asserts.assertIsHTMLIFrameElement(e),e.src=goog.html.TrustedResourceUrl.unwrap(t)},goog.dom.safe.setIframeSrcdoc=function(e,t){goog.dom.asserts.assertIsHTMLIFrameElement(e),e.srcdoc=goog.html.SafeHtml.unwrapTrustedHTML(t)},goog.dom.safe.setLinkHrefAndRel=function(e,t,o){goog.dom.asserts.assertIsHTMLLinkElement(e),e.rel=o,goog.string.internal.caseInsensitiveContains(o,"stylesheet")?(goog.asserts.assert(t instanceof goog.html.TrustedResourceUrl,'URL must be TrustedResourceUrl because "rel" contains "stylesheet"'),e.href=goog.html.TrustedResourceUrl.unwrap(t)):e.href=t instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrap(t):t instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrap(t):goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitizeAssertUnchanged(t))},goog.dom.safe.setObjectData=function(e,t){goog.dom.asserts.assertIsHTMLObjectElement(e),e.data=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(t)},goog.dom.safe.setScriptSrc=function(e,t){goog.dom.asserts.assertIsHTMLScriptElement(e),e.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(t),goog.dom.safe.setNonceForScriptElement_(e)},goog.dom.safe.setScriptContent=function(e,t){goog.dom.asserts.assertIsHTMLScriptElement(e),e.textContent=module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(t),goog.dom.safe.setNonceForScriptElement_(e)},goog.dom.safe.setNonceForScriptElement_=function(e){var t=goog.getScriptNonce(e.ownerDocument&&e.ownerDocument.defaultView);t&&e.setAttribute("nonce",t)},goog.dom.safe.setLocationHref=function(e,t){goog.dom.asserts.assertIsLocation(e),t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),e.href=goog.html.SafeUrl.unwrap(t)},goog.dom.safe.assignLocation=function(e,t){goog.dom.asserts.assertIsLocation(e),t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),e.assign(goog.html.SafeUrl.unwrap(t))},goog.dom.safe.replaceLocation=function(e,t){t=t instanceof goog.html.SafeUrl?t:goog.html.SafeUrl.sanitizeAssertUnchanged(t),e.replace(goog.html.SafeUrl.unwrap(t))},goog.dom.safe.openInWindow=function(e,t,o,r,n){return e=e instanceof goog.html.SafeUrl?e:goog.html.SafeUrl.sanitizeAssertUnchanged(e),t=t||goog.global,o=o instanceof goog.string.Const?goog.string.Const.unwrap(o):o||"",t.open(goog.html.SafeUrl.unwrap(e),o,r,n)},goog.dom.safe.parseFromStringHtml=function(e,t){return goog.dom.safe.parseFromString(e,t,"text/html")},goog.dom.safe.parseFromString=function(e,t,o){return e.parseFromString(goog.html.SafeHtml.unwrapTrustedHTML(t),o)},goog.dom.safe.createImageFromBlob=function(e){if(!/^image\/.*/g.test(e.type))throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.");var t=goog.global.URL.createObjectURL(e);return(e=new goog.global.Image).onload=function(){goog.global.URL.revokeObjectURL(t)},goog.dom.safe.setImageSrc(e,goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Image blob URL."),t)),e},goog.string.DETECT_DOUBLE_ESCAPING=!1,goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1,goog.string.Unicode={NBSP:"\xa0"},goog.string.startsWith=goog.string.internal.startsWith,goog.string.endsWith=goog.string.internal.endsWith,goog.string.caseInsensitiveStartsWith=goog.string.internal.caseInsensitiveStartsWith,goog.string.caseInsensitiveEndsWith=goog.string.internal.caseInsensitiveEndsWith,goog.string.caseInsensitiveEquals=goog.string.internal.caseInsensitiveEquals,goog.string.subs=function(e,t){for(var o=e.split("%s"),r="",n=Array.prototype.slice.call(arguments,1);n.length&&1=e||"\x80"<=e&&"\ufffd">=e},goog.string.stripNewlines=function(e){return e.replace(/(\r\n|\r|\n)+/g," ")},goog.string.canonicalizeNewlines=function(e){return e.replace(/(\r\n|\r|\n)/g,"\n")},goog.string.normalizeWhitespace=function(e){return e.replace(/\xa0|\s/g," ")},goog.string.normalizeSpaces=function(e){return e.replace(/\xa0|[ \t]+/g," ")},goog.string.collapseBreakingSpaces=function(e){return e.replace(/[\t\r\n ]+/g," ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g,"")},goog.string.trim=goog.string.internal.trim,goog.string.trimLeft=function(e){return e.replace(/^[\s\xa0]+/,"")},goog.string.trimRight=function(e){return e.replace(/[\s\xa0]+$/,"")},goog.string.caseInsensitiveCompare=goog.string.internal.caseInsensitiveCompare,goog.string.numberAwareCompare_=function(e,t,o){if(e==t)return 0;if(!e)return-1;if(!t)return 1;for(var r=e.toLowerCase().match(o),n=t.toLowerCase().match(o),d=Math.min(r.length,n.length),i=0;i",""":'"'},r=t?t.createElement("div"):goog.global.document.createElement("div");return e.replace(goog.string.HTML_ENTITY_PATTERN_,(function(e,t){var n=o[e];return n||("#"==t.charAt(0)&&(t=Number("0"+t.substr(1)),isNaN(t)||(n=String.fromCharCode(t))),n||(goog.dom.safe.setInnerHtml(r,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Single HTML entity."),e+" ")),n=r.firstChild.nodeValue.slice(0,-1)),o[e]=n)}))},goog.string.unescapePureXmlEntities_=function(e){return e.replace(/&([^;]+);/g,(function(e,t){switch(t){case"amp":return"&";case"lt":return"<";case"gt":return">";case"quot":return'"';default:return"#"!=t.charAt(0)||(t=Number("0"+t.substr(1)),isNaN(t))?e:String.fromCharCode(t)}}))},goog.string.HTML_ENTITY_PATTERN_=/&([^;\s<&]+);?/g,goog.string.whitespaceEscape=function(e,t){return goog.string.newLineToBr(e.replace(/ /g,"  "),t)},goog.string.preserveSpaces=function(e){return e.replace(/(^|[\n ]) /g,"$1"+goog.string.Unicode.NBSP)},goog.string.stripQuotes=function(e,t){for(var o=t.length,r=0;rt&&(e=e.substring(0,t-3)+"..."),o&&(e=goog.string.htmlEscape(e)),e},goog.string.truncateMiddle=function(e,t,o,r){if(o&&(e=goog.string.unescapeEntities(e)),r&&e.length>t){r>t&&(r=t);var n=e.length-r;e=e.substring(0,t-r)+"..."+e.substring(n)}else e.length>t&&(r=Math.floor(t/2),n=e.length-r,e=e.substring(0,r+t%2)+"..."+e.substring(n));return o&&(e=goog.string.htmlEscape(e)),e},goog.string.specialEscapeChars_={"\0":"\\0","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\x0B",'"':'\\"',"\\":"\\\\","<":"\\u003C"},goog.string.jsEscapeCache_={"'":"\\'"},goog.string.quote=function(e){e=String(e);for(var t=['"'],o=0;on?r:goog.string.escapeChar(r))}return t.push('"'),t.join("")},goog.string.escapeString=function(e){for(var t=[],o=0;ot)var o=e;else 256>t?(o="\\x",(16>t||256t&&(o+="0")),o+=t.toString(16).toUpperCase();return goog.string.jsEscapeCache_[e]=o},goog.string.contains=goog.string.internal.contains,goog.string.caseInsensitiveContains=goog.string.internal.caseInsensitiveContains,goog.string.countOf=function(e,t){return e&&t?e.split(t).length-1:0},goog.string.removeAt=function(e,t,o){var r=e;return 0<=t&&t>>0;return t},goog.string.uniqueStringCounter_=2147483648*Math.random()|0,goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++},goog.string.toNumber=function(e){var t=Number(e);return 0==t&&goog.string.isEmptyOrWhitespace(e)?NaN:t},goog.string.isLowerCamelCase=function(e){return/^[a-z]+([A-Z][a-z]*)*$/.test(e)},goog.string.isUpperCamelCase=function(e){return/^([A-Z][a-z]*)+$/.test(e)},goog.string.toCamelCase=function(e){return String(e).replace(/\-([a-z])/g,(function(e,t){return t.toUpperCase()}))},goog.string.toSelectorCase=function(e){return String(e).replace(/([A-Z])/g,"-$1").toLowerCase()},goog.string.toTitleCase=function(e,t){return t="string"==typeof t?goog.string.regExpEscape(t):"\\s",e.replace(new RegExp("(^"+(t?"|["+t+"]+":"")+")([a-z])","g"),(function(e,t,o){return t+o.toUpperCase()}))},goog.string.capitalize=function(e){return String(e.charAt(0)).toUpperCase()+String(e.substr(1)).toLowerCase()},goog.string.parseInt=function(e){return isFinite(e)&&(e=String(e)),"string"==typeof e?/^\s*-?0x/i.test(e)?parseInt(e,16):parseInt(e,10):NaN},goog.string.splitLimit=function(e,t,o){e=e.split(t);for(var r=[];0o&&(o=n)}return-1==o?e:e.slice(o+1)},goog.string.editDistance=function(e,t){var o=[],r=[];if(e==t)return 0;if(!e.length||!t.length)return Math.max(e.length,t.length);for(var n=0;n=t.length?0:this.getNumberType(e)==i18n.phonenumbers.PhoneNumberType.MOBILE&&""!=(e=i18n.phonenumbers.PhoneNumberUtil.getCountryMobileToken(e.getCountryCodeOrDefault()))?t[2].length+e.length:t[1].length},i18n.phonenumbers.PhoneNumberUtil.getCountryMobileToken=function(e){return i18n.phonenumbers.PhoneNumberUtil.MOBILE_TOKEN_MAPPINGS_[e]||""},i18n.phonenumbers.PhoneNumberUtil.prototype.getSupportedRegions=function(){return Object.keys(i18n.phonenumbers.metadata.countryToMetadata).filter((function(e){return isNaN(e)}))},i18n.phonenumbers.PhoneNumberUtil.prototype.getSupportedGlobalNetworkCallingCodes=function(){return Object.keys(i18n.phonenumbers.metadata.countryToMetadata).filter((function(e){return!isNaN(e)})).map((function(e){return parseInt(e,10)}))},i18n.phonenumbers.PhoneNumberUtil.prototype.getSupportedCallingCodes=function(){var e=Object.keys(i18n.phonenumbers.metadata.countryCodeToRegionCodeMap);return[].concat($jscomp.arrayFromIterable(this.getSupportedGlobalNetworkCallingCodes()),$jscomp.arrayFromIterable(e.map((function(e){return parseInt(e,10)}))))},i18n.phonenumbers.PhoneNumberUtil.descHasPossibleNumberData_=function(e){return null!=e&&(1!=e.possibleLengthCount()||-1!=e.possibleLengthArray()[0])},i18n.phonenumbers.PhoneNumberUtil.descHasData_=function(e){return null!=e&&(e.hasExampleNumber()||i18n.phonenumbers.PhoneNumberUtil.descHasPossibleNumberData_(e)||e.hasNationalNumberPattern())},i18n.phonenumbers.PhoneNumberUtil.getSupportedTypesForMetadata_=function(e){var t=[];return goog.object.forEach(i18n.phonenumbers.PhoneNumberType,(function(o){if(o!=i18n.phonenumbers.PhoneNumberType.FIXED_LINE_OR_MOBILE&&o!=i18n.phonenumbers.PhoneNumberType.UNKNOWN){var r=i18n.phonenumbers.PhoneNumberUtil.getNumberDescByType_(e,o);i18n.phonenumbers.PhoneNumberUtil.descHasData_(r)&&t.push(o)}})),t},i18n.phonenumbers.PhoneNumberUtil.prototype.getSupportedTypesForRegion=function(e){return this.isValidRegionCode_(e)?i18n.phonenumbers.PhoneNumberUtil.getSupportedTypesForMetadata_(this.getMetadataForRegion(e)):[]},i18n.phonenumbers.PhoneNumberUtil.prototype.getSupportedTypesForNonGeoEntity=function(e){return null==(e=this.getMetadataForNonGeographicalRegion(e))?[]:i18n.phonenumbers.PhoneNumberUtil.getSupportedTypesForMetadata_(e)},i18n.phonenumbers.PhoneNumberUtil.normalizeHelper_=function(e,t,o){for(var r,n,d=new goog.string.StringBuffer,i=e.length,a=0;a=n||(r=r.substring(0,n),0!=(r=i18n.phonenumbers.PhoneNumberUtil.normalizeDigitsOnly(r)).length&&((t=o.clone()).clearNationalPrefixFormattingRule(),t=this.formatByPattern(e,i18n.phonenumbers.PhoneNumberFormat.NATIONAL,[t])))}}return e=e.getRawInputOrDefault(),null!=t&&0e?i18n.phonenumbers.PhoneNumberUtil.ValidationResult.TOO_SHORT:n[n.length-1]i18n.phonenumbers.PhoneNumberUtil.MAX_INPUT_STRING_LENGTH_)throw Error(i18n.phonenumbers.Error.TOO_LONG);var n=new goog.string.StringBuffer;if(this.buildNationalNumberForParsing_(e,n),!i18n.phonenumbers.PhoneNumberUtil.isViablePhoneNumber(n.toString()))throw Error(i18n.phonenumbers.Error.NOT_A_NUMBER);if(r&&!this.checkRegionForParsing_(n.toString(),t))throw Error(i18n.phonenumbers.Error.INVALID_COUNTRY_CODE);r=new i18n.phonenumbers.PhoneNumber,o&&r.setRawInput(e),0<(e=this.maybeStripExtension(n)).length&&r.setExtension(e);var d=this.getMetadataForRegion(t);e=new goog.string.StringBuffer;var i=0,a=n.toString();try{i=this.maybeExtractCountryCode(a,d,e,o,r)}catch(t){if(t.message!=i18n.phonenumbers.Error.INVALID_COUNTRY_CODE||!i18n.phonenumbers.PhoneNumberUtil.LEADING_PLUS_CHARS_PATTERN.test(a))throw t;if(a=a.replace(i18n.phonenumbers.PhoneNumberUtil.LEADING_PLUS_CHARS_PATTERN,""),0==(i=this.maybeExtractCountryCode(a,d,e,o,r)))throw t}if(0!=i?(n=this.getRegionCodeForCountryCode(i))!=t&&(d=this.getMetadataForRegionOrCallingCode_(i,n)):(i18n.phonenumbers.PhoneNumberUtil.normalizeSB_(n),e.append(n.toString()),null!=t?(i=d.getCountryCodeOrDefault(),r.setCountryCode(i)):o&&r.clearCountryCodeSource()),e.getLength()i18n.phonenumbers.PhoneNumberUtil.MAX_LENGTH_FOR_NSN_)throw Error(i18n.phonenumbers.Error.TOO_LONG);return i18n.phonenumbers.PhoneNumberUtil.setItalianLeadingZerosForPhoneNumber_(o,r),r.setNationalNumber(parseInt(o,10)),r},i18n.phonenumbers.PhoneNumberUtil.prototype.extractPhoneContext_=function(e){var t=e.indexOf(i18n.phonenumbers.PhoneNumberUtil.RFC3966_PHONE_CONTEXT_);if(-1===t)return null;if((t+=i18n.phonenumbers.PhoneNumberUtil.RFC3966_PHONE_CONTEXT_.length)>=e.length)return"";var o=e.indexOf(";",t);return-1!==o?e.substring(t,o):e.substring(t)},i18n.phonenumbers.PhoneNumberUtil.prototype.isPhoneContextValid_=function(e){if(null==e)return!0;if(0===e.length)return!1;var t=i18n.phonenumbers.PhoneNumberUtil.RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_.exec(e);return e=i18n.phonenumbers.PhoneNumberUtil.RFC3966_DOMAINNAME_PATTERN_.exec(e),null!==t||null!==e},i18n.phonenumbers.PhoneNumberUtil.prototype.buildNationalNumberForParsing_=function(e,t){var o=i18n.phonenumbers.PhoneNumberUtil.prototype.extractPhoneContext_(e);if(!i18n.phonenumbers.PhoneNumberUtil.prototype.isPhoneContextValid_(o))throw Error(i18n.phonenumbers.Error.NOT_A_NUMBER);if(null!=o){o.charAt(0)===i18n.phonenumbers.PhoneNumberUtil.PLUS_SIGN&&t.append(o),o=0<=(o=e.indexOf(i18n.phonenumbers.PhoneNumberUtil.RFC3966_PREFIX_))?o+i18n.phonenumbers.PhoneNumberUtil.RFC3966_PREFIX_.length:0;var r=e.indexOf(i18n.phonenumbers.PhoneNumberUtil.RFC3966_PHONE_CONTEXT_);t.append(e.substring(o,r))}else t.append(i18n.phonenumbers.PhoneNumberUtil.extractPossibleNumber(null!=e?e:""));0<(o=(e=t.toString()).indexOf(i18n.phonenumbers.PhoneNumberUtil.RFC3966_ISDN_SUBADDRESS_))&&(t.clear(),t.append(e.substring(0,o)))},i18n.phonenumbers.PhoneNumberUtil.copyCoreFieldsOnly_=function(e){var t=new i18n.phonenumbers.PhoneNumber;return t.setCountryCode(e.getCountryCodeOrDefault()),t.setNationalNumber(e.getNationalNumberOrDefault()),0=i18n.phonenumbers.AsYouTypeFormatter.MIN_LEADING_DIGITS_LENGTH_?(this.getAvailableFormats_(e),0<(e=this.attemptToFormatAccruedDigits_()).length?e:this.maybeCreateNewTemplate_()?this.inputAccruedNationalNumber_():this.accruedInput_.toString()):this.appendNationalNumber_(e)},i18n.phonenumbers.AsYouTypeFormatter.prototype.inputAccruedNationalNumber_=function(){var e=this.nationalNumber_.toString(),t=e.length;if(02&&void 0!==arguments[2]?arguments[2]:r(d[4]).limit;try{var s=yield u.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`\n query {\n paginationActivitiesNotSubscribed(page: ${t}, perPage: ${c}, activityName: "${n}") {\n id\n image\n name\n description\n timeRate\n timesRequiered\n }\n }`},{headers:{Authorization:`Bearer ${s}`}})).data.data.paginationActivitiesNotSubscribed}catch(t){throw console.error("Error:",t.response.data),t}}));return function(n,o){return t.apply(this,arguments)}})(),e.getSubscribedActivities=(function(){var t=(0,n.default)((function*(){try{var t=yield u.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:"\n query {\n getSubscribedActivitiesWithStreakByName(activityName: \"\") {\n id,\n name,\n description,\n image,\n timeRate,\n timesRequiered,\n timesRemaining,\n streak\n }\n }"},{headers:{Authorization:`Bearer ${t}`}})).data.data.getSubscribedActivitiesWithStreakByName}catch(t){throw console.error("Error:",t.response.data),t}}));return function(){return t.apply(this,arguments)}})(),e.subscribeActivity=(function(){var t=(0,n.default)((function*(t){try{var n=yield u.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`\n mutation {\n subscribeActivity(activityID: "${t}")\n }`},{headers:{Authorization:`Bearer ${n}`}})).data.data.subscribeActivity}catch(t){throw console.error("Error:",t.response.data),t}}));return function(n){return t.apply(this,arguments)}})(),e.unsubscribeActivity=(function(){var t=(0,n.default)((function*(t){try{var n=yield u.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`\n mutation {\n unSubscribeActivity(activityID: "${t}")\n }`},{headers:{Authorization:`Bearer ${n}`}})).data.data.unSubscribeActivity}catch(t){throw console.error("Error:",t.response.data),t}}));return function(n){return t.apply(this,arguments)}})(),e.createActivity=(function(){var t=(0,n.default)((function*(t,n,c,s,y){try{var v=yield u.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`\n mutation {\n createActivity(\n activityInput: {\n name: "${t}", \n description: "${n}", \n image: "${y}", \n timeRate: "${c}", \n timesRequiered: "${s}"\n } \n ) {\n id\n }\n }`},{headers:{Authorization:`Bearer ${v}`}})).data.data.createActivity}catch(t){throw console.error("Error:",t.response.data),t}}));return function(n,o,u,c,s){return t.apply(this,arguments)}})()}),908,[1,564,796,778,788]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),r=e(_r(d[2])),a=_r(d[3]),n=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=o(t);if(r&&r.has(e))return r.get(e);var a={__proto__:null},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var s=n?Object.getOwnPropertyDescriptor(e,i):null;s&&(s.get||s.set)?Object.defineProperty(a,i,s):a[i]=e[i]}return a.default=e,r&&r.set(e,a),a})(_r(d[4])),i=e(_r(d[5])),s=e(_r(d[6])),l=e(_r(d[7]));function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(o=function(e){return e?r:t})(e)}_e.default=function(e){var o,u=e.navigation,c=e.route,f=(0,_r(d[8]).useSettingsContext)(),p=f.language,y=f.darkmode,v=(0,n.useState)({}),b=(0,r.default)(v,2),x=b[0],h=b[1];(0,n.useEffect)((function(){h(c.params.activity)}),[c.params.activity]);var j=(function(){var e=(0,t.default)((function*(){try{yield(0,_r(d[9]).subscribeActivity)(x.id),(0,_r(d[10]).resetNavigation)(u,"Streaks")}catch(e){a.Alert.alert("Error",e.response.data)}}));return function(){return e.apply(this,arguments)}})();return(0,_r(d[11]).jsxs)(a.View,{className:"flex-1 "+(y?"bg-[#1C1C1E]":"bg-[#FCFCFC]"),children:[(0,_r(d[11]).jsx)(l.default,{navigation:u,message:null==(o=c.params.activity)?void 0:o.name}),(0,_r(d[11]).jsx)(a.View,{className:"items-center justify-center border-b-8 border-[#F65261]",children:(0,_r(d[11]).jsx)(s.default,{image:x.image,size:440,height:550,style:"rounded-3xl"})}),(0,_r(d[11]).jsxs)(a.View,{className:"flex-1 items-center w-full "+(c.params.suscribed?"-mt-24":"-mt-40"),children:[(0,_r(d[11]).jsx)(i.default,{activity:x}),!c.params.suscribed&&(0,_r(d[11]).jsx)(a.TouchableOpacity,{onPress:j,className:"bg-[#F65261] rounded-2xl py-4 px-6 mt-6 w-11/12 shadow-md shadow-black items-center",children:(0,_r(d[11]).jsx)(a.Text,{className:"text-white font-bold text-2xl",style:{fontFamily:"Roboto-Regular"},children:_r(d[12]).translations[p||"en-EN"].screens.ActivityDetails.add})})]})]})}}),909,[1,564,38,2,178,910,900,911,787,908,788,223,789]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s=r(d[1]);t(r(d[2])),e.default=function(t){var n=t.activity,x=(0,r(d[3]).useSettingsContext)(),l=x.language,c=x.darkmode;return(0,r(d[4]).jsxs)(s.View,{className:"rounded-2xl w-11/12 px-6 py-5 mt-6 items-center border-2 "+(c?"bg-[#4B294F] border-[#B28DFF]":"bg-[#E8E2F0] border-[#4B0082]"),children:[(0,r(d[4]).jsx)(s.Text,{className:"text-3xl font-bold mb-2 "+(c?"text-white":"text-[#4B0082]"),children:n.name}),(0,r(d[4]).jsx)(s.Text,{className:"text-lg text-center mb-6 "+(c?"text-[#E0D3F5]":"text-[#4B0082]"),children:n.description}),(0,r(d[4]).jsxs)(s.Text,{className:"text-xl mb-1 "+(c?"text-[#B0A1C1]":"text-[#4B0082]"),children:[r(d[5]).translations[l||"en-EN"].screens.ActivityDetails.numOfTimes,":"," ",n.timesRequiered]}),(0,r(d[4]).jsxs)(s.Text,{className:"text-xl "+(c?"text-[#B0A1C1]":"text-[#4B0082]"),children:[r(d[5]).translations[l||"en-EN"].screens.ActivityDetails.frequency,":"," ",r(d[5]).translations[l||"en-EN"].screens.ActivityDetails.timeRates[n.timeRate]]})]})}}),910,[1,2,178,787,223,789]); +__d((function(g,r,i,a,m,e,d){var o=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=r(d[1]),n=(o(r(d[2])),o(r(d[3])));e.default=function(o){var l=(0,r(d[4]).useSettingsContext)().darkmode;return(0,r(d[5]).jsxs)(t.View,{className:`flex-row ${(0,r(d[6]).cardBgColor)(l)} border-b-2 ${(0,r(d[6]).borderColor)(l)} p-5`,children:[(0,r(d[5]).jsx)(t.TouchableOpacity,{onPress:function(){return o.navigation.goBack()},children:(0,r(d[5]).jsx)(n.default,{name:"arrow-back",size:30,color:(0,r(d[6]).iconColor)(l)})}),(0,r(d[5]).jsx)(t.Text,{className:(l?"text-[#B28DFF]":"text-[#7D3C98]")+" font-bold text-2xl ml-5",children:o.message})]})}}),911,[1,2,178,912,787,223,788]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.getImageSourceSync=e.getImageSource=e.default=e.Button=void 0;var o=t(r(d[1])),u=t(r(d[2])),c=(0,o.default)(u.default,'Ionicons','Ionicons.ttf');e.default=c,e.Button=c.Button,e.getImageSource=c.getImageSource,e.getImageSourceSync=c.getImageSourceSync}),912,[1,913,922]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.DEFAULT_ICON_SIZE=_e.DEFAULT_ICON_COLOR=void 0,_e.default=function(e,b,P,S){var C=P?P.replace(/\.(otf|ttf)$/,''):b,I=s.Platform.select({windows:`/Assets/${P}#${b}`,android:C,web:C,default:b}),j=c.default.oneOf(Object.keys(e)),E=(function(t){function r(){return(0,o.default)(this,r),e=this,t=r,n=arguments,t=(0,u.default)(t),(0,l.default)(e,_()?Reflect.construct(t,n||[],(0,u.default)(e).constructor):t.apply(e,n));var e,t,n}return(0,f.default)(r,t),(0,a.default)(r,[{key:"render",value:function(){var t=this.props,r=t.name,o=t.size,a=t.color,l=t.style,u=t.children,f=(0,n.default)(t,O),i=r?e[r]||'?':'';'number'==typeof i&&(i=String.fromCodePoint(i));var c={fontSize:o,color:a},p={fontFamily:I,fontWeight:'normal',fontStyle:'normal'};return f.style=[c,l,p,S||{}],(0,_r(d[16]).jsxs)(s.Text,Object.assign({selectable:!1},f,{children:[i,u]}))}}])})(i.PureComponent);E.propTypes={allowFontScaling:c.default.bool,name:j,size:c.default.number,color:c.default.any,children:c.default.node,style:c.default.any},E.defaultProps={size:w,allowFontScaling:!1};var $=(0,y.default)();function R(t){var r=e[t]||'?';return'number'==typeof r?String.fromCodePoint(r):r}function k(){return k=(0,r.default)((function*(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:w,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:F;(0,p.default)();var n=R(e),o=(0,s.processColor)(r),a=`${n}:${t}:${o}`;if($.has(a))return $.get(a);try{var l={uri:yield v.default.getImageForFont(I,n,t,o),scale:s.PixelRatio.get()};return $.setValue(a,l),l}catch(e){throw $.setError(a,e),e}})),k.apply(this,arguments)}function D(){return D=(0,r.default)((function*(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:P;if('ios'===s.Platform.OS){if((0,p.default)(),!e)throw new Error('Unable to load font, because no file was specified. ');yield v.default.loadFontWithFileName.apply(v.default,(0,t.default)(e.split('.')))}})),D.apply(this,arguments)}return E.Button=(0,h.default)(E),E.getImageSource=function(e){return k.apply(this,arguments)},E.getImageSourceSync=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:w,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:F;(0,p.default)();var n=R(e),o=(0,s.processColor)(r),a=`${n}:${t}:${o}`;if($.has(a))return $.get(a);try{var l={uri:v.default.getImageForFontSync(I,n,t,o),scale:s.PixelRatio.get()};return $.setValue(a,l),l}catch(e){throw $.setError(a,e),e}},E.loadFont=function(){return D.apply(this,arguments)},E.hasIcon=function(t){return Object.prototype.hasOwnProperty.call(e,t)},E.getRawGlyphMap=function(){return e},E.getFontFamily=function(){return I},E};var t=e(_r(d[1])),r=e(_r(d[2])),n=e(_r(d[3])),o=e(_r(d[4])),a=e(_r(d[5])),l=e(_r(d[6])),u=e(_r(d[7])),f=e(_r(d[8])),i=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=b(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var l=o?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(n,a,l):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n})(_r(d[9])),c=e(_r(d[10])),s=_r(d[11]),p=e(_r(d[12])),y=e(_r(d[13])),h=e(_r(d[14])),v=e(_r(d[15])),O=["name","size","color","style","children"];function b(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(b=function(e){return e?r:t})(e)}function _(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(_=function(){return!!e})()}var w=_e.DEFAULT_ICON_SIZE=12,F=_e.DEFAULT_ICON_COLOR='black'}),913,[1,6,564,134,12,13,23,25,28,178,914,2,917,919,920,918,223]); +__d((function(g,r,i,a,m,e,d){m.exports=r(d[0])()}),914,[915]); +__d((function(g,r,i,a,m,e,d){'use strict';function n(){}function t(){}t.resetWarningCache=n,m.exports=function(){function o(n,t,o,p,c,s){if(s!==r(d[0])){var y=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw y.name='Invariant Violation',y}}function p(){return o}o.isRequired=o;var c={array:o,bigint:o,bool:o,func:o,number:o,object:o,string:o,symbol:o,any:o,arrayOf:p,element:o,elementType:o,instanceOf:p,node:o,objectOf:p,oneOf:p,oneOfType:p,shape:p,exact:p,checkPropTypes:t,resetWarningCache:n};return c.PropTypes=c,c}}),915,[916]); +__d((function(g,r,i,a,m,e,d){'use strict';m.exports='SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'}),916,[]); +__d((function(g,r,i,a,m,e,d){var o=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){if(!t.default)throw new Error('The native RNVectorIcons API is not available, did you properly integrate the module? Please verify your autolinking setup and recompile.')};var t=o(r(d[1]))}),917,[1,918]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var o=r(d[0]);e.default=o.TurboModuleRegistry.get('RNVectorIcons')}),918,[2]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){var u=new Map;return{setValue:function(n,o){return u.set(n,{type:t,data:o})},setError:function(t,o){return u.set(t,{type:n,data:o})},has:function(t){return u.has(t)},get:function(t){if(u.has(t)){var o=u.get(t),f=o.type,s=o.data;if(f===n)throw s;return s}}}};var t='value',n='error'}),919,[]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=function(e){var f;return f=(function(l){function s(){return(0,r.default)(this,s),e=this,t=s,n=arguments,t=(0,i.default)(t),(0,o.default)(e,y()?Reflect.construct(t,n||[],(0,i.default)(e).constructor):t.apply(e,n));var e,t,n}return(0,a.default)(s,l),(0,n.default)(s,[{key:"render",value:function(){var r=this.props,n=r.style,o=r.iconStyle,i=r.children,a=(0,t.default)(r,u),l=(0,_r(d[10]).pick)(a,h,'style','name','size','color'),s=(0,_r(d[10]).pick)(a,v),f=(0,_r(d[10]).omit)(a,Object.keys(l),Object.keys(s),'iconStyle','borderRadius','backgroundColor');l.style=o?[p.icon,o]:p.icon;var y=(0,_r(d[10]).pick)(this.props,'color'),b=(0,_r(d[10]).pick)(this.props,'backgroundColor','borderRadius');return(0,_r(d[11]).jsx)(c.TouchableHighlight,Object.assign({style:[p.touchable,b]},s,{children:(0,_r(d[11]).jsxs)(c.View,Object.assign({style:[p.container,b,n]},f,{children:[(0,_r(d[11]).jsx)(e,Object.assign({},l)),'string'==typeof i?(0,_r(d[11]).jsx)(c.Text,{style:[p.text,y],selectable:!1,children:i}):i]}))}))}}])})(l.PureComponent),f.propTypes={backgroundColor:s.default.oneOfType([s.default.string,s.default.number]),borderRadius:s.default.number,color:s.default.any,size:s.default.number,iconStyle:s.default.any,style:s.default.any,children:s.default.node},f.defaultProps={backgroundColor:b,borderRadius:5,color:'white',size:20},f};var t=e(_r(d[1])),r=e(_r(d[2])),n=e(_r(d[3])),o=e(_r(d[4])),i=e(_r(d[5])),a=e(_r(d[6])),l=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=f(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var a=o?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(n,i,a):n[i]=e[i]}return n.default=e,r&&r.set(e,n),n})(_r(d[7])),s=e(_r(d[8])),c=_r(d[9]),u=["style","iconStyle","children"];function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(f=function(e){return e?r:t})(e)}function y(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(y=function(){return!!e})()}var p=c.StyleSheet.create({container:{flexDirection:'row',justifyContent:'flex-start',alignItems:'center',padding:8},touchable:{overflow:'hidden'},icon:{marginRight:10},text:{fontWeight:'600',backgroundColor:'transparent'}}),b='#007AFF',h=['ellipsizeMode','numberOfLines','textBreakStrategy','selectable','suppressHighlighting','allowFontScaling','adjustsFontSizeToFit','minimumFontScale'],v=['accessible','accessibilityLabel','accessibilityHint','accessibilityComponentType','accessibilityRole','accessibilityStates','accessibilityTraits','onFocus','onBlur','disabled','onPress','onPressIn','onPressOut','onLayout','onLongPress','nativeID','testID','delayPressIn','delayPressOut','delayLongPress','activeOpacity','underlayColor','selectionColor','onShowUnderlay','onHideUnderlay','hasTVPreferredFocus','tvParallaxProperties']}),920,[1,134,12,13,23,25,28,178,914,2,921,223]); +__d((function(g,r,i,a,m,e,d){m.exports={pick:function(t){for(var n=arguments.length,o=new Array(n>1?n-1:0),u=1;u1?n-1:0),u=1;u0&&void 0!==arguments[0]?arguments[0]:o,s=arguments.length>1?arguments[1]:void 0;if('photo'!==n.mediaType){var c={errorCode:'others',errorMessage:'For now, only photo mediaType is supported for web'};return s&&s(c),Promise.resolve(c)}var l=document.createElement('div'),u=document.createElement('div'),f=document.createElement('div'),p=document.createElement('div'),v=document.createElement('button'),h=document.createElement('button'),y=document.createElement('button'),b=document.createElement('button'),x=document.createElement('video'),E=document.createElement('canvas');if(navigator.mediaDevices.getUserMedia({audio:!1,video:!0}).then((function(n){x.srcObject=n,x.play()})).catch((function(n){console.log(n)})),!document.getElementsByClassName('fa').length){if(!!!document.getElementById('injected-font-awesome')){var w=document.getElementsByTagName('HEAD')[0],T=document.createElement('link');T.id='injected-font-awesome',T.rel='stylesheet',T.type='text/css',T.href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css',w.appendChild(T)}}l.style.cssText=" \n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0,0,0,0.9);\n display: flex;\n align-items: center;\n justify-content: center;\n ",u.style.cssText="\n position: relative;\n min-height: min(480px, 100vh);\n min-width: min(640px, 100vw);\n border-radius: 8px 8px 0 0;\n background-color: #333333;\n ",x.style.cssText=E.style.cssText="\n position: absolute;\n top: 0;\n left: 0;\n border-radius: 8px 8px 0 0;\n ",f.style.cssText="\n display: flex;\n flex-direction: column;\n margin: auto;\n ",p.style.cssText="\n display: flex;\n align-items: center;\n justify-content: space-evenly;\n min-height: 60px;\n background-color: #333333;\n border-radius: 0 0 8px 8px; \n ",v.innerHTML='',h.innerHTML='',y.innerHTML='',b.innerHTML='',v.style.cssText=h.style.cssText=y.style.cssText=b.style.cssText="\n padding: 10px;\n color: #f2f2f2;\n border: 0;\n background: transparent;\n ",u.append(x),u.append(E),f.append(u),f.append(p),l.append(f),document.body.appendChild(l);var L=!1,C=function(){p.innerHTML='',L?(p.append(h),p.append(y)):p.append(v),p.append(b)};return C(),new Promise((function(n){v.addEventListener('click',(0,t.default)((function*(){var n;E.width=x.videoWidth,E.height=x.videoHeight,null==(n=E.getContext('2d'))||n.drawImage(x,0,0,E.width,E.height),L=!0,C()}))),h.addEventListener('click',(function(){var n;null==(n=E.getContext('2d'))||n.clearRect(0,0,E.width,E.height),L=!1,C()})),y.addEventListener('click',(0,t.default)((function*(){var t={assets:[{uri:E.toDataURL('image/png')}]};s&&s(t),n(t),document.body.removeChild(l)}))),b.addEventListener('click',(0,t.default)((function*(){var t={assets:[],didCancel:!0};s&&s(t),n(t),document.body.removeChild(l)})))}))},e.imageLibrary=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o,l=arguments.length>1?arguments[1]:void 0;if('photo'!==n.mediaType){var u={errorCode:'others',errorMessage:'For now, only photo mediaType is supported for web'};return l&&l(u),Promise.resolve(u)}var f=document.createElement('input');f.style.display='none',f.setAttribute('type','file'),f.setAttribute('accept',c(n.mediaType)),n.selectionLimit>1&&f.setAttribute('multiple','multiple');return document.body.appendChild(f),new Promise((function(o){var c=(function(){var c=(0,t.default)((function*(){if(f.files)if(n.selectionLimit<=1){var t={assets:[yield s(f.files[0],{includeBase64:n.includeBase64})]};l&&l(t),o(t)}else{var c={didCancel:!1,assets:yield Promise.all(Array.from(f.files).map((function(t){return s(t,{includeBase64:n.includeBase64})})))};l&&l(c),o(c)}p()}));return function(){return c.apply(this,arguments)}})(),u=(function(){var n=(0,t.default)((function*(){o({didCancel:!0}),p()}));return function(){return n.apply(this,arguments)}})(),p=function(){f.removeEventListener('change',c),f.removeEventListener('cancel',u),document.body.removeChild(f)};f.addEventListener('change',c),f.addEventListener('cancel',u);var v=new MouseEvent('click');f.dispatchEvent(v)}))};var t=n(r(d[1])),o={mediaType:'photo',includeBase64:!1,selectionLimit:1};function s(n,t){return new Promise((function(o,s){var c=new FileReader;c.onerror=function(){s(new Error("Failed to read the selected media because the operation failed."))},c.onload=function(n){var s=n.target,c=null==s?void 0:s.result,l=function(){return o({uri:c,width:0,height:0})};if('string'==typeof c){var u=new Image;u.src=c,u.onload=function(){var n,s;return o(Object.assign({uri:c,width:null!=(n=u.naturalWidth)?n:u.width,height:null!=(s=u.naturalHeight)?s:u.height},t.includeBase64&&{base64:c.substr(c.indexOf(',')+1)}))},u.onerror=function(){return l()}}else l()},c.readAsDataURL(n)}))}function c(n){var t,o={photo:'image/*',video:'video/*',mixed:'image/*,video/*'};return null!=(t=o[n])?t:o.photo}}),930,[1,564]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.camera=function(t,u){return new Promise((function(c){o.launchCamera(Object.assign({},n,t),(function(t){u&&u(t),c(t)}))}))},e.imageLibrary=function(t,u){return new Promise((function(c){o.launchImageLibrary(Object.assign({},n,t),(function(t){u&&u(t),c(t)}))}))};var t=r(d[0]),n={mediaType:'photo',videoQuality:'high',quality:1,maxWidth:0,maxHeight:0,includeBase64:!1,cameraType:'back',selectionLimit:1,saveToPhotos:!1,durationLimit:0,includeExtra:!1,presentationStyle:'pageSheet',assetRepresentationMode:'auto'},o=null!=g.__turboModuleProxy?r(d[1]).default:t.NativeModules.ImagePicker}),931,[2,932]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=r(d[0]);e.default=t.TurboModuleRegistry.get('ImagePicker')}),932,[2]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=_r(d[1]),r=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var u=o?Object.getOwnPropertyDescriptor(e,i):null;u&&(u.get||u.set)?Object.defineProperty(n,i,u):n[i]=e[i]}return n.default=e,r&&r.set(e,n),n})(_r(d[2])),n=e(_r(d[3]));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}_e.default=function(e){var a=e.navigation,o=e.route,i=(0,_r(d[4]).useImageContext)().setUri,u=(0,r.useRef)(null),c=t.Dimensions.get("window"),s=c.width,l=c.height;return(0,_r(d[5]).jsxs)(t.View,{className:"flex-1 bg-black",children:[(0,_r(d[5]).jsx)(_r(d[6]).CropView,{sourceUrl:o.params.uri,ref:u,style:{flex:4,margin:20},onImageCrop:function(e){i(e.uri),a.goBack()},keepAspectRatio:!0,aspectRatio:{width:s,height:l}}),(0,_r(d[5]).jsxs)(t.View,{className:"flex-row justify-around items-center p-4",children:[(0,_r(d[5]).jsx)(t.TouchableOpacity,{onPress:function(){return a.goBack()},children:(0,_r(d[5]).jsx)(n.default,{name:"close",size:32,color:"white"})}),(0,_r(d[5]).jsx)(t.TouchableOpacity,{onPress:function(){return u.current.saveImage(!0,90)},children:(0,_r(d[5]).jsx)(n.default,{name:"checkmark",size:32,color:"#F65261"})})]})]})}}),933,[1,2,178,912,934,223,935]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.useImageContext=_e.default=_e.ImageContext=void 0;var t=e(_r(d[1])),r=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var u={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(u,o,i):u[o]=e[o]}return u.default=e,r&&r.set(e,u),u})(_r(d[2]));function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}var u=_e.ImageContext=(0,r.createContext)({});_e.useImageContext=function(){return(0,r.useContext)(u)},_e.default=function(e){var n=(0,r.useState)(""),a=(0,t.default)(n,2),o=a[0],i=a[1],f=(0,r.useState)(9),l=(0,t.default)(f,2),c=l[0],s=l[1],p=(0,r.useState)(16),v=(0,t.default)(p,2),_={width:c,setWidth:s,height:v[0],setHeight:v[1],uri:o,setUri:i};return(0,_r(d[3]).jsx)(u.Provider,{value:_,children:e.children})}}),934,[1,38,178,223]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"CropView",{enumerable:!0,get:function(){return n.default}});var n=t(r(d[1]))}),935,[1,936]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),n=e(_r(d[2])),a=e(_r(d[3])),r=e(_r(d[4])),o=e(_r(d[5])),i=e(_r(d[6])),u=s(_r(d[7])),f=s(_r(d[8])),c=_r(d[9]),l=["onImageCrop","aspectRatio"];function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(p=function(e){return e?n:t})(e)}function s(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=p(t);if(n&&n.has(e))return n.get(e);var a={__proto__:null},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var i=r?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(a,o,i):a[o]=e[o]}return a.default=e,n&&n.set(e,a),a}function v(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(v=function(){return!!e})()}var w=(0,c.requireNativeComponent)('CropView'),y=(function(e){function p(){var e,t,a,i;return(0,n.default)(this,p),t=this,a=p,i=arguments,a=(0,o.default)(a),(e=(0,r.default)(t,v()?Reflect.construct(a,i||[],(0,o.default)(t).constructor):a.apply(t,i))).viewRef=(0,f.createRef)(),e.saveImage=function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:90;c.UIManager.dispatchViewManagerCommand((0,c.findNodeHandle)(e.viewRef.current),c.UIManager.getViewManagerConfig('CropView').Commands.saveImage,[t,n])},e.rotateImage=function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];c.UIManager.dispatchViewManagerCommand((0,c.findNodeHandle)(e.viewRef.current),c.UIManager.getViewManagerConfig('CropView').Commands.rotateImage,[t])},e}return(0,i.default)(p,e),(0,a.default)(p,[{key:"render",value:function(){var e=this.props,n=e.onImageCrop,a=e.aspectRatio,r=(0,t.default)(e,l);return u.createInteropElement(w,Object.assign({ref:this.viewRef,cropAspectRatio:a,onImageSaved:function(e){n(e.nativeEvent)}},r))}}])})(f.default.PureComponent);y.defaultProps={keepAspectRatio:!1,iosDimensionSwapEnabled:!1};_e.default=y}),936,[1,134,12,13,23,25,28,854,178,2]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"NativeStackView",{enumerable:!0,get:function(){return r(d[0]).NativeStackView}}),Object.defineProperty(e,"createNativeStackNavigator",{enumerable:!0,get:function(){return r(d[1]).createNativeStackNavigator}}),Object.defineProperty(e,"useAnimatedHeaderHeight",{enumerable:!0,get:function(){return r(d[2]).useAnimatedHeaderHeight}})}),937,[938,1135,1131]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.NativeStackView=function(e){var t=e.state,n=e.navigation,i=e.descriptors,r=e.describe,l=(0,_r(d[11]).useDismissedRouteError)(t).setNextDismissedKey;(0,_r(d[12]).useInvalidPreventRemoveError)(i);var u=(0,_r(d[13]).getModalRouteKeys)(t.routes,i),c=t.preloadedRoutes.reduce((function(e,t){return e[t.key]=e[t.key]||r(t,!0),e}),{});return(0,a.jsx)(_r(d[6]).SafeAreaProviderCompat,{children:(0,a.jsx)(_r(d[9]).ScreenStack,{style:s.container,children:t.routes.concat(t.preloadedRoutes).map((function(e,r){var s,v,h,p=null!=(s=i[e.key])?s:c[e.key],f=t.index===r,y=t.index-1===r,k=null==(v=t.routes[r-1])?void 0:v.key,b=null==(h=t.routes[r+1])?void 0:h.key,S=k?i[k]:void 0,x=b?i[b]:void 0,B=u.includes(e.key),C=void 0!==c[e.key]&&void 0===i[e.key],D='nativeFabricUIManager'in g?!C&&!f&&!y:!C&&!f;return(0,a.jsx)(o,{index:r,focused:f,shouldFreeze:D,descriptor:p,previousDescriptor:S,nextDescriptor:x,isPresentationModal:B,isPreloaded:C,onWillDisappear:function(){n.emit({type:'transitionStart',data:{closing:!0},target:e.key})},onWillAppear:function(){n.emit({type:'transitionStart',data:{closing:!1},target:e.key})},onAppear:function(){n.emit({type:'transitionEnd',data:{closing:!1},target:e.key})},onDisappear:function(){n.emit({type:'transitionEnd',data:{closing:!0},target:e.key})},onDismissed:function(a){n.dispatch(Object.assign({},_r(d[4]).StackActions.pop(a.nativeEvent.dismissCount),{source:e.key,target:t.key})),l(e.key)},onHeaderBackButtonClicked:function(){n.dispatch(Object.assign({},_r(d[4]).StackActions.pop(),{source:e.key,target:t.key}))},onNativeDismissCancelled:function(a){n.dispatch(Object.assign({},_r(d[4]).StackActions.pop(a.nativeEvent.dismissCount),{source:e.key,target:t.key}))},onGestureCancel:function(){n.emit({type:'gestureCancel',target:e.key})},onSheetDetentChanged:function(t){n.emit({type:'sheetDetentChange',target:e.key,data:{index:t.nativeEvent.index,stable:t.nativeEvent.isStable}})}},e.key)}))})})};var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=i(t);if(n&&n.has(e))return n.get(e);var a={__proto__:null},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var s=r?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(a,o,s):a[o]=e[o]}return a.default=e,n&&n.set(e,a),a})(_r(d[1])),n=_r(d[2]),a=_r(d[3]);function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(i=function(e){return e?n:t})(e)}var r='web'!==n.Platform.OS,o=function(i){var o,l=i.index,u=i.focused,c=i.shouldFreeze,v=i.descriptor,h=i.previousDescriptor,p=i.nextDescriptor,f=i.isPresentationModal,y=i.isPreloaded,k=i.onWillDisappear,b=i.onWillAppear,S=i.onAppear,x=i.onDisappear,B=i.onDismissed,C=i.onHeaderBackButtonClicked,D=i.onNativeDismissCancelled,H=i.onGestureCancel,E=i.onSheetDetentChanged,P=v.route,O=v.navigation,w=v.options,A=v.render,j=w.animation,T=w.animationMatchesGesture,I=w.presentation,M=void 0===I?f?'modal':'card':I,R=w.fullScreenGestureEnabled,_=w.animationDuration,W=w.animationTypeForReplace,F=void 0===W?'push':W,N=w.fullScreenGestureShadowEnabled,z=void 0===N||N,G=w.gestureEnabled,V=w.gestureDirection,L=void 0===V?'card'===M?'horizontal':'vertical':V,K=w.gestureResponseDistance,U=w.header,q=w.headerBackButtonMenuEnabled,J=w.headerShown,Q=w.headerBackground,X=w.headerTransparent,Y=w.autoHideHomeIndicator,Z=w.keyboardHandlingEnabled,$=w.navigationBarColor,ee=w.navigationBarTranslucent,te=w.navigationBarHidden,ne=w.orientation,ae=w.sheetAllowedDetents,ie=void 0===ae?[1]:ae,re=w.sheetLargestUndimmedDetentIndex,oe=void 0===re?-1:re,se=w.sheetGrabberVisible,de=void 0!==se&&se,le=w.sheetCornerRadius,ue=void 0===le?-1:le,ce=w.sheetElevation,ve=void 0===ce?24:ce,he=w.sheetExpandsWhenScrolledToEdge,pe=void 0===he||he,ge=w.sheetInitialDetentIndex,fe=void 0===ge?0:ge,me=w.statusBarAnimation,ye=w.statusBarHidden,ke=w.statusBarStyle,be=w.statusBarTranslucent,Se=w.statusBarBackgroundColor,xe=w.unstable_sheetFooter,Be=w.freezeOnBlur,Ce=w.contentStyle;'vertical'===L&&'ios'===n.Platform.OS&&(void 0===R&&(R=!0),void 0===T&&(T=!0),void 0===j&&(j='slide_from_bottom'));var De=null==p?void 0:p.options.gestureDirection,He=null!=De?De:L;0===l&&(M='card');var Ee=(0,_r(d[4]).useTheme)().colors,Pe=(0,_r(d[5]).useSafeAreaInsets)(),Oe=(0,_r(d[5]).useSafeAreaFrame)(),we='modal'===M||'formSheet'===M,Ae='ios'===n.Platform.OS&&!(n.Platform.isPad||n.Platform.isTV),je=Oe.width>Oe.height,Te=t.useContext(_r(d[6]).HeaderShownContext),Ie=t.useContext(_r(d[6]).HeaderHeightContext),Me=t.useContext(_r(d[6]).HeaderBackContext),Re=Te||'ios'===n.Platform.OS&&we||Ae&&je?0:Pe.top,We=(0,_r(d[4]).usePreventRemoveContext)().preventedRoutes,Fe=n.Platform.select({android:56+Re,default:(0,_r(d[6]).getDefaultHeaderHeight)(Oe,we,Re)}),Ne=t.useState(Fe),ze=e(Ne,2),Ge=ze[0],Ve=ze[1],Le=t.useCallback((0,_r(d[7]).debounce)(Ve,100),[]),Ke=void 0!==U,Ue=0;if('android'===n.Platform.OS&&!Ke){var qe,Je=null!=(qe=n.StatusBar.currentHeight)?qe:0;Ue=-Je+Re}var Qe=(0,n.useAnimatedValue)(Fe),Xe=t.useMemo((function(){return n.Animated.add(Qe,Ue)}),[Ue,Qe]),Ye='boolean'==typeof be?be:0!==Re,Ze=null!=h||null!=Me,$e=h?(0,_r(d[6]).getHeaderTitle)(h.options,h.route.name):null==Me?void 0:Me.title,et=t.useMemo((function(){if(Ze)return{href:void 0,title:$e}}),[Ze,$e]),tt=null==(o=We[P.key])?void 0:o.preventRemove,nt=(0,_r(d[8]).useHeaderConfigProps)(Object.assign({},w,{route:P,headerBackButtonMenuEnabled:void 0!==tt?!tt:q,headerBackTitle:void 0!==w.headerBackTitle?w.headerBackTitle:void 0,headerHeight:Ge,headerShown:void 0===U&&J,headerTopInsetEnabled:Ye,headerBack:et}));return(0,a.jsx)(_r(d[4]).NavigationContext.Provider,{value:O,children:(0,a.jsx)(_r(d[4]).NavigationRouteContext.Provider,{value:P,children:(0,a.jsx)(_r(d[9]).ScreenStackItem,{screenId:P.key,activityState:y?0:2,style:n.StyleSheet.absoluteFill,accessibilityElementsHidden:!u,importantForAccessibility:u?'auto':'no-hide-descendants',customAnimationOnSwipe:T,fullScreenSwipeEnabled:R,fullScreenSwipeShadowEnabled:z,freezeOnBlur:Be,gestureEnabled:'android'!==n.Platform.OS&&G,homeIndicatorHidden:Y,hideKeyboardOnSwipe:Z,navigationBarColor:$,navigationBarTranslucent:ee,navigationBarHidden:te,replaceAnimation:F,stackPresentation:'card'===M?'push':M,stackAnimation:j,screenOrientation:ne,sheetAllowedDetents:ie,sheetLargestUndimmedDetentIndex:oe,sheetGrabberVisible:de,sheetInitialDetentIndex:fe,sheetCornerRadius:ue,sheetElevation:ve,sheetExpandsWhenScrolledToEdge:pe,statusBarAnimation:me,statusBarHidden:ye,statusBarStyle:ke,statusBarColor:Se,statusBarTranslucent:be,swipeDirection:He,transitionDuration:_,onWillAppear:b,onWillDisappear:k,onAppear:S,onDisappear:x,onDismissed:B,onGestureCancel:H,onSheetDetentChanged:E,gestureResponseDistance:K,nativeBackButtonDismissalEnabled:!1,onHeaderBackButtonClicked:C,preventNativeDismiss:tt,onNativeDismissCancelled:D,onHeaderHeightChange:n.Animated.event([{nativeEvent:{headerHeight:Qe}}],{useNativeDriver:r,listener:function(e){if('android'!==n.Platform.OS||null==w.headerBackground&&!w.headerTransparent){if(e.nativeEvent&&'object'==typeof e.nativeEvent&&'headerHeight'in e.nativeEvent&&'number'==typeof e.nativeEvent.headerHeight){var t=e.nativeEvent.headerHeight+Ue;'ios'===n.Platform.OS&&(w.headerLargeTitle||w.headerSearchBarOptions)?Le(t):Ve(t)}}else Ve(56+Re)}}),contentStyle:['transparentModal'!==M&&'containedTransparentModal'!==M&&{backgroundColor:Ee.background},Ce],headerConfig:nt,unstable_sheetFooter:xe,shouldFreeze:c,children:(0,a.jsx)(_r(d[10]).AnimatedHeaderHeightContext.Provider,{value:Xe,children:(0,a.jsxs)(_r(d[6]).HeaderHeightContext.Provider,{value:!1!==J?Ge:null!=Ie?Ie:0,children:[null!=Q?(0,a.jsx)(n.View,{style:[s.background,X?s.translucent:null,{height:Ge}],children:Q()}):null,void 0!==U&&!1!==J?(0,a.jsx)(n.View,{onLayout:function(e){var t=e.nativeEvent.layout.height;Ve(t),Qe.setValue(t)},style:[s.header,X?s.absolute:null],children:U({back:et,options:w,route:P,navigation:O})}):null,(0,a.jsx)(_r(d[6]).HeaderShownContext.Provider,{value:Te||!1!==J,children:(0,a.jsx)(_r(d[6]).HeaderBackContext.Provider,{value:et,children:A()})})]})})},P.key)})})};var s=n.StyleSheet.create({container:{flex:1},header:{zIndex:1},absolute:{position:'absolute',top:0,start:0,end:0},translucent:{position:'absolute',top:0,start:0,end:0,zIndex:1,elevation:1},background:{overflow:'hidden'}})}),938,[38,178,2,224,939,459,1053,1095,1096,1098,1131,1132,1133,1134]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n={createStaticNavigation:!0,Link:!0,LinkingContext:!0,LocaleDirContext:!0,NavigationContainer:!0,ServerContainer:!0,DarkTheme:!0,DefaultTheme:!0,UNSTABLE_UnhandledLinkingContext:!0,useLinkBuilder:!0,useLinkProps:!0,useLinkTo:!0,useLocale:!0,useScrollToTop:!0};Object.defineProperty(e,"DarkTheme",{enumerable:!0,get:function(){return r(d[0]).DarkTheme}}),Object.defineProperty(e,"DefaultTheme",{enumerable:!0,get:function(){return r(d[1]).DefaultTheme}}),Object.defineProperty(e,"Link",{enumerable:!0,get:function(){return r(d[2]).Link}}),Object.defineProperty(e,"LinkingContext",{enumerable:!0,get:function(){return r(d[3]).LinkingContext}}),Object.defineProperty(e,"LocaleDirContext",{enumerable:!0,get:function(){return r(d[4]).LocaleDirContext}}),Object.defineProperty(e,"NavigationContainer",{enumerable:!0,get:function(){return r(d[5]).NavigationContainer}}),Object.defineProperty(e,"ServerContainer",{enumerable:!0,get:function(){return r(d[6]).ServerContainer}}),Object.defineProperty(e,"UNSTABLE_UnhandledLinkingContext",{enumerable:!0,get:function(){return r(d[7]).UnhandledLinkingContext}}),Object.defineProperty(e,"createStaticNavigation",{enumerable:!0,get:function(){return r(d[8]).createStaticNavigation}}),Object.defineProperty(e,"useLinkBuilder",{enumerable:!0,get:function(){return r(d[9]).useLinkBuilder}}),Object.defineProperty(e,"useLinkProps",{enumerable:!0,get:function(){return r(d[10]).useLinkProps}}),Object.defineProperty(e,"useLinkTo",{enumerable:!0,get:function(){return r(d[11]).useLinkTo}}),Object.defineProperty(e,"useLocale",{enumerable:!0,get:function(){return r(d[12]).useLocale}}),Object.defineProperty(e,"useScrollToTop",{enumerable:!0,get:function(){return r(d[13]).useScrollToTop}}),Object.keys(r(d[14])).forEach((function(t){"default"!==t&&"__esModule"!==t&&(Object.prototype.hasOwnProperty.call(n,t)||t in e&&e[t]===r(d[14])[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return r(d[14])[t]}}))})),Object.keys(r(d[15])).forEach((function(t){"default"!==t&&"__esModule"!==t&&(Object.prototype.hasOwnProperty.call(n,t)||t in e&&e[t]===r(d[15])[t]||Object.defineProperty(e,t,{enumerable:!0,get:function(){return r(d[15])[t]}}))}))}),939,[940,942,943,1036,1037,1038,1045,1044,1047,1048,1035,1049,1050,1051,1052,944]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DarkTheme=void 0;e.DarkTheme={dark:!0,colors:{primary:'rgb(10, 132, 255)',background:'rgb(1, 1, 1)',card:'rgb(18, 18, 18)',text:'rgb(229, 229, 231)',border:'rgb(39, 39, 41)',notification:'rgb(255, 69, 58)'},fonts:r(d[0]).fonts}}),940,[941]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.fonts=void 0;var t=r(d[0]),o='system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"';e.fonts=t.Platform.select({web:{regular:{fontFamily:o,fontWeight:'400'},medium:{fontFamily:o,fontWeight:'500'},bold:{fontFamily:o,fontWeight:'600'},heavy:{fontFamily:o,fontWeight:'700'}},ios:{regular:{fontFamily:'System',fontWeight:'400'},medium:{fontFamily:'System',fontWeight:'500'},bold:{fontFamily:'System',fontWeight:'600'},heavy:{fontFamily:'System',fontWeight:'700'}},default:{regular:{fontFamily:'sans-serif',fontWeight:'normal'},medium:{fontFamily:'sans-serif-medium',fontWeight:'normal'},bold:{fontFamily:'sans-serif',fontWeight:'600'},heavy:{fontFamily:'sans-serif',fontWeight:'700'}}})}),941,[2]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.DefaultTheme=void 0;e.DefaultTheme={dark:!1,colors:{primary:'rgb(0, 122, 255)',background:'rgb(242, 242, 242)',card:'rgb(255, 255, 255)',text:'rgb(28, 28, 30)',border:'rgb(216, 216, 216)',notification:'rgb(255, 59, 48)'},fonts:r(d[0]).fonts}}),942,[941]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),r=["screen","params","action","href","style"];Object.defineProperty(_e,"__esModule",{value:!0}),_e.Link=function(o){var a=o.screen,s=o.params,u=o.action,c=o.href,f=o.style,l=e(o,r),i=(0,_r(d[3]).useTheme)(),p=i.colors,P=i.fonts,y=(0,_r(d[4]).useLinkProps)({screen:a,params:s,action:u,href:c}),v=function(e){'onPress'in l&&(null==l.onPress||l.onPress(e)),e.defaultPrevented||y.onPress(e)};return t.createElement(n.Text,Object.assign({},y,l,n.Platform.select({web:{onClick:v},default:{onPress:v}}),{style:[{color:p.primary},P.regular,f]}))};var t=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=o(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&{}.hasOwnProperty.call(e,s)){var u=a?Object.getOwnPropertyDescriptor(e,s):null;u&&(u.get||u.set)?Object.defineProperty(n,s,u):n[s]=e[s]}return n.default=e,t&&t.set(e,n),n})(_r(d[1])),n=_r(d[2]);function o(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(o=function(e){return e?t:r})(e)}}),943,[134,178,2,944,1035]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t={BaseNavigationContainer:!0,createNavigationContainerRef:!0,createNavigatorFactory:!0,CurrentRenderContext:!0,findFocusedRoute:!0,getActionFromState:!0,getFocusedRouteNameFromRoute:!0,getPathFromState:!0,getStateFromPath:!0,NavigationContainerRefContext:!0,NavigationContext:!0,NavigationHelpersContext:!0,NavigationIndependentTree:!0,NavigationRouteContext:!0,PreventRemoveContext:!0,PreventRemoveProvider:!0,createComponentForStaticNavigation:!0,createPathConfigForStaticNavigation:!0,ThemeContext:!0,ThemeProvider:!0,useTheme:!0,useFocusEffect:!0,useIsFocused:!0,useNavigation:!0,useNavigationBuilder:!0,useNavigationContainerRef:!0,useNavigationIndependentTree:!0,useNavigationState:!0,usePreventRemove:!0,usePreventRemoveContext:!0,useRoute:!0,useStateForPath:!0,validatePathConfig:!0};Object.defineProperty(e,"BaseNavigationContainer",{enumerable:!0,get:function(){return r(d[0]).BaseNavigationContainer}}),Object.defineProperty(e,"CurrentRenderContext",{enumerable:!0,get:function(){return r(d[1]).CurrentRenderContext}}),Object.defineProperty(e,"NavigationContainerRefContext",{enumerable:!0,get:function(){return r(d[2]).NavigationContainerRefContext}}),Object.defineProperty(e,"NavigationContext",{enumerable:!0,get:function(){return r(d[3]).NavigationContext}}),Object.defineProperty(e,"NavigationHelpersContext",{enumerable:!0,get:function(){return r(d[4]).NavigationHelpersContext}}),Object.defineProperty(e,"NavigationIndependentTree",{enumerable:!0,get:function(){return r(d[5]).NavigationIndependentTree}}),Object.defineProperty(e,"NavigationRouteContext",{enumerable:!0,get:function(){return r(d[6]).NavigationRouteContext}}),Object.defineProperty(e,"PreventRemoveContext",{enumerable:!0,get:function(){return r(d[7]).PreventRemoveContext}}),Object.defineProperty(e,"PreventRemoveProvider",{enumerable:!0,get:function(){return r(d[8]).PreventRemoveProvider}}),Object.defineProperty(e,"ThemeContext",{enumerable:!0,get:function(){return r(d[9]).ThemeContext}}),Object.defineProperty(e,"ThemeProvider",{enumerable:!0,get:function(){return r(d[10]).ThemeProvider}}),Object.defineProperty(e,"createComponentForStaticNavigation",{enumerable:!0,get:function(){return r(d[11]).createComponentForStaticNavigation}}),Object.defineProperty(e,"createNavigationContainerRef",{enumerable:!0,get:function(){return r(d[12]).createNavigationContainerRef}}),Object.defineProperty(e,"createNavigatorFactory",{enumerable:!0,get:function(){return r(d[13]).createNavigatorFactory}}),Object.defineProperty(e,"createPathConfigForStaticNavigation",{enumerable:!0,get:function(){return r(d[11]).createPathConfigForStaticNavigation}}),Object.defineProperty(e,"findFocusedRoute",{enumerable:!0,get:function(){return r(d[14]).findFocusedRoute}}),Object.defineProperty(e,"getActionFromState",{enumerable:!0,get:function(){return r(d[15]).getActionFromState}}),Object.defineProperty(e,"getFocusedRouteNameFromRoute",{enumerable:!0,get:function(){return r(d[16]).getFocusedRouteNameFromRoute}}),Object.defineProperty(e,"getPathFromState",{enumerable:!0,get:function(){return r(d[17]).getPathFromState}}),Object.defineProperty(e,"getStateFromPath",{enumerable:!0,get:function(){return r(d[18]).getStateFromPath}}),Object.defineProperty(e,"useFocusEffect",{enumerable:!0,get:function(){return r(d[19]).useFocusEffect}}),Object.defineProperty(e,"useIsFocused",{enumerable:!0,get:function(){return r(d[20]).useIsFocused}}),Object.defineProperty(e,"useNavigation",{enumerable:!0,get:function(){return r(d[21]).useNavigation}}),Object.defineProperty(e,"useNavigationBuilder",{enumerable:!0,get:function(){return r(d[22]).useNavigationBuilder}}),Object.defineProperty(e,"useNavigationContainerRef",{enumerable:!0,get:function(){return r(d[23]).useNavigationContainerRef}}),Object.defineProperty(e,"useNavigationIndependentTree",{enumerable:!0,get:function(){return r(d[24]).useNavigationIndependentTree}}),Object.defineProperty(e,"useNavigationState",{enumerable:!0,get:function(){return r(d[25]).useNavigationState}}),Object.defineProperty(e,"usePreventRemove",{enumerable:!0,get:function(){return r(d[26]).usePreventRemove}}),Object.defineProperty(e,"usePreventRemoveContext",{enumerable:!0,get:function(){return r(d[27]).usePreventRemoveContext}}),Object.defineProperty(e,"useRoute",{enumerable:!0,get:function(){return r(d[28]).useRoute}}),Object.defineProperty(e,"useStateForPath",{enumerable:!0,get:function(){return r(d[29]).useStateForPath}}),Object.defineProperty(e,"useTheme",{enumerable:!0,get:function(){return r(d[30]).useTheme}}),Object.defineProperty(e,"validatePathConfig",{enumerable:!0,get:function(){return r(d[31]).validatePathConfig}}),Object.keys(r(d[32])).forEach((function(n){"default"!==n&&"__esModule"!==n&&(Object.prototype.hasOwnProperty.call(t,n)||n in e&&e[n]===r(d[32])[n]||Object.defineProperty(e,n,{enumerable:!0,get:function(){return r(d[32])[n]}}))})),Object.keys(r(d[33])).forEach((function(n){"default"!==n&&"__esModule"!==n&&(Object.prototype.hasOwnProperty.call(t,n)||n in e&&e[n]===r(d[33])[n]||Object.defineProperty(e,n,{enumerable:!0,get:function(){return r(d[33])[n]}}))}))}),944,[945,974,968,975,976,977,978,979,980,973,972,981,955,985,964,988,989,992,1000,1004,1006,1005,1007,1027,949,1028,1031,1032,982,1033,1034,998,1008,956]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),t=["key","routeNames"];Object.defineProperty(_e,"__esModule",{value:!0}),_e.BaseNavigationContainer=void 0;var n,r=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=i(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var u=o?Object.getOwnPropertyDescriptor(e,a):null;u&&(u.get||u.set)?Object.defineProperty(r,a,u):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r})(_r(d[1])),o=(n=_r(d[2]))&&n.__esModule?n:{default:n},a=_r(d[3]);function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(i=function(e){return e?n:t})(e)}var u=function(n){if(void 0!==n){n.key,n.routeNames;var r=e(n,t);return Object.assign({},r,{stale:!0,routes:n.routes.map((function(e){return void 0===e.state?e:Object.assign({},e,{state:u(e.state)})}))})}};_e.BaseNavigationContainer=r.forwardRef((function(e,t){var n=e.initialState,i=e.onStateChange,s=e.onReady,c=e.onUnhandledAction,l=e.navigationInChildEnabled,f=void 0!==l&&l,v=e.theme,p=e.children,h=r.useContext(_r(d[4]).NavigationStateContext),y=(0,_r(d[5]).useNavigationIndependentTree)();if(!h.isDefault&&!y)throw new Error("Looks like you have nested a 'NavigationContainer' inside another. Normally you need only one container at the root of the app, so this was probably an error. If this was intentional, wrap the container in 'NavigationIndependentTree' explicitly. Note that this will make the child navigators disconnected from the parent and you won't be able to navigate between them.");var C=(0,_r(d[6]).useSyncState)((function(){return u(null==n?void 0:n)})),O=C.state,R=C.getState,_=C.setState,b=C.scheduleUpdate,N=C.flushUpdates,j=r.useRef(!0),k=r.useRef(),x=r.useCallback((function(){return k.current}),[]),I=r.useCallback((function(e){k.current=e}),[]),S=(0,_r(d[7]).useChildListeners)(),w=S.listeners,P=S.addListener,E=(0,_r(d[8]).useKeyedChildListeners)(),L=E.keyedListeners,M=E.addKeyedListener,A=(0,o.default)((function(e){null==w.focus[0]?console.error(_r(d[9]).NOT_INITIALIZED_ERROR):w.focus[0]((function(t){return t.dispatch(e)}))})),T=(0,o.default)((function(){if(null==w.focus[0])return!1;var e=w.focus[0]((function(e){return e.canGoBack()})),t=e.result;return!!e.handled&&t})),D=(0,o.default)((function(e){var t,n=null!=(t=null==e?void 0:e.key)?t:null==L.getState.root?void 0:L.getState.root().key;null==n?console.error(_r(d[9]).NOT_INITIALIZED_ERROR):w.focus[0]((function(t){return t.dispatch(Object.assign({},_r(d[10]).CommonActions.reset(e),{target:n}))}))})),U=(0,o.default)((function(){return null==L.getState.root?void 0:L.getState.root()})),B=(0,o.default)((function(){var e=U();if(null!=e)return(0,_r(d[11]).findFocusedRoute)(e)})),G=(0,o.default)((function(){return null!=w.focus[0]})),K=(0,_r(d[12]).useEventEmitter)(),W=(0,_r(d[13]).useOptionsGetters)({}),F=W.addOptionsGetter,Z=W.getCurrentOptions,H=r.useMemo((function(){return Object.assign({},Object.keys(_r(d[10]).CommonActions).reduce((function(e,t){return e[t]=function(){var e;return A((e=_r(d[10]).CommonActions)[t].apply(e,arguments))},e}),{}),K.create('root'),{dispatch:A,resetRoot:D,isFocused:function(){return!0},canGoBack:T,getParent:function(){},getState:R,getRootState:U,getCurrentRoute:B,getCurrentOptions:Z,isReady:G,setOptions:function(){throw new Error('Cannot call setOptions outside a screen')}})}),[T,A,K,Z,B,U,R,G,D]);r.useImperativeHandle(t,(function(){return H}),[H]);var q=(0,o.default)((function(e,t){K.emit({type:'__unsafe_action__',data:{action:e,noop:t,stack:Q.current}})})),z=r.useRef(),J=(0,o.default)((function(e){z.current!==e&&(z.current=e,K.emit({type:'options',data:{options:e}}))})),Q=r.useRef(),V=r.useMemo((function(){return{addListener:P,addKeyedListener:M,onDispatchAction:q,onOptionsChange:J,scheduleUpdate:b,flushUpdates:N,stackRef:Q}}),[P,M,q,J,b,N]),X=r.useRef(!0),Y=r.useCallback((function(){return X.current}),[]),$=r.useMemo((function(){return{state:O,getState:R,setState:_,getKey:x,setKey:I,getIsInitial:Y,addOptionsGetter:F}}),[O,R,_,x,I,Y,F]),ee=r.useRef(s),te=r.useRef(i);r.useEffect((function(){X.current=!1,te.current=i,ee.current=s}));var ne=r.useRef(!1);r.useEffect((function(){!ne.current&&G()&&(ne.current=!0,null==ee.current||ee.current(),K.emit({type:'ready'}))}),[O,G,K]),r.useEffect((function(){var e=U();K.emit({type:'state',data:{state:O}}),!j.current&&te.current&&te.current(e),j.current=!1}),[U,K,O]);var re=(0,o.default)((function(e){}));return(0,a.jsx)(_r(d[14]).NavigationIndependentTreeContext.Provider,{value:!1,children:(0,a.jsx)(_r(d[15]).NavigationContainerRefContext.Provider,{value:H,children:(0,a.jsx)(_r(d[16]).NavigationBuilderContext.Provider,{value:V,children:(0,a.jsx)(_r(d[4]).NavigationStateContext.Provider,{value:$,children:(0,a.jsx)(_r(d[17]).UnhandledActionContext.Provider,{value:null!=c?c:re,children:(0,a.jsx)(_r(d[18]).DeprecatedNavigationInChildContext.Provider,{value:f,children:(0,a.jsx)(_r(d[19]).EnsureSingleNavigator,{children:(0,a.jsx)(_r(d[20]).ThemeProvider,{value:v,children:p})})})})})})})})}))}),945,[134,178,946,224,948,949,951,953,954,955,956,964,965,966,950,968,967,969,970,971,972]); +__d((function(g,r,i,a,m,e,d){"use strict";var t=r(d[0]);m.exports=function(n){var u=t.useRef(n),c=t.useRef((function(){for(var t=[],n=0;n-1&&r.splice(t,1)}}}}}),951,[178,946,952]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isPlainObject=e.deepFreeze=void 0;var t=function(t){return'object'==typeof t&&null!==t&&Object.getPrototypeOf(t)===Object.prototype};e.isPlainObject=t;var n=function(t){return t};e.deepFreeze=n}),952,[]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useChildListeners=function(){var t=e.useRef({action:[],focus:[]}).current,r=e.useCallback((function(e,r){t[e].push(r);var n=!1;return function(){var u=t[e].indexOf(r);!n&&u>-1&&(n=!0,t[e].splice(u,1))}}),[t]);return{listeners:t,addListener:r}};var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var f=i?Object.getOwnPropertyDescriptor(e,o):null;f&&(f.get||f.set)?Object.defineProperty(u,o,f):u[o]=e[o]}return u.default=e,n&&n.set(e,u),u})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}}),953,[178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useKeyedChildListeners=function(){var t=e.useRef(Object.assign(Object.create(null),{getState:{},beforeRemove:{}})).current,r=e.useCallback((function(e,r,n){return t[e][r]=n,function(){t[e][r]=void 0}}),[t]);return{keyedListeners:t,addKeyedListener:r}};var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var a=o?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(u,i,a):u[i]=e[i]}return u.default=e,n&&n.set(e,u),u})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}}),954,[178]); +__d((function(g,r,i,a,m,e,d){"use strict";var t=r(d[0]),n=r(d[1]);Object.defineProperty(e,"__esModule",{value:!0}),e.NOT_INITIALIZED_ERROR=void 0,e.createNavigationContainerRef=function(){var u=[].concat(n(Object.keys(r(d[2]).CommonActions)),['addListener','removeListener','resetRoot','dispatch','isFocused','canGoBack','getRootState','getState','getParent','getCurrentRoute','getCurrentOptions']),c={},s=function(t,n){c[t]&&(c[t]=c[t].filter((function(t){return t!==n})))},f=null,v=Object.assign({get current(){return f},set current(n){f=n,null!=n&&Object.entries(c).forEach((function(o){var u=t(o,2),c=u[0];u[1].forEach((function(t){n.addListener(c,t)}))}))},isReady:function(){return null!=f&&f.isReady()}},u.reduce((function(t,n){return t[n]=function(){for(var t=arguments.length,u=new Array(t),v=0;v1&&void 0!==arguments[1]?arguments[1]:21;return function(){for(var o='',i=0|(arguments.length>0&&void 0!==arguments[0]?arguments[0]:t);i--;)o+=n[Math.random()*n.length|0];return o}},e.nanoid=function(){for(var n='',t=0|(arguments.length>0&&void 0!==arguments[0]?arguments[0]:21);t--;)n+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[64*Math.random()|0];return n}}),958,[]); +__d((function(g,r,i,a,m,e,d){"use strict";var t=r(d[0]),n=r(d[1]),o=["defaultStatus"];Object.defineProperty(e,"__esModule",{value:!0}),e.DrawerActions=void 0,e.DrawerRouter=function(s){var c=s.defaultStatus,f=void 0===c?'closed':c,l=n(s,o),y=(0,r(d[2]).TabRouter)(l),A=function(t){var n;return Boolean(null==(n=t.history)?void 0:n.some((function(t){return'drawer'===t.type})))},R=function(n){return A(n)?n:Object.assign({},n,{history:[].concat(t(n.history),[{type:'drawer',status:'open'===f?'closed':'open'}])})},E=function(t){return A(t)?Object.assign({},t,{history:t.history.filter((function(t){return'drawer'!==t.type}))}):t},p=function(t){return'open'===f?E(t):R(t)},w=function(t){return'open'===f?R(t):E(t)};return Object.assign({},y,{type:'drawer',getInitialState:function(t){var n=t.routeNames,o=t.routeParamList,u=t.routeGetIdList,s=y.getInitialState({routeNames:n,routeParamList:o,routeGetIdList:u});return Object.assign({},s,{default:f,stale:!1,type:'drawer',key:`drawer-${(0,r(d[3]).nanoid)()}`})},getRehydratedState:function(t,n){var o=n.routeNames,u=n.routeParamList,s=n.routeGetIdList;if(!1===t.stale)return t;var c=y.getRehydratedState(t,{routeNames:o,routeParamList:u,routeGetIdList:s});return A(t)&&(c=E(c),c=R(c)),Object.assign({},c,{default:f,type:'drawer',key:`drawer-${(0,r(d[3]).nanoid)()}`})},getStateForRouteFocus:function(t,n){var o=y.getStateForRouteFocus(t,n);return w(o)},getStateForAction:function(t,n,o){switch(n.type){case'OPEN_DRAWER':return p(t);case'CLOSE_DRAWER':return w(t);case'TOGGLE_DRAWER':return A(t)?E(t):R(t);case'JUMP_TO':case'NAVIGATE':case'NAVIGATE_DEPRECATED':var u=y.getStateForAction(t,n,o);return null!=u&&u.index!==t.index?w(u):u;case'GO_BACK':return A(t)?E(t):y.getStateForAction(t,n,o);default:return y.getStateForAction(t,n,o)}},actionCreators:u})};var u=e.DrawerActions=Object.assign({},r(d[2]).TabActions,{openDrawer:function(){return{type:'OPEN_DRAWER'}},closeDrawer:function(){return{type:'CLOSE_DRAWER'}},toggleDrawer:function(){return{type:'TOGGLE_DRAWER'}}})}),959,[6,134,960,958]); +__d((function(g,_r,_i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TabActions=void 0,e.TabRouter=function(t){var i=t.initialRouteName,u=t.backBehavior,s=void 0===u?'firstRoute':u;return Object.assign({},_r(d[0]).BaseRouter,{type:'tab',getInitialState:function(t){var n=t.routeNames,o=t.routeParamList,u=void 0!==i&&n.includes(i)?n.indexOf(i):0,y=n.map((function(t){return{name:t,key:`${t}-${(0,_r(d[1]).nanoid)()}`,params:o[t]}})),l=r(y,u,s,i);return{stale:!1,type:'tab',key:`tab-${(0,_r(d[1]).nanoid)()}`,index:u,routeNames:n,history:l,routes:y,preloadedRouteKeys:[]}},getRehydratedState:function(t,n){var r,u,y,l,p,c,f=n.routeNames,v=n.routeParamList,k=t;if(!1===k.stale)return k;var h=f.map((function(t){var n=k.routes.find((function(n){return n.name===t}));return Object.assign({},n,{name:t,key:n&&n.name===t&&n.key?n.key:`${t}-${(0,_r(d[1]).nanoid)()}`,params:void 0!==v[t]?Object.assign({},v[t],n?n.params:void 0):n?n.params:void 0})})),b=Math.min(Math.max(f.indexOf(null==(r=k.routes[null!=(u=null==k?void 0:k.index)?u:0])?void 0:r.name),0),h.length-1),O=h.map((function(t){return t.key})),R=null!=(y=null==(l=k.history)?void 0:l.filter((function(t){return O.includes(t.key)})))?y:[];return o({stale:!1,type:'tab',key:`tab-${(0,_r(d[1]).nanoid)()}`,index:b,routeNames:f,history:R,routes:h,preloadedRouteKeys:null!=(p=null==(c=k.preloadedRouteKeys)?void 0:c.filter((function(t){return O.includes(t)})))?p:[]},b,s,i)},getStateForRouteNamesChange:function(t,n){var o=n.routeNames,u=n.routeParamList,y=n.routeKeyChanges,l=o.map((function(n){return t.routes.find((function(t){return t.name===n&&!y.includes(t.name)}))||{name:n,key:`${n}-${(0,_r(d[1]).nanoid)()}`,params:u[n]}})),p=Math.max(0,o.indexOf(t.routes[t.index].name)),c=t.history.filter((function(t){return'route'!==t.type||l.find((function(n){return n.key===t.key}))}));return c.length||(c=r(l,p,s,i)),Object.assign({},t,{history:c,routeNames:o,routes:l,index:p})},getStateForRouteFocus:function(t,n){var r=t.routes.findIndex((function(t){return t.key===n}));return-1===r||r===t.index?t:o(t,r,s,i)},getStateForAction:function(t,n,r){var u=r.routeParamList,y=r.routeGetIdList;switch(n.type){case'JUMP_TO':case'NAVIGATE':case'NAVIGATE_DEPRECATED':var l=t.routes.findIndex((function(t){return t.name===n.payload.name}));if(-1===l)return null;var p=o(Object.assign({},t,{routes:t.routes.map((function(t){if(t.name!==n.payload.name)return t;var r,o=y[t.name],i=null==o?void 0:o({params:t.params}),s=null==o?void 0:o({params:n.payload.params}),l=i===s?t.key:`${t.name}-${(0,_r(d[1]).nanoid)()}`;r='NAVIGATE'!==n.type&&'NAVIGATE_DEPRECATED'!==n.type||!n.payload.merge||i!==s?void 0!==u[t.name]?Object.assign({},u[t.name],n.payload.params):n.payload.params:void 0!==n.payload.params||void 0!==u[t.name]?Object.assign({},u[t.name],t.params,n.payload.params):t.params;var p='NAVIGATE'===n.type&&null!=n.payload.path?n.payload.path:t.path;return r!==t.params||p!==t.path?Object.assign({},t,{key:l,path:p,params:r}):t}))}),l,s,i);return Object.assign({},p,{preloadedRouteKeys:p.preloadedRouteKeys.filter((function(n){return n!==t.routes[p.index].key}))});case'GO_BACK':var c;if(1===t.history.length)return null;var f=null==(c=t.history[t.history.length-2])?void 0:c.key,v=t.routes.findIndex((function(t){return t.key===f}));return-1===v?null:Object.assign({},t,{preloadedRouteKeys:t.preloadedRouteKeys.filter((function(n){return n!==t.routes[v].key})),history:t.history.slice(0,-1),index:v});case'PRELOAD':var k=t.routes.findIndex((function(t){return t.name===n.payload.name}));if(-1===k)return null;var h=t.routes[k],b=y[h.name],O=(null==b?void 0:b({params:h.params}))===(null==b?void 0:b({params:n.payload.params}))?h.key:`${h.name}-${(0,_r(d[1]).nanoid)()}`,R=void 0!==n.payload.params||void 0!==u[h.name]?Object.assign({},u[h.name],n.payload.params):void 0,x=R!==h.params?Object.assign({},h,{key:O,params:R}):h;return Object.assign({},t,{preloadedRouteKeys:t.preloadedRouteKeys.filter((function(t){return t!==h.key})).concat(x.key),routes:t.routes.map((function(t,n){return n===k?x:t})),history:O===h.key?t.history:t.history.filter((function(t){return t.key!==h.key}))});default:return _r(d[0]).BaseRouter.getStateForAction(t,n)}},actionCreators:n})};var t='route',n=e.TabActions={jumpTo:function(t,n){return{type:'JUMP_TO',payload:{name:t,params:n}}}},r=function(n,r,o,i){var u,s=[{type:t,key:n[r].key}];switch(o){case'order':for(var y=r;y>0;y--)s.unshift({type:t,key:n[y-1].key});break;case'firstRoute':0!==r&&s.unshift({type:t,key:n[0].key});break;case'initialRoute':r!==(u=-1===(u=n.findIndex((function(t){return t.name===i})))?0:u)&&s.unshift({type:t,key:n[u].key})}return s},o=function(n,o,i,u){var s;if('history'===i){var y=n.routes[o].key;s=n.history.filter((function(t){return'route'===t.type&&t.key!==y})).concat({type:t,key:y})}else s=r(n.routes,o,i,u);return Object.assign({},n,{index:o,history:s})}}),960,[957,958]); +__d((function(g,_r,_i2,a,m,e,d){"use strict";var n=_r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.StackActions=void 0,e.StackRouter=function(r){var o=Object.assign({},_r(d[1]).BaseRouter,{type:'stack',getInitialState:function(n){var t=n.routeNames,o=n.routeParamList,s=void 0!==r.initialRouteName&&t.includes(r.initialRouteName)?r.initialRouteName:t[0];return{stale:!1,type:'stack',key:`stack-${(0,_r(d[2]).nanoid)()}`,index:0,routeNames:t,preloadedRoutes:[],routes:[{key:`${s}-${(0,_r(d[2]).nanoid)()}`,name:s,params:o[s]}]}},getRehydratedState:function(n,t){var o,s,i=t.routeNames,u=t.routeParamList,p=n;if(!1===p.stale)return p;var l=p.routes.filter((function(n){return i.includes(n.name)})).map((function(n){return Object.assign({},n,{key:n.key||`${n.name}-${(0,_r(d[2]).nanoid)()}`,params:void 0!==u[n.name]?Object.assign({},u[n.name],n.params):n.params})})),c=null!=(o=null==(s=p.preloadedRoutes)?void 0:s.filter((function(n){return i.includes(n.name)})).map((function(n){return Object.assign({},n,{key:n.key||`${n.name}-${(0,_r(d[2]).nanoid)()}`,params:void 0!==u[n.name]?Object.assign({},u[n.name],n.params):n.params})})))?o:[];if(0===l.length){var y=void 0!==r.initialRouteName?r.initialRouteName:i[0];l.push({key:`${y}-${(0,_r(d[2]).nanoid)()}`,name:y,params:u[y]})}return{stale:!1,type:'stack',key:`stack-${(0,_r(d[2]).nanoid)()}`,index:l.length-1,routeNames:i,routes:l,preloadedRoutes:c}},getStateForRouteNamesChange:function(n,t){var o=t.routeNames,s=t.routeParamList,i=t.routeKeyChanges,u=n.routes.filter((function(n){return o.includes(n.name)&&!i.includes(n.name)}));if(0===u.length){var p=void 0!==r.initialRouteName&&o.includes(r.initialRouteName)?r.initialRouteName:o[0];u.push({key:`${p}-${(0,_r(d[2]).nanoid)()}`,name:p,params:s[p]})}return Object.assign({},n,{routeNames:o,routes:u,index:Math.min(n.index,u.length-1)})},getStateForRouteFocus:function(n,t){var r=n.routes.findIndex((function(n){return n.key===t}));return-1===r||r===n.index?n:Object.assign({},n,{index:r,routes:n.routes.slice(0,r+1)})},getStateForAction:function(t,r,s){var i=s.routeParamList;switch(r.type){case'REPLACE':var u=r.target===t.key&&r.source?t.routes.findIndex((function(n){return n.key===r.source})):t.index;if(-1===u)return null;var p=r.payload,l=p.name,c=p.params;return t.routeNames.includes(l)?Object.assign({},t,{routes:t.routes.map((function(n,t){return t===u?{key:`${l}-${(0,_r(d[2]).nanoid)()}`,name:l,params:void 0!==i[l]?Object.assign({},i[l],c):c}:n}))}):null;case'PUSH':case'NAVIGATE':if(!t.routeNames.includes(r.payload.name))return null;var y,f,v,O=s.routeGetIdList[r.payload.name],b=null==O?void 0:O({params:r.payload.params});if(void 0!==b)y=t.routes.findLast((function(n){return n.name===r.payload.name&&b===(null==O?void 0:O({params:n.params}))}));else if('NAVIGATE'===r.type){var k=t.routes[t.index];r.payload.name===k.name?y=k:r.payload.pop&&(y=t.routes.findLast((function(n){return n.name===r.payload.name})))}if(y||(y=t.preloadedRoutes.find((function(n){return n.name===r.payload.name&&b===(null==O?void 0:O({params:n.params}))}))),f='NAVIGATE'===r.type&&r.payload.merge&&y?void 0!==r.payload.params||void 0!==i[r.payload.name]?Object.assign({},i[r.payload.name],y.params,r.payload.params):y.params:void 0!==i[r.payload.name]?Object.assign({},i[r.payload.name],r.payload.params):r.payload.params,y)if('NAVIGATE'===r.type&&r.payload.pop)for(var h of(v=[],t.routes)){if(h.key===y.key){v.push(Object.assign({},y,{path:void 0!==r.payload.path?r.payload.path:y.path,params:f}));break}v.push(h)}else v=t.routes.filter((function(n){return n.key!==y.key})),v.push(Object.assign({},y,{path:'NAVIGATE'===r.type&&void 0!==r.payload.path?r.payload.path:y.path,params:f}));else v=[].concat(n(t.routes),[{key:`${r.payload.name}-${(0,_r(d[2]).nanoid)()}`,name:r.payload.name,path:'NAVIGATE'===r.type?r.payload.path:void 0,params:f}]);return Object.assign({},t,{index:v.length-1,preloadedRoutes:t.preloadedRoutes.filter((function(n){return v[v.length-1].key!==n.key})),routes:v});case'NAVIGATE_DEPRECATED':if(t.preloadedRoutes.find((function(n){return n.name===r.payload.name&&R===(null==P?void 0:P({params:n.params}))})))return null;if(!t.routeNames.includes(r.payload.name))return null;var j=-1,P=s.routeGetIdList[r.payload.name],R=null==P?void 0:P({params:r.payload.params});if(R)j=t.routes.findIndex((function(n){return n.name===r.payload.name&&R===(null==P?void 0:P({params:n.params}))}));else if(t.routes[t.index].name===r.payload.name)j=t.index;else for(var x=t.routes.length-1;x>=0;x--)if(t.routes[x].name===r.payload.name){j=x;break}if(-1===j){var N=[].concat(n(t.routes),[{key:`${r.payload.name}-${(0,_r(d[2]).nanoid)()}`,name:r.payload.name,params:void 0!==i[r.payload.name]?Object.assign({},i[r.payload.name],r.payload.params):r.payload.params}]);return Object.assign({},t,{routes:N,index:N.length-1})}var A,$=t.routes[j];return A=r.payload.merge?void 0!==r.payload.params||void 0!==i[$.name]?Object.assign({},i[$.name],$.params,r.payload.params):$.params:void 0!==i[$.name]?Object.assign({},i[$.name],r.payload.params):r.payload.params,Object.assign({},t,{index:j,routes:[].concat(n(t.routes.slice(0,j)),[A!==$.params?Object.assign({},$,{params:A}):t.routes[j]])});case'POP':var T=r.target===t.key&&r.source?t.routes.findIndex((function(n){return n.key===r.source})):t.index;if(T>0){var I=Math.max(T-r.payload.count+1,1),E=t.routes.slice(0,I).concat(t.routes.slice(T+1));return Object.assign({},t,{index:E.length-1,routes:E})}return null;case'POP_TO_TOP':return o.getStateForAction(t,{type:'POP',payload:{count:t.routes.length-1}},s);case'POP_TO':if(!t.routeNames.includes(r.payload.name))return null;var L=-1,S=s.routeGetIdList[r.payload.name],G=null==S?void 0:S({params:r.payload.params});if(G)L=t.routes.findIndex((function(n){return n.name===r.payload.name&&G===(null==S?void 0:S({params:n.params}))}));else if(t.routes[t.index].name===r.payload.name)L=t.index;else for(var _=t.routes.length-1;_>=0;_--)if(t.routes[_].name===r.payload.name){L=_;break}if(-1===L){var C=[].concat(n(t.routes.slice(0,-1)),[{key:`${r.payload.name}-${(0,_r(d[2]).nanoid)()}`,name:r.payload.name,params:void 0!==i[r.payload.name]?Object.assign({},i[r.payload.name],r.payload.params):r.payload.params}]);return Object.assign({},t,{routes:C,index:C.length-1})}var F,V=t.routes[L];return F=r.payload.merge?void 0!==r.payload.params||void 0!==i[V.name]?Object.assign({},i[V.name],V.params,r.payload.params):V.params:void 0!==i[V.name]?Object.assign({},i[V.name],r.payload.params):r.payload.params,Object.assign({},t,{index:L,routes:[].concat(n(t.routes.slice(0,L)),[F!==V.params?Object.assign({},V,{params:F}):t.routes[L]])});case'GO_BACK':return t.index>0?o.getStateForAction(t,{type:'POP',payload:{count:1},target:r.target,source:r.source},s):null;case'PRELOAD':var B,D=s.routeGetIdList[r.payload.name],M=null==D?void 0:D({params:r.payload.params});return void 0!==M&&(B=t.routes.find((function(n){return n.name===r.payload.name&&M===(null==D?void 0:D({params:n.params}))}))),B?Object.assign({},t,{routes:t.routes.map((function(n){var t;return n.key!==(null==(t=B)?void 0:t.key)?n:Object.assign({},n,{params:void 0!==i[r.payload.name]?Object.assign({},i[r.payload.name],r.payload.params):r.payload.params})}))}):Object.assign({},t,{preloadedRoutes:t.preloadedRoutes.filter((function(n){return n.name!==r.payload.name||M!==(null==D?void 0:D({params:n.params}))})).concat({key:`${r.payload.name}-${(0,_r(d[2]).nanoid)()}`,name:r.payload.name,params:void 0!==i[r.payload.name]?Object.assign({},i[r.payload.name],r.payload.params):r.payload.params})});default:return _r(d[1]).BaseRouter.getStateForAction(t,r)}},actionCreators:t});return o};var t=e.StackActions={replace:function(n,t){return{type:'REPLACE',payload:{name:n,params:t}}},push:function(n,t){return{type:'PUSH',payload:{name:n,params:t}}},pop:function(){return{type:'POP',payload:{count:arguments.length>0&&void 0!==arguments[0]?arguments[0]:1}}},popToTop:function(){return{type:'POP_TO_TOP'}},popTo:function(n,t,r){return'boolean'==typeof r&&console.warn("Passing a boolean as the third argument to 'popTo' is deprecated. Pass '{ merge: true }' instead."),{type:'POP_TO',payload:{name:n,params:t,merge:'boolean'==typeof r?r:null==r?void 0:r.merge}}}}}),961,[6,957,958]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.goBack=function(){return{type:'GO_BACK'}},e.navigate=function(){for(var t=arguments.length,n=new Array(t),o=0;o-1&&n.splice(c,1)}};return{addListener:function(r,n){u.current[r]=u.current[r]||{},u.current[r][e]=u.current[r][e]||[],u.current[r][e].push(n);var c=!1;return function(){c||(c=!0,t(r,n))}},removeListener:t}}),[]),a=t.useCallback((function(t){var r,c,a=t.type,f=t.data,i=t.target,o=t.canPreventDefault,l=u.current[a]||{},v=void 0!==i?null==(r=l[i])?void 0:r.slice():(c=[]).concat.apply(c,e(Object.keys(l).map((function(e){return l[e]})))).filter((function(e,t,r){return r.lastIndexOf(e)===t})),p={get type(){return a}};if(void 0!==i&&Object.defineProperty(p,'target',{enumerable:!0,get:function(){return i}}),void 0!==f&&Object.defineProperty(p,'data',{enumerable:!0,get:function(){return f}}),o){var s=!1;Object.defineProperties(p,{defaultPrevented:{enumerable:!0,get:function(){return s}},preventDefault:{enumerable:!0,value:function(){s=!0}}})}return null==n.current||n.current(p),null==v||v.forEach((function(e){return e(p)})),p}),[]);return t.useMemo((function(){return{create:c,emit:a}}),[c,a])};var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var u={__proto__:null},c=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=c?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(u,a,f):u[a]=e[a]}return u.default=e,n&&n.set(e,u),u})(_r(d[1]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}}),965,[6,178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useOptionsGetters=function(t){var n=t.key,r=t.options,u=t.navigation,o=e.useRef(r),l=e.useRef({}),i=e.useContext(_r(d[1]).NavigationBuilderContext).onOptionsChange,a=e.useContext(_r(d[2]).NavigationStateContext).addOptionsGetter,c=e.useCallback((function(){var e,t,n=null==(e=null==u?void 0:u.isFocused())||e,r=Object.keys(l.current).length;n&&!r&&i(null!=(t=o.current)?t:{})}),[u,i]);e.useEffect((function(){return o.current=r,c(),null==u?void 0:u.addListener('focus',c)}),[u,r,c]);var f=e.useCallback((function(){for(var e in l.current)if(e in l.current){var t,n,r=null==(t=(n=l.current)[e])?void 0:t.call(n);if(null!==r)return r}return null}),[]),s=e.useCallback((function(){var e;if(!(null==(e=null==u?void 0:u.isFocused())||e))return null;var t=f();return null!==t?t:o.current}),[u,f]);return e.useEffect((function(){return null==a?void 0:a(n,s)}),[s,a,n]),{addOptionsGetter:e.useCallback((function(e,t){return l.current[e]=t,c(),function(){delete l.current[e],c()}}),[c]),getCurrentOptions:s}};var e=(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=t(n);if(r&&r.has(e))return r.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var i=o?Object.getOwnPropertyDescriptor(e,l):null;i&&(i.get||i.set)?Object.defineProperty(u,l,i):u[l]=e[l]}return u.default=e,r&&r.set(e,u),u})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(t=function(e){return e?r:n})(e)}}),966,[178,967,948]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.NavigationBuilderContext=void 0;var t=(function(t,n){if(!n&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var r=e(n);if(r&&r.has(t))return r.get(t);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if("default"!==i&&{}.hasOwnProperty.call(t,i)){var a=u?Object.getOwnPropertyDescriptor(t,i):null;a&&(a.get||a.set)?Object.defineProperty(o,i,a):o[i]=t[i]}return o.default=t,r&&r.set(t,o),o})(_r(d[0]));function e(t){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(e=function(t){return t?r:n})(t)}_e.NavigationBuilderContext=t.createContext({onDispatchAction:function(){},onOptionsChange:function(){},scheduleUpdate:function(){throw new Error("Couldn't find a context for scheduling updates.")},flushUpdates:function(){throw new Error("Couldn't find a context for flushing updates.")}})}),967,[178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.NavigationContainerRefContext=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var u=a?Object.getOwnPropertyDescriptor(e,i):null;u&&(u.get||u.set)?Object.defineProperty(o,i,u):o[i]=e[i]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.NavigationContainerRefContext=e.createContext(void 0)}),968,[178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.UnhandledActionContext=void 0;var e=(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=t(n);if(r&&r.has(e))return r.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var i=u?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(o,a,i):o[a]=e[a]}return o.default=e,r&&r.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(t=function(e){return e?r:n})(e)}_e.UnhandledActionContext=e.createContext(void 0)}),969,[178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.DeprecatedNavigationInChildContext=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var u=a?Object.getOwnPropertyDescriptor(e,i):null;u&&(u.get||u.set)?Object.defineProperty(o,i,u):o[i]=e[i]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.DeprecatedNavigationInChildContext=e.createContext(!1)}),970,[178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.EnsureSingleNavigator=function(t){var o=t.children,a=e.useRef(),u=e.useMemo((function(){return{register:function(e){var r=a.current;if(void 0!==r&&e!==r)throw new Error(n);a.current=e},unregister:function(e){e===a.current&&(a.current=void 0)}}}),[]);return(0,r.jsx)(i.Provider,{value:u,children:o})},_e.SingleNavigatorContext=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var i={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var u=o?Object.getOwnPropertyDescriptor(e,a):null;u&&(u.get||u.set)?Object.defineProperty(i,a,u):i[a]=e[a]}return i.default=e,n&&n.set(e,i),i})(_r(d[0])),r=_r(d[1]);function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}var n="Another navigator is already registered for this container. You likely have multiple navigators under a single \"NavigationContainer\" or \"Screen\". Make sure each navigator is under a separate \"Screen\" container. See https://reactnavigation.org/docs/nesting-navigators for a guide on nesting.",i=_e.SingleNavigatorContext=e.createContext(void 0)}),971,[178,224]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.ThemeProvider=function(r){var t=r.value,n=r.children;return(0,e.jsx)(_r(d[2]).ThemeContext.Provider,{value:t,children:n})};!(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var a=u?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(o,i,a):o[i]=e[i]}o.default=e,n&&n.set(e,o)})(_r(d[0]));var e=_r(d[1]);function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}}),972,[178,224,973]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.ThemeContext=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=u?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(o,a,f):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}(_e.ThemeContext=e.createContext(void 0)).displayName='ThemeContext'}),973,[178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.CurrentRenderContext=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.CurrentRenderContext=e.createContext(void 0)}),974,[178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.NavigationContext=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var u=a?Object.getOwnPropertyDescriptor(e,i):null;u&&(u.get||u.set)?Object.defineProperty(o,i,u):o[i]=e[i]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.NavigationContext=e.createContext(void 0)}),975,[178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.NavigationHelpersContext=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var u=a?Object.getOwnPropertyDescriptor(e,i):null;u&&(u.get||u.set)?Object.defineProperty(o,i,u):o[i]=e[i]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.NavigationHelpersContext=e.createContext(void 0)}),976,[178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.NavigationIndependentTree=function(t){var r=t.children;return(0,e.jsx)(_r(d[2]).NavigationRouteContext.Provider,{value:void 0,children:(0,e.jsx)(_r(d[3]).NavigationContext.Provider,{value:void 0,children:(0,e.jsx)(_r(d[4]).NavigationIndependentTreeContext.Provider,{value:!0,children:r})})})};!(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var u=i?Object.getOwnPropertyDescriptor(e,a):null;u&&(u.get||u.set)?Object.defineProperty(o,a,u):o[a]=e[a]}o.default=e,n&&n.set(e,o)})(_r(d[0]));var e=_r(d[1]);function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}}),977,[178,224,978,975,950]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.NavigationRouteContext=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var i=u?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(o,a,i):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.NavigationRouteContext=e.createContext(void 0)}),978,[178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.PreventRemoveContext=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.PreventRemoveContext=e.createContext(void 0)}),979,[178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),t=_r(d[1]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.PreventRemoveProvider=function(n){var i=n.children,a=r.useState((function(){return(0,_r(d[5]).nanoid)()})),l=e(a,1)[0],f=r.useState((function(){return new Map})),c=e(f,2),s=c[0],p=c[1],y=r.useContext(_r(d[6]).NavigationHelpersContext),P=r.useContext(_r(d[7]).NavigationRouteContext),R=r.useContext(_r(d[8]).PreventRemoveContext),_=null==R?void 0:R.setPreventRemove,w=(0,o.default)((function(e,t,n){if(n&&(null==y||null!=y&&y.getState().routes.every((function(e){return e.key!==t}))))throw new Error(`Couldn't find a route with the key ${t}. Is your component inside NavigationContent?`);p((function(r){var o,u;if(t===(null==(o=r.get(e))?void 0:o.routeKey)&&n===(null==(u=r.get(e))?void 0:u.preventRemove))return r;var i=new Map(r);return n?i.set(e,{routeKey:t,preventRemove:n}):i.delete(e),i}))})),k=t(s.values()).some((function(e){return e.preventRemove}));r.useEffect((function(){if(void 0!==(null==P?void 0:P.key)&&void 0!==_)return _(l,P.key,k),function(){_(l,P.key,!1)}}),[l,k,null==P?void 0:P.key,_]);var C=r.useMemo((function(){return{setPreventRemove:w,preventedRoutes:v(s)}}),[w,s]);return(0,u.jsx)(_r(d[8]).PreventRemoveContext.Provider,{value:C,children:i})};var n,r=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=i(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var v=o?Object.getOwnPropertyDescriptor(e,u):null;v&&(v.get||v.set)?Object.defineProperty(r,u,v):r[u]=e[u]}return r.default=e,n&&n.set(e,r),r})(_r(d[2])),o=(n=_r(d[3]))&&n.__esModule?n:{default:n},u=_r(d[4]);function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(i=function(e){return e?n:t})(e)}var v=function(e){return t(e.values()).reduce((function(e,t){var n,r=t.routeKey,o=t.preventRemove;return e[r]={preventRemove:(null==(n=e[r])?void 0:n.preventRemove)||o},e}),{})}}),980,[38,6,178,946,224,958,976,978,979]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),n=_r(d[1]),r=_r(d[2]),t=["screen","if"],i=["screens","groups"],o=["if"];Object.defineProperty(_e,"__esModule",{value:!0}),_e.createComponentForStaticNavigation=p,_e.createPathConfigForStaticNavigation=function(e,n,t){var i,o=function(e,n,a){var c=function(e,n){return Object.fromEntries(Object.entries(e).sort((function(e,t){var i=r(e,1)[0],o=r(t,1)[0];return i===n?-1:o===n?1:0})).map((function(e){var n,c=r(e,2),u=c[0],s=c[1],l={};'linking'in s&&('string'==typeof s.linking?l.path=s.linking:Object.assign(l,s.linking),'string'==typeof l.path&&(l.path=l.path.replace(/^\//,'').replace(/\/$/,'')));var f=a||null!=l.path&&''!==l.path;return'config'in s?n=o(s,void 0,f):'screen'in s&&'config'in s.screen&&(s.screen.config.screens||s.screen.config.groups)&&(n=o(s.screen,void 0,f)),n&&(l.screens=n),!t||l.screens||'linking'in s&&null==s.linking||(null!=l.path?a||''!==l.path||(i=void 0):(a||null!=i||(i=l),l.path=u.replace(/([A-Z]+)/g,'-$1').replace(/^-/,'').toLowerCase())),[u,l]})).filter((function(e){var n=r(e,2)[1];return Object.keys(n).length>0})))},u={};for(var s in e.config){var l;if('screens'===s&&e.config.screens)Object.assign(u,c(e.config.screens,null!=(l=null==n?void 0:n.initialRouteName)?l:e.config.initialRouteName));'groups'===s&&e.config.groups&&Object.entries(e.config.groups).forEach((function(t){var i,o=r(t,2)[1];Object.assign(u,c(o.screens,null!=(i=null==n?void 0:n.initialRouteName)?i:e.config.initialRouteName))}))}if(0!==Object.keys(u).length)return u},a=o(e,n,!1);t&&i&&(i.path='');return a};var a=(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=s(n);if(r&&r.has(e))return r.get(e);var t={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var a=i?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(t,o,a):t[o]=e[o]}return t.default=e,r&&r.set(e,t),t})(_r(d[3])),c=a,u=_r(d[4]);function s(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(s=function(e){return e?r:n})(e)}var l=c.memo((function(e){var n=e.component,r=(0,_r(d[5]).useRoute)();return c.createElement(n,{route:r})}));l.displayName='Memo(Screen)';var f=function(e,i){return Object.entries(i).map((function(i){var o,a,s=r(i,2),f=s[0],v=s[1],h={},y=!1;if('screen'in v){var j=v.screen,O=v.if,b=n(v,t);a=O,h=b,(0,_r(d[6]).isValidElementType)(j)?o=j:'config'in j&&(y=!0,o=p(j,`${f}Navigator`))}else(0,_r(d[6]).isValidElementType)(v)?o=v:'config'in v&&(y=!0,o=p(v,`${f}Navigator`));if(null==o)throw new Error(`Couldn't find a 'screen' property for the screen '${f}'. This can happen if you passed 'undefined'. You likely forgot to export your component from the file it's defined in, or mixed up default import and named import when importing.`);var k=y?c.createElement(o,{}):(0,u.jsx)(l,{component:o});return function(){return null==a||a()?(0,u.jsx)(e,Object.assign({name:f},h,{children:function(){return k}}),f):null}}))};function p(t,c){var s=t.Navigator,l=t.Group,p=t.Screen,v=t.config,h=v.screens,y=v.groups,j=n(v,i);if(null==h&&null==y)throw new Error("Couldn't find a 'screens' or 'groups' property. Make sure to define your screens under a 'screens' property in the configuration.");var O=[];for(var b in v)'screens'===b&&h&&O.push.apply(O,e(f(p,h))),'groups'===b&&y&&O.push.apply(O,e(Object.entries(y).map((function(e){var t=r(e,2),i=t[0],c=t[1],u=c.if,s=n(c,o),v=f(p,s.screens);return function(){var e=v.map((function(e){return e()}));return null==u||u()?(0,a.createElement)(l,Object.assign({navigationKey:i},s,{key:i}),e):null}}))));var k=function(){var e=O.map((function(e){return e()}));return(0,u.jsx)(s,Object.assign({},j,{children:e}))};return k.displayName=c,k}}),981,[6,134,38,178,224,982,983]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useRoute=function(){var t=e.useContext(_r(d[1]).NavigationRouteContext);if(void 0===t)throw new Error("Couldn't find a route object. Is your component inside a screen in a navigator?");return t};var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var a=u?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(o,i,a):o[i]=e[i]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}}),982,[178,978]); +__d((function(g,r,i,a,m,e,d){'use strict';m.exports=r(d[0])}),983,[984]); +__d((function(_g,_r,i,_a,_m,_e,_d){'use strict';var e,t=Symbol.for("react.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),f=Symbol.for("react.provider"),s=Symbol.for("react.context"),u=Symbol.for("react.server_context"),a=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),y=Symbol.for("react.suspense_list"),m=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),S=Symbol.for("react.offscreen");function d(e){if("object"==typeof e&&null!==e){var S=e.$$typeof;switch(S){case t:switch(e=e.type){case o:case c:case n:case l:case y:return e;default:switch(e=e&&e.$$typeof){case u:case s:case a:case p:case m:case f:return e;default:return S}}case r:return S}}}e=Symbol.for("react.module.reference"),_e.ContextConsumer=s,_e.ContextProvider=f,_e.Element=t,_e.ForwardRef=a,_e.Fragment=o,_e.Lazy=p,_e.Memo=m,_e.Portal=r,_e.Profiler=c,_e.StrictMode=n,_e.Suspense=l,_e.SuspenseList=y,_e.isAsyncMode=function(){return!1},_e.isConcurrentMode=function(){return!1},_e.isContextConsumer=function(e){return d(e)===s},_e.isContextProvider=function(e){return d(e)===f},_e.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===t},_e.isForwardRef=function(e){return d(e)===a},_e.isFragment=function(e){return d(e)===o},_e.isLazy=function(e){return d(e)===p},_e.isMemo=function(e){return d(e)===m},_e.isPortal=function(e){return d(e)===r},_e.isProfiler=function(e){return d(e)===c},_e.isStrictMode=function(e){return d(e)===n},_e.isSuspense=function(e){return d(e)===l},_e.isSuspenseList=function(e){return d(e)===y},_e.isValidElementType=function(t){return"string"==typeof t||"function"==typeof t||t===o||t===c||t===n||t===l||t===y||t===S||"object"==typeof t&&null!==t&&(t.$$typeof===p||t.$$typeof===m||t.$$typeof===f||t.$$typeof===s||t.$$typeof===a||t.$$typeof===e||void 0!==t.getModuleId)},_e.typeOf=d}),984,[]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.createNavigatorFactory=function(n){return function(o){return null!=o?{Navigator:n,Screen:r(d[0]).Screen,Group:r(d[1]).Group,config:o}:{Navigator:n,Screen:r(d[0]).Screen,Group:r(d[1]).Group}}}}),985,[986,987]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Screen=function(n){return null}}),986,[]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Group=function(u){return null}}),987,[]); +__d((function(g,r,i,a,m,e,d){"use strict";var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.getActionFromState=function(n,s){var l,o,u,c=s?t(s):{},p=null!=n.index?n.routes.slice(0,n.index+1):n.routes;if(0===p.length)return;if(!(1===p.length&&void 0===p[0].key||2===p.length&&void 0===p[0].key&&p[0].name===(null==c?void 0:c.initialRouteName)&&void 0===p[1].key))return{type:'RESET',payload:n};var v=n.routes[null!=(l=n.index)?l:n.routes.length-1],f=null==v?void 0:v.state,h=null==c||null==(o=c.screens)?void 0:o[null==v?void 0:v.name],y=Object.assign({},v.params),b=v?{name:v.name,path:v.path,params:y}:void 0;b&&null!=(u=h)&&u.screens&&Object.keys(h.screens).length&&(b.pop=!0);for(;f;){var k,j,O;if(0===f.routes.length)return;var x=null!=f.index?f.routes.slice(0,f.index+1):f.routes,N=x[x.length-1];if(Object.assign(y,{initial:void 0,screen:void 0,params:void 0,state:void 0}),1===x.length&&void 0===x[0].key)y.initial=!0,y.screen=N.name;else{if(2!==x.length||void 0!==x[0].key||x[0].name!==(null==(k=h)?void 0:k.initialRouteName)||void 0!==x[1].key){y.state=f;break}y.initial=!1,y.screen=N.name}N.state?(y.params=Object.assign({},N.params),y.pop=!0,y=y.params):(y.path=N.path,y.params=N.params),f=N.state,null!=(O=h=null==(j=h)||null==(j=j.screens)?void 0:j[N.name])&&O.screens&&Object.keys(h.screens).length&&(y.pop=!0)}(null!=b&&b.params.screen||null!=b&&b.params.state)&&(b.pop=!0);if(!b)return;return{type:'NAVIGATE',payload:b}};var t=function(n){return'object'==typeof n&&null!=n?{initialRouteName:n.initialRouteName,screens:null!=n.screens?s(n.screens):void 0}:{}},s=function(s){return Object.entries(s).reduce((function(s,l){var o=n(l,2),u=o[0],c=o[1];return s[u]=t(c),s}),{})}}),988,[38]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getFocusedRouteNameFromRoute=function(t){var n,o,u=null!=(n=t[r(d[0]).CHILD_STATE])?n:t.state,s=t.params;return u?u.routes[null!=(o=u.index)?o:'string'==typeof u.type&&'stack'!==u.type?0:u.routes.length-1].name:'string'==typeof(null==s?void 0:s.screen)?s.screen:void 0}}),989,[990]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.CHILD_STATE=void 0,_e.useRouteCache=function(t){e.useMemo((function(){return{current:new Map}}),[]);return t};var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=o?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(u,f,a):u[f]=e[f]}return u.default=e,n&&n.set(e,u),u})(_r(d[1]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.CHILD_STATE=Symbol('CHILD_STATE')}),990,[134,178,991]); +__d((function(g,r,i,_a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isRecordEqual=function(t,n){if(t===n)return!0;var u=Object.keys(t),c=Object.keys(n);if(u.length!==c.length)return!1;return u.every((function(u){return t[u]===n[u]}))}}),991,[]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),t=_r(d[1]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.getPathFromState=function(e,r){if(null==e)throw Error(`Got '${String(e)}' for the navigation state. You must pass a valid state object.`);r&&(0,_r(d[3]).validatePathConfig)(r);var i=o(r),s='/',u=e,f={},c=function(){for(var r,o,c,l='number'==typeof u.index?u.index:0,p=u.routes[l],v=i,h=a(e),y=[],b=!0,j=function(){if(r=v[p.name].parts,y.push(p.name),p.params){var e,n,a=v[p.name],i=Object.fromEntries(Object.entries(p.params).map((function(e){var n,r,i=t(e,2),o=i[0],s=i[1];if(void 0===s){if(!a)return null;var u;if(null==(u=a.parts)||null==(u=u.find((function(e){return e.param===o})))?void 0:u.optional)return null}var f=null!=(n=null==a||null==(r=a.stringify)?void 0:r[o])?n:String;return[o,f(s)]})).filter((function(e){return null!=e})));if(null!=(e=r)&&e.length&&Object.assign(f,i),h===p)o=Object.assign({},i),null==(n=r)||n.forEach((function(e){var t=e.param;t&&o&&delete o[t]}))}if(v[p.name].screens&&void 0!==p.state){l='number'==typeof p.state.index?p.state.index:p.state.routes.length-1;var s=p.state.routes[l],u=v[p.name].screens;u&&s.name in u?(p=s,v=u):b=!1}else b=!1};p.name in v&&b;)j();void 0!==v[p.name]?s+=null==(c=r)?void 0:c.map((function(e){var t=e.segment,n=e.param,r=e.optional;if('*'===t)return p.name;if(n){var a=f[n];return void 0===a&&r?'':String(a).replace(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]/g,(function(e){return encodeURIComponent(e)}))}return encodeURIComponent(t)})).join('/'):s+=encodeURIComponent(p.name);if(!o&&h.params&&(o=Object.fromEntries(Object.entries(h.params).map((function(e){var n=t(e,2),r=n[0],a=n[1];return[r,String(a)]})))),p.state)s+='/';else if(o){for(var O in o)'undefined'===o[O]&&delete o[O];var P=n.stringify(o,{sort:!1});P&&(s+=`?${P}`)}u=p.state};for(;u;)c();null!=r&&r.path&&(s=`${r.path}/${s}`);(s=(s=s.replace(/\/+/g,'/')).length>1?s.replace(/\/$/,''):s).startsWith('/')||(s=`/${s}`);return s};var n=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var a={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var s=i?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(a,o,s):a[o]=e[o]}return a.default=e,n&&n.set(e,a),a})(_r(d[2]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}var a=function(e){var t='number'==typeof e.index?e.routes[e.index]:e.routes[e.routes.length-1];return t.state?a(t.state):t},i=new WeakMap,o=function(e){if(null==e||!e.screens)return{};var t=i.get(null==e?void 0:e.screens);if(t)return t;var n=u(e.screens);return i.set(e.screens,n),n};var s=function(t,n){if('string'==typeof t){var r=(0,_r(d[4]).getPatternParts)(t);return n?{parts:[].concat(e(n),e(r))}:{parts:r}}if(t.exact&&void 0===t.path)throw new Error("A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. `path: ''`.");var a=!0!==t.exact?[].concat(e(n||[]),e(t.path?(0,_r(d[4]).getPatternParts)(t.path):[])):t.path?(0,_r(d[4]).getPatternParts)(t.path):void 0,i=t.screens?u(t.screens,a):void 0;return{parts:a,stringify:t.stringify,screens:i}},u=function(e,n){return Object.fromEntries(Object.entries(e).map((function(e){var r=t(e,2),a=r[0],i=r[1];return[a,s(i,n)]})))}}),992,[6,38,993,998,999]); +__d((function(g,r,i,_a,m,e,d){'use strict';var t=r(d[0]),n=r(d[1]),a=r(d[2]),o=Symbol('encodeFragmentIdentifier');function u(t){switch(t.arrayFormat){case'index':return function(n){return function(o,u){var c=o.length;return void 0===u||t.skipNull&&null===u||t.skipEmptyString&&''===u?o:[].concat(a(o),null===u?[[l(n,t),'[',c,']'].join('')]:[[l(n,t),'[',l(c,t),']=',l(u,t)].join('')])}};case'bracket':return function(n){return function(o,u){return void 0===u||t.skipNull&&null===u||t.skipEmptyString&&''===u?o:[].concat(a(o),null===u?[[l(n,t),'[]'].join('')]:[[l(n,t),'[]=',l(u,t)].join('')])}};case'colon-list-separator':return function(n){return function(o,u){return void 0===u||t.skipNull&&null===u||t.skipEmptyString&&''===u?o:[].concat(a(o),null===u?[[l(n,t),':list='].join('')]:[[l(n,t),':list=',l(u,t)].join('')])}};case'comma':case'separator':case'bracket-separator':var n='bracket-separator'===t.arrayFormat?'[]=':'=';return function(a){return function(o,u){return void 0===u||t.skipNull&&null===u||t.skipEmptyString&&''===u?o:(u=null===u?'':u,0===o.length?[[l(a,t),n,l(u,t)].join('')]:[[o,l(u,t)].join(t.arrayFormatSeparator)])}};default:return function(n){return function(o,u){return void 0===u||t.skipNull&&null===u||t.skipEmptyString&&''===u?o:[].concat(a(o),null===u?[l(n,t)]:[[l(n,t),'=',l(u,t)].join('')])}}}}function c(t){var n;switch(t.arrayFormat){case'index':return function(t,a,o){n=/\[(\d*)\]$/.exec(t),t=t.replace(/\[\d*\]$/,''),n?(void 0===o[t]&&(o[t]={}),o[t][n[1]]=a):o[t]=a};case'bracket':return function(t,a,o){n=/(\[\])$/.exec(t),t=t.replace(/\[\]$/,''),n?void 0!==o[t]?o[t]=[].concat(o[t],a):o[t]=[a]:o[t]=a};case'colon-list-separator':return function(t,a,o){n=/(:list)$/.exec(t),t=t.replace(/:list$/,''),n?void 0!==o[t]?o[t]=[].concat(o[t],a):o[t]=[a]:o[t]=a};case'comma':case'separator':return function(n,a,o){var u='string'==typeof a&&a.includes(t.arrayFormatSeparator),c='string'==typeof a&&!u&&f(a,t).includes(t.arrayFormatSeparator);a=c?f(a,t):a;var s=u||c?a.split(t.arrayFormatSeparator).map((function(n){return f(n,t)})):null===a?a:f(a,t);o[n]=s};case'bracket-separator':return function(n,a,o){var u=/(\[\])$/.test(n);if(n=n.replace(/\[\]$/,''),u){var c=null===a?[]:a.split(t.arrayFormatSeparator).map((function(n){return f(n,t)}));void 0!==o[n]?o[n]=[].concat(o[n],c):o[n]=c}else o[n]=a?f(a,t):a};default:return function(t,n,a){void 0!==a[t]?a[t]=[].concat(a[t],n):a[t]=n}}}function s(t){if('string'!=typeof t||1!==t.length)throw new TypeError('arrayFormatSeparator must be single character string')}function l(t,n){return n.encode?n.strict?r(d[3])(t):encodeURIComponent(t):t}function f(t,n){return n.decode?r(d[4])(t):t}function p(t){return Array.isArray(t)?t.sort():'object'==typeof t?p(Object.keys(t)).sort((function(t,n){return Number(t)-Number(n)})).map((function(n){return t[n]})):t}function y(t){var n=t.indexOf('#');return-1!==n&&(t=t.slice(0,n)),t}function v(t){var n='',a=t.indexOf('#');return-1!==a&&(n=t.slice(a)),n}function b(t){var n=(t=y(t)).indexOf('?');return-1===n?'':t.slice(n+1)}function j(t,n){return n.parseNumbers&&!Number.isNaN(Number(t))&&'string'==typeof t&&''!==t.trim()?t=Number(t):!n.parseBooleans||null===t||'true'!==t.toLowerCase()&&'false'!==t.toLowerCase()||(t='true'===t.toLowerCase()),t}function k(t,a){s((a=Object.assign({decode:!0,sort:!0,arrayFormat:'none',arrayFormatSeparator:',',parseNumbers:!1,parseBooleans:!1},a)).arrayFormatSeparator);var o=c(a),u=Object.create(null);if('string'!=typeof t)return u;if(!(t=t.trim().replace(/^[?#&]/,'')))return u;for(var l of t.split('&'))if(''!==l){var y=r(d[5])(a.decode?l.replace(/\+/g,' '):l,'='),v=n(y,2),b=v[0],k=v[1];k=void 0===k?null:['comma','separator','bracket-separator'].includes(a.arrayFormat)?k:f(k,a),o(f(b,a),k,u)}for(var F of Object.keys(u)){var O=u[F];if('object'==typeof O&&null!==O)for(var S of Object.keys(O))O[S]=j(O[S],a);else u[F]=j(O,a)}return!1===a.sort?u:(!0===a.sort?Object.keys(u).sort():Object.keys(u).sort(a.sort)).reduce((function(t,n){var a=u[n];return Boolean(a)&&'object'==typeof a&&!Array.isArray(a)?t[n]=p(a):t[n]=a,t}),Object.create(null))}e.extract=b,e.parse=k,e.stringify=function(t,n){if(!t)return'';s((n=Object.assign({encode:!0,strict:!0,arrayFormat:'none',arrayFormatSeparator:','},n)).arrayFormatSeparator);var a=function(a){return n.skipNull&&null==t[a]||n.skipEmptyString&&''===t[a]},o=u(n),c={};for(var f of Object.keys(t))a(f)||(c[f]=t[f]);var p=Object.keys(c);return!1!==n.sort&&p.sort(n.sort),p.map((function(a){var u=t[a];return void 0===u?'':null===u?l(a,n):Array.isArray(u)?0===u.length&&'bracket-separator'===n.arrayFormat?l(a,n)+'[]':u.reduce(o(a),[]).join('&'):l(a,n)+'='+l(u,n)})).filter((function(t){return t.length>0})).join('&')},e.parseUrl=function(t,a){a=Object.assign({decode:!0},a);var o=r(d[5])(t,'#'),u=n(o,2),c=u[0],s=u[1];return Object.assign({url:c.split('?')[0]||'',query:k(b(t),a)},a&&a.parseFragmentIdentifier&&s?{fragmentIdentifier:f(s,a)}:{})},e.stringifyUrl=function(n,a){a=Object.assign(t({encode:!0,strict:!0},o,!0),a);var u=y(n.url).split('?')[0]||'',c=e.extract(n.url),s=e.parse(c,{sort:!1}),f=Object.assign(s,n.query),p=e.stringify(f,a);p&&(p=`?${p}`);var b=v(n.url);return n.fragmentIdentifier&&(b=`#${a[o]?l(n.fragmentIdentifier,a):n.fragmentIdentifier}`),`${u}${p}${b}`},e.pick=function(n,a,u){u=Object.assign(t({parseFragmentIdentifier:!0},o,!1),u);var c=e.parseUrl(n,u),s=c.url,l=c.query,f=c.fragmentIdentifier;return e.stringifyUrl({url:s,query:r(d[6])(l,a),fragmentIdentifier:f},u)},e.exclude=function(t,n,a){var o=Array.isArray(n)?function(t){return!n.includes(t)}:function(t,a){return!n(t,a)};return e.pick(t,o,a)}}),993,[198,38,6,994,995,996,997]); +__d((function(g,r,i,a,m,e,d){'use strict';m.exports=function(t){return encodeURIComponent(t).replace(/[!'()*]/g,(function(t){return`%${t.charCodeAt(0).toString(16).toUpperCase()}`}))}}),994,[]); +__d((function(g,r,_i,a,m,e,d){'use strict';var t=new RegExp("(%[a-f0-9]{2})|([^%]+?)",'gi'),n=new RegExp("(%[a-f0-9]{2})+",'gi');function o(t,n){try{return[decodeURIComponent(t.join(''))]}catch(t){}if(1===t.length)return t;n=n||1;var c=t.slice(0,n),p=t.slice(n);return Array.prototype.concat.call([],o(c),o(p))}function c(n){try{return decodeURIComponent(n)}catch(i){for(var c=n.match(t)||[],p=1;p1&&void 0!==arguments[1])||arguments[1],f=Object.assign({path:'string',initialRouteName:'string',screens:'object'},s?null:{alias:'array',exact:'boolean',stringify:'object',parse:'object'});if('object'!=typeof c||null===c)throw new Error(`Expected the configuration to be an object, but got ${JSON.stringify(c)}.`);var p=Object.fromEntries(Object.keys(c).map((function(n){if(!(n in f))return[n,'extraneous'];var t=f[n],o=c[n];if(void 0!==o)if('array'===t){if(!Array.isArray(o))return[n,`expected 'Array', got '${typeof o}'`]}else if(typeof o!==t)return[n,`expected '${t}', got '${typeof o}'`];return null})).filter(Boolean));if(Object.keys(p).length)throw new Error(`Found invalid properties in the configuration:\n${t(p)}\n\nYou can only specify the following properties:\n${t(f)}\n\nIf you want to specify configuration for screens, you need to specify them under a 'screens' property.\n\nSee https://reactnavigation.org/docs/configuring-links for more details on how to specify a linking configuration.`);if(s&&'path'in c&&'string'==typeof c.path&&c.path.includes(':'))throw new Error(`Found invalid path '${c.path}'. The 'path' in the top-level configuration cannot contain patterns for params.`);'screens'in c&&c.screens&&Object.entries(c.screens).forEach((function(t){var c=n(t,2),s=(c[0],c[1]);'string'!=typeof s&&o(s,!1)}))};var t=function(t){return Object.entries(t).map((function(t){var o=n(t,2);return`- ${o[0]} (${o[1]})`})).join('\n')}}),998,[38]); +__d((function(g,r,_i,a,m,e,d){"use strict";var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.getPatternParts=function(t){for(var i=[],o={segment:''},p=!1,f=!1,l=0,u=0;u<=t.length;u++){var s=t[u];if(null!=s&&(o.segment+=s),':'===s){if(':'===o.segment)f=!0;else if(!p)throw new Error(`Encountered ':' in the middle of a segment in path: ${t}`)}else if('('===s){if(!f)throw new Error(`Encountered '(' without preceding ':' in path: ${t}`);p?l++:p=!0}else if(')'===s){if(!f||!p)throw new Error(`Encountered ')' without preceding '(' in path: ${t}`);l?(l--,o.regex+=s):(p=!1,f=!1)}else if('?'===s){if(!o.param)throw new Error(`Encountered '?' without preceding ':' in path: ${t}`);f=!1,o.optional=!0}else if(null==s||'/'===s&&!p){if(f=!1,o.segment=o.segment.replace(/\/$/,''),''===o.segment)continue;if(o.param&&(o.param=o.param.replace(/^:/,'')),o.regex&&(o.regex=o.regex.replace(/^\(/,'').replace(/\)$/,'')),i.push(o),null==s)break;o={segment:''}}p&&(o.regex=o.regex||'',o.regex+=s),f&&!p&&(o.param=o.param||'',o.param+=s)}if(p)throw new Error(`Could not find closing ')' in path: ${t}`);var c=i.map((function(n){return n.param})).filter(Boolean);for(var h of c.entries()){var w=n(h,2),E=w[0],$=w[1];if(c.indexOf($)!==E)throw new Error(`Duplicate param name '${$}' found in path: ${t}`)}return i}}),999,[38]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),t=_r(d[1]),n=_r(d[2]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.getStateFromPath=function(e,t){var n,r=o(t),a=r.initialRoutes,s=r.configs,i=null==t?void 0:t.screens,u=e.replace(/\/+/g,'/').replace(/^\//,'').replace(/\?.*$/,'');u=u.endsWith('/')?u:`${u}/`;var f,c,p=null==t||null==(n=t.path)?void 0:n.replace(/^\//,'');if(p){var l=p.endsWith('/')?p:`${p}/`;if(!u.startsWith(l))return;u=u.replace(l,'')}if(void 0===i){var h=u.split('/').filter(Boolean).map((function(e){return{name:decodeURIComponent(e)}}));return h.length?w(e,h,a):void 0}if('/'===u){var y=s.find((function(e){return''===e.segments.join('/')}));return y?w(e,y.routeNames.map((function(e){return{name:e}})),a,s):void 0}var b=v(u,s),j=b.routes,O=b.remainingPath;void 0!==j&&(u=O,f=c=w(e,j,a,s));if(null==c||null==f)return;return f};var r,a=(r=_r(d[3]))&&r.__esModule?r:{default:r},s=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=i(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&{}.hasOwnProperty.call(e,s)){var u=a?Object.getOwnPropertyDescriptor(e,s):null;u&&(u.get||u.set)?Object.defineProperty(r,s,u):r[s]=e[s]}return r.default=e,n&&n.set(e,r),r})(_r(d[4]));function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(i=function(e){return e?n:t})(e)}var u=new WeakMap;function o(e){if(!e)return f();var t=u.get(e);if(t)return t;var n=f(e);return u.set(e,n),n}function f(e){e&&(0,_r(d[5]).validatePathConfig)(e);var t=c(e),n=p(t,null==e?void 0:e.screens);return l(n),{initialRoutes:t,configs:n,configWithRegexes:h(n)}}function c(e){var t=[];return null!=e&&e.initialRouteName&&t.push({initialRouteName:e.initialRouteName,parentScreens:[]}),t}function p(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(t=[]).concat.apply(t,n(Object.keys(r).map((function(t){return y(t,r,e,[],[],[])})))).sort((function(e,t){if((0,_r(d[6]).isArrayEqual)(e.segments,t.segments))return t.routeNames.join('>').localeCompare(e.routeNames.join('>'));if((0,_r(d[7]).arrayStartsWith)(e.segments,t.segments))return-1;if((0,_r(d[7]).arrayStartsWith)(t.segments,e.segments))return 1;for(var n=0;ns.length?s.every((function(e,t){return a[t]===e})):a.every((function(e,t){return s[t]===e}))))throw new Error(`Found conflicting screens with the same pattern. The pattern '${r}' resolves to both '${a.join(' > ')}' and '${s.join(' > ')}'. Patterns must be unique and cannot resolve to more than one screen.`)}return Object.assign(e,t({},r,n))}),{})}function h(e){return e.map((function(e){return Object.assign({},e,{regex:e.regex?new RegExp(e.regex.source+'$'):void 0})}))}var v=function(t,n){var r,a,s=t,i=function(t){if(!t.regex)return 0;var a=s.match(t.regex);return a?(r=t.routeNames.map((function(r){var s=n.find((function(e){return e.screen===r&&(0,_r(d[7]).arrayStartsWith)(t.segments,e.segments)})),i=s&&a.groups?Object.fromEntries(Object.entries(a.groups).map((function(t){var n=e(t,2),a=n[0],i=n[1],u=Number(a.replace('param_','')),o=s.params.find((function(e){return e.index===u}));return(null==o?void 0:o.screen)===r&&null!=o&&o.name?[o.name,i]:null})).filter((function(e){return null!=e})).map((function(t){var n,r=e(t,2),a=r[0],i=r[1];if(null==i)return[a,void 0];var u=decodeURIComponent(i);return[a,null!=(n=s.parse)&&n[a]?s.parse[a](u):u]}))):void 0;return i&&Object.keys(i).length?{name:r,params:i}:{name:r}})),s=s.replace(a[0],''),1):void 0};for(var u of n)if(0!==(a=i(u))&&1===a)break;return{routes:r,remainingPath:s}},y=function(e,t,r,a,s,i){var u=[];i.push(e),s.push(e);var o=t[e];if('string'==typeof o)a.push({screen:e,path:o}),u.push(b(e,n(i),n(a)));else if('object'==typeof o){var f;if('string'==typeof o.path){if(o.exact&&null==o.path)throw new Error(`Screen '${e}' doesn't specify a 'path'. A 'path' needs to be specified when specifying 'exact: true'. If you don't want this screen in the URL, specify it as empty string, e.g. \`path: ''\`.`);var c=[];if(o.alias)for(var p of o.alias)'string'==typeof p?c.push(b(e,n(i),[].concat(n(a),[{screen:e,path:p}]),o.parse)):'object'==typeof p&&c.push(b(e,n(i),p.exact?[{screen:e,path:p.path}]:[].concat(n(a),[{screen:e,path:p.path}]),p.parse));o.exact&&(a.length=0),a.push({screen:e,path:o.path}),u.push(b(e,n(i),n(a),o.parse)),u.push.apply(u,c)}if('string'!=typeof o&&'string'!=typeof o.path&&null!=(f=o.alias)&&f.length)throw new Error(`Screen '${e}' doesn't specify a 'path'. A 'path' needs to be specified in order to use 'alias'.`);o.screens&&(o.initialRouteName&&r.push({initialRouteName:o.initialRouteName,parentScreens:s}),Object.keys(o.screens).forEach((function(e){var t=y(e,o.screens,r,n(a),n(s),i);u.push.apply(u,n(t))})))}return i.pop(),u},b=function(e,t,r,s){var i=[],u=function(e){i.push.apply(i,n((0,_r(d[8]).getPatternParts)(c).map((function(t){return Object.assign({},t,{screen:e})}))))};for(var o of r){var f=o.screen,c=o.path;u(f)}return{screen:e,regex:i.length?new RegExp(`^(${i.map((function(e,t){return e.param?`(((?${e.regex||'[^/]+'})\\/)${e.optional?'?':''})`:`${'*'===e.segment?'.*':(0,a.default)(e.segment)}\\/`})).join('')})$`):void 0,segments:i.map((function(e){return e.segment})),params:i.map((function(e,t){return e.param?{index:t,screen:e.screen,name:e.param}:null})).filter((function(e){return null!=e})),routeNames:t,parse:s}},j=function(e,t){for(var n of t)if(e===n.routeNames[n.routeNames.length-1])return n.parse},O=function(e,t,n){for(var r of n)if(t.length===r.parentScreens.length){for(var a=!0,s=0;s0)for(var o=u;a=t.shift();){i=O(a.name,s,n);var f=o.index||o.routes.length-1;o.routes[f].state=x(i,a,0===t.length),t.length>0&&(o=o.routes[f].state),s.push(a.name)}(a=(0,_r(d[9]).findFocusedRoute)(u)).path=e.replace(/\/$/,'');var c=N(e,r?j(a.name,r):void 0);return c&&(a.params=Object.assign({},a.params,c)),u},N=function(e,t){var n=e.split('?')[1],r=s.parse(n);return t&&Object.keys(r).forEach((function(e){Object.hasOwnProperty.call(t,e)&&'string'==typeof r[e]&&(r[e]=t[e](r[e]))})),Object.keys(r).length?r:void 0}}),1000,[38,198,6,1001,993,998,1002,1003,999,964]); +__d((function(g,r,i,a,m,e,d){'use strict';m.exports=function(t){if('string'!=typeof t)throw new TypeError('Expected a string');return t.replace(/[|\\{}()[\]^$+*?.]/g,'\\$&').replace(/-/g,'\\x2d')}}),1001,[]); +__d((function(g,r,i,_a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isArrayEqual=function(n,t){if(n===t)return!0;if(n.length!==t.length)return!1;return n.every((function(n,u){return n===t[u]}))}}),1002,[]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.arrayStartsWith=function(t,n){if(n.length>t.length)return!1;return n.every((function(n,u){return n===t[u]}))}}),1003,[]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useFocusEffect=function(t){var n=(0,_r(d[1]).useNavigation)();if(void 0!==arguments[1]){console.error("You passed a second argument to 'useFocusEffect', but it only accepts one argument. If you want to pass a dependency array, you can use 'React.useCallback':\n\nuseFocusEffect(\n React.useCallback(() => {\n // Your code here\n }, [depA, depB])\n);\n\nSee usage guide: https://reactnavigation.org/docs/use-focus-effect")}e.useEffect((function(){var e,r=!1,o=function(){var e=t();if(void 0===e||'function'==typeof e)return e};n.isFocused()&&(e=o(),r=!0);var u=n.addListener('focus',(function(){r||(void 0!==e&&e(),e=o(),r=!0)})),a=n.addListener('blur',(function(){void 0!==e&&e(),e=void 0,r=!1}));return function(){void 0!==e&&e(),u(),a()}}),[t,n])};var e=(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=t(n);if(r&&r.has(e))return r.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var c=u?Object.getOwnPropertyDescriptor(e,a):null;c&&(c.get||c.set)?Object.defineProperty(o,a,c):o[a]=e[a]}return o.default=e,r&&r.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(t=function(e){return e?r:n})(e)}}),1004,[178,1005]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useNavigation=function(){var t=e.useContext(_r(d[1]).NavigationContainerRefContext),n=e.useContext(_r(d[2]).NavigationContext);if(void 0===n&&void 0===t)throw new Error("Couldn't find a navigation object. Is your component inside NavigationContainer?");return null!=n?n:t};var e=(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=t(n);if(r&&r.has(e))return r.get(e);var o={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var u=i?Object.getOwnPropertyDescriptor(e,a):null;u&&(u.get||u.set)?Object.defineProperty(o,a,u):o[a]=e[a]}return o.default=e,r&&r.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(t=function(e){return e?r:n})(e)}}),1005,[178,968,975]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useIsFocused=function(){var t=(0,_r(d[1]).useNavigation)(),r=e.useCallback((function(e){var r=t.addListener('focus',e),n=t.addListener('blur',e);return function(){r(),n()}}),[t]);return e.useSyncExternalStore(r,t.isFocused,t.isFocused)};var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(u,a,i):u[a]=e[a]}return u.default=e,n&&n.set(e,u),u})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}}),1006,[178,1005]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),t=_r(d[1]),n=_r(d[2]),r=_r(d[3]),a=["children","layout","screenOptions","screenLayout","screenListeners","UNSTABLE_router"];Object.defineProperty(_e,"__esModule",{value:!0}),_e.useNavigationBuilder=function(o,p){var l=(0,_r(d[10]).useRegisterNavigator)(),f=i.useContext(_r(d[11]).NavigationRouteContext),v=p.children,y=p.layout,h=p.screenOptions,L=p.screenLayout,S=p.screenListeners,O=p.UNSTABLE_router,N=n(p,a),b=c(v),R=(0,_r(d[12]).useLazyValue)((function(){if(null!=N.initialRouteName&&b.every((function(e){return e.props.name!==N.initialRouteName})))throw new Error(`Couldn't find a screen named '${N.initialRouteName}' to use as 'initialRouteName'.`);var e=o(N);if(null!=O){var t=O(e);return Object.assign({},e,t)}return e})),C=b.reduce((function(e,t){if(t.props.name in e)throw new Error(`A navigator cannot contain multiple 'Screen' components with the same name (found duplicate screen named '${t.props.name}')`);return e[t.props.name]=t,e}),{}),E=b.map((function(e){return e.props.name})),j=E.reduce((function(e,t){return e[t]=C[t].keys.map((function(e){return null!=e?e:''})).join(':'),e}),{}),w=E.reduce((function(e,t){var n=C[t].props.initialParams;return e[t]=n,e}),{}),P=E.reduce((function(e,n){return Object.assign(e,t({},n,C[n].props.getId))}),{});if(!E.length)throw new Error("Couldn't find any screens for the navigator. Have you defined any screens as its children?");var k=i.useCallback((function(e){return void 0===e.type||e.type===R.type}),[R.type]),I=i.useCallback((function(e){return void 0!==e&&!1===e.stale&&k(e)}),[k]),K=i.useContext(_r(d[13]).NavigationStateContext),_=K.state,A=K.getState,G=K.setState,x=K.setKey,$=K.getKey,F=K.getIsInitial,M=i.useRef(!1),V=(0,s.default)((function(e){M.current||G(e)})),B=i.useMemo((function(){var e,t,n,r,a,o,i,s=E.reduce((function(e,t){var n,r,a,o=C[t].props.initialParams,i=null==(null==f||null==(n=f.params)?void 0:n.state)&&!1!==(null==f||null==(r=f.params)?void 0:r.initial)&&(null==f||null==(a=f.params)?void 0:a.screen)===t?f.params.params:void 0;return e[t]=void 0!==o||void 0!==i?Object.assign({},o,i):void 0,e}),{});return void 0!==_&&k(_)||null!=(null==f||null==(e=f.params)?void 0:e.state)||'string'==typeof(null==f||null==(t=f.params)?void 0:t.screen)&&!1!==(null==f||null==(n=f.params)?void 0:n.initial)?(null!=(null==f||null==(r=f.params)?void 0:r.state)?i=f.params.state:'string'==typeof(null==f||null==(a=f.params)?void 0:a.screen)&&!1!==(null==f||null==(o=f.params)?void 0:o.initial)&&(i={index:0,routes:[{name:f.params.screen,params:f.params.params,path:f.params.path}]}),[R.getRehydratedState(null!=i?i:_,{routeNames:E,routeParamList:s,routeGetIdList:P}),!1]):[R.getInitialState({routeNames:E,routeParamList:s,routeGetIdList:P}),!0]}),[_,R,k]),D=e(B,2),H=D[0],J=D[1],T=i.useRef(j);i.useEffect((function(){T.current=j}));var U=T.current,W=I(_)?_:H,q=W;(0,_r(d[14]).isArrayEqual)(W.routeNames,E)&&(0,_r(d[15]).isRecordEqual)(j,U)||(q=R.getStateForRouteNamesChange(W,{routeNames:E,routeParamList:w,routeGetIdList:P,routeKeyChanges:Object.keys(j).filter((function(e){return e in U&&j[e]!==U[e]}))}));var z=i.useRef(null==f?void 0:f.params);if(i.useEffect((function(){z.current=null==f?void 0:f.params}),[null==f?void 0:f.params]),null!=f&&f.params){var Q,X=z.current;'object'==typeof f.params.state&&null!=f.params.state&&f.params!==X?Q=_r(d[16]).CommonActions.reset(f.params.state):'string'==typeof f.params.screen&&(!1===f.params.initial&&J||f.params!==X)&&(Q=_r(d[16]).CommonActions.navigate({name:f.params.screen,params:f.params.params,path:f.params.path,pop:f.params.pop}));var Y=Q?R.getStateForAction(q,Q,{routeNames:E,routeParamList:w,routeGetIdList:P}):null;q=null!==Y?R.getRehydratedState(Y,{routeNames:E,routeParamList:w,routeGetIdList:P}):q}var Z=W!==q;(0,_r(d[17]).useScheduleUpdate)((function(){Z&&V(q)})),W=q,i.useEffect((function(){return M.current=!1,x(l),F()||V(q),function(){void 0!==A()&&$()===l&&(G(void 0),M.current=!0)}}),[]);var ee=i.useRef(W);ee.current=W,(0,_r(d[18]).useIsomorphicLayoutEffect)((function(){ee.current=null}));var te=(0,s.default)((function(){var e=A();return(0,_r(d[19]).deepFreeze)(I(e)?e:H)})),ne=(0,_r(d[20]).useEventEmitter)((function(e){var t,n,a,o=[];e.target?null!=(a=n=W.routes.find((function(t){return t.key===e.target})))&&a.name&&o.push(n.name):(n=W.routes[W.index],o.push.apply(o,r(Object.keys(C).filter((function(e){var t;return(null==(t=n)?void 0:t.name)===e})))));if(null!=n){var i=me[n.key].navigation;(t=[]).concat.apply(t,r([S].concat(r(o.map((function(e){return C[e].props.listeners})))).map((function(t){var r='function'==typeof t?t({route:n,navigation:i}):t;return r?Object.keys(r).filter((function(t){return t===e.type})).map((function(e){return null==r?void 0:r[e]})):void 0})))).filter((function(e,t,n){return e&&n.lastIndexOf(e)===t})).forEach((function(t){return null==t?void 0:t(e)}))}}));(0,_r(d[21]).useFocusEvents)({state:W,emitter:ne}),i.useEffect((function(){ne.emit({type:'state',data:{state:W}})}),[ne,W]);var re=(0,_r(d[22]).useChildListeners)(),ae=re.listeners,oe=re.addListener,ie=(0,_r(d[23]).useKeyedChildListeners)(),se=ie.keyedListeners,ue=ie.addKeyedListener,pe=(0,_r(d[24]).useOnAction)({router:R,getState:te,setState:V,key:null==f?void 0:f.key,actionListeners:ae.action,beforeRemoveListeners:se.beforeRemove,routerConfigOptions:{routeNames:E,routeParamList:w,routeGetIdList:P},emitter:ne}),le=(0,_r(d[25]).useOnRouteFocus)({router:R,key:null==f?void 0:f.key,getState:te,setState:V}),ce=(0,_r(d[26]).useNavigationHelpers)({id:p.id,onAction:pe,getState:te,emitter:ne,router:R,stateRef:ee});(0,_r(d[27]).useFocusedListenersChildrenAdapter)({navigation:ce,focusedListeners:ae.focus}),(0,_r(d[28]).useOnGetState)({getState:te,getStateListeners:se.getState});var de=(0,_r(d[29]).useDescriptors)({state:W,screens:C,navigation:ce,screenOptions:h,screenLayout:L,onAction:pe,getState:te,setState:V,onRouteFocus:le,addListener:oe,addKeyedListener:ue,router:R,emitter:ne}),fe=de.describe,me=de.descriptors;(0,_r(d[30]).useCurrentRender)({state:W,navigation:ce,descriptors:me});var ve=(0,_r(d[31]).useComponent)((function(e){var t=null!=y?y({state:W,descriptors:me,navigation:ce,children:e}):e;return(0,u.jsx)(_r(d[32]).NavigationHelpersContext.Provider,{value:ce,children:(0,u.jsx)(_r(d[33]).PreventRemoveProvider,{children:t})})}));return{state:W,navigation:ce,describe:fe,descriptors:me,NavigationContent:ve}};var o,i=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=p(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(r,o,i):r[o]=e[o]}return r.default=e,n&&n.set(e,r),r})(_r(d[4])),s=(o=_r(d[5]))&&o.__esModule?o:{default:o},u=_r(d[6]);function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(p=function(e){return e?n:t})(e)}_r(d[7]).PrivateValueStore;var l=function(e){return void 0===e||'string'==typeof e&&''!==e},c=function(e,t,n,a){return i.Children.toArray(e).reduce((function(e,o){var s,u;if(i.isValidElement(o)){if(o.type===_r(d[8]).Screen){if(!l(o.props.navigationKey))throw new Error(`Got an invalid 'navigationKey' prop (${JSON.stringify(o.props.navigationKey)}) for the screen '${o.props.name}'. It must be a non-empty string or 'undefined'.`);return e.push({keys:[t,o.props.navigationKey],options:n,layout:a,props:o.props}),e}if(o.type===i.Fragment||o.type===_r(d[9]).Group){if(!l(o.props.navigationKey))throw new Error(`Got an invalid 'navigationKey' prop (${JSON.stringify(o.props.navigationKey)}) for the group. It must be a non-empty string or 'undefined'.`);return e.push.apply(e,r(c(o.props.children,o.props.navigationKey,o.type!==_r(d[9]).Group?n:null!=n?[].concat(r(n),[o.props.screenOptions]):[o.props.screenOptions],'function'==typeof o.props.screenLayout?o.props.screenLayout:a))),e}}throw new Error(`A navigator can only contain 'Screen', 'Group' or 'React.Fragment' as its direct children (found ${i.isValidElement(o)?`'${'string'==typeof o.type?o.type:null==(s=o.type)?void 0:s.name}'${null!=o.props&&'object'==typeof o.props&&'name'in o.props&&null!=(u=o.props)&&u.name?` for the screen '${o.props.name}'`:''}`:'object'==typeof o?JSON.stringify(o):`'${String(o)}'`}). To render this component in the navigator, pass it in the 'component' prop to 'Screen'.`)}),[])}}),1007,[38,198,134,6,178,946,224,1008,986,987,1009,978,1010,948,1002,991,956,1011,1012,952,965,1013,953,954,1014,1016,1017,1018,1019,1020,1025,1026,976,980]); +__d((function(g,r,i,a,m,e,d){"use strict";var t=r(d[0]),o=r(d[1]);Object.defineProperty(e,"__esModule",{value:!0}),e.PrivateValueStore=void 0;var u=t((function t(){o(this,t)}));e.PrivateValueStore=u}),1008,[13,12]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.useRegisterNavigator=function(){var r=t.useState((function(){return(0,_r(d[2]).nanoid)()})),n=e(r,1)[0],a=t.useContext(_r(d[3]).SingleNavigatorContext);if(void 0===a)throw new Error("Couldn't register the navigator. Have you wrapped your app with 'NavigationContainer'?\n\nThis can also happen if there are multiple copies of '@react-navigation' packages installed.");return t.useEffect((function(){var e=a.register,t=a.unregister;return e(n),function(){return t(n)}}),[a,n]),n};var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var a={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var u=o?Object.getOwnPropertyDescriptor(e,i):null;u&&(u.get||u.set)?Object.defineProperty(a,i,u):a[i]=e[i]}return a.default=e,n&&n.set(e,a),a})(_r(d[1]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}}),1009,[38,178,958,971]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useLazyValue=function(r){var t=e.useRef();void 0===t.current&&(t.current=r());return t.current};var e=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=o?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(u,f,a):u[f]=e[f]}return u.default=e,n&&n.set(e,u),u})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}}),1010,[178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useScheduleUpdate=function(t){var r=e.useContext(_r(d[1]).NavigationBuilderContext),n=r.scheduleUpdate,u=r.flushUpdates;n(t),(0,_r(d[2]).useIsomorphicLayoutEffect)(u)};var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=o?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(u,a,f):u[a]=e[a]}return u.default=e,n&&n.set(e,u),u})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}}),1011,[178,967,1012]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.useIsomorphicLayoutEffect=void 0;var o=r(d[0]);e.useIsomorphicLayoutEffect=o.useLayoutEffect}),1012,[178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useFocusEvents=function(t){var r=t.state,n=t.emitter,u=e.useContext(_r(d[1]).NavigationContext),o=e.useRef(),i=r.routes[r.index].key;e.useEffect((function(){return null==u?void 0:u.addListener('focus',(function(){o.current=i,n.emit({type:'focus',target:i})}))}),[i,n,u]),e.useEffect((function(){return null==u?void 0:u.addListener('blur',(function(){o.current=void 0,n.emit({type:'blur',target:i})}))}),[i,n,u]),e.useEffect((function(){var e=o.current;o.current=i,void 0!==e||u||n.emit({type:'focus',target:i}),e===i||u&&!u.isFocused()||void 0!==e&&(n.emit({type:'blur',target:e}),n.emit({type:'focus',target:i}))}),[i,n,u])};var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var f=o?Object.getOwnPropertyDescriptor(e,i):null;f&&(f.get||f.set)?Object.defineProperty(u,i,f):u[i]=e[i]}return u.default=e,n&&n.set(e,u),u})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}}),1013,[178,975]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useOnAction=function(t){var r=t.router,n=t.getState,o=t.setState,i=t.key,u=t.actionListeners,a=t.beforeRemoveListeners,f=t.routerConfigOptions,s=t.emitter,c=e.useContext(_r(d[1]).NavigationBuilderContext),l=c.onAction,v=c.onRouteFocus,p=c.addListener,y=c.onDispatchAction,O=e.useContext(_r(d[2]).DeprecatedNavigationInChildContext),_=e.useRef(f);e.useEffect((function(){_.current=f}));var h=e.useCallback((function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set,f=n();if(t.has(f.key))return!1;if(t.add(f.key),'string'!=typeof e.target||e.target===f.key){var c=r.getStateForAction(f,e,_.current);if(null!==(c=null===c&&e.target===f.key?f:c)){if(y(e,f===c),f!==c){if((0,_r(d[3]).shouldPreventRemove)(s,a,f.routes,c.routes,e))return!0;o(c)}if(void 0!==v)r.shouldActionChangeFocus(e)&&void 0!==i&&v(i);return!0}}if(void 0!==l&&l(e,t))return!0;if('string'==typeof e.target||'NAVIGATE_DEPRECATED'===e.type||O)for(var p=u.length-1;p>=0;p--){if((0,u[p])(e,t))return!0}return!1}),[u,a,s,n,O,i,l,y,v,r,o]);return(0,_r(d[3]).useOnPreventRemove)({getState:n,emitter:s,beforeRemoveListeners:a}),e.useEffect((function(){return null==p?void 0:p('action',h)}),[p,h]),h};var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var a=i?Object.getOwnPropertyDescriptor(e,u):null;a&&(a.get||a.set)?Object.defineProperty(o,u,a):o[u]=e[u]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}}),1014,[178,967,970,1015]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.shouldPreventRemove=void 0,_e.useOnPreventRemove=function(e){var r=e.getState,n=e.emitter,u=e.beforeRemoveListeners,i=t.useContext(_r(d[2]).NavigationBuilderContext).addKeyedListener,a=t.useContext(_r(d[3]).NavigationRouteContext),f=null==a?void 0:a.key;t.useEffect((function(){if(f)return null==i?void 0:i('beforeRemove',f,(function(e){var t=r();return o(n,u,t.routes,[],e)}))}),[i,u,n,r,f])};var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var a=u?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(o,i,a):o[i]=e[i]}return o.default=e,n&&n.set(e,o),o})(_r(d[1]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}var n=Symbol('VISITED_ROUTE_KEYS'),o=function(t,r,o,u,i){var a,f=u.map((function(e){return e.key})),l=o.filter((function(e){return!f.includes(e.key)})).reverse(),v=null!=(a=i[n])?a:new Set,c=Object.assign({},i,e({},n,v));for(var s of l){var y;if(!v.has(s.key)){if(null==(y=r[s.key])?void 0:y.call(r,c))return!0;if(v.add(s.key),t.emit({type:'beforeRemove',target:s.key,data:{action:c},canPreventDefault:!0}).defaultPrevented)return!0}}return!1};_e.shouldPreventRemove=o}),1015,[198,178,967,978]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useOnRouteFocus=function(t){var r=t.router,n=t.getState,o=t.key,u=t.setState,a=e.useContext(_r(d[1]).NavigationBuilderContext).onRouteFocus;return e.useCallback((function(e){var t=n(),i=r.getStateForRouteFocus(t,e);i!==t&&u(i),void 0!==a&&void 0!==o&&a(o)}),[n,a,r,u,o])};var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var i=u?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(o,a,i):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}}),1016,[178,967]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useNavigationHelpers=function(e){var n=e.id,r=e.onAction,o=e.getState,u=e.emitter,i=e.router,a=e.stateRef,c=t.useContext(_r(d[2]).UnhandledActionContext),f=t.useContext(_r(d[3]).NavigationContext);return t.useMemo((function(){var t=function(t){var e='function'==typeof t?t(o()):t;r(e)||null==c||c(e)},e=Object.assign({},i.actionCreators,_r(d[4]).CommonActions),s=Object.keys(e).reduce((function(n,r){return n[r]=function(){return t(e[r].apply(e,arguments))},n}),{}),l=Object.assign({},f,s,{dispatch:t,emit:u.emit,isFocused:f?f.isFocused:function(){return!0},canGoBack:function(){var t=o();return null!==i.getStateForAction(t,_r(d[4]).CommonActions.goBack(),{routeNames:t.routeNames,routeParamList:{},routeGetIdList:{}})||(null==f?void 0:f.canGoBack())||!1},getId:function(){return n},getParent:function(t){if(void 0!==t){for(var e=l;e&&t!==e.getId();)e=e.getParent();return e}return f},getState:function(){return null!=a.current?a.current:o()}});return l}),[i,f,u.emit,o,r,c,n,a])};var t=(function(t,n){if(!n&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var r=e(n);if(r&&r.has(t))return r.get(t);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if("default"!==i&&{}.hasOwnProperty.call(t,i)){var a=u?Object.getOwnPropertyDescriptor(t,i):null;a&&(a.get||a.set)?Object.defineProperty(o,i,a):o[i]=t[i]}return o.default=t,r&&r.set(t,o),o})(_r(d[0]));function e(t){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(e=function(t){return t?r:n})(t)}_r(d[1]).PrivateValueStore}),1017,[178,1008,969,975,956]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useFocusedListenersChildrenAdapter=function(t){var r=t.navigation,n=t.focusedListeners,u=e.useContext(_r(d[1]).NavigationBuilderContext).addListener,o=e.useCallback((function(e){if(r.isFocused()){for(var t of n){var u=t(e),o=u.handled,a=u.result;if(o)return{handled:o,result:a}}return{handled:!0,result:e(r)}}return{handled:!1,result:null}}),[n,r]);e.useEffect((function(){return null==u?void 0:u('focus',o)}),[u,o])};var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(u,a,i):u[a]=e[a]}return u.default=e,n&&n.set(e,u),u})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}}),1018,[178,967]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useOnGetState=function(t){var r=t.getState,n=t.getStateListeners,u=e.useContext(_r(d[1]).NavigationBuilderContext).addKeyedListener,a=e.useContext(_r(d[2]).NavigationRouteContext),o=a?a.key:'root',i=e.useCallback((function(){var e=r(),t=e.routes.map((function(e){var t,r=null==(t=n[e.key])?void 0:t.call(n);return e.state===r?e:Object.assign({},e,{state:r})}));return(0,_r(d[3]).isArrayEqual)(e.routes,t)?e:Object.assign({},e,{routes:t})}),[r,n]);e.useEffect((function(){return null==u?void 0:u('getState',o,i)}),[u,i,o])};var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(u,o,i):u[o]=e[o]}return u.default=e,n&&n.set(e,u),u})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}}),1019,[178,967,978,1002]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),t=_r(d[1]),n=_r(d[2]);function r(e){var t=o(e,"string");return"symbol"==typeof t?t:t+""}function o(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}Object.defineProperty(_e,"__esModule",{value:!0}),_e.useDescriptors=function(o){var u=o.state,s=o.screens,c=o.navigation,f=o.screenOptions,l=o.screenLayout,p=o.onAction,v=o.getState,y=o.setState,h=o.addListener,k=o.addKeyedListener,b=o.onRouteFocus,O=o.router,j=o.emitter,C=i.useContext(_r(d[5]).ThemeContext),w=i.useState({}),x=n(w,2),P=x[0],S=x[1],_=i.useContext(_r(d[6]).NavigationBuilderContext),M=_.onDispatchAction,N=_.onOptionsChange,R=_.scheduleUpdate,D=_.flushUpdates,L=_.stackRef,A=i.useMemo((function(){return{navigation:c,onAction:p,addListener:h,addKeyedListener:k,onRouteFocus:b,onDispatchAction:M,onOptionsChange:N,scheduleUpdate:R,flushUpdates:D,stackRef:L}}),[c,p,h,k,b,M,N,R,D,L]),U=(0,_r(d[7]).useNavigationCache)({state:u,getState:v,navigation:c,setOptions:S,router:O,emitter:j}),B=U.base,W=U.navigations,E=(0,_r(d[8]).useRouteCache)(u.routes),F=function(e,n,r){var o=s[e.name],i=o.props;return[f].concat(t(o.options?o.options.filter(Boolean):[]),[i.options,r]).reduce((function(t,r){return Object.assign(t,'function'!=typeof r?r:r({route:e,navigation:n,theme:C}))}),{})},K=function(t,n,o,i){var u,c,f=s[t.name],p=f.props,h=null!=(u=null!=(c=p.layout)?c:f.layout)?u:l,k=(0,a.jsx)(_r(d[9]).SceneView,{navigation:n,route:t,screen:p,routeState:i,getState:v,setState:y,options:o,clearOptions:function(){return S((function(n){if(t.key in n){var o=t.key;n[o];return e(n,[o].map(r))}return n}))}});return null!=h&&(k=h({route:t,navigation:n,theme:C,children:k})),(0,a.jsx)(_r(d[6]).NavigationBuilderContext.Provider,{value:A,children:(0,a.jsx)(_r(d[10]).NavigationContext.Provider,{value:n,children:(0,a.jsx)(_r(d[11]).NavigationRouteContext.Provider,{value:t,children:k})})},t.key)},T=E.reduce((function(e,t,n){var r=W[t.key],o=F(t,r,P[t.key]),i=K(t,r,o,u.routes[n].state);return e[t.key]={route:t,navigation:r,render:function(){return i},options:o},e}),{});return{describe:function(e,t){if(!t){if(!(e.key in T))throw new Error(`Couldn't find a route with the key ${e.key}.`);return T[e.key]}var n=B,r=F(e,n,{}),o=K(e,n,r,void 0);return{route:e,navigation:n,render:function(){return o},options:r}},descriptors:T}};var i=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=u(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var a=o?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(r,i,a):r[i]=e[i]}return r.default=e,n&&n.set(e,r),r})(_r(d[3])),a=_r(d[4]);function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(u=function(e){return e?n:t})(e)}}),1020,[134,6,38,178,224,973,967,1021,990,1022,975,978]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),t=_r(d[1]),n=["emit"];Object.defineProperty(_e,"__esModule",{value:!0}),_e.useNavigationCache=function(o){var i=o.state,u=o.getState,c=o.navigation,a=o.setOptions,s=o.router,f=o.emitter,l=(r.useContext(_r(d[3]).NavigationBuilderContext).stackRef,r.useMemo((function(){c.emit;var e=t(c,n),r=Object.assign({},s.actionCreators,_r(d[4]).CommonActions),o=function(){throw new Error('Actions cannot be dispatched from a placeholder screen.')},i=Object.keys(r).reduce((function(e,t){return e[t]=o,e}),{});return Object.assign({},e,i,{addListener:function(){return function(){}},removeListener:function(){},dispatch:o,getParent:function(t){return void 0!==t&&t===e.getId()?l:e.getParent(t)},setOptions:function(){throw new Error('Options cannot be set from a placeholder screen.')},isFocused:function(){return!1}})}),[c,s.actionCreators])),p=r.useMemo((function(){return{current:{}}}),[l,u,c,a,f]);return p.current=i.routes.reduce((function(t,n){var r=p.current[n.key];if(r)t[n.key]=r;else{var o=function(e){var t='function'==typeof e?e(u()):e;null!=t&&c.dispatch(Object.assign({source:n.key},t))},i=function(e){try{e()}finally{}},y=Object.assign({},s.actionCreators,_r(d[4]).CommonActions),v=Object.keys(y).reduce((function(e,t){return e[t]=function(){for(var e=arguments.length,n=new Array(e),r=0;r0){this.model=i||'rgb',c=r(d[2])[this.model].channels;var f=Array.prototype.slice.call(t,0,c);this.color=b(f,c),this.valpha='number'==typeof t[c]?t[c]:1}else if('number'==typeof t)this.model='rgb',this.color=[t>>16&255,t>>8&255,255&t],this.valpha=1;else{this.valpha=1;var v=Object.keys(t);'alpha'in t&&(v.splice(v.indexOf('alpha'),1),this.valpha='number'==typeof t.alpha?t.alpha:0);var p=v.sort().join('');if(!(p in a))throw new Error('Unable to parse color from object: '+JSON.stringify(t));this.model=a[p];var m=r(d[2])[this.model].labels,y=[];for(s=0;sn?(o+.05)/(n+.05):(n+.05)/(o+.05)},level:function(t){var o=this.contrast(t);return o>=7?'AAA':o>=4.5?'AA':''},isDark:function(){var t=this.rgb().color;return(2126*t[0]+7152*t[1]+722*t[2])/1e4<128},isLight:function(){return!this.isDark()},negate:function(){for(var t=this.rgb(),o=0;o<3;o++)t.color[o]=255-t.color[o];return t},lighten:function(t){var o=this.hsl();return o.color[2]+=o.color[2]*t,o},darken:function(t){var o=this.hsl();return o.color[2]-=o.color[2]*t,o},saturate:function(t){var o=this.hsl();return o.color[1]+=o.color[1]*t,o},desaturate:function(t){var o=this.hsl();return o.color[1]-=o.color[1]*t,o},whiten:function(t){var o=this.hwb();return o.color[1]+=o.color[1]*t,o},blacken:function(t){var o=this.hwb();return o.color[2]+=o.color[2]*t,o},grayscale:function(){var t=this.rgb().color,o=.3*t[0]+.59*t[1]+.11*t[2];return l.rgb(o,o,o)},fade:function(t){return this.alpha(this.valpha-this.valpha*t)},opaquer:function(t){return this.alpha(this.valpha+this.valpha*t)},rotate:function(t){var o=this.hsl(),n=o.color[0];return n=(n=(n+t)%360)<0?360+n:n,o.color[0]=n,o},mix:function(t,o){if(!t||!t.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof t);var n=t.rgb(),a=this.rgb(),i=void 0===o?.5:o,h=2*i-1,s=n.alpha()-a.alpha(),c=((h*s==-1?h:(h+s)/(1+h*s))+1)/2,u=1-c;return l.rgb(c*n.red()+u*a.red(),c*n.green()+u*a.green(),c*n.blue()+u*a.blue(),n.alpha()*i+a.alpha()*(1-i))}};var s=function(t){if(n.includes(t))return 1;var a=r(d[2])[t].channels;l.prototype[t]=function(){if(this.model===t)return new l(this);for(var n=arguments.length,a=new Array(n),i=0;i0?new l(a,t):new l([].concat(o((h=r(d[2])[this.model][t].raw(this.color),Array.isArray(h)?h:[h])),[this.valpha]),t);var h},l[t]=function(){for(var o=arguments.length,n=new Array(o),i=0;i1&&(t=i),n(t))};return'conversion'in n&&(o.conversion=n.conversion),o}function t(n){var o=function(){for(var o=arguments.length,t=new Array(o),c=0;c1&&(t=i);var v=n(t);if('object'==typeof v)for(var f=v.length,l=0;l1&&(h-=1)),[360*h,100*u,100*i]},t.rgb.hwb=function(r){var n=r[0],a=r[1],h=r[2];return[t.rgb.hsl(r)[0],100*(.00392156862745098*Math.min(n,Math.min(a,h))),100*(h=1-.00392156862745098*Math.max(n,Math.max(a,h)))]},t.rgb.cmyk=function(r){var n=r[0]/255,a=r[1]/255,t=r[2]/255,h=Math.min(1-n,1-a,1-t);return[100*((1-n-h)/(1-h)||0),100*((1-a-h)/(1-h)||0),100*((1-t-h)/(1-h)||0),100*h]},t.rgb.keyword=function(r){var a=n[r];if(a)return a;var t,h,u,c=1/0;for(var s of Object.keys(_r(d[1]))){var l=_r(d[1])[s],i=(u=l,((h=r)[0]-u[0])**2+(h[1]-u[1])**2+(h[2]-u[2])**2);i.04045?((n+.055)/1.055)**2.4:n/12.92)+.3576*(a=a>.04045?((a+.055)/1.055)**2.4:a/12.92)+.1805*(t=t>.04045?((t+.055)/1.055)**2.4:t/12.92)),100*(.2126*n+.7152*a+.0722*t),100*(.0193*n+.1192*a+.9505*t)]},t.rgb.lab=function(r){var n=t.rgb.xyz(r),a=n[0],h=n[1],u=n[2];return[116*(h=(h/=100)>.008856?h**.3333333333333333:7.787*h+.13793103448275862)-16,500*((a=(a/=95.047)>.008856?a**.3333333333333333:7.787*a+.13793103448275862)-h),200*(h-(u=(u/=108.883)>.008856?u**.3333333333333333:7.787*u+.13793103448275862))]},t.hsl.rgb=function(r){var n,a,t,h=r[0]/360,u=r[1]/100,c=r[2]/100;if(0===u)return[t=255*c,t,t];for(var s=2*c-(n=c<.5?c*(1+u):c+u-c*u),l=[0,0,0],i=0;i<3;i++)(a=h+.3333333333333333*-(i-1))<0&&a++,a>1&&a--,t=6*a<1?s+6*(n-s)*a:2*a<1?n:3*a<2?s+(n-s)*(.6666666666666666-a)*6:s,l[i]=255*t;return l},t.hsl.hsv=function(r){var n=r[0],a=r[1]/100,t=r[2]/100,h=a,u=Math.max(t,.01);return a*=(t*=2)<=1?t:2-t,h*=u<=1?u:2-u,[n,100*(0===t?2*h/(u+h):2*a/(t+a)),100*((t+a)/2)]},t.hsv.rgb=function(r){var n=r[0]/60,a=r[1]/100,t=r[2]/100,h=Math.floor(n)%6,u=n-Math.floor(n),c=255*t*(1-a),s=255*t*(1-a*u),l=255*t*(1-a*(1-u));switch(t*=255,h){case 0:return[t,l,c];case 1:return[s,t,c];case 2:return[c,t,l];case 3:return[c,s,t];case 4:return[l,c,t];case 5:return[t,c,s]}},t.hsv.hsl=function(r){var n,a,t=r[0],h=r[1]/100,u=r[2]/100,c=Math.max(u,.01);a=(2-h)*u;var s=(2-h)*c;return n=h*c,[t,100*(n=(n/=s<=1?s:2-s)||0),100*(a/=2)]},t.hwb.rgb=function(r){var n,a=r[0]/360,t=r[1]/100,h=r[2]/100,u=t+h;u>1&&(t/=u,h/=u);var c=Math.floor(6*a),s=1-h;n=6*a-c,1&c&&(n=1-n);var l,i,o,b=t+n*(s-t);switch(c){default:case 6:case 0:l=s,i=b,o=t;break;case 1:l=b,i=s,o=t;break;case 2:l=t,i=s,o=b;break;case 3:l=t,i=b,o=s;break;case 4:l=b,i=t,o=s;break;case 5:l=s,i=t,o=b}return[255*l,255*i,255*o]},t.cmyk.rgb=function(r){var n=r[0]/100,a=r[1]/100,t=r[2]/100,h=r[3]/100;return[255*(1-Math.min(1,n*(1-h)+h)),255*(1-Math.min(1,a*(1-h)+h)),255*(1-Math.min(1,t*(1-h)+h))]},t.xyz.rgb=function(r){var n,a,t,h=r[0]/100,u=r[1]/100,c=r[2]/100;return n=(n=3.2406*h+-1.5372*u+-.4986*c)>.0031308?1.055*n**.4166666666666667-.055:12.92*n,a=(a=-.9689*h+1.8758*u+.0415*c)>.0031308?1.055*a**.4166666666666667-.055:12.92*a,t=(t=.0557*h+-.204*u+1.057*c)>.0031308?1.055*t**.4166666666666667-.055:12.92*t,[255*(n=Math.min(Math.max(0,n),1)),255*(a=Math.min(Math.max(0,a),1)),255*(t=Math.min(Math.max(0,t),1))]},t.xyz.lab=function(r){var n=r[0],a=r[1],t=r[2];return[116*(a=(a/=100)>.008856?a**.3333333333333333:7.787*a+.13793103448275862)-16,500*((n=(n/=95.047)>.008856?n**.3333333333333333:7.787*n+.13793103448275862)-a),200*(a-(t=(t/=108.883)>.008856?t**.3333333333333333:7.787*t+.13793103448275862))]},t.lab.xyz=function(r){var n,a,t,h=(a=(r[0]+16)/116)**3,u=(n=r[1]/500+a)**3,c=(t=a-r[2]/200)**3;return a=h>.008856?h:(a-.13793103448275862)/7.787,n=u>.008856?u:(n-.13793103448275862)/7.787,t=c>.008856?c:(t-.13793103448275862)/7.787,[n*=95.047,a*=100,t*=108.883]},t.lab.lch=function(r){var n,a=r[0],t=r[1],h=r[2];return(n=360*Math.atan2(h,t)/2/Math.PI)<0&&(n+=360),[a,Math.sqrt(t*t+h*h),n]},t.lch.lab=function(r){var n=r[0],a=r[1],t=r[2]/360*2*Math.PI;return[n,a*Math.cos(t),a*Math.sin(t)]},t.rgb.ansi16=function(n){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,h=r(n,3),u=h[0],c=h[1],s=h[2],l=null===a?t.rgb.hsv(n)[2]:a;if(0===(l=Math.round(l/50)))return 30;var i=30+(Math.round(s/255)<<2|Math.round(c/255)<<1|Math.round(u/255));return 2===l&&(i+=60),i},t.hsv.ansi16=function(r){return t.rgb.ansi16(t.hsv.rgb(r),r[2])},t.rgb.ansi256=function(r){var n=r[0],a=r[1],t=r[2];return n===a&&a===t?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(a/255*5)+Math.round(t/255*5)},t.ansi16.rgb=function(r){var n=r%10;if(0===n||7===n)return r>50&&(n+=3.5),[n=n/10.5*255,n,n];var a=.5*(1+~~(r>50));return[(1&n)*a*255,(n>>1&1)*a*255,(n>>2&1)*a*255]},t.ansi256.rgb=function(r){if(r>=232){var n=10*(r-232)+8;return[n,n,n]}var a;return r-=16,[Math.floor(r/36)/5*255,Math.floor((a=r%36)/6)/5*255,a%6/5*255]},t.rgb.hex=function(r){var n=(((255&Math.round(r[0]))<<16)+((255&Math.round(r[1]))<<8)+(255&Math.round(r[2]))).toString(16).toUpperCase();return'000000'.substring(n.length)+n},t.hex.rgb=function(r){var n=r.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!n)return[0,0,0];var a=n[0];3===n[0].length&&(a=a.split('').map((function(r){return r+r})).join(''));var t=parseInt(a,16);return[t>>16&255,t>>8&255,255&t]},t.rgb.hcg=function(r){var n,a=r[0]/255,t=r[1]/255,h=r[2]/255,u=Math.max(Math.max(a,t),h),c=Math.min(Math.min(a,t),h),s=u-c;return n=s<=0?0:u===a?(t-h)/s%6:u===t?2+(h-a)/s:4+(a-t)/s,n/=6,[360*(n%=1),100*s,100*(s<1?c/(1-s):0)]},t.hsl.hcg=function(r){var n=r[1]/100,a=r[2]/100,t=a<.5?2*n*a:2*n*(1-a),h=0;return t<1&&(h=(a-.5*t)/(1-t)),[r[0],100*t,100*h]},t.hsv.hcg=function(r){var n=r[1]/100,a=r[2]/100,t=n*a,h=0;return t<1&&(h=(a-t)/(1-t)),[r[0],100*t,100*h]},t.hcg.rgb=function(r){var n=r[0]/360,a=r[1]/100,t=r[2]/100;if(0===a)return[255*t,255*t,255*t];var h,u=[0,0,0],c=n%1*6,s=c%1,l=1-s;switch(Math.floor(c)){case 0:u[0]=1,u[1]=s,u[2]=0;break;case 1:u[0]=l,u[1]=1,u[2]=0;break;case 2:u[0]=0,u[1]=1,u[2]=s;break;case 3:u[0]=0,u[1]=l,u[2]=1;break;case 4:u[0]=s,u[1]=0,u[2]=1;break;default:u[0]=1,u[1]=0,u[2]=l}return h=(1-a)*t,[255*(a*u[0]+h),255*(a*u[1]+h),255*(a*u[2]+h)]},t.hcg.hsv=function(r){var n=r[1]/100,a=n+r[2]/100*(1-n),t=0;return a>0&&(t=n/a),[r[0],100*t,100*a]},t.hcg.hsl=function(r){var n=r[1]/100,a=r[2]/100*(1-n)+.5*n,t=0;return a>0&&a<.5?t=n/(2*a):a>=.5&&a<1&&(t=n/(2*(1-a))),[r[0],100*t,100*a]},t.hcg.hwb=function(r){var n=r[1]/100,a=n+r[2]/100*(1-n);return[r[0],100*(a-n),100*(1-a)]},t.hwb.hcg=function(r){var n=r[1]/100,a=1-r[2]/100,t=a-n,h=0;return t<1&&(h=(a-t)/(1-t)),[r[0],100*t,100*h]},t.apple.rgb=function(r){return[r[0]/65535*255,r[1]/65535*255,r[2]/65535*255]},t.rgb.apple=function(r){return[r[0]/255*65535,r[1]/255*65535,r[2]/255*65535]},t.gray.rgb=function(r){return[r[0]/100*255,r[0]/100*255,r[0]/100*255]},t.gray.hsl=function(r){return[0,0,r[0]]},t.gray.hsv=t.gray.hsl,t.gray.hwb=function(r){return[0,100,r[0]]},t.gray.cmyk=function(r){return[0,0,0,r[0]]},t.gray.lab=function(r){return[r[0],0,0]},t.gray.hex=function(r){var n=255&Math.round(r[0]/100*255),a=((n<<16)+(n<<8)+n).toString(16).toUpperCase();return'000000'.substring(a.length)+a},t.rgb.gray=function(r){return[(r[0]+r[1]+r[2])/3/255*100]}}),1058,[38,1059]); +__d((function(g,r,i,a,m,e,d){'use strict';m.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}}),1059,[]); +__d((function(g,r,_i,a,m,e,d){function n(){for(var n={},t=Object.keys(r(d[0])),u=t.length,c=0;c=4&&1!==r[3]&&(t=', '+r[3]),'hwb('+r[0]+', '+r[1]+'%, '+r[2]+'%'+t+')'},n.to.keyword=function(r){return t[r.slice(0,3)]}}),1061,[1059,1062]); +__d((function(g,r,_i,a,m,e,d){'use strict';var t=Array.prototype.concat,n=Array.prototype.slice,o=m.exports=function(o){for(var c=[],u=0,p=o.length;u=0&&(n.splice instanceof Function||Object.getOwnPropertyDescriptor(n,n.length-1)&&'String'!==n.constructor.name))}}),1063,[]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),t=_r(d[1]),r=["disabled","onPress","onPressIn","onPressOut","android_ripple","pressColor","pressOpacity","hoverEffect","style","children"];Object.defineProperty(_e,"__esModule",{value:!0}),_e.PlatformPressable=function(i){var u=i.disabled,f=i.onPress,v=i.onPressIn,y=i.onPressOut,b=i.android_ripple,P=i.pressColor,O=i.pressOpacity,h=void 0===O?.3:O,_=i.hoverEffect,j=i.style,w=i.children,S=t(i,r),k=(0,_r(d[5]).useTheme)().dark,x=o.useState((function(){return new n.Animated.Value(1)})),M=e(x,1)[0],$=function(e,t){s||n.Animated.timing(M,{toValue:e,duration:t,easing:n.Easing.inOut(n.Easing.quad),useNativeDriver:c}).start()};return(0,a.jsxs)(l,Object.assign({accessible:!0,accessibilityRole:'web'===n.Platform.OS&&null!=S.href?'link':'button',onPress:u?void 0:function(e){if('web'===n.Platform.OS&&null!=S.href){var t,r=e.metaKey||e.altKey||e.ctrlKey||e.shiftKey,o=null==e.button||0===e.button,a=[void 0,null,'','self'].includes(null==(t=e.currentTarget)?void 0:t.target);!r&&o&&a&&(e.preventDefault(),null==f||f(e))}else null==f||f(e)},onPressIn:function(e){$(h,0),null==v||v(e)},onPressOut:function(e){$(1,200),null==y||y(e)},android_ripple:s?Object.assign({color:void 0!==P?P:k?'rgba(255, 255, 255, .32)':'rgba(0, 0, 0, .32)'},b):void 0,style:[{cursor:'web'===n.Platform.OS||'ios'===n.Platform.OS?'pointer':'auto',opacity:s?1:M},j]},S,{children:[(0,a.jsx)(p,Object.assign({},_)),w]}))};var o=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=i(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var l=n?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(o,a,l):o[a]=e[a]}return o.default=e,r&&r.set(e,o),o})(_r(d[2])),n=_r(d[3]),a=_r(d[4]);function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(i=function(e){return e?r:t})(e)}var l=n.Animated.createAnimatedComponent(n.Pressable),s='android'===n.Platform.OS&&n.Platform.Version>=21,c='web'!==n.Platform.OS;var u=String.raw,f="__react-navigation_elements_Pressable_hover",v=u` + .${f} { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + border-radius: inherit; + background-color: var(--overlay-color); + opacity: 0; + transition: opacity 0.15s; + } + + a:hover > .${f}, button:hover > .${f} { + opacity: var(--overlay-hover-opacity); + } + + a:active > .${f}, button:active > .${f} { + opacity: var(--overlay-active-opacity); + } +`,p=function(e){var t=e.color,r=e.hoverOpacity,o=void 0===r?.08:r,i=e.activeOpacity,l=void 0===i?.16:i;return'web'!==n.Platform.OS||null==t?null:(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("style",{href:f,precedence:"elements",children:v}),(0,a.jsx)("div",{className:f,style:{'--overlay-color':t,'--overlay-hover-opacity':o,'--overlay-active-opacity':l}})]})}}),1064,[38,134,178,2,224,939]); +__d((function(g,r,i,a,m,e,d){"use strict";var t=r(d[0]),s=["style"];Object.defineProperty(e,"__esModule",{value:!0}),e.Text=function(n){var u=n.style,c=t(n,s),f=(0,r(d[3]).useTheme)(),v=f.colors,x=f.fonts;return(0,l.jsx)(o.Text,Object.assign({},c,{style:[{color:v.text},x.regular,u]}))};var o=r(d[1]),l=r(d[2])}),1065,[134,2,224,939]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),t=_r(d[1]),o=["height","minHeight","maxHeight","backgroundColor","borderBottomColor","borderBottomEndRadius","borderBottomLeftRadius","borderBottomRightRadius","borderBottomStartRadius","borderBottomWidth","borderColor","borderEndColor","borderEndWidth","borderLeftColor","borderLeftWidth","borderRadius","borderRightColor","borderRightWidth","borderStartColor","borderStartWidth","borderStyle","borderTopColor","borderTopEndRadius","borderTopLeftRadius","borderTopRightRadius","borderTopStartRadius","borderTopWidth","borderWidth","boxShadow","elevation","shadowColor","shadowOffset","shadowOpacity","shadowRadius","opacity","transform"];Object.defineProperty(_e,"__esModule",{value:!0}),_e.Header=function(s){var h=(0,_r(d[7]).useSafeAreaInsets)(),c=(0,_r(d[7]).useSafeAreaFrame)(),f=(0,_r(d[8]).useTheme)().colors,p=(0,_r(d[8]).useNavigation)(),y=a.useContext(_r(d[9]).HeaderShownContext),S=a.useState(!1),C=t(S,2),w=C[0],R=C[1],v=a.useState(void 0),x=t(v,2),B=x[0],O=x[1],T=s.layout,j=void 0===T?c:T,W=s.modal,E=void 0!==W&&W,k=s.back,H=s.title,P=s.headerTitle,L=s.headerTitleAlign,_=void 0===L?'ios'===i.Platform.OS?'center':'left':L,A=s.headerLeft,M=void 0===A?k?function(e){return(0,l.jsx)(_r(d[10]).HeaderBackButton,Object.assign({},e))}:void 0:A,V=s.headerSearchBarOptions,D=s.headerTransparent,F=s.headerTintColor,I=s.headerBackground,G=s.headerRight,z=s.headerTitleAllowFontScaling,N=s.headerTitleStyle,q=s.headerLeftContainerStyle,J=s.headerRightContainerStyle,K=s.headerTitleContainerStyle,Q=s.headerBackButtonDisplayMode,U=void 0===Q?'ios'===i.Platform.OS?'default':'minimal':Q,X=s.headerBackTitleStyle,Y=s.headerBackgroundContainerStyle,Z=s.headerStyle,$=s.headerShadowVisible,ee=s.headerPressColor,te=s.headerPressOpacity,oe=s.headerStatusBarHeight,re=void 0===oe?y?0:h.top:oe,ae=(0,_r(d[11]).getDefaultHeaderHeight)(j,E,re),de=i.StyleSheet.flatten(Z||{}),ie=de.height,ne=void 0===ie?ae:ie,le=de.minHeight,se=de.maxHeight,he=de.backgroundColor,ue=de.borderBottomColor,be=de.borderBottomEndRadius,ce=de.borderBottomLeftRadius,fe=de.borderBottomRightRadius,pe=de.borderBottomStartRadius,ge=de.borderBottomWidth,me=de.borderColor,ye=de.borderEndColor,Se=de.borderEndWidth,Ce=de.borderLeftColor,we=de.borderLeftWidth,Re=de.borderRadius,ve=de.borderRightColor,xe=de.borderRightWidth,Be=de.borderStartColor,Oe=de.borderStartWidth,Te=de.borderStyle,je=de.borderTopColor,We=de.borderTopEndRadius,Ee=de.borderTopLeftRadius,ke=de.borderTopRightRadius,He=de.borderTopStartRadius,Pe=de.borderTopWidth,Le=de.borderWidth,Ae=de.boxShadow,Me=de.elevation,Ve=de.shadowColor,De=de.shadowOffset,Fe=de.shadowOpacity,Ie=de.shadowRadius,Ge=de.opacity,ze=de.transform,Ne=(e(de,o),{backgroundColor:he,borderBottomColor:ue,borderBottomEndRadius:be,borderBottomLeftRadius:ce,borderBottomRightRadius:fe,borderBottomStartRadius:pe,borderBottomWidth:ge,borderColor:me,borderEndColor:ye,borderEndWidth:Se,borderLeftColor:Ce,borderLeftWidth:we,borderRadius:Re,borderRightColor:ve,borderRightWidth:xe,borderStartColor:Be,borderStartWidth:Oe,borderStyle:Te,borderTopColor:je,borderTopEndRadius:We,borderTopLeftRadius:Ee,borderTopRightRadius:ke,borderTopStartRadius:He,borderTopWidth:Pe,borderWidth:Le,boxShadow:Ae,elevation:Me,shadowColor:Ve,shadowOffset:De,shadowOpacity:Fe,shadowRadius:Ie,opacity:Ge,transform:ze});for(var qe in Ne)void 0===Ne[qe]&&delete Ne[qe];var Je=Object.assign({},D&&{backgroundColor:'transparent'},(D||!1===$)&&Object.assign({borderBottomWidth:0},i.Platform.select({android:{elevation:0},web:{boxShadow:'none'},default:{shadowOpacity:0}})),Ne),Ke=null!=F?F:i.Platform.select({ios:f.primary,default:f.text}),Qe=M?M({tintColor:Ke,pressColor:ee,pressOpacity:te,displayMode:U,titleLayout:B,screenLayout:j,canGoBack:Boolean(k),onPress:k?p.goBack:void 0,label:null==k?void 0:k.title,labelStyle:X,href:null==k?void 0:k.href}):null,Ue=G?G({tintColor:Ke,pressColor:ee,pressOpacity:te,canGoBack:Boolean(k)}):null,Xe='function'!=typeof P?function(e){return(0,l.jsx)(_r(d[12]).HeaderTitle,Object.assign({},e))}:P;return(0,l.jsxs)(i.Animated.View,{pointerEvents:"box-none",style:[{height:ne,minHeight:le,maxHeight:se,opacity:Ge,transform:ze}],children:[(0,l.jsx)(i.Animated.View,{pointerEvents:"box-none",style:[i.StyleSheet.absoluteFill,Y],children:I?I({style:Je}):(0,l.jsx)(_r(d[13]).HeaderBackground,{pointerEvents:!D||'transparent'!==Je.backgroundColor&&0!==(0,r.default)(Je.backgroundColor).alpha()?'auto':'none',style:Je})}),(0,l.jsx)(i.View,{pointerEvents:"none",style:{height:re}}),(0,l.jsxs)(i.View,{pointerEvents:"box-none",style:[b.content,'ios'===i.Platform.OS&&c.width>=u?b.large:null],children:[(0,l.jsx)(i.Animated.View,{pointerEvents:"box-none",style:[b.start,!w&&'center'===_&&b.expand,{marginStart:h.left},q],children:Qe}),'ios'!==i.Platform.OS&&w?null:(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.Animated.View,{pointerEvents:"box-none",style:[b.title,{maxWidth:'center'===_?j.width-2*((Qe?'minimal'!==U?80:32:16)+(Ue||V?16:0)+Math.max(h.left,h.right)):j.width-((Qe?52:16)+(Ue||V?52:16)+h.left-h.right)},'left'===_&&Qe?{marginStart:4}:{marginHorizontal:16},K],children:Xe({children:H,allowFontScaling:z,tintColor:F,onLayout:function(e){var t=e.nativeEvent.layout,o=t.height,r=t.width;O((function(e){return e&&o===e.height&&r===e.width?e:{height:o,width:r}}))},style:N})}),(0,l.jsxs)(i.Animated.View,{pointerEvents:"box-none",style:[b.end,b.expand,{marginEnd:h.right},J],children:[Ue,V?(0,l.jsx)(_r(d[14]).HeaderButton,{tintColor:Ke,pressColor:ee,pressOpacity:te,onPress:function(){R(!0),null==V||null==V.onOpen||V.onOpen()},children:(0,l.jsx)(_r(d[15]).HeaderIcon,{source:n.default,tintColor:Ke})}):null]})]}),'ios'===i.Platform.OS||w?(0,l.jsx)(_r(d[16]).HeaderSearchBar,Object.assign({},V,{visible:w,onClose:function(){R(!1),null==V||null==V.onClose||V.onClose()},tintColor:F,style:['ios'===i.Platform.OS?[i.StyleSheet.absoluteFill,{paddingTop:re?0:4},{backgroundColor:null!=he?he:f.card}]:!Qe&&{marginStart:8}]})):null]})]})};var r=h(_r(d[2])),a=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var o=s(t);if(o&&o.has(e))return o.get(e);var r={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var n=a?Object.getOwnPropertyDescriptor(e,i):null;n&&(n.get||n.set)?Object.defineProperty(r,i,n):r[i]=e[i]}return r.default=e,o&&o.set(e,r),r})(_r(d[3])),i=_r(d[4]),n=h(_r(d[5])),l=_r(d[6]);function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,o=new WeakMap;return(s=function(e){return e?o:t})(e)}function h(e){return e&&e.__esModule?e:{default:e}}var u=414;var b=i.StyleSheet.create({content:{flex:1,flexDirection:'row',alignItems:'stretch'},large:{marginHorizontal:5},title:{justifyContent:'center'},start:{flexDirection:'row',alignItems:'center',justifyContent:'flex-start'},end:{flexDirection:'row',alignItems:'center',justifyContent:'flex-end'},expand:{flexGrow:1,flexBasis:0}})}),1066,[134,38,1056,178,2,1067,224,459,939,1068,1070,1077,1078,1079,1076,1073,1080]); +__d((function(g,r,i,a,m,e,d){m.exports=r(d[0]).registerAsset({__packager_asset:!0,httpServerLocation:"/assets/node_modules/@react-navigation/elements/lib/commonjs/assets",width:24,height:24,scales:[1,2,3,4],hash:"940453dc5cbfaa96cf907b3aa7791ece",name:"search-icon",type:"png"})}),1067,[891]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HeaderShownContext=void 0;e.HeaderShownContext=(0,r(d[0]).getNamedContext)('HeaderShownContext',!1)}),1068,[1069]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e;Object.defineProperty(_e,"__esModule",{value:!0}),_e.getNamedContext=function(e,r){var a=globalThis[n].get(e);if(a)return a;return(a=t.createContext(r)).displayName=e,globalThis[n].set(e,a),a};var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var a={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var u=o?Object.getOwnPropertyDescriptor(e,l):null;u&&(u.get||u.set)?Object.defineProperty(a,l,u):a[l]=e[l]}return a.default=e,n&&n.set(e,a),a})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}var n='__react_navigation__elements_contexts';globalThis[n]=null!=(e=globalThis[n])?e:new Map}),1069,[178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.HeaderBackButton=function(a){var o=a.disabled,c=a.allowFontScaling,f=a.backImage,y=a.label,p=a.labelStyle,b=a.displayMode,h=void 0===b?'ios'===n.Platform.OS?'default':'minimal':b,O=a.onLabelLayout,w=a.onPress,x=a.pressColor,j=a.pressOpacity,k=a.screenLayout,v=a.tintColor,S=a.titleLayout,M=a.truncatedLabel,L=void 0===M?'Back':M,P=a.accessibilityLabel,_=void 0===P?y&&'Back'!==y?`${y}, back`:'Go back':P,C=a.testID,I=a.style,W=a.href,A=(0,_r(d[6]).useTheme)(),D=A.colors,E=A.fonts,F=(0,_r(d[6]).useLocale)().direction,V=t.useState(null),B=e(V,2),H=B[0],z=B[1],N=t.useState(null),R=e(N,2),T=R[0],G=R[1];return(0,r.jsx)(_r(d[9]).HeaderButton,{disabled:o,href:W,accessibilityLabel:_,testID:C,onPress:function(){w&&requestAnimationFrame((function(){return w()}))},pressColor:x,pressOpacity:j,style:[u.container,I],children:(0,r.jsxs)(t.Fragment,{children:[f?f({tintColor:null!=v?v:D.text}):(0,r.jsx)(_r(d[7]).HeaderIcon,{source:l.default,tintColor:v,style:[u.icon,'minimal'!==h&&u.iconWithLabel]}),(function(){if('minimal'===h)return null;var e=S&&k?(k.width-S.width)/2-(s+_r(d[7]).ICON_MARGIN):null,t='default'===h?y:L,l=e&&H&&T?e>H?t:e>T?L:null:t,a=[E.regular,u.label,p],o=[a,{position:'absolute',top:0,left:0,opacity:0}],b=(0,r.jsxs)(n.View,{style:u.labelWrapper,children:[y&&'default'===h?(0,r.jsx)(n.Animated.Text,{style:o,numberOfLines:1,onLayout:function(e){return z(e.nativeEvent.layout.width)},children:y}):null,L?(0,r.jsx)(n.Animated.Text,{style:o,numberOfLines:1,onLayout:function(e){return G(e.nativeEvent.layout.width)},children:L}):null,l?(0,r.jsx)(n.Animated.Text,{accessible:!1,onLayout:O,style:[v?{color:v}:null,a],numberOfLines:1,allowFontScaling:!!c,children:l}):null]});return f||'ios'!==n.Platform.OS?b:(0,r.jsx)(_r(d[8]).MaskedView,{maskElement:(0,r.jsxs)(n.View,{style:[u.iconMaskContainer,k?{minWidth:k.width/2-27}:null],children:[(0,r.jsx)(n.Image,{source:i.default,resizeMode:"contain",style:[u.iconMask,'rtl'===F&&u.flip]}),(0,r.jsx)(n.View,{style:u.iconMaskFillerRect})]}),children:b})})()]})})};var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=o(t);if(n&&n.has(e))return n.get(e);var l={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in e)if("default"!==r&&{}.hasOwnProperty.call(e,r)){var a=i?Object.getOwnPropertyDescriptor(e,r):null;a&&(a.get||a.set)?Object.defineProperty(l,r,a):l[r]=e[r]}return l.default=e,n&&n.set(e,l),l})(_r(d[1])),n=_r(d[2]),l=a(_r(d[3])),i=a(_r(d[4])),r=_r(d[5]);function a(e){return e&&e.__esModule?e:{default:e}}function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(o=function(e){return e?n:t})(e)}var s='ios'===n.Platform.OS?13:24,c='ios'===n.Platform.OS?22:3,u=n.StyleSheet.create({container:Object.assign({paddingHorizontal:0,minWidth:n.StyleSheet.hairlineWidth},n.Platform.select({ios:null,default:{marginVertical:3,marginHorizontal:11}})),label:{fontSize:17,letterSpacing:.35},labelWrapper:{flexDirection:'row',alignItems:'flex-start',marginEnd:_r(d[7]).ICON_MARGIN},icon:{width:s,marginEnd:c},iconWithLabel:'ios'===n.Platform.OS?{marginEnd:6}:{},iconMaskContainer:{flex:1,flexDirection:'row',justifyContent:'center'},iconMaskFillerRect:{flex:1,backgroundColor:'#000'},iconMask:{height:21,width:13,marginStart:-14.5,marginVertical:12,alignSelf:'center'},flip:{transform:'scaleX(-1)'}})}),1070,[38,178,2,1071,1072,224,939,1073,1074,1076]); +__d((function(g,r,i,a,m,e,d){m.exports=r(d[0]).registerAsset({__packager_asset:!0,httpServerLocation:"/assets/node_modules/@react-navigation/elements/lib/commonjs/assets",width:24,height:24,scales:[1,2,3,4],hash:"dbc3af23c3cbbe45d326afc1d31c2e92",name:"back-icon",type:"png"})}),1071,[891]); +__d((function(g,r,i,a,m,e,d){m.exports=r(d[0]).registerAsset({__packager_asset:!0,httpServerLocation:"/assets/node_modules/@react-navigation/elements/lib/commonjs/assets",width:50,height:85,scales:[1],hash:"0a328cd9c1afd0afe8e3b1ec5165b1b4",name:"back-icon-mask",type:"png"})}),1072,[891]); +__d((function(g,r,i,a,m,e,d){"use strict";var t=r(d[0]),o=["source","style"];Object.defineProperty(e,"__esModule",{value:!0}),e.HeaderIcon=function(n){var l=n.source,I=n.style,f=t(n,o),O=(0,r(d[3]).useTheme)().colors,_=(0,r(d[3]).useLocale)().direction;return(0,c.jsx)(s.Image,Object.assign({source:l,resizeMode:"contain",fadeDuration:0,tintColor:O.text,style:[u.icon,'rtl'===_&&u.flip,I]},f))},e.ICON_SIZE=e.ICON_MARGIN=void 0;var s=r(d[1]),c=r(d[2]);var n=e.ICON_SIZE='ios'===s.Platform.OS?21:24,l=e.ICON_MARGIN='ios'===s.Platform.OS?8:3,u=s.StyleSheet.create({icon:{width:n,height:n,margin:l},flip:{transform:'scaleX(-1)'}})}),1073,[134,2,224,939]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"MaskedView",{enumerable:!0,get:function(){return r(d[0]).MaskedView}})}),1074,[1075]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),r=["children"];Object.defineProperty(_e,"__esModule",{value:!0}),_e.MaskedView=function(n){var i=n.children,f=e(n,r);if(u&&t)return(0,a.jsx)(t,Object.assign({},f,{children:i}));return i};!(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=i(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var f=a?Object.getOwnPropertyDescriptor(e,u):null;f&&(f.get||f.set)?Object.defineProperty(n,u,f):n[u]=e[u]}n.default=e,t&&t.set(e,n)})(_r(d[1]));var t,n=_r(d[2]),a=_r(d[3]);function i(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(i=function(e){return e?t:r})(e)}try{t=_r(d[4]).default}catch(e){}var u=null!=n.UIManager.getViewManagerConfig('RNCMaskedView')}),1075,[134,178,2,224]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HeaderButton=function(n){var c=n.disabled,b=n.onPress,f=n.pressColor,p=n.pressOpacity,u=n.accessibilityLabel,y=n.testID,P=n.style,h=n.href,v=n.children;return(0,s.jsx)(r(d[2]).PlatformPressable,{disabled:c,href:h,accessibilityLabel:u,testID:y,onPress:b,pressColor:f,pressOpacity:p,android_ripple:o,style:[l.container,c&&l.disabled,P],hitSlop:t.Platform.select({ios:void 0,default:{top:16,right:16,bottom:16,left:16}}),children:v})};var t=r(d[0]),s=r(d[1]);var o={borderless:!0,foreground:'android'===t.Platform.OS&&t.Platform.Version>=23,radius:20},l=t.StyleSheet.create({container:{flexDirection:'row',alignItems:'center',paddingHorizontal:8,borderRadius:10},disabled:{opacity:.5}})}),1076,[2,224,1064]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getDefaultHeaderHeight=function(o,f,l){var s,u='ios'===t.Platform.OS&&l>50?l-(5+1/t.PixelRatio.get()):l,P=o.width>o.height;s='ios'===t.Platform.OS?t.Platform.isPad||t.Platform.isTV?f?56:50:P?32:f?56:44:64;return s+u};var t=r(d[0])}),1077,[2]); +__d((function(g,r,i,a,m,e,d){"use strict";var t=r(d[0]),l=["tintColor","style"];Object.defineProperty(e,"__esModule",{value:!0}),e.HeaderTitle=function(c){var f=c.tintColor,u=c.style,v=t(c,l),y=(0,r(d[3]).useTheme)(),b=y.colors,S=y.fonts;return(0,s.jsx)(o.Animated.Text,Object.assign({accessibilityRole:"header","aria-level":"1",numberOfLines:1},v,{style:[{color:void 0===f?b.text:f},o.Platform.select({ios:S.bold,default:S.medium}),n.title,u]}))};var o=r(d[1]),s=r(d[2]);var n=o.StyleSheet.create({title:o.Platform.select({ios:{fontSize:17},android:{fontSize:20},default:{fontSize:18}})})}),1078,[134,2,224,939]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),t=["style"];Object.defineProperty(_e,"__esModule",{value:!0}),_e.HeaderBackground=function(a){var i=a.style,l=e(a,t),s=(0,_r(d[4]).useTheme)(),u=s.colors,c=s.dark;return(0,o.jsx)(r.Animated.View,Object.assign({style:[n.container,Object.assign({backgroundColor:u.card,borderBottomColor:u.border},'ios'===r.Platform.OS&&{shadowColor:c?'rgba(255, 255, 255, 0.45)':'rgba(0, 0, 0, 1)'}),i]},l))};!(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var l=n?Object.getOwnPropertyDescriptor(e,i):null;l&&(l.get||l.set)?Object.defineProperty(o,i,l):o[i]=e[i]}o.default=e,r&&r.set(e,o)})(_r(d[1]));var r=_r(d[2]),o=_r(d[3]);function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}var n=r.StyleSheet.create({container:Object.assign({flex:1},r.Platform.select({android:{elevation:4},ios:{shadowOpacity:.3,shadowRadius:0,shadowOffset:{width:0,height:r.StyleSheet.hairlineWidth}},default:{borderBottomWidth:r.StyleSheet.hairlineWidth}}))})}),1079,[134,178,2,224,939]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),t=_r(d[1]),n=["visible","inputType","autoFocus","placeholder","cancelButtonText","enterKeyHint","onChangeText","onClose","tintColor","style"];Object.defineProperty(_e,"__esModule",{value:!0}),_e.HeaderSearchBar=void 0;var r=f(_r(d[2])),o=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=s(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var l=o?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(r,a,l):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r})(_r(d[3])),a=_r(d[4]),l=f(_r(d[5])),i=f(_r(d[6])),u=f(_r(d[7])),c=_r(d[8]);function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(s=function(e){return e?n:t})(e)}function f(e){return e&&e.__esModule?e:{default:e}}var p={text:'text',number:'numeric',phone:'tel',email:'email'},h='web'!==a.Platform.OS;var y=a.StyleSheet.create({container:{flex:1,flexDirection:'row',alignItems:'stretch'},inputSearchIcon:Object.assign({position:'absolute',opacity:.5,left:a.Platform.select({ios:16,default:4}),top:a.Platform.select({ios:-1,default:17})},a.Platform.select({ios:{height:18,width:18},default:{}})),closeButton:{position:'absolute',opacity:.5,right:a.Platform.select({ios:0,default:8}),top:a.Platform.select({ios:-2,default:17})},clearButton:{position:'absolute',right:0,top:-7,bottom:0,justifyContent:'center',padding:8},clearIcon:{height:16,width:16,opacity:.5},cancelButton:{alignSelf:'center',top:-4},cancelText:{fontSize:17,marginHorizontal:12},searchbarContainer:{flex:1},searchbar:a.Platform.select({ios:{flex:1,fontSize:17,paddingHorizontal:32,marginLeft:16,marginTop:-1,marginBottom:4,borderRadius:8},default:{flex:1,fontSize:18,paddingHorizontal:36,marginRight:8,marginTop:8,marginBottom:8,borderBottomWidth:1}})});_e.HeaderSearchBar=o.forwardRef((function(s,f){var b=s.visible,v=s.inputType,x=s.autoFocus,P=void 0===x||x,C=s.placeholder,S=void 0===C?'Search':C,j=s.cancelButtonText,T=void 0===j?'Cancel':j,B=s.enterKeyHint,w=void 0===B?'search':B,H=s.onChangeText,O=s.onClose,_=s.tintColor,I=s.style,k=t(s,n),M=(0,_r(d[9]).useNavigation)(),z=(0,_r(d[9]).useTheme)(),A=z.dark,R=z.colors,E=z.fonts,V=o.useState(''),D=e(V,2),F=D[0],N=D[1],W=o.useState(b),K=e(W,2),L=K[0],q=K[1],G=o.useState((function(){return new a.Animated.Value(b?1:0)})),J=e(G,1)[0],Q=o.useState((function(){return new a.Animated.Value(0)})),U=e(Q,1)[0],X=o.useRef(b),Y=o.useRef(!1),Z=o.useRef(null);o.useEffect((function(){if(b!==X.current)return a.Animated.timing(J,{toValue:b?1:0,duration:100,useNativeDriver:h}).start((function(e){e.finished&&(q(b),X.current=b)})),function(){J.stopAnimation()}}),[b,J]);var $=''!==F;o.useEffect((function(){Y.current!==$&&a.Animated.timing(U,{toValue:$?1:0,duration:100,useNativeDriver:h}).start((function(e){e.finished&&(Y.current=$)}))}),[U,$]);var ee=o.useCallback((function(){var e,t;null==(e=Z.current)||e.clear(),null==(t=Z.current)||t.focus(),N('')}),[]),te=o.useCallback((function(){ee(),null==H||H({nativeEvent:{text:''}})}),[ee,H]),ne=o.useCallback((function(){te(),O()}),[te,O]);if(o.useEffect((function(){return null==M?void 0:M.addListener('blur',ne)}),[ne,M]),o.useImperativeHandle(f,(function(){return{focus:function(){var e;null==(e=Z.current)||e.focus()},blur:function(){var e;null==(e=Z.current)||e.blur()},setText:function(e){var t;null==(t=Z.current)||t.setNativeProps({text:e}),N(e)},clearText:ee,cancelSearch:ne}}),[ne,ee]),!b&&!L)return null;var re=null!=_?_:R.text;return(0,c.jsxs)(a.Animated.View,{pointerEvents:b?'auto':'none',accessibilityLiveRegion:"polite",accessibilityElementsHidden:!b,importantForAccessibility:b?'auto':'no-hide-descendants',style:[y.container,{opacity:J},I],children:[(0,c.jsxs)(a.View,{style:y.searchbarContainer,children:[(0,c.jsx)(_r(d[10]).HeaderIcon,{source:u.default,tintColor:re,style:y.inputSearchIcon}),(0,c.jsx)(a.TextInput,Object.assign({},k,{ref:Z,onChange:H,onChangeText:N,autoFocus:P,inputMode:p[null!=v?v:'text'],enterKeyHint:w,placeholder:S,placeholderTextColor:(0,r.default)(re).alpha(.5).string(),cursorColor:R.primary,selectionHandleColor:R.primary,selectionColor:(0,r.default)(R.primary).alpha(.3).string(),style:[E.regular,y.searchbar,{backgroundColor:a.Platform.select({ios:A?'rgba(255, 255, 255, 0.1)':'rgba(0, 0, 0, 0.1)',default:'transparent'}),color:re,borderBottomColor:(0,r.default)(re).alpha(.2).string()}]})),'ios'===a.Platform.OS?(0,c.jsx)(_r(d[11]).PlatformPressable,{onPress:te,style:[{opacity:U,transform:[{scale:U}]},y.clearButton],children:(0,c.jsx)(a.Image,{source:l.default,resizeMode:"contain",tintColor:re,style:y.clearIcon})}):null]}),'ios'!==a.Platform.OS?(0,c.jsx)(_r(d[12]).HeaderButton,{onPress:function(){F?te():O()},style:y.closeButton,children:(0,c.jsx)(_r(d[10]).HeaderIcon,{source:i.default,tintColor:re})}):null,'ios'===a.Platform.OS?(0,c.jsx)(_r(d[11]).PlatformPressable,{onPress:ne,style:y.cancelButton,children:(0,c.jsx)(_r(d[13]).Text,{style:[E.regular,{color:null!=_?_:R.primary},y.cancelText],children:T})}):null]})}))}),1080,[38,134,1056,178,2,1081,1082,1067,224,939,1073,1064,1076,1065]); +__d((function(g,r,i,a,m,e,d){m.exports=r(d[0]).registerAsset({__packager_asset:!0,httpServerLocation:"/assets/node_modules/@react-navigation/elements/lib/commonjs/assets",width:64,height:64,scales:[1,1,2,3,4],hash:"61378328a719f21f093de82dd89ecfb0",name:"clear-icon",type:"png"})}),1081,[891]); +__d((function(g,r,i,a,m,e,d){m.exports=r(d[0]).registerAsset({__packager_asset:!0,httpServerLocation:"/assets/node_modules/@react-navigation/elements/lib/commonjs/assets",width:96,height:96,scales:[1,1,2,3,4],hash:"3162e8a244d8f6fbd259e79043e23ce4",name:"close-icon",type:"png"})}),1082,[891]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HeaderBackContext=void 0;e.HeaderBackContext=(0,r(d[0]).getNamedContext)('HeaderBackContext',void 0)}),1083,[1069]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HeaderHeightContext=void 0;e.HeaderHeightContext=(0,r(d[0]).getNamedContext)('HeaderHeightContext',void 0)}),1084,[1069]); +__d((function(g,r,i,a,m,e,d){"use strict";var t=r(d[0]),l=["tintColor","style"];Object.defineProperty(e,"__esModule",{value:!0}),e.Label=function(n){var c=n.tintColor,u=n.style,b=t(n,l);return(0,o.jsx)(r(d[3]).Text,Object.assign({numberOfLines:1},b,{style:[s.label,null!=c&&{color:c},u]}))};var n=r(d[1]),o=r(d[2]);var s=n.StyleSheet.create({label:{textAlign:'center',backgroundColor:'transparent'}})}),1085,[134,2,224,1065]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.MissingIcon=function(t){var c=t.color,s=t.size,l=t.style;return(0,n.jsx)(r(d[2]).Text,{style:[o.icon,{color:c,fontSize:s},l],children:"\u23f7"})};var t=r(d[0]),n=r(d[1]);var o=t.StyleSheet.create({icon:{backgroundColor:'transparent'}})}),1086,[2,224,1065]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),t=["visible","children","style"];Object.defineProperty(_e,"__esModule",{value:!0}),_e.ResourceSavingView=function(o){var a=o.visible,l=o.children,c=o.style,f=e(o,t);if('web'===n.Platform.OS)return(0,r.jsx)(n.View,Object.assign({hidden:!a,style:[{display:a?'flex':'none'},i.container,c],pointerEvents:a?'auto':'none'},f,{children:l}));return(0,r.jsx)(n.View,{style:[i.container,c],pointerEvents:a?'auto':'none',children:(0,r.jsx)(n.View,{collapsable:!1,removeClippedSubviews:'ios'!==n.Platform.OS&&'macos'!==n.Platform.OS||!a,pointerEvents:a?'auto':'none',style:a?i.attached:i.detached,children:l})})};!(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=o(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var l=i?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(r,a,l):r[a]=e[a]}r.default=e,n&&n.set(e,r)})(_r(d[1]));var n=_r(d[2]),r=_r(d[3]);function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(o=function(e){return e?n:t})(e)}var i=n.StyleSheet.create({container:{flex:1,overflow:'hidden'},attached:{flex:1},detached:{flex:1,top:3e4}})}),1087,[134,178,2,224]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.SafeAreaProviderCompat=f;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var i=n(t);if(i&&i.has(e))return i.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var l=o?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(r,a,l):r[a]=e[a]}return r.default=e,i&&i.set(e,r),r})(_r(d[1])),i=_r(d[2]),r=_r(d[3]);function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,i=new WeakMap;return(n=function(e){return e?i:t})(e)}var o=i.Dimensions.get('window'),a=o.width,l=void 0===a?0:a,c=o.height,u=void 0===c?0:c,s='web'===i.Platform.OS||null==_r(d[4]).initialWindowMetrics?{frame:{x:0,y:0,width:l,height:u},insets:{top:0,left:0,right:0,bottom:0}}:_r(d[4]).initialWindowMetrics;function f(e){var n=e.children,o=e.style;return t.useContext(_r(d[4]).SafeAreaInsetsContext)?(0,r.jsx)(i.View,{style:[v.container,o],children:n}):('web'===i.Platform.OS&&(n=(0,r.jsx)(h,{initialMetrics:s,children:n})),(0,r.jsx)(_r(d[4]).SafeAreaProvider,{initialMetrics:s,style:o,children:n}))}var h=function(n){var o=n.initialMetrics,a=n.children,l=t.useRef(null),c=t.useState(o.frame),u=e(c,2),s=u[0],f=u[1];return t.useEffect((function(){if(null!=l.current){var e,t=l.current.getBoundingClientRect();f({x:t.x,y:t.y,width:t.width,height:t.height});var i=new ResizeObserver((function(t){var i=t[0];if(i){var r=i.contentRect,n=r.x,o=r.y,a=r.width,l=r.height;clearTimeout(e),e=setTimeout((function(){f({x:n,y:o,width:a,height:l})}),100)}}));return i.observe(l.current),function(){i.disconnect(),clearTimeout(e)}}}),[]),(0,r.jsxs)(_r(d[4]).SafeAreaFrameContext.Provider,{value:s,children:[(0,r.jsx)("div",{ref:l,style:Object.assign({},i.StyleSheet.absoluteFillObject,{pointerEvents:'none',visibility:'hidden'})}),a]})};f.initialMetrics=s;var v=i.StyleSheet.create({container:{flex:1}})}),1088,[38,178,2,224,459]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.Screen=function(o){var i=(0,_r(d[4]).useSafeAreaFrame)(),l=(0,_r(d[4]).useSafeAreaInsets)(),u=t.useContext(_r(d[5]).HeaderShownContext),s=t.useContext(_r(d[6]).HeaderHeightContext),c=o.focused,f=o.modal,v=void 0!==f&&f,h=o.header,p=o.headerShown,x=void 0===p||p,y=o.headerTransparent,b=o.headerStatusBarHeight,j=void 0===b?u?0:l.top:b,w=o.navigation,H=o.route,P=o.children,S=o.style,_=t.useState((function(){return(0,_r(d[7]).getDefaultHeaderHeight)(i,v,j)})),C=e(_,2),O=C[0],M=C[1];return(0,r.jsxs)(_r(d[8]).Background,{accessibilityElementsHidden:!c,importantForAccessibility:c?'auto':'no-hide-descendants',style:[a.container,S],collapsable:!1,children:[x?(0,r.jsx)(_r(d[9]).NavigationContext.Provider,{value:w,children:(0,r.jsx)(_r(d[9]).NavigationRouteContext.Provider,{value:H,children:(0,r.jsx)(n.View,{pointerEvents:"box-none",onLayout:function(e){var t=e.nativeEvent.layout.height;M(t)},style:[a.header,y?a.absolute:null],children:h})})}):null,(0,r.jsx)(n.View,{style:a.content,children:(0,r.jsx)(_r(d[5]).HeaderShownContext.Provider,{value:u||!1!==x,children:(0,r.jsx)(_r(d[6]).HeaderHeightContext.Provider,{value:x?O:null!=s?s:0,children:P})})})]})};var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=o(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var l=a?Object.getOwnPropertyDescriptor(e,i):null;l&&(l.get||l.set)?Object.defineProperty(r,i,l):r[i]=e[i]}return r.default=e,n&&n.set(e,r),r})(_r(d[1])),n=_r(d[2]),r=_r(d[3]);function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(o=function(e){return e?n:t})(e)}var a=n.StyleSheet.create({container:{flex:1},content:{flex:1},header:{zIndex:1},absolute:{position:'absolute',top:0,start:0,end:0}})}),1089,[38,178,2,224,459,1068,1084,1077,1054,939]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getDefaultSidebarWidth=void 0;e.getDefaultSidebarWidth=function(t){var u=t.width;return u-56<=360?u-56:360}}),1090,[]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getHeaderTitle=function(t,l){return'string'==typeof t.headerTitle?t.headerTitle:void 0!==t.title?t.title:l}}),1091,[]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getLabel=function(t,l){return void 0!==t.label?t.label:void 0!==t.title?t.title:l}}),1092,[]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useHeaderHeight=function(){var t=e.useContext(_r(d[1]).HeaderHeightContext);if(void 0===t)throw new Error("Couldn't find the header height. Are you inside a screen in a navigator with a header?");return t};var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var a=i?Object.getOwnPropertyDescriptor(e,u):null;a&&(a.get||a.set)?Object.defineProperty(o,u,a):o[u]=e[u]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}}),1093,[178,1084]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0})}),1094,[]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.debounce=function(t,n){var u;return function(){for(var o=this,c=arguments.length,f=new Array(c),l=0;l=14&&null==f&&(null==Y||'System'===Y)&&null==ee&&!1!==s,Te='center'===H,be=(0,n.jsxs)(n.Fragment,{children:['ios'===t.Platform.OS?(0,n.jsxs)(n.Fragment,{children:[null!=se?(0,n.jsx)(r(d[6]).ScreenStackHeaderLeftView,{children:se}):null,null!=Se?(0,n.jsx)(r(d[6]).ScreenStackHeaderCenterView,{children:Se}):null]}):(0,n.jsxs)(n.Fragment,{children:[null!=se||'function'==typeof V?(0,n.jsxs)(r(d[6]).ScreenStackHeaderLeftView,{style:Te?null:{flex:1},children:[se,'center'!==H?'function'==typeof V?(0,n.jsx)(t.View,{style:{flex:1},children:Se}):(0,n.jsx)(t.View,{style:{flex:1},children:(0,n.jsx)(r(d[5]).HeaderTitle,{tintColor:R,style:ce,children:le})}):null]}):null,Te?(0,n.jsx)(r(d[6]).ScreenStackHeaderCenterView,{children:'function'==typeof V?Se:(0,n.jsx)(r(d[5]).HeaderTitle,{tintColor:R,style:ce,children:le})}):null]}),void 0!==u?(0,n.jsx)(r(d[6]).ScreenStackHeaderBackButtonImage,{source:u}):null,null!=fe?(0,n.jsx)(r(d[6]).ScreenStackHeaderRightView,{children:fe}):null,ye?(0,n.jsx)(r(d[6]).ScreenStackHeaderSearchBarView,{children:(0,n.jsx)(r(d[6]).SearchBar,Object.assign({},L))}):null]});return{backButtonInCustomView:ge,backgroundColor:ue,backTitle:f,backTitleVisible:Be?void 0:'minimal'!==h,backButtonDisplayMode:Be?h:void 0,backTitleFontFamily:Y,backTitleFontSize:ee,blurEffect:w,color:R,direction:_,disableBackButtonMenu:!1===s,hidden:!1===C,hideBackButton:!1===y,hideShadow:!1===k||null!=F||O&&!0!==k,largeTitle:T,largeTitleBackgroundColor:ae,largeTitleColor:ie,largeTitleFontFamily:Z,largeTitleFontSize:oe,largeTitleFontWeight:de,largeTitleHideShadow:!1===b,title:le,titleColor:te,titleFontFamily:$,titleFontSize:re,titleFontWeight:String(ne),topInsetEnabled:E,translucent:!0===ke,children:be}};var t=r(d[1]),n=r(d[2])}),1096,[38,2,224,939,1097,1053,1098]); +__d((function(g,r,i,a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.processFonts=function(e){var n,o=null==(n=t.default.fontFamily)?void 0:n.process;if('function'==typeof o)return e.map(o);return e};var e,t=(e=r(d[0]))&&e.__esModule?e:{default:e}}),1097,[192]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0});var r={enableScreens:!0,enableFreeze:!0,screensEnabled:!0,freezeEnabled:!0,Screen:!0,InnerScreen:!0,ScreenContext:!0,ScreenStackHeaderConfig:!0,ScreenStackHeaderSubview:!0,ScreenStackHeaderLeftView:!0,ScreenStackHeaderCenterView:!0,ScreenStackHeaderRightView:!0,ScreenStackHeaderBackButtonImage:!0,ScreenStackHeaderSearchBarView:!0,SearchBar:!0,ScreenContainer:!0,ScreenStack:!0,ScreenStackItem:!0,FullWindowOverlay:!0,ScreenFooter:!0,ScreenContentWrapper:!0,isSearchBarAvailableForCurrentPlatform:!0,compatibilityFlags:!0,executeNativeBackPress:!0,useTransitionProgress:!0};Object.defineProperty(_e,"FullWindowOverlay",{enumerable:!0,get:function(){return i.default}}),Object.defineProperty(_e,"InnerScreen",{enumerable:!0,get:function(){return t.InnerScreen}}),Object.defineProperty(_e,"Screen",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(_e,"ScreenContainer",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(_e,"ScreenContentWrapper",{enumerable:!0,get:function(){return f.default}}),Object.defineProperty(_e,"ScreenContext",{enumerable:!0,get:function(){return t.ScreenContext}}),Object.defineProperty(_e,"ScreenFooter",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(_e,"ScreenStack",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(_e,"ScreenStackHeaderBackButtonImage",{enumerable:!0,get:function(){return _r(d[1]).ScreenStackHeaderBackButtonImage}}),Object.defineProperty(_e,"ScreenStackHeaderCenterView",{enumerable:!0,get:function(){return _r(d[1]).ScreenStackHeaderCenterView}}),Object.defineProperty(_e,"ScreenStackHeaderConfig",{enumerable:!0,get:function(){return _r(d[1]).ScreenStackHeaderConfig}}),Object.defineProperty(_e,"ScreenStackHeaderLeftView",{enumerable:!0,get:function(){return _r(d[1]).ScreenStackHeaderLeftView}}),Object.defineProperty(_e,"ScreenStackHeaderRightView",{enumerable:!0,get:function(){return _r(d[1]).ScreenStackHeaderRightView}}),Object.defineProperty(_e,"ScreenStackHeaderSearchBarView",{enumerable:!0,get:function(){return _r(d[1]).ScreenStackHeaderSearchBarView}}),Object.defineProperty(_e,"ScreenStackHeaderSubview",{enumerable:!0,get:function(){return _r(d[1]).ScreenStackHeaderSubview}}),Object.defineProperty(_e,"ScreenStackItem",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(_e,"SearchBar",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(_e,"compatibilityFlags",{enumerable:!0,get:function(){return _r(d[2]).compatibilityFlags}}),Object.defineProperty(_e,"enableFreeze",{enumerable:!0,get:function(){return _r(d[3]).enableFreeze}}),Object.defineProperty(_e,"enableScreens",{enumerable:!0,get:function(){return _r(d[3]).enableScreens}}),Object.defineProperty(_e,"executeNativeBackPress",{enumerable:!0,get:function(){return _r(d[2]).executeNativeBackPress}}),Object.defineProperty(_e,"freezeEnabled",{enumerable:!0,get:function(){return _r(d[3]).freezeEnabled}}),Object.defineProperty(_e,"isSearchBarAvailableForCurrentPlatform",{enumerable:!0,get:function(){return _r(d[2]).isSearchBarAvailableForCurrentPlatform}}),Object.defineProperty(_e,"screensEnabled",{enumerable:!0,get:function(){return _r(d[3]).screensEnabled}}),Object.defineProperty(_e,"useTransitionProgress",{enumerable:!0,get:function(){return l.default}}),_r(d[4]),Object.keys(_r(d[5])).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||e in _e&&_e[e]===_r(d[5])[e]||Object.defineProperty(_e,e,{enumerable:!0,get:function(){return _r(d[5])[e]}}))}));var t=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=b(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var c in e)if("default"!==c&&{}.hasOwnProperty.call(e,c)){var u=a?Object.getOwnPropertyDescriptor(e,c):null;u&&(u.get||u.set)?Object.defineProperty(n,c,u):n[c]=e[c]}return n.default=e,t&&t.set(e,n),n})(_r(d[6])),n=e(_r(d[7])),a=e(_r(d[8])),c=e(_r(d[9])),u=e(_r(d[10])),i=e(_r(d[11])),o=e(_r(d[12])),f=e(_r(d[13])),l=e(_r(d[14]));function b(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(b=function(e){return e?t:r})(e)}}),1098,[1,1099,1102,1103,1104,1105,1106,1113,1115,1118,1122,1128,1126,1124,1130]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.ScreenStackHeaderSubview=e.ScreenStackHeaderSearchBarView=e.ScreenStackHeaderRightView=e.ScreenStackHeaderLeftView=e.ScreenStackHeaderConfig=e.ScreenStackHeaderCenterView=e.ScreenStackHeaderBackButtonImage=void 0;var n=t(r(d[1])),c=t(r(d[2])),s=r(d[3]),S=t(r(d[4])),o=t(r(d[5])),u=["style"],f=["style"],l=["style"],w=e.ScreenStackHeaderSubview=o.default;(e.ScreenStackHeaderConfig=c.default.forwardRef((function(t,n){return(0,r(d[6]).jsx)(S.default,Object.assign({},t,{ref:n,style:y.headerConfig,pointerEvents:"box-none"}))}))).displayName='ScreenStackHeaderConfig';e.ScreenStackHeaderBackButtonImage=function(t){return(0,r(d[6]).jsx)(w,{type:"back",style:y.headerSubview,children:(0,r(d[6]).jsx)(s.Image,Object.assign({resizeMode:"center",fadeDuration:0},t))})},e.ScreenStackHeaderRightView=function(t){var c=t.style,s=(0,n.default)(t,u);return(0,r(d[6]).jsx)(w,Object.assign({},s,{type:"right",style:[y.headerSubview,c]}))},e.ScreenStackHeaderLeftView=function(t){var c=t.style,s=(0,n.default)(t,f);return(0,r(d[6]).jsx)(w,Object.assign({},s,{type:"left",style:[y.headerSubview,c]}))},e.ScreenStackHeaderCenterView=function(t){var c=t.style,s=(0,n.default)(t,l);return(0,r(d[6]).jsx)(w,Object.assign({},s,{type:"center",style:[y.headerSubviewCenter,c]}))},e.ScreenStackHeaderSearchBarView=function(t){return(0,r(d[6]).jsx)(w,Object.assign({},t,{type:"searchBar",style:y.headerSubview}))};var y=s.StyleSheet.create({headerSubview:{flexDirection:'row',alignItems:'center',justifyContent:'center'},headerSubviewCenter:{flexDirection:'row',alignItems:'center',justifyContent:'center',flexShrink:1},headerConfig:{position:'absolute',width:'100%',flexDirection:'row',justifyContent:'space-between',alignItems:'ios'===s.Platform.OS?'center':void 0}})}),1099,[1,134,178,2,1100,1101,223]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;t(r(d[1]));var o=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RNSScreenStackHeaderConfig',directEventTypes:{topAttached:{registrationName:'onAttached'},topDetached:{registrationName:'onDetached'}},validAttributes:Object.assign({backgroundColor:{process:r(d[2]).default},backTitle:!0,backTitleFontFamily:!0,backTitleFontSize:!0,backTitleVisible:!0,color:{process:r(d[2]).default},direction:!0,hidden:!0,hideShadow:!0,largeTitle:!0,largeTitleFontFamily:!0,largeTitleFontSize:!0,largeTitleFontWeight:!0,largeTitleBackgroundColor:{process:r(d[2]).default},largeTitleHideShadow:!0,largeTitleColor:{process:r(d[2]).default},translucent:!0,title:!0,titleFontFamily:!0,titleFontSize:!0,titleFontWeight:!0,titleColor:{process:r(d[2]).default},disableBackButtonMenu:!0,backButtonDisplayMode:!0,hideBackButton:!0,backButtonInCustomView:!0,blurEffect:!0,topInsetEnabled:!0},r(d[3]).ConditionallyIgnoredEventHandlers({onAttached:!0,onDetached:!0}))};e.default=r(d[4]).get('RNSScreenStackHeaderConfig',(function(){return o}))}),1100,[1,463,188,221,185]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;t(r(d[1]));var _=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RNSScreenStackHeaderSubview',validAttributes:{type:!0}};e.default=r(d[2]).get('RNSScreenStackHeaderSubview',(function(){return _}))}),1101,[1,463,185]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.compatibilityFlags=void 0,e.executeNativeBackPress=function(){return t.BackHandler.exitApp(),!0},e.isSearchBarAvailableForCurrentPlatform=void 0;var t=r(d[0]);e.isSearchBarAvailableForCurrentPlatform=['ios','android'].includes(t.Platform.OS);e.compatibilityFlags={isNewBackTitleImplementation:!0,usesHeaderFlexboxImplementation:!0}}),1102,[2]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.enableFreeze=function(){var n=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(!t)return;l=n},e.enableScreens=function(){var l=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];if(o=l,!t)return;o&&!n.UIManager.getViewManagerConfig('RNSScreen')&&console.error("Screen native module hasn't been linked. Please check the react-native-screens README for more details")},e.freezeEnabled=function(){return l},e.isNativePlatformSupported=void 0,e.screensEnabled=function(){return o};var n=r(d[0]),t=e.isNativePlatformSupported='ios'===n.Platform.OS||'android'===n.Platform.OS||'windows'===n.Platform.OS,o=t;var l=!1}),1103,[2]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=r(d[0]);e.default=u.TurboModuleRegistry.get('RNSModule')}),1104,[2]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0})}),1105,[]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.ScreenContext=e.InnerScreen=void 0;var n=t(r(d[1])),l=t(r(d[2])),o=r(d[3]),s=t(r(d[4])),u=t(r(d[5])),v=t(r(d[6])),c=t(r(d[7])),f=["enabled","freezeOnBlur","shouldFreeze"],p=["active","activityState","children","isNativeStack","gestureResponseDistance","onGestureCancel","style"],b=["active","activityState","style","onComponentRef"],y=o.Animated.createAnimatedComponent(v.default),h=o.Animated.createAnimatedComponent(c.default),A=[-1],C=[1],w=[.5],S=[.5,1];function R(t,n){return'last'===t?t=n:null==t&&(t=0),x(t,0,n)?t:0}function x(t,n,l){return Number.isInteger(t)&&t>=n&&t<=l}var D=e.InnerScreen=l.default.forwardRef((function(t,v){var c=l.default.useRef(null);l.default.useImperativeHandle(v,(function(){return c.current}),[]);var D=(0,r(d[8]).usePrevious)(t.activityState),j=function(n){c.current=n,null==t.onComponentRef||t.onComponentRef(n)},E=l.default.useRef(new o.Animated.Value(0)).current,I=l.default.useRef(new o.Animated.Value(0)).current,O=l.default.useRef(new o.Animated.Value(0)).current,P=t.enabled,N=void 0===P?(0,r(d[9]).screensEnabled)():P,z=t.freezeOnBlur,_=void 0===z?(0,r(d[9]).freezeEnabled)():z,k=t.shouldFreeze,V=(0,n.default)(t,f),W=V.sheetAllowedDetents,G=void 0===W?[1]:W,T=V.sheetLargestUndimmedDetentIndex,F=void 0===T?-1:T,M=V.sheetGrabberVisible,B=void 0!==M&&M,L=V.sheetCornerRadius,U=void 0===L?-1:L,H=V.sheetExpandsWhenScrolledToEdge,q=void 0===H||H,J=V.sheetElevation,K=void 0===J?24:J,Q=V.sheetInitialDetentIndex,X=void 0===Q?0:Q,Y=V.stackPresentation,Z=V.onAppear,$=V.onDisappear,ee=V.onWillAppear,te=V.onWillDisappear;if(N&&r(d[9]).isNativePlatformSupported){var ne,ae,ie,re,le,oe=(we=G,Array.isArray(we)?('android'===o.Platform.OS&&we.length>3&&(we=we.slice(0,3)),we):'fitToContents'===we?A:'large'===we?C:'medium'===we?w:'all'===we?S:C),se=(Ae=F,Ce=oe.length-1,'number'==typeof Ae?x(Ae,-1,Ce)?Ae:-1:'last'===Ae?Ce:'none'===Ae||'all'===Ae?-1:'large'===Ae?1:'medium'===Ae?0:-1),de=R(X,oe.length-1),ue=o.Platform.select({ios:!(void 0===Y||'push'===Y||'containedModal'===Y||'containedTransparentModal'===Y),android:!1,default:!1})?h:y,ve=V.active,ce=V.activityState,fe=V.children,pe=V.isNativeStack,ge=V.gestureResponseDistance,me=V.onGestureCancel,be=V.style,ye=(0,n.default)(V,p);if(void 0!==ve&&void 0===ce&&(console.warn('It appears that you are using old version of react-navigation library. Please update @react-navigation/bottom-tabs, @react-navigation/stack and @react-navigation/drawer to version 5.10.0 or above to take full advantage of new functionality added to react-native-screens'),ce=0!==ve?2:0),pe&&void 0!==D&&void 0!==ce&&D>ce)throw new Error('[RNScreens] activityState cannot be decreased in NativeStack');var he=_&&(void 0!==k?k:0===ce);return(0,r(d[10]).jsx)(u.default,{freeze:he,children:(0,r(d[10]).jsx)(ue,Object.assign({},ye,{onAppear:Z,onDisappear:$,onWillAppear:ee,onWillDisappear:te,onGestureCancel:null!=(ne=me)?ne:function(){},style:[be,{zIndex:void 0}],activityState:ce,sheetAllowedDetents:oe,sheetLargestUndimmedDetent:se,sheetElevation:K,sheetGrabberVisible:B,sheetCornerRadius:U,sheetExpandsWhenScrolledToEdge:q,sheetInitialDetent:de,gestureResponseDistance:{start:null!=(ae=null==ge?void 0:ge.start)?ae:-1,end:null!=(ie=null==ge?void 0:ge.end)?ie:-1,top:null!=(re=null==ge?void 0:ge.top)?re:-1,bottom:null!=(le=null==ge?void 0:ge.bottom)?le:-1},ref:function(t){var n,l;null!=t&&null!=(n=t.viewConfig)&&null!=(n=n.validAttributes)&&n.style?(t.viewConfig.validAttributes.style=Object.assign({},t.viewConfig.validAttributes.style,{display:null}),j(t)):null!=t&&null!=(l=t._viewConfig)&&null!=(l=l.validAttributes)&&l.style&&(t._viewConfig.validAttributes.style=Object.assign({},t._viewConfig.validAttributes.style,{display:null}),j(t))},onTransitionProgress:pe?o.Animated.event([{nativeEvent:{progress:I,closing:E,goingForward:O}}],{useNativeDriver:!0}):void 0,children:pe?(0,r(d[10]).jsx)(s.default.Provider,{value:{progress:I,closing:E,goingForward:O},children:fe}):fe}))})}var Ae,Ce,we,Se=V.active,Re=V.activityState,xe=V.style,De=(V.onComponentRef,(0,n.default)(V,b));return void 0!==Se&&void 0===Re&&(Re=0!==Se?2:0),(0,r(d[10]).jsx)(o.Animated.View,Object.assign({style:[xe,{display:0!==Re?'flex':'none'}],ref:j},De))})),j=e.ScreenContext=l.default.createContext(D),E=l.default.forwardRef((function(t,n){var o=l.default.useContext(j)||D;return(0,r(d[10]).jsx)(o,Object.assign({},t,{ref:n}))}));E.displayName='Screen';e.default=E}),1106,[1,134,178,2,1107,1108,1110,1111,1112,1103,223]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&{}.hasOwnProperty.call(e,f)){var a=u?Object.getOwnPropertyDescriptor(e,f):null;a&&(a.get||a.set)?Object.defineProperty(o,f,a):o[f]=e[f]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.default=e.createContext(void 0)}),1107,[178]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var u=t(r(d[1])),f=t(r(d[2]));e.default=function(t){var n=t.freeze,c=t.children,l=f.default.useState(!1),o=(0,u.default)(l,2),v=o[0],s=o[1];return f.default.useEffect((function(){var t=setImmediate((function(){s(n)}));return function(){clearImmediate(t)}}),[n]),(0,r(d[3]).jsx)(r(d[4]).Freeze,{freeze:!!n&&v,children:c})}}),1108,[1,38,178,223,1109]); +__d((function(g,_r,_i,_a,m,_e,d){Object.defineProperty(_e,"__esModule",{value:!0}),_e.Freeze=function(r){var n=r.freeze,u=r.children,f=r.placeholder,o=void 0===f?null:f;return(0,_r(d[1]).jsx)(e.Suspense,{fallback:o,children:(0,_r(d[1]).jsx)(t,{freeze:n,children:u})})};var e=(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=r(n);if(t&&t.has(e))return t.get(e);var u={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var i=f?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(u,o,i):u[o]=e[o]}return u.default=e,t&&t.set(e,u),u})(_r(d[0]));function r(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,t=new WeakMap;return(r=function(e){return e?t:n})(e)}var n={then:function(){}};function t(r){var t=r.freeze,u=r.children;if(t)throw n;return(0,_r(d[1]).jsx)(e.Fragment,{children:u})}}),1109,[178,223]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;t(r(d[1]));var n=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RNSScreen',directEventTypes:{topAppear:{registrationName:'onAppear'},topDisappear:{registrationName:'onDisappear'},topDismissed:{registrationName:'onDismissed'},topNativeDismissCancelled:{registrationName:'onNativeDismissCancelled'},topWillAppear:{registrationName:'onWillAppear'},topWillDisappear:{registrationName:'onWillDisappear'},topHeaderHeightChange:{registrationName:'onHeaderHeightChange'},topTransitionProgress:{registrationName:'onTransitionProgress'},topGestureCancel:{registrationName:'onGestureCancel'},topHeaderBackButtonClicked:{registrationName:'onHeaderBackButtonClicked'},topSheetDetentChanged:{registrationName:'onSheetDetentChanged'}},validAttributes:Object.assign({sheetAllowedDetents:!0,sheetLargestUndimmedDetent:!0,sheetGrabberVisible:!0,sheetCornerRadius:!0,sheetExpandsWhenScrolledToEdge:!0,sheetInitialDetent:!0,sheetElevation:!0,customAnimationOnSwipe:!0,fullScreenSwipeEnabled:!0,fullScreenSwipeShadowEnabled:!0,homeIndicatorHidden:!0,preventNativeDismiss:!0,gestureEnabled:!0,statusBarColor:{process:r(d[2]).default},statusBarHidden:!0,screenOrientation:!0,statusBarAnimation:!0,statusBarStyle:!0,statusBarTranslucent:!0,gestureResponseDistance:!0,stackPresentation:!0,stackAnimation:!0,transitionDuration:!0,replaceAnimation:!0,swipeDirection:!0,hideKeyboardOnSwipe:!0,activityState:!0,navigationBarColor:{process:r(d[2]).default},navigationBarTranslucent:!0,navigationBarHidden:!0,nativeBackButtonDismissalEnabled:!0},r(d[3]).ConditionallyIgnoredEventHandlers({onAppear:!0,onDisappear:!0,onDismissed:!0,onNativeDismissCancelled:!0,onWillAppear:!0,onWillDisappear:!0,onHeaderHeightChange:!0,onTransitionProgress:!0,onGestureCancel:!0,onHeaderBackButtonClicked:!0,onSheetDetentChanged:!0}))};e.default=r(d[4]).get('RNSScreen',(function(){return n}))}),1110,[1,463,188,221,185]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;t(r(d[1]));var n=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RNSModalScreen',directEventTypes:{topAppear:{registrationName:'onAppear'},topDisappear:{registrationName:'onDisappear'},topDismissed:{registrationName:'onDismissed'},topNativeDismissCancelled:{registrationName:'onNativeDismissCancelled'},topWillAppear:{registrationName:'onWillAppear'},topWillDisappear:{registrationName:'onWillDisappear'},topHeaderHeightChange:{registrationName:'onHeaderHeightChange'},topTransitionProgress:{registrationName:'onTransitionProgress'},topGestureCancel:{registrationName:'onGestureCancel'},topHeaderBackButtonClicked:{registrationName:'onHeaderBackButtonClicked'},topSheetDetentChanged:{registrationName:'onSheetDetentChanged'}},validAttributes:Object.assign({sheetAllowedDetents:!0,sheetLargestUndimmedDetent:!0,sheetGrabberVisible:!0,sheetCornerRadius:!0,sheetExpandsWhenScrolledToEdge:!0,sheetInitialDetent:!0,sheetElevation:!0,customAnimationOnSwipe:!0,fullScreenSwipeEnabled:!0,fullScreenSwipeShadowEnabled:!0,homeIndicatorHidden:!0,preventNativeDismiss:!0,gestureEnabled:!0,statusBarColor:{process:r(d[2]).default},statusBarHidden:!0,screenOrientation:!0,statusBarAnimation:!0,statusBarStyle:!0,statusBarTranslucent:!0,gestureResponseDistance:!0,stackPresentation:!0,stackAnimation:!0,transitionDuration:!0,replaceAnimation:!0,swipeDirection:!0,hideKeyboardOnSwipe:!0,activityState:!0,navigationBarColor:{process:r(d[2]).default},navigationBarTranslucent:!0,navigationBarHidden:!0,nativeBackButtonDismissalEnabled:!0},r(d[3]).ConditionallyIgnoredEventHandlers({onAppear:!0,onDisappear:!0,onDismissed:!0,onNativeDismissCancelled:!0,onWillAppear:!0,onWillDisappear:!0,onHeaderHeightChange:!0,onTransitionProgress:!0,onGestureCancel:!0,onHeaderBackButtonClicked:!0,onSheetDetentChanged:!0}))};e.default=r(d[4]).get('RNSModalScreen',(function(){return n}))}),1111,[1,463,188,221,185]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.usePrevious=function(n){var t=(0,u.useRef)();return(0,u.useEffect)((function(){t.current=n})),t.current};var u=r(d[0])}),1112,[178]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var n=e(_r(d[1])),t=_r(d[2]),r=(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=o(n);if(t&&t.has(e))return t.get(e);var r={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var c=u?Object.getOwnPropertyDescriptor(e,a):null;c&&(c.get||c.set)?Object.defineProperty(r,a,c):r[a]=e[a]}return r.default=e,t&&t.set(e,r),r})(_r(d[3]));function o(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,t=new WeakMap;return(o=function(e){return e?t:n})(e)}var u=r.default,a=r.Commands;_e.default=n.default.forwardRef((function(e,r){var o=n.default.useRef(null);n.default.useImperativeHandle(r,(function(){return{blur:function(){c((function(e){return a.blur(e)}))},focus:function(){c((function(e){return a.focus(e)}))},toggleCancelButton:function(e){c((function(n){return a.toggleCancelButton(n,e)}))},clearText:function(){c((function(e){return a.clearText(e)}))},setText:function(e){c((function(n){return a.setText(n,e)}))},cancelSearch:function(){c((function(e){return a.cancelSearch(e)}))}}}));var c=n.default.useCallback((function(e){var n=o.current;n?e(n):console.warn('Reference to native search bar component has not been updated yet')}),[o]);return _r(d[4]).isSearchBarAvailableForCurrentPlatform?(0,_r(d[5]).jsx)(u,Object.assign({ref:o},e,{onSearchFocus:e.onFocus,onSearchBlur:e.onBlur,onSearchButtonPress:e.onSearchButtonPress,onCancelButtonPress:e.onCancelButtonPress,onChangeText:e.onChangeText})):(console.warn('Importing SearchBar is only valid on iOS and Android devices.'),t.View)}))}),1113,[1,178,2,1114,1102,223]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=e.Commands=void 0;t(r(d[1])),t(r(d[2]));var o=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RNSSearchBar',directEventTypes:{topSearchFocus:{registrationName:'onSearchFocus'},topSearchBlur:{registrationName:'onSearchBlur'},topSearchButtonPress:{registrationName:'onSearchButtonPress'},topCancelButtonPress:{registrationName:'onCancelButtonPress'},topChangeText:{registrationName:'onChangeText'},topClose:{registrationName:'onClose'},topOpen:{registrationName:'onOpen'}},validAttributes:Object.assign({hideWhenScrolling:!0,autoCapitalize:!0,placeholder:!0,placement:!0,obscureBackground:!0,hideNavigationBar:!0,cancelButtonText:!0,barTintColor:{process:r(d[3]).default},tintColor:{process:r(d[3]).default},textColor:{process:r(d[3]).default},disableBackButtonOverride:!0,inputType:!0,hintTextColor:{process:r(d[3]).default},headerIconColor:{process:r(d[3]).default},shouldShowHintSearchIcon:!0},r(d[4]).ConditionallyIgnoredEventHandlers({onSearchFocus:!0,onSearchBlur:!0,onSearchButtonPress:!0,onCancelButtonPress:!0,onChangeText:!0,onClose:!0,onOpen:!0}))};e.default=r(d[5]).get('RNSSearchBar',(function(){return o})),e.Commands={blur:function(t){r(d[6]).dispatchCommand(t,"blur",[])},focus:function(t){r(d[6]).dispatchCommand(t,"focus",[])},clearText:function(t){r(d[6]).dispatchCommand(t,"clearText",[])},toggleCancelButton:function(t,o){r(d[6]).dispatchCommand(t,"toggleCancelButton",[o])},setText:function(t,o){r(d[6]).dispatchCommand(t,"setText",[o])},cancelSearch:function(t){r(d[6]).dispatchCommand(t,"cancelSearch",[])}}}),1114,[1,463,222,188,221,185,57]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s=t(r(d[1])),n=r(d[2]),u=(t(r(d[3])),t(r(d[4]))),f=t(r(d[5])),l=["enabled","hasTwoStates"];e.default=function(t){var o=t.enabled,v=void 0===o?(0,r(d[6]).screensEnabled)():o,b=t.hasTwoStates,c=(0,s.default)(t,l);if(v&&r(d[6]).isNativePlatformSupported){if(b){var j='ios'===n.Platform.OS?f.default:u.default;return(0,r(d[7]).jsx)(j,Object.assign({},c))}return(0,r(d[7]).jsx)(u.default,Object.assign({},c))}return(0,r(d[7]).jsx)(n.View,Object.assign({},c))}}),1115,[1,134,2,178,1116,1117,1103,223]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;t(r(d[1]));var n=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RNSScreenContainer',validAttributes:{}};e.default=r(d[2]).get('RNSScreenContainer',(function(){return n}))}),1116,[1,463,185]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;t(r(d[1]));var n=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RNSScreenNavigationContainer',validAttributes:{}};e.default=r(d[2]).get('RNSScreenNavigationContainer',(function(){return n}))}),1117,[1,463,185]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=n(r(d[1])),s=n(r(d[2])),u=n(r(d[3])),c=n(r(d[4])),o=["goBackGesture","screensRefs","currentScreenId","transitionAnimation","screenEdgeGesture","onFinishTransitioning","children"],f=function(n,t){var s='GHWrapper'!==n.name&&void 0!==t;(0,u.default)(s,'Cannot detect GestureDetectorProvider in a screen that uses `goBackGesture`. Make sure your navigator is wrapped in GestureDetectorProvider.')},l=function(n,t,s){var c=void 0!==s&&null===n&&void 0===t;(0,u.default)(c,'Custom Screen Transition require screensRefs and currentScreenId to be provided.')};e.default=function(n){var u,v=n.goBackGesture,G=n.screensRefs,h=n.currentScreenId,k=n.transitionAnimation,R=n.screenEdgeGesture,C=n.onFinishTransitioning,S=n.children,p=(0,t.default)(n,o),x=s.default.useRef(null!=(u=null==G?void 0:G.current)?u:{}),E=s.default.useRef(null),b=s.default.useContext(r(d[5]).GHContext),j=s.default.useRef({stackUseEffectCallback:function(n){}});return s.default.useEffect((function(){j.current.stackUseEffectCallback(E)})),f(b,v),l(x,h,v),(0,r(d[6]).jsx)(r(d[5]).RNSScreensRefContext.Provider,{value:x,children:(0,r(d[6]).jsx)(b,{gestureDetectorBridge:j,goBackGesture:v,transitionAnimation:k,screenEdgeGesture:null!=R&&R,screensRefs:x,currentScreenId:h,children:(0,r(d[6]).jsx)(c.default,Object.assign({},p,{onFinishTransitioning:C,ref:E,children:S}))})})}}),1118,[1,134,178,1119,1120,1121,223]); +__d((function(g,r,i,a,m,e,d){new Set;m.exports=function(n){}}),1119,[]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;n(r(d[1]));var t=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RNSScreenStack',directEventTypes:{topFinishTransitioning:{registrationName:'onFinishTransitioning'}},validAttributes:Object.assign({},r(d[2]).ConditionallyIgnoredEventHandlers({onFinishTransitioning:!0}))};e.default=r(d[3]).get('RNSScreenStack',(function(){return t}))}),1120,[1,463,221,185]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.RNSScreensRefContext=e.GHContext=void 0;var n=t(r(d[1]));e.GHContext=n.default.createContext((function(t){return(0,r(d[2]).jsx)(r(d[2]).Fragment,{children:t.children})})),e.RNSScreensRefContext=n.default.createContext(null)}),1121,[1,178,223]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),n=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=u(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var o=l?Object.getOwnPropertyDescriptor(e,a):null;o&&(o.get||o.set)?Object.defineProperty(r,a,o):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r})(_r(d[2])),r=_r(d[3]),l=e(_r(d[4])),a=e(_r(d[5])),o=e(_r(d[6])),i=e(_r(d[7])),s=["children","headerConfig","activityState","shouldFreeze","stackPresentation","sheetAllowedDetents","contentStyle","style","screenId","unstable_sheetFooter"];function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(u=function(e){return e?n:t})(e)}_e.default=n.forwardRef((function(e,u){var f,h,v=e.children,S=e.headerConfig,y=e.activityState,p=e.shouldFreeze,b=e.stackPresentation,k=e.sheetAllowedDetents,j=e.contentStyle,O=e.style,P=e.screenId,w=e.unstable_sheetFooter,_=(0,t.default)(e,s),x=n.useRef(null),C=n.useContext(_r(d[8]).RNSScreensRefContext);n.useImperativeHandle(u,(function(){return x.current}));var F='android'!==r.Platform.OS&&('push'!==b&&!1===(null==S?void 0:S.hidden)),R=n.useRef(null==S?void 0:S.hidden);n.useEffect((function(){(0,l.default)('android'!==r.Platform.OS&&'push'!==b&&R.current!==(null==S?void 0:S.hidden),"Dynamically changing header's visibility in modals will result in remounting the screen and losing all local state."),R.current=null==S?void 0:S.hidden}),[null==S?void 0:S.hidden,b]);var D,M=(0,_r(d[9]).jsxs)(_r(d[9]).Fragment,{children:[(0,_r(d[9]).jsx)(a.default,{style:['formSheet'===b?'ios'===r.Platform.OS?c.absolute:'fitToContents'===k?null:c.container:c.container,j],stackPresentation:null!=b?b:'push',children:v}),(0,_r(d[9]).jsx)(_r(d[10]).ScreenStackHeaderConfig,Object.assign({},S)),'formSheet'===b&&w&&(0,_r(d[9]).jsx)(_r(d[11]).FooterComponent,{children:w()})]});if('formSheet'===b&&j){var z=r.StyleSheet.flatten(j);D={backgroundColor:null==z?void 0:z.backgroundColor}}return(0,_r(d[9]).jsx)(o.default,Object.assign({ref:function(e){if(x.current=e,null!==C){var t=C.current;null===e?delete t[P]:t[P]={current:e}}else console.warn('Looks like RNSScreensRefContext is missing. Make sure the ScreenStack component is wrapped in it')},enabled:!0,isNativeStack:!0,activityState:y,shouldFreeze:p,stackPresentation:b,hasLargeHeader:null!=(f=null==S?void 0:S.largeTitle)&&f,sheetAllowedDetents:k,style:[O,D]},_,{children:F?(0,_r(d[9]).jsx)(i.default,{style:c.container,children:(0,_r(d[9]).jsx)(o.default,{enabled:!0,isNativeStack:!0,activityState:y,shouldFreeze:p,hasLargeHeader:null!=(h=null==S?void 0:S.largeTitle)&&h,style:r.StyleSheet.absoluteFill,children:M})}):M}))}));var c=r.StyleSheet.create({container:{flex:1},absolute:{position:'absolute',top:0,start:0,end:0}})}),1122,[1,134,178,2,1119,1123,1106,1118,1121,223,1099,1126]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;e(_r(d[1])),(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var u={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var a=f?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(u,o,a):u[o]=e[o]}u.default=e,n&&n.set(e,u)})(_r(d[2])),_r(d[3]),e(_r(d[4]));var t=e(_r(d[5]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}_e.default=function(e){return(0,_r(d[6]).jsx)(t.default,Object.assign({},e))}}),1123,[1,134,178,2,180,1124,223]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;t(r(d[1]));var l=t(r(d[2]));e.default=function(t){return(0,r(d[3]).jsx)(l.default,Object.assign({collapsable:!1},t))}}),1124,[1,178,1125,223]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;t(r(d[1]));var n=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RNSScreenContentWrapper',validAttributes:{}};e.default=r(d[2]).get('RNSScreenContentWrapper',(function(){return n}))}),1125,[1,463,185]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.FooterComponent=function(n){var t=n.children;return(0,r(d[3]).jsx)(o,{collapsable:!1,children:t})},e.default=void 0;n(r(d[1]));var t=n(r(d[2]));function o(n){return(0,r(d[3]).jsx)(t.default,Object.assign({},n))}e.default=o}),1126,[1,178,1127,223]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;t(r(d[1]));var _=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RNSScreenFooter',validAttributes:{}};e.default=r(d[2]).get('RNSScreenFooter',(function(){return _}))}),1127,[1,463,185]); +__d((function(g,r,i,a,m,e,d){var l=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;l(r(d[1]));var n=r(d[2]),t=l(r(d[3])).default;e.default=function(l){var o=(0,n.useWindowDimensions)(),s=o.width,u=o.height;return'ios'!==n.Platform.OS?(console.warn('Using FullWindowOverlay is only valid on iOS devices.'),(0,r(d[4]).jsx)(n.View,Object.assign({},l))):(0,r(d[4]).jsx)(t,{style:[n.StyleSheet.absoluteFill,{width:s,height:u}],children:l.children})}}),1128,[1,178,2,1129,223]); +__d((function(g,r,i,a,m,e,d){var l=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.__INTERNAL_VIEW_CONFIG=void 0;l(r(d[1]));var _=e.__INTERNAL_VIEW_CONFIG={uiViewClassName:'RNSFullWindowOverlay',validAttributes:{}};e.default=r(d[2]).get('RNSFullWindowOverlay',(function(){return _}))}),1129,[1,463,185]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=function(){var e=r.useContext(t.default);if(void 0===e)throw new Error("Couldn't find values for transition progress. Are you inside a screen in Native Stack?");return e};var r=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=n(r);if(t&&t.has(e))return t.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=u?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(o,a,f):o[a]=e[a]}return o.default=e,t&&t.set(e,o),o})(_r(d[1])),t=e(_r(d[2]));function n(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(n=function(e){return e?t:r})(e)}}),1130,[1,178,1107]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.AnimatedHeaderHeightContext=void 0,_e.useAnimatedHeaderHeight=function(){var t=e.useContext(r);if(void 0===t)throw new Error("Couldn't find the header height. Are you inside a screen in a native stack navigator?");return t};var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var i={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var u=o?Object.getOwnPropertyDescriptor(e,a):null;u&&(u.get||u.set)?Object.defineProperty(i,a,u):i[a]=e[a]}return i.default=e,n&&n.set(e,i),i})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}var r=_e.AnimatedHeaderHeightContext=e.createContext(void 0)}),1131,[178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.useDismissedRouteError=function(n){var r,o=t.useState(null),u=e(o,2),i=u[0],a=u[1],s=i?null==(r=n.routes.find((function(e){return e.key===i})))?void 0:r.name:null;return t.useEffect((function(){if(s){var e=`The screen '${s}' was removed natively but didn't get removed from JS state. This can happen if the action was prevented in a 'beforeRemove' listener, which is not fully supported in native-stack.\n\nConsider using a 'usePreventRemove' hook with 'headerBackButtonMenuEnabled: false' to prevent users from natively going back multiple screens.`;console.error(e)}}),[s]),{setNextDismissedKey:a}};var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var a=u?Object.getOwnPropertyDescriptor(e,i):null;a&&(a.get||a.set)?Object.defineProperty(o,i,a):o[i]=e[i]}return o.default=e,r&&r.set(e,o),o})(_r(d[1]));function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}}),1132,[38,178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useInvalidPreventRemoveError=function(t){var n,r,o=(0,_r(d[1]).usePreventRemoveContext)().preventedRoutes,u=Object.keys(o)[0],a=t[u],i=null==a||null==(n=a.options)?void 0:n.headerBackButtonMenuEnabled,l=null==a||null==(r=a.route)?void 0:r.name;e.useEffect((function(){if(null!=u&&i){var e=`The screen ${l} uses 'usePreventRemove' hook alongside 'headerBackButtonMenuEnabled: true', which is not supported. \n\nConsider removing 'headerBackButtonMenuEnabled: true' from ${l} screen to get rid of this error.`;console.error(e)}}),[u,i,l])};var e=(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=t(n);if(r&&r.has(e))return r.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var i=u?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(o,a,i):o[a]=e[a]}return o.default=e,r&&r.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,r=new WeakMap;return(t=function(e){return e?r:n})(e)}}),1133,[178,939]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getModalRouteKeys=void 0;e.getModalRouteKeys=function(t,n){return t.reduce((function(t,o){var u,l,s=(null!=(u=null==(l=n[o.key])?void 0:l.options)?u:{}).presentation;return(t.length&&!s||'modal'===s||'transparentModal'===s)&&t.push(o.key),t}),[])}}),1134,[]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),t=["id","initialRouteName","children","layout","screenListeners","screenOptions","screenLayout","UNSTABLE_router"];Object.defineProperty(_e,"__esModule",{value:!0}),_e.createNativeStackNavigator=function(e){return(0,_r(d[3]).createNavigatorFactory)(a)(e)};var r=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=i(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var s=a?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(n,o,s):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n})(_r(d[1])),n=_r(d[2]);function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(i=function(e){return e?r:t})(e)}function a(i){var a=i.id,o=i.initialRouteName,s=i.children,u=i.layout,c=i.screenListeners,l=i.screenOptions,f=i.screenLayout,p=i.UNSTABLE_router,v=e(i,t),y=(0,_r(d[3]).useNavigationBuilder)(_r(d[3]).StackRouter,{id:a,initialRouteName:o,children:s,layout:u,screenListeners:c,screenOptions:l,screenLayout:f,UNSTABLE_router:p}),O=y.state,_=y.describe,N=y.descriptors,b=y.navigation,L=y.NavigationContent;return r.useEffect((function(){return null==b||null==b.addListener?void 0:b.addListener('tabPress',(function(e){var t=b.isFocused();requestAnimationFrame((function(){O.index>0&&t&&!e.defaultPrevented&&b.dispatch(Object.assign({},_r(d[3]).StackActions.popToTop(),{target:O.key}))}))}))}),[b,O.index,O.key]),(0,n.jsx)(L,{children:(0,n.jsx)(_r(d[4]).NativeStackView,Object.assign({},v,{state:O,navigation:b,descriptors:N,describe:_}))})}}),1135,[134,178,224,939,938]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),l=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var l=r(t);if(l&&l.has(e))return l.get(e);var a={__proto__:null},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var u=n?Object.getOwnPropertyDescriptor(e,o):null;u&&(u.get||u.set)?Object.defineProperty(a,o,u):a[o]=e[o]}return a.default=e,l&&l.set(e,a),a})(_r(d[2]));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,l=new WeakMap;return(r=function(e){return e?l:t})(e)}_e.default=function(e){var r=(0,l.useState)(!1),a=(0,t.default)(r,2),n=a[0],o=(a[1],(0,_r(d[3]).useSettingsContext)().darkmode);return(0,_r(d[4]).jsx)(_r(d[5]).Dropdown,{style:(0,_r(d[6]).styles)(o).dropdown,placeholderStyle:(0,_r(d[6]).styles)(o).placeholderStyle,selectedTextStyle:(0,_r(d[6]).styles)(o).selectedTextStyle,inputSearchStyle:(0,_r(d[6]).styles)(o).inputSearchStyle,itemTextStyle:{color:"black"},data:e.data,search:!0,mode:"modal",value:e.value,labelField:"label",valueField:"value",placeholder:n?"...":e.message,searchPlaceholder:"Search",onChange:function(t){e.setValue(t.value)},onFocus:e.onFocus})}}),1136,[1,38,178,787,223,1137,1301]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"Dropdown",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(e,"IDropdownRef",{enumerable:!0,get:function(){return r(d[1]).IDropdownRef}}),Object.defineProperty(e,"IMultiSelectRef",{enumerable:!0,get:function(){return r(d[2]).IMultiSelectRef}}),Object.defineProperty(e,"ISelectCountryRef",{enumerable:!0,get:function(){return r(d[3]).ISelectCountryRef}}),Object.defineProperty(e,"MultiSelect",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(e,"SelectCountry",{enumerable:!0,get:function(){return o.default}});var n=t(r(d[4])),u=t(r(d[5])),o=t(r(d[6]))}),1137,[1,1138,1139,1140,1141,1297,1299]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0})}),1138,[]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0})}),1139,[]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0})}),1140,[]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),l=e(_r(d[2])),n=e(_r(d[3])),r=e(_r(d[4])),o=e(_r(d[5])),a=e(_r(d[6])),i=e(_r(d[7])),u=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var l=f(t);if(l&&l.has(e))return l.get(e);var n={__proto__:null},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,l&&l.set(e,n),n})(_r(d[8])),s=_r(d[9]),c=e(_r(d[10]));function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,l=new WeakMap;return(f=function(e){return e?l:t})(e)}var h=_r(d[11]).useDetectDevice.isTablet,v=s.StatusBar.currentHeight||0,y=u.default.forwardRef((function(e,f){var y=(0,_r(d[12]).useDeviceOrientation)(),b=e.testID,p=e.itemTestIDField,S=e.onChange,x=e.style,C=void 0===x?{}:x,k=e.containerStyle,w=e.placeholderStyle,j=e.selectedTextStyle,I=e.itemContainerStyle,T=e.itemTextStyle,F=e.inputSearchStyle,D=e.iconStyle,L=e.selectedTextProps,P=void 0===L?{}:L,M=e.data,O=void 0===M?[]:M,_=e.labelField,V=e.valueField,W=e.searchField,H=e.value,E=e.activeColor,A=void 0===E?'#F6F7F8':E,R=e.fontFamily,B=e.iconColor,N=void 0===B?'gray':B,z=e.searchPlaceholder,K=e.searchPlaceholderTextColor,q=void 0===K?'gray':K,Q=e.placeholder,$=void 0===Q?'Select item':Q,G=e.search,J=void 0!==G&&G,U=e.maxHeight,X=void 0===U?340:U,Y=e.minHeight,Z=void 0===Y?0:Y,ee=e.disable,te=void 0!==ee&&ee,le=e.keyboardAvoiding,ne=void 0===le||le,re=e.inverted,oe=void 0===re||re,ae=e.renderLeftIcon,ie=e.renderRightIcon,ue=e.renderItem,se=e.renderInputSearch,ce=e.onFocus,de=e.onBlur,fe=e.autoScroll,he=void 0===fe||fe,ve=e.showsVerticalScrollIndicator,ye=void 0===ve||ve,be=e.dropdownPosition,ge=void 0===be?'auto':be,pe=e.flatListProps,Se=e.searchQuery,me=e.backgroundColor,xe=e.onChangeText,Ce=e.confirmSelectItem,ke=e.onConfirmSelectItem,we=e.accessibilityLabel,je=e.itemAccessibilityLabelField,Ie=e.mode,Te=void 0===Ie?'default':Ie,Fe=e.closeModalWhenSelectedItem,De=void 0===Fe||Fe,Le=e.excludeItems,Pe=void 0===Le?[]:Le,Me=e.excludeSearchItems,Oe=void 0===Me?[]:Me,Ve=(0,u.useRef)(null),We=(0,u.useRef)(null),He=(0,u.useState)(!1),Ee=(0,l.default)(He,2),Ae=Ee[0],Re=Ee[1],Be=(0,u.useState)(null),Ne=(0,l.default)(Be,2),ze=Ne[0],Ke=Ne[1],qe=(0,u.useState)(O),Qe=(0,l.default)(qe,2),$e=Qe[0],Ge=Qe[1],Je=(0,u.useState)(),Ue=(0,l.default)(Je,2),Xe=Ue[0],Ye=Ue[1],Ze=(0,u.useState)(0),et=(0,l.default)(Ze,2),tt=et[0],lt=et[1],nt=(0,u.useState)(''),rt=(0,l.default)(nt,2),ot=rt[0],at=rt[1],it=s.Dimensions.get('window'),ut=it.width,st=it.height,ct=(0,u.useMemo)((function(){return{backgroundColor:'rgba(0,0,0,0.1)',alignItems:'center'}}),[]),dt=(0,u.useMemo)((function(){return{width:'LANDSCAPE'===y?ut/2:'100%',alignSelf:'center'}}),[ut,y]);(0,u.useImperativeHandle)(f,(function(){return{open:ht,close:vt}})),(0,u.useEffect)((function(){return vt}),[]);var ft=(0,u.useCallback)((function(e){return Pe.length>0?(0,r.default)(e,Pe,(function(e,t){return(0,a.default)(e,V)===(0,a.default)(t,V)}))||[]:e||[]}),[Pe,V]);(0,u.useEffect)((function(){if(O&&0===ot.length){var e=ft(O);Ge((0,t.default)(e))}ot&&kt(ot)}),[O,ot]);var ht=function(){te||(bt(),Re(!0),ce&&ce(),ot.length>0&&kt(ot))},vt=(0,u.useCallback)((function(){te||(Re(!1),de&&de())}),[te,de]),yt=(0,u.useCallback)((function(){return R?{fontFamily:R}:{}}),[R]),bt=(0,u.useCallback)((function(){Ve&&null!=Ve&&Ve.current&&Ve.current.measureInWindow((function(e,t,l,n){var r=!h&&('modal'===Te||'LANDSCAPE'===y);'auto'===Te&&(r=!1);var o=r?20:n+t+2,a=st-o+n,i=s.I18nManager.isRTL?ut-l-e:e;Ye({isFull:r,width:Math.floor(l),top:Math.floor(o+v),bottom:Math.floor(a-v),left:Math.floor(i),height:Math.floor(n)})}))}),[st,ut,y,Te]),gt=(0,u.useCallback)((function(e){bt(),lt(e.endCoordinates.height)}),[bt]),pt=(0,u.useCallback)((function(){lt(0),bt()}),[bt]);(0,u.useEffect)((function(){var e=s.Keyboard.addListener('keyboardDidShow',gt),t=s.Keyboard.addListener('keyboardDidHide',pt);return function(){'function'==typeof(null==e?void 0:e.remove)&&e.remove(),'function'==typeof(null==t?void 0:t.remove)&&t.remove()}}),[pt,gt]);var St=(0,u.useCallback)((function(){var e='object'==typeof H?(0,a.default)(H,V):H,t=O.filter((function(t){return(0,i.default)(e,(0,a.default)(t,V))}));t.length>0?Ke(t[0]):Ke(null)}),[O,H,V]);(0,u.useEffect)((function(){St()}),[H,O,St]);var mt,xt=(0,_r(d[13]).debounce)((0,u.useCallback)((function(){if(he&&(null==O?void 0:O.length)>0&&(null==$e?void 0:$e.length)===(null==O?void 0:O.length)&&We&&null!=We&&We.current){var e='object'==typeof H?(0,a.default)(H,V):H,t=(0,o.default)($e,(function(t){return(0,i.default)(e,(0,a.default)(t,V))}));if((null==$e?void 0:$e.length)>0&&t>-1&&t<=(null==$e?void 0:$e.length)-1)try{We.current.scrollToIndex({index:t,animated:!1})}catch(e){console.warn(`scrollToIndex error: ${e}`)}}}),[he,O.length,$e,H,V]),200),Ct=(0,u.useCallback)((function(){if(!te){var e=!Ae;if(tt>0&&!e)return s.Keyboard.dismiss();if(e||(xe&&xe(''),at(''),kt('')),bt(),Re(e),O){var t=ft(O);Ge(t)}e?ce&&ce():de&&de(),ot.length>0&&kt(ot)}}),[te,tt,Ae,bt,O,ot,ce,de]),kt=(0,u.useCallback)((function(e){if(e.length>0){var t=O.filter(Se?function(t){var l=(0,a.default)(t,W||_);return null==Se?void 0:Se(e,l)}:function(t){var l,n=null==(l=(0,a.default)(t,W||_))?void 0:l.toLowerCase().replace(/\s/g,'').normalize('NFD').replace(/[\u0300-\u036f]/g,''),r=e.toLowerCase().replace(/\s/g,'').normalize('NFD').replace(/[\u0300-\u036f]/g,'');return n.indexOf(r)>=0});if(Oe.length>0||Pe.length>0){var l=(0,r.default)(t,Oe,(function(e,t){return(0,a.default)(e,V)===(0,a.default)(t,V)})),n=ft(l);Ge(n)}else Ge(t)}else{var o=ft(O);Ge(o)}}),[O,Se,Oe,Pe,W,_,V,ft]),wt=(0,u.useCallback)((function(e){if(Ce&&ke)return ke(e);Ke(e),S(e),De&&(xe&&xe(''),at(''),kt(''),vt())}),[Ce,vt,S,xe,ke,kt,De]),jt=(0,u.useCallback)((function(e){var t=e.item,l=e.index,r=ze&&(0,a.default)(ze,V),o=(0,i.default)((0,a.default)(t,V),r);return(0,n.default)(t,{_index:l}),(0,_r(d[14]).jsx)(s.TouchableHighlight,{testID:(0,a.default)(t,p||_),accessible:!!we,accessibilityLabel:(0,a.default)(t,je||_),underlayColor:A,onPress:function(){return wt(t)},children:(0,_r(d[14]).jsx)(s.View,{style:s.StyleSheet.flatten([I,o&&{backgroundColor:A}]),children:ue?ue(t,o):(0,_r(d[14]).jsx)(s.View,{style:_r(d[15]).styles.item,children:(0,_r(d[14]).jsx)(s.Text,{style:s.StyleSheet.flatten([_r(d[15]).styles.textItem,T,yt()]),children:(0,a.default)(t,_)})})})},l.toString())}),[we,A,ze,yt,je,I,p,T,_,wt,ue,V]),It=(0,u.useCallback)((function(){return J?se?se((function(e){xe&&(at(e),xe(e)),kt(e)})):(0,_r(d[14]).jsx)(c.default,{testID:b+' input',accessibilityLabel:we+' input',style:[_r(d[15]).styles.input,F],inputStyle:[F,yt()],value:ot,autoCorrect:!1,placeholder:z,onChangeText:function(e){xe&&(at(e),xe(e)),kt(e)},placeholderTextColor:q,showIcon:!0,iconStyle:[{tintColor:N},D]}):null}),[we,yt,N,D,F,xe,kt,se,J,z,q,b,ot]),Tt=(0,u.useCallback)((function(e){var t=!!oe&&e,l=function(){return(0,_r(d[14]).jsx)(s.FlatList,Object.assign({testID:b+' flatlist',accessibilityLabel:we+' flatlist'},pe,{keyboardShouldPersistTaps:"handled",ref:We,onContentSizeChange:xt,onScrollToIndexFailed:xt,data:$e,inverted:!!e&&oe,renderItem:jt,keyExtractor:function(e,t){return t.toString()},showsVerticalScrollIndicator:ye}))};return(0,_r(d[14]).jsx)(s.TouchableWithoutFeedback,{children:(0,_r(d[14]).jsxs)(s.View,{style:_r(d[15]).styles.flexShrink,children:[t&&l(),It(),!t&&l()]})})}),[jt,we,pe,$e,oe,It,xt,ye,b]),Ft=(0,u.useCallback)((function(){if(Ae&&Xe){var e=Xe.isFull,t=Xe.width,l=Xe.height,n=Xe.top,r=Xe.bottom,o=Xe.left;if(t&&n&&r){var a={left:o,maxHeight:X,minHeight:Z},i='auto'===ge?tt>0?r0&&i&&'auto'===ge&&(u=tt),(0,_r(d[14]).jsx)(s.Modal,{transparent:!0,statusBarTranslucent:!0,visible:Ae,supportedOrientations:['landscape','portrait'],onRequestClose:Ct,children:(0,_r(d[14]).jsx)(s.TouchableWithoutFeedback,{onPress:Ct,children:(0,_r(d[14]).jsx)(s.View,{style:s.StyleSheet.flatten([_r(d[15]).styles.flex1,e&&ct,me&&{backgroundColor:me},{}]),children:(0,_r(d[14]).jsx)(s.View,{style:s.StyleSheet.flatten([_r(d[15]).styles.flex1,i?{justifyContent:'flex-end',paddingBottom:u}:{paddingTop:u},e&&_r(d[15]).styles.fullScreen]),children:(0,_r(d[14]).jsx)(s.View,{style:s.StyleSheet.flatten([_r(d[15]).styles.container,e?dt:a,{width:t},k]),children:Tt(i)})})})})})}return null}return null}),[Ae,J,Xe,tt,X,Z,ge,ne,Ct,ct,me,k,dt,Tt]);return(0,_r(d[14]).jsxs)(s.View,{style:s.StyleSheet.flatten([_r(d[15]).styles.mainWrap,C]),ref:Ve,onLayout:bt,children:[(mt=ze&&(0,a.default)(ze,V),(0,_r(d[14]).jsx)(s.TouchableWithoutFeedback,{testID:b,accessible:!!we,accessibilityLabel:we,onPress:Ct,children:(0,_r(d[14]).jsxs)(s.View,{style:_r(d[15]).styles.dropdown,children:[null==ae?void 0:ae(Ae),(0,_r(d[14]).jsx)(s.Text,Object.assign({style:[_r(d[15]).styles.textItem,null!==mt?j:w,yt()]},P,{children:null!==mt?(0,a.default)(ze,_):$})),ie?ie(Ae):(0,_r(d[14]).jsx)(s.Image,{source:_r(d[16]),style:s.StyleSheet.flatten([_r(d[15]).styles.icon,{tintColor:N},D])})]})})),Ft()]})}));_e.default=y}),1141,[1,6,38,1142,1192,1233,1246,1288,178,2,1289,1292,1293,1294,223,1295,1296]); +__d((function(g,r,i,a,m,e,d){var o=Object.prototype.hasOwnProperty,t=r(d[0])((function(t,n){if(r(d[1])(n)||r(d[2])(n))r(d[3])(n,r(d[4])(n),t);else for(var c in n)o.call(n,c)&&r(d[5])(t,c,n[c])}));m.exports=t}),1142,[1143,1172,1168,1173,1176,1175]); +__d((function(g,r,i,a,m,e,d){m.exports=function(n){return r(d[0])((function(o,t){var f=-1,u=t.length,v=u>1?t[u-1]:void 0,c=u>2?t[2]:void 0;for(v=n.length>3&&'function'==typeof v?(u--,v):void 0,c&&r(d[1])(t[0],t[1],c)&&(v=u<3?void 0:v,u=1),o=Object(o);++f0){if(++o>=800)return arguments[0]}else o=0;return t.apply(void 0,arguments)}}}),1146,[]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0])?function(n,t){return r(d[0])(n,'toString',{configurable:!0,enumerable:!1,value:r(d[2])(t),writable:!0})}:r(d[1]);m.exports=n}),1147,[1148,1163,1164]); +__d((function(g,r,i,a,m,_e,d){var t=(function(){try{var t=r(d[0])(Object,'defineProperty');return t({},'',{}),t}catch(t){}})();m.exports=t}),1148,[1149]); +__d((function(g,r,i,a,m,e,d){m.exports=function(n,o){var t=r(d[0])(n,o);return r(d[1])(t)?t:void 0}}),1149,[1150,1151]); +__d((function(g,r,i,a,m,e,d){m.exports=function(n,o){return null==n?void 0:n[o]}}),1150,[]); +__d((function(g,r,i,a,m,e,d){var t=/^\[object .+?Constructor\]$/,o=Function.prototype,n=Object.prototype,c=o.toString,p=n.hasOwnProperty,u=RegExp('^'+c.call(p).replace(/[\\^$.*+?()[\]{}|]/g,'\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,'$1.*?')+'$');m.exports=function(o){return!(!r(d[0])(o)||r(d[1])(o))&&(r(d[2])(o)?u:t).test(r(d[3])(o))}}),1151,[1152,1153,1157,1162]); +__d((function(g,r,i,a,m,e,d){m.exports=function(n){var t=typeof n;return null!=n&&('object'==t||'function'==t)}}),1152,[]); +__d((function(g,r,i,a,m,e,d){var n,c=(n=/[^.]+$/.exec(r(d[0])&&r(d[0]).keys&&r(d[0]).keys.IE_PROTO||''))?'Symbol(src)_1.'+n:'';m.exports=function(n){return!!c&&c in n}}),1153,[1154]); +__d((function(g,r,i,a,m,e,d){m.exports=r(d[0])['__core-js_shared__']}),1154,[1155]); +__d((function(g,r,i,a,m,e,d){var t='object'==typeof self&&self&&self.Object===Object&&self,f=r(d[0])||t||Function('return this')();m.exports=f}),1155,[1156]); +__d((function(g,r,i,a,m,e,d){var t='object'==typeof g&&g&&g.Object===Object&&g;m.exports=t}),1156,[]); +__d((function(g,r,i,a,m,e,d){m.exports=function(n){if(!r(d[0])(n))return!1;var t=r(d[1])(n);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}}),1157,[1152,1158]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0])?r(d[0]).toStringTag:void 0;m.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":n&&n in Object(t)?r(d[1])(t):r(d[2])(t)}}),1158,[1159,1160,1161]); +__d((function(g,r,i,a,m,e,d){m.exports=r(d[0]).Symbol}),1159,[1155]); +__d((function(g,r,i,a,m,_e,d){var t=Object.prototype,o=t.hasOwnProperty,e=t.toString,n=r(d[0])?r(d[0]).toStringTag:void 0;m.exports=function(t){var c=o.call(t,n),v=t[n];try{t[n]=void 0;var l=!0}catch(t){}var p=e.call(t);return l&&(c?t[n]=v:delete t[n]),p}}),1160,[1159]); +__d((function(g,r,i,a,m,e,d){var t=Object.prototype.toString;m.exports=function(n){return t.call(n)}}),1161,[]); +__d((function(g,r,i,a,m,_e,d){var t=Function.prototype.toString;m.exports=function(n){if(null!=n){try{return t.call(n)}catch(t){}try{return n+''}catch(t){}}return''}}),1162,[]); +__d((function(g,r,i,a,m,e,d){m.exports=function(n){return n}}),1163,[]); +__d((function(g,r,i,a,m,e,d){m.exports=function(n){return function(){return n}}}),1164,[]); +__d((function(g,r,i,a,m,e,d){var n=Math.max;m.exports=function(t,o,f){return o=n(void 0===o?t.length-1:o,0),function(){for(var u=arguments,h=-1,v=n(u.length-o,0),c=Array(v);++h-1&&n%1==0&&n<=9007199254740991}}),1169,[]); +__d((function(g,r,i,a,m,e,d){var n=/^(?:0|[1-9]\d*)$/;m.exports=function(t,o){var u=typeof t;return!!(o=null==o?9007199254740991:o)&&('number'==u||'symbol'!=u&&n.test(t))&&t>-1&&t%1==0&&t=200&&(o=r(d[4]),h=!1,t=new(r(d[5]))(t));n:for(;++l-1}}),1196,[1197]); +__d((function(g,r,i,a,m,e,d){m.exports=function(n,t,o){return t==t?r(d[0])(n,t,o):r(d[1])(n,r(d[2]),o)}}),1197,[1198,1199,1200]); +__d((function(g,r,i,a,m,e,d){m.exports=function(n,t,f){for(var o=f-1,u=n.length;++o-1}}),1220,[1218]); +__d((function(g,r,i,a,m,e,d){m.exports=function(t,s){var _=this.__data__,n=r(d[0])(_,t);return n<0?(++this.size,_.push([t,s])):_[n][1]=s,this}}),1221,[1218]); +__d((function(g,r,i,a,m,e,d){m.exports=function(t){var n=r(d[0])(this,t).delete(t);return this.size-=n?1:0,n}}),1222,[1223]); +__d((function(g,r,i,a,m,e,d){m.exports=function(t,n){var _=t.__data__;return r(d[0])(n)?_['string'==typeof n?'string':'hash']:_.map}}),1223,[1224]); +__d((function(g,r,i,a,m,e,d){m.exports=function(n){var o=typeof n;return'string'==o||'number'==o||'symbol'==o||'boolean'==o?'__proto__'!==n:null===n}}),1224,[]); +__d((function(g,r,i,a,m,e,d){m.exports=function(t){return r(d[0])(this,t).get(t)}}),1225,[1223]); +__d((function(g,r,i,a,m,e,d){m.exports=function(n){return r(d[0])(this,n).has(n)}}),1226,[1223]); +__d((function(g,r,i,a,m,e,d){m.exports=function(s,t){var n=r(d[0])(this,s),h=n.size;return n.set(s,t),this.size+=n.size==h?0:1,this}}),1227,[1223]); +__d((function(g,r,i,a,m,e,d){m.exports=function(_){return this.__data__.set(_,"__lodash_hash_undefined__"),this}}),1228,[]); +__d((function(g,r,i,a,m,e,d){m.exports=function(t){return this.__data__.has(t)}}),1229,[]); +__d((function(g,r,i,a,m,e,d){m.exports=function n(t,o,f,u,c){var h=-1,l=t.length;for(f||(f=r(d[0])),c||(c=[]);++h0&&f(v)?o>1?n(v,o-1,f,u,c):r(d[1])(c,v):u||(c[c.length]=v)}return c}}),1230,[1231,1232]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0])?r(d[0]).isConcatSpreadable:void 0;m.exports=function(o){return r(d[1])(o)||r(d[2])(o)||!!(n&&o&&o[n])}}),1231,[1159,1178,1179]); +__d((function(g,r,i,a,m,e,d){m.exports=function(n,t){for(var o=-1,f=t.length,u=n.length;++os))return!1;var b=v.get(t),h=v.get(n);if(b&&h)return b==n&&h==t;var k=-1,p=!0,_=2&f?new(r(d[0])):void 0;for(v.set(t,n),v.set(n,t);++k0?(0,_r(d[4]).jsx)(r.TouchableOpacity,{onPress:function(){return P('')},children:(0,_r(d[4]).jsx)(r.Image,{source:_r(d[5]),style:r.StyleSheet.flatten([_r(d[6]).styles.icon,y])})}):null:null]})})})}}),1289,[1,38,178,2,223,1290,1291]); +__d((function(g,r,i,a,m,e,d){m.exports=r(d[0]).registerAsset({__packager_asset:!0,httpServerLocation:"/assets/node_modules/react-native-element-dropdown/src/assets",width:48,height:48,scales:[1],hash:"be006fa39696f4f1b98ce3bed54ff47f",name:"close",type:"png"})}),1290,[891]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.styles=void 0;var t=r(d[0]);e.styles=t.StyleSheet.create({container:{backgroundColor:'white',borderRadius:8,padding:12,justifyContent:'center'},textInput:{flexDirection:t.I18nManager.isRTL?'row-reverse':'row',alignItems:'center',flex:1},input:{fontSize:16,flex:1,textAlign:t.I18nManager.isRTL?'right':'left'},label:{marginBottom:4,fontSize:16},row:{flexDirection:t.I18nManager.isRTL?'row-reverse':'row'},icon:{width:20,height:20}})}),1291,[2]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.useDetectDevice=void 0;var t,o,s,n=r(d[0]),c=n.Dimensions.get('window'),l=c.width,u=c.height;e.useDetectDevice={isAndroid:'android'===n.Platform.OS,isIOS:'ios'===n.Platform.OS,isTablet:(t=n.PixelRatio.get(),o=l*t,s=u*t,t<2&&(o>=1e3||s>=1e3)||2===t&&(o>=1824||s>=1824))}}),1292,[2]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.useDeviceOrientation=function(){var n=u.Dimensions.get('screen'),s={portrait:c(n),landscape:f(n)},v=(0,o.useState)(s),h=(0,t.default)(v,2),l=h[0],p=h[1];return(0,o.useEffect)((function(){var n=u.Dimensions.addEventListener('change',(function(n){var t=n.screen;p({portrait:c(t),landscape:f(t)})}));return function(){'function'==typeof(null==n?void 0:n.remove)&&n.remove()}}),[]),l.portrait?'PORTRAIT':'LANDSCAPE'};var t=n(r(d[1])),o=r(d[2]),u=r(d[3]),c=function(n){var t=n.width;return n.height>=t},f=function(n){return n.width>=n.height}}),1293,[1,38,178,2]); +__d((function(n,t,r,e,u,i,o){(function(){var t,r='Expected a function',e='__lodash_hash_undefined__',o='__lodash_placeholder__',f=32,a=128,c=1/0,l=9007199254740991,s=NaN,h=4294967295,p=[['ary',a],['bind',1],['bindKey',2],['curry',8],['curryRight',16],['flip',512],['partial',f],['partialRight',64],['rearg',256]],v='[object Arguments]',_='[object Array]',g='[object Boolean]',d='[object Date]',y='[object Error]',x='[object Function]',b='[object GeneratorFunction]',w='[object Map]',m='[object Number]',j='[object Object]',A='[object Promise]',k='[object RegExp]',z='[object Set]',O='[object String]',I='[object Symbol]',R='[object WeakMap]',E='[object ArrayBuffer]',S='[object DataView]',L='[object Float32Array]',W='[object Float64Array]',C='[object Int8Array]',U='[object Int16Array]',B='[object Int32Array]',T='[object Uint8Array]',D='[object Uint8ClampedArray]',$='[object Uint16Array]',M='[object Uint32Array]',F=/\b__p \+= '';/g,N=/\b(__p \+=) '' \+/g,Z=/(__e\(.*?\)|\b__t\)) \+\n'';/g,P=/&(?:amp|lt|gt|quot|#39);/g,q=/[&<>"']/g,K=RegExp(P.source),V=RegExp(q.source),G=/<%-([\s\S]+?)%>/g,H=/<%([\s\S]+?)%>/g,J=/<%=([\s\S]+?)%>/g,Y=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Q=/^\w*$/,X=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,nn=/[\\^$.*+?()[\]{}|]/g,tn=RegExp(nn.source),rn=/^\s+/,en=/\s/,un=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,on=/\{\n\/\* \[wrapped with (.+)\] \*/,fn=/,? & /,an=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,cn=/[()=,{}\[\]\/\s]/,ln=/\\(\\)?/g,sn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,hn=/\w*$/,pn=/^[-+]0x[0-9a-f]+$/i,vn=/^0b[01]+$/i,_n=/^\[object .+?Constructor\]$/,gn=/^0o[0-7]+$/i,dn=/^(?:0|[1-9]\d*)$/,yn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,xn=/($^)/,bn=/['\n\r\u2028\u2029\\]/g,wn="[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000]",mn="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",jn="(?:\\ud83c[\\udde6-\\uddff]){2}",An="[\\ud800-\\udbff][\\udc00-\\udfff]",kn="[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?"+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",jn,An].join('|')+")[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*"),zn='(?:'+["[\\u2700-\\u27bf]",jn,An].join('|')+')'+kn,On='(?:'+["[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]?",mn,jn,An,"[\\ud800-\\udfff]"].join('|')+')',In=RegExp("['\u2019]",'g'),Rn=RegExp(mn,'g'),En=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+On+kn,'g'),Sn=RegExp(["[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['\u2019](?:d|ll|m|re|s|t|ve))?(?="+[wn,"[A-Z\\xc0-\\xd6\\xd8-\\xde]",'$'].join('|')+')',"(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?(?="+[wn,"[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])",'$'].join('|')+')',"[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['\u2019](?:d|ll|m|re|s|t|ve))?","[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['\u2019](?:D|LL|M|RE|S|T|VE))?",'\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])','\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])','\\d+',zn].join('|'),'g'),Ln=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]"),Wn=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Cn=['Array','Buffer','DataView','Date','Error','Float32Array','Float64Array','Function','Int8Array','Int16Array','Int32Array','Map','Math','Object','Promise','RegExp','Set','String','Symbol','TypeError','Uint8Array','Uint8ClampedArray','Uint16Array','Uint32Array','WeakMap','_','clearTimeout','isFinite','parseInt','setTimeout'],Un=-1,Bn={};Bn[L]=Bn[W]=Bn[C]=Bn[U]=Bn[B]=Bn[T]=Bn[D]=Bn[$]=Bn[M]=!0,Bn[v]=Bn[_]=Bn[E]=Bn[g]=Bn[S]=Bn[d]=Bn[y]=Bn[x]=Bn[w]=Bn[m]=Bn[j]=Bn[k]=Bn[z]=Bn[O]=Bn[R]=!1;var Tn={};Tn[v]=Tn[_]=Tn[E]=Tn[S]=Tn[g]=Tn[d]=Tn[L]=Tn[W]=Tn[C]=Tn[U]=Tn[B]=Tn[w]=Tn[m]=Tn[j]=Tn[k]=Tn[z]=Tn[O]=Tn[I]=Tn[T]=Tn[D]=Tn[$]=Tn[M]=!0,Tn[y]=Tn[x]=Tn[R]=!1;var Dn={'\\':'\\',"'":"'",'\n':'n','\r':'r',"\u2028":'u2028',"\u2029":'u2029'},$n=parseFloat,Mn=parseInt,Fn='object'==typeof n&&n&&n.Object===Object&&n,Nn='object'==typeof self&&self&&self.Object===Object&&self,Zn=Fn||Nn||Function('return this')(),Pn='object'==typeof i&&i&&!i.nodeType&&i,qn=Pn&&'object'==typeof u&&u&&!u.nodeType&&u,Kn=qn&&qn.exports===Pn,Vn=Kn&&Fn.process,Gn=(function(){try{var n=qn&&qn.require&&qn.require('util').types;return n||Vn&&Vn.binding&&Vn.binding('util')}catch(n){}})(),Hn=Gn&&Gn.isArrayBuffer,Jn=Gn&&Gn.isDate,Yn=Gn&&Gn.isMap,Qn=Gn&&Gn.isRegExp,Xn=Gn&&Gn.isSet,nt=Gn&&Gn.isTypedArray;function tt(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function rt(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u-1}function at(n,t,r){for(var e=-1,u=null==n?0:n.length;++e-1;);return r}function Ut(n,t){for(var r=n.length;r--&&xt(t,n[r],0)>-1;);return r}function Bt(n,t){for(var r=n.length,e=0;r--;)n[r]===t&&++e;return e}var Tt=At({'\xc0':'A','\xc1':'A','\xc2':'A','\xc3':'A','\xc4':'A','\xc5':'A','\xe0':'a','\xe1':'a','\xe2':'a','\xe3':'a','\xe4':'a','\xe5':'a','\xc7':'C','\xe7':'c','\xd0':'D','\xf0':'d','\xc8':'E','\xc9':'E','\xca':'E','\xcb':'E','\xe8':'e','\xe9':'e','\xea':'e','\xeb':'e','\xcc':'I','\xcd':'I','\xce':'I','\xcf':'I','\xec':'i','\xed':'i','\xee':'i','\xef':'i','\xd1':'N','\xf1':'n','\xd2':'O','\xd3':'O','\xd4':'O','\xd5':'O','\xd6':'O','\xd8':'O','\xf2':'o','\xf3':'o','\xf4':'o','\xf5':'o','\xf6':'o','\xf8':'o','\xd9':'U','\xda':'U','\xdb':'U','\xdc':'U','\xf9':'u','\xfa':'u','\xfb':'u','\xfc':'u','\xdd':'Y','\xfd':'y','\xff':'y','\xc6':'Ae','\xe6':'ae','\xde':'Th','\xfe':'th','\xdf':'ss',"\u0100":'A',"\u0102":'A',"\u0104":'A',"\u0101":'a',"\u0103":'a',"\u0105":'a',"\u0106":'C',"\u0108":'C',"\u010a":'C',"\u010c":'C',"\u0107":'c',"\u0109":'c',"\u010b":'c',"\u010d":'c',"\u010e":'D',"\u0110":'D',"\u010f":'d',"\u0111":'d',"\u0112":'E',"\u0114":'E',"\u0116":'E',"\u0118":'E',"\u011a":'E',"\u0113":'e',"\u0115":'e',"\u0117":'e',"\u0119":'e',"\u011b":'e',"\u011c":'G',"\u011e":'G',"\u0120":'G',"\u0122":'G',"\u011d":'g',"\u011f":'g',"\u0121":'g',"\u0123":'g',"\u0124":'H',"\u0126":'H',"\u0125":'h',"\u0127":'h',"\u0128":'I',"\u012a":'I',"\u012c":'I',"\u012e":'I',"\u0130":'I',"\u0129":'i',"\u012b":'i',"\u012d":'i',"\u012f":'i',"\u0131":'i',"\u0134":'J',"\u0135":'j',"\u0136":'K',"\u0137":'k',"\u0138":'k',"\u0139":'L',"\u013b":'L',"\u013d":'L',"\u013f":'L',"\u0141":'L',"\u013a":'l',"\u013c":'l',"\u013e":'l',"\u0140":'l',"\u0142":'l',"\u0143":'N',"\u0145":'N',"\u0147":'N',"\u014a":'N',"\u0144":'n',"\u0146":'n',"\u0148":'n',"\u014b":'n',"\u014c":'O',"\u014e":'O',"\u0150":'O',"\u014d":'o',"\u014f":'o',"\u0151":'o',"\u0154":'R',"\u0156":'R',"\u0158":'R',"\u0155":'r',"\u0157":'r',"\u0159":'r',"\u015a":'S',"\u015c":'S',"\u015e":'S',"\u0160":'S',"\u015b":'s',"\u015d":'s',"\u015f":'s',"\u0161":'s',"\u0162":'T',"\u0164":'T',"\u0166":'T',"\u0163":'t',"\u0165":'t',"\u0167":'t',"\u0168":'U',"\u016a":'U',"\u016c":'U',"\u016e":'U',"\u0170":'U',"\u0172":'U',"\u0169":'u',"\u016b":'u',"\u016d":'u',"\u016f":'u',"\u0171":'u',"\u0173":'u',"\u0174":'W',"\u0175":'w',"\u0176":'Y',"\u0177":'y',"\u0178":'Y',"\u0179":'Z',"\u017b":'Z',"\u017d":'Z',"\u017a":'z',"\u017c":'z',"\u017e":'z',"\u0132":'IJ',"\u0133":'ij',"\u0152":'Oe',"\u0153":'oe',"\u0149":"'n","\u017f":'s'}),Dt=At({'&':'&','<':'<','>':'>','"':'"',"'":'''});function $t(n){return'\\'+Dn[n]}function Mt(n,r){return null==n?t:n[r]}function Ft(n){return Ln.test(n)}function Nt(n){return Wn.test(n)}function Zt(n){for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}function Pt(n){var t=-1,r=Array(n.size);return n.forEach((function(n,e){r[++t]=[e,n]})),r}function qt(n,t){return function(r){return n(t(r))}}function Kt(n,t){for(var r=-1,e=n.length,u=0,i=[];++r','"':'"',''':"'"});function tr(n){for(var t=En.lastIndex=0;En.test(n);)++t;return t}function rr(n){return n.match(En)||[]}function er(n){return n.match(Sn)||[]}var ur=(function n(u){var i,en=(u=null==u?Zn:ur.defaults(Zn.Object(),u,ur.pick(Zn,Cn))).Array,an=u.Date,wn=u.Error,mn=u.Function,jn=u.Math,An=u.Object,kn=u.RegExp,zn=u.String,On=u.TypeError,En=en.prototype,Sn=mn.prototype,Ln=An.prototype,Wn=u['__core-js_shared__'],Dn=Sn.toString,Fn=Ln.hasOwnProperty,Nn=0,Pn=(i=/[^.]+$/.exec(Wn&&Wn.keys&&Wn.keys.IE_PROTO||''))?'Symbol(src)_1.'+i:'',qn=Ln.toString,Vn=Dn.call(An),Gn=Zn._,vt=kn('^'+Dn.call(Fn).replace(nn,'\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,'$1.*?')+'$'),_t=Kn?u.Buffer:t,At=u.Symbol,Ht=u.Uint8Array,tr=_t?_t.allocUnsafe:t,rr=qt(An.getPrototypeOf,An),ir=An.create,or=Ln.propertyIsEnumerable,fr=En.splice,ar=At?At.isConcatSpreadable:t,cr=At?At.iterator:t,lr=At?At.toStringTag:t,sr=(function(){try{var n=Ui(An,'defineProperty');return n({},'',{}),n}catch(n){}})(),hr=u.clearTimeout!==Zn.clearTimeout&&u.clearTimeout,pr=an&&an.now!==Zn.Date.now&&an.now,vr=u.setTimeout!==Zn.setTimeout&&u.setTimeout,_r=jn.ceil,gr=jn.floor,dr=An.getOwnPropertySymbols,yr=_t?_t.isBuffer:t,xr=u.isFinite,br=En.join,wr=qt(An.keys,An),mr=jn.max,jr=jn.min,Ar=an.now,kr=u.parseInt,zr=jn.random,Or=En.reverse,Ir=Ui(u,'DataView'),Rr=Ui(u,'Map'),Er=Ui(u,'Promise'),Sr=Ui(u,'Set'),Lr=Ui(u,'WeakMap'),Wr=Ui(An,'create'),Cr=Lr&&new Lr,Ur={},Br=yo(Ir),Tr=yo(Rr),Dr=yo(Er),$r=yo(Sr),Mr=yo(Lr),Fr=At?At.prototype:t,Nr=Fr?Fr.valueOf:t,Zr=Fr?Fr.toString:t;function Pr(n){if(Tf(n)&&!zf(n)&&!(n instanceof Gr)){if(n instanceof Vr)return n;if(Fn.call(n,'__wrapped__'))return bo(n)}return new Vr(n)}var qr=(function(){function n(){}return function(r){if(!Bf(r))return{};if(ir)return ir(r);n.prototype=r;var e=new n;return n.prototype=t,e}})();function Kr(){}function Vr(n,r){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!r,this.__index__=0,this.__values__=t}function Gr(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=h,this.__views__=[]}function Hr(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t=r?n:r)),n}function pe(n,r,e,u,i,o){var f,a=1&r,c=2&r,l=4&r;if(e&&(f=i?e(n,u,i,o):e(n)),f!==t)return f;if(!Bf(n))return n;var s=zf(n);if(s){if(f=Zi(n),!a)return Ku(n,f)}else{var h=$i(n),p=h==x||h==b;if(Ef(n))return Tu(n,a);if(h==j||h==v||p&&!i){if(f=c||p?{}:Pi(n),!a)return c?Hu(n,ce(f,n)):Gu(n,ae(f,n))}else{if(!Tn[h])return i?n:{};f=qi(n,h,a)}}o||(o=new Xr);var _=o.get(n);if(_)return _;o.set(n,f),Nf(n)?n.forEach((function(t){f.add(pe(t,r,e,t,n,o))})):Df(n)&&n.forEach((function(t,u){f.set(u,pe(t,r,e,u,n,o))}));var g=s?t:(l?c?Ii:Oi:c?va:pa)(n);return et(g||n,(function(t,u){g&&(t=n[u=t]),ie(f,u,pe(t,r,e,u,n,o))})),f}function ve(n){var t=pa(n);return function(r){return _e(r,n,t)}}function _e(n,r,e){var u=e.length;if(null==n)return!u;for(n=An(n);u--;){var i=e[u],o=r[i],f=n[i];if(f===t&&!(i in n)||!o(f))return!1}return!0}function ge(n,e,u){if('function'!=typeof n)throw new On(r);return lo((function(){n.apply(t,u)}),e)}function de(n,t,r,e){var u=-1,i=ft,o=!0,f=n.length,a=[],c=t.length;if(!f)return a;r&&(t=ct(t,St(r))),e?(i=at,o=!1):t.length>=200&&(i=Wt,o=!1,t=new Qr(t));n:for(;++u-1},Jr.prototype.set=function(n,t){var r=this.__data__,e=oe(r,n);return e<0?(++this.size,r.push([n,t])):r[e][1]=t,this},Yr.prototype.clear=function(){this.size=0,this.__data__={hash:new Hr,map:new(Rr||Jr),string:new Hr}},Yr.prototype.delete=function(n){var t=Wi(this,n).delete(n);return this.size-=t?1:0,t},Yr.prototype.get=function(n){return Wi(this,n).get(n)},Yr.prototype.has=function(n){return Wi(this,n).has(n)},Yr.prototype.set=function(n,t){var r=Wi(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},Qr.prototype.add=Qr.prototype.push=function(n){return this.__data__.set(n,e),this},Qr.prototype.has=function(n){return this.__data__.has(n)},Xr.prototype.clear=function(){this.__data__=new Jr,this.size=0},Xr.prototype.delete=function(n){var t=this.__data__,r=t.delete(n);return this.size=t.size,r},Xr.prototype.get=function(n){return this.__data__.get(n)},Xr.prototype.has=function(n){return this.__data__.has(n)},Xr.prototype.set=function(n,t){var r=this.__data__;if(r instanceof Jr){var e=r.__data__;if(!Rr||e.length<199)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new Yr(e)}return r.set(n,t),this.size=r.size,this};var ye=Qu(Oe),xe=Qu(Ie,!0);function be(n,t){var r=!0;return ye(n,(function(n,e,u){return r=!!t(n,e,u)})),r}function we(n,r,e){for(var u=-1,i=n.length;++ui?0:i+e),(u=u===t||u>i?i:Jf(u))<0&&(u+=i),u=e>u?0:Yf(u);e0&&r(f)?t>1?Ae(f,t-1,r,e,u):lt(u,f):e||(u[u.length]=f)}return u}var ke=Xu(),ze=Xu(!0);function Oe(n,t){return n&&ke(n,t,pa)}function Ie(n,t){return n&&ze(n,t,pa)}function Re(n,t){return ot(t,(function(t){return Wf(n[t])}))}function Ee(n,r){for(var e=0,u=(r=Wu(r,n)).length;null!=n&&et}function Ce(n,t){return null!=n&&Fn.call(n,t)}function Ue(n,t){return null!=n&&t in An(n)}function Be(n,t,r){return n>=jr(t,r)&&n=120&&s.length>=120)?new Qr(f&&s):t}s=n[0];var h=-1,p=a[0];n:for(;++h-1;)f!==n&&fr.call(f,a,1),fr.call(n,a,1);return n}function ou(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(r==e||u!==i){var i=u;Gi(u)?fr.call(n,u,1):ku(n,u)}}return n}function fu(n,t){return n+gr(zr()*(t-n+1))}function au(n,t,r,e){for(var u=-1,i=mr(_r((t-n)/(r||1)),0),o=en(i);i--;)o[e?i:++u]=n,n+=r;return o}function cu(n,t){var r='';if(!n||t<1||t>l)return r;do{t%2&&(r+=n),(t=gr(t/2))&&(n+=n)}while(t);return r}function lu(n,t){return so(io(n,t,$a),n+'')}function su(n){return te(ma(n))}function hu(n,t){var r=ma(n);return vo(r,he(t,0,r.length))}function pu(n,r,e,u){if(!Bf(n))return n;for(var i=-1,o=(r=Wu(r,n)).length,f=o-1,a=n;null!=a&&++iu?0:u+t),(r=r>u?u:r)<0&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0;for(var i=en(u);++e>>1,o=n[i];null!==o&&!Pf(o)&&(r?o<=t:o=200){var c=t?null:di(n);if(c)return Vt(c);o=!1,u=Wt,a=new Qr}else a=t?[]:f;n:for(;++e=u?n:du(n,r,e)}var Bu=hr||function(n){return Zn.clearTimeout(n)};function Tu(n,t){if(t)return n.slice();var r=n.length,e=tr?tr(r):new n.constructor(r);return n.copy(e),e}function Du(n){var t=new n.constructor(n.byteLength);return new Ht(t).set(new Ht(n)),t}function $u(n,t){var r=t?Du(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.byteLength)}function Mu(n){var t=new n.constructor(n.source,hn.exec(n));return t.lastIndex=n.lastIndex,t}function Fu(n,t){var r=t?Du(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.length)}function Nu(n,r){if(n!==r){var e=n!==t,u=null===n,i=n==n,o=Pf(n),f=r!==t,a=null===r,c=r==r,l=Pf(r);if(!a&&!l&&!o&&n>r||o&&f&&c&&!a&&!l||u&&f&&c||!e&&c||!i)return 1;if(!u&&!o&&!l&&n=f?a:a*('desc'==r[e]?-1:1)}return n.index-t.index}function Pu(n,t,r,e){for(var u=-1,i=n.length,o=r.length,f=-1,a=t.length,c=mr(i-o,0),l=en(a+c),s=!e;++f1?e[i-1]:t,f=i>2?e[2]:t;for(o=n.length>3&&'function'==typeof o?(i--,o):t,f&&Hi(e[0],e[1],f)&&(o=i<3?t:o,i=1),r=An(r);++u-1?i[o?r[f]:f]:t}}function oi(n){return zi((function(e){var u=e.length,i=u,o=Vr.prototype.thru;for(n&&e.reverse();i--;){var f=e[i];if('function'!=typeof f)throw new On(r);if(o&&!a&&'wrapper'==Ei(f))var a=new Vr([],!0)}for(i=a?i:u;++i1&&y.reverse(),h&&la))return!1;var l=o.get(n),s=o.get(r);if(l&&s)return l==r&&s==n;var h=-1,p=!0,v=2&e?new Qr:t;for(o.set(n,r),o.set(r,n);++h1?'& ':'')+t[e],t=t.join(r>2?', ':' '),n.replace(un,'{\n/* [wrapped with '+t+'] */\n')}function Vi(n){return zf(n)||kf(n)||!!(ar&&n&&n[ar])}function Gi(n,t){var r=typeof n;return!!(t=null==t?l:t)&&('number'==r||'symbol'!=r&&dn.test(n))&&n>-1&&n%1==0&&n0){if(++r>=800)return arguments[0]}else r=0;return n.apply(t,arguments)}}function vo(n,r){var e=-1,u=n.length,i=u-1;for(r=r===t?u:r;++e1?n[r-1]:t;return e='function'==typeof e?(n.pop(),e):t,Mo(n,e)}));function Vo(n){var t=Pr(n);return t.__chain__=!0,t}function Go(n,t){return t(n)}var Ho=zi((function(n){var r=n.length,e=r?n[0]:0,u=this.__wrapped__,i=function(t){return se(t,n)};return!(r>1||this.__actions__.length)&&u instanceof Gr&&Gi(e)?((u=u.slice(e,+e+(r?1:0))).__actions__.push({func:Go,args:[i],thisArg:t}),new Vr(u,this.__chain__).thru((function(n){return r&&!n.length&&n.push(t),n}))):this.thru(i)}));var Jo=Ju((function(n,t,r){Fn.call(n,r)?++n[r]:le(n,r,1)}));var Yo=ii(Ao),Qo=ii(ko);function Xo(n,t){return(zf(n)?et:ye)(n,Li(t,3))}function nf(n,t){return(zf(n)?ut:xe)(n,Li(t,3))}var tf=Ju((function(n,t,r){Fn.call(n,r)?n[r].push(t):le(n,r,[t])}));var rf=lu((function(n,t,r){var e=-1,u='function'==typeof t,i=If(n)?en(n.length):[];return ye(n,(function(n){i[++e]=u?tt(t,n,r):$e(n,t,r)})),i})),ef=Ju((function(n,t,r){le(n,r,t)}));function uf(n,t){return(zf(n)?ct:He)(n,Li(t,3))}var of=Ju((function(n,t,r){n[r?0:1].push(t)}),(function(){return[[],[]]}));var ff=lu((function(n,t){if(null==n)return[];var r=t.length;return r>1&&Hi(n,t[0],t[1])?t=[]:r>2&&Hi(t[0],t[1],t[2])&&(t=[t[0]]),tu(n,Ae(t,1),[])})),af=pr||function(){return Zn.Date.now()};function cf(n,r,e){return r=e?t:r,r=n&&null==r?n.length:r,xi(n,a,t,t,t,t,r)}function lf(n,e){var u;if('function'!=typeof e)throw new On(r);return n=Jf(n),function(){return--n>0&&(u=e.apply(this,arguments)),n<=1&&(e=t),u}}var sf=lu((function(n,t,r){var e=1;if(r.length){var u=Kt(r,Si(sf));e|=f}return xi(n,e,t,r,u)})),hf=lu((function(n,t,r){var e=3;if(r.length){var u=Kt(r,Si(hf));e|=f}return xi(t,e,n,r,u)}));function pf(n,e,u){var i,o,f,a,c,l,s=0,h=!1,p=!1,v=!0;if('function'!=typeof n)throw new On(r);function _(r){var e=i,u=o;return i=o=t,s=r,a=n.apply(u,e)}function g(n){return s=n,c=lo(x,e),h?_(n):a}function d(n){var t=e-(n-l);return p?jr(t,f-(n-s)):t}function y(n){var r=n-l;return l===t||r>=e||r<0||p&&n-s>=f}function x(){var n=af();if(y(n))return b(n);c=lo(x,d(n))}function b(n){return c=t,v&&i?_(n):(i=o=t,a)}function w(){var n=af(),r=y(n);if(i=arguments,o=this,l=n,r){if(c===t)return g(l);if(p)return Bu(c),c=lo(x,e),_(l)}return c===t&&(c=lo(x,e)),a}return e=Qf(e)||0,Bf(u)&&(h=!!u.leading,f=(p='maxWait'in u)?mr(Qf(u.maxWait)||0,e):f,v='trailing'in u?!!u.trailing:v),w.cancel=function(){c!==t&&Bu(c),s=0,i=l=o=c=t},w.flush=function(){return c===t?a:b(af())},w}var vf=lu((function(n,t){return ge(n,1,t)})),_f=lu((function(n,t,r){return ge(n,Qf(t)||0,r)}));function gf(n,t){if('function'!=typeof n||null!=t&&'function'!=typeof t)throw new On(r);var e=function(){var r=arguments,u=t?t.apply(this,r):r[0],i=e.cache;if(i.has(u))return i.get(u);var o=n.apply(this,r);return e.cache=i.set(u,o)||i,o};return e.cache=new(gf.Cache||Yr),e}function df(n){if('function'!=typeof n)throw new On(r);return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}gf.Cache=Yr;var yf=Cu((function(n,t){var r=(t=1==t.length&&zf(t[0])?ct(t[0],St(Li())):ct(Ae(t,1),St(Li()))).length;return lu((function(e){for(var u=-1,i=jr(e.length,r);++u=t})),kf=Me((function(){return arguments})())?Me:function(n){return Tf(n)&&Fn.call(n,'callee')&&!or.call(n,'callee')},zf=en.isArray,Of=Hn?St(Hn):function(n){return Tf(n)&&Le(n)==E};function If(n){return null!=n&&Uf(n.length)&&!Wf(n)}function Rf(n){return Tf(n)&&If(n)}var Ef=yr||Qa,Sf=Jn?St(Jn):function(n){return Tf(n)&&Le(n)==d};function Lf(n){if(!Tf(n))return!1;var t=Le(n);return t==y||"[object DOMException]"==t||'string'==typeof n.message&&'string'==typeof n.name&&!Mf(n)}function Wf(n){if(!Bf(n))return!1;var t=Le(n);return t==x||t==b||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Cf(n){return'number'==typeof n&&n==Jf(n)}function Uf(n){return'number'==typeof n&&n>-1&&n%1==0&&n<=l}function Bf(n){var t=typeof n;return null!=n&&('object'==t||'function'==t)}function Tf(n){return null!=n&&'object'==typeof n}var Df=Yn?St(Yn):function(n){return Tf(n)&&$i(n)==w};function $f(n){return'number'==typeof n||Tf(n)&&Le(n)==m}function Mf(n){if(!Tf(n)||Le(n)!=j)return!1;var t=rr(n);if(null===t)return!0;var r=Fn.call(t,'constructor')&&t.constructor;return'function'==typeof r&&r instanceof r&&Dn.call(r)==Vn}var Ff=Qn?St(Qn):function(n){return Tf(n)&&Le(n)==k};var Nf=Xn?St(Xn):function(n){return Tf(n)&&$i(n)==z};function Zf(n){return'string'==typeof n||!zf(n)&&Tf(n)&&Le(n)==O}function Pf(n){return'symbol'==typeof n||Tf(n)&&Le(n)==I}var qf=nt?St(nt):function(n){return Tf(n)&&Uf(n.length)&&!!Bn[Le(n)]};var Kf=vi(Ge),Vf=vi((function(n,t){return n<=t}));function Gf(n){if(!n)return[];if(If(n))return Zf(n)?Qt(n):Ku(n);if(cr&&n[cr])return Zt(n[cr]());var t=$i(n);return(t==w?Pt:t==z?Vt:ma)(n)}function Hf(n){return n?(n=Qf(n))===c||n===-1/0?17976931348623157e292*(n<0?-1:1):n==n?n:0:0===n?n:0}function Jf(n){var t=Hf(n),r=t%1;return t==t?r?t-r:t:0}function Yf(n){return n?he(Jf(n),0,h):0}function Qf(n){if('number'==typeof n)return n;if(Pf(n))return s;if(Bf(n)){var t='function'==typeof n.valueOf?n.valueOf():n;n=Bf(t)?t+'':t}if('string'!=typeof n)return 0===n?n:+n;n=Et(n);var r=vn.test(n);return r||gn.test(n)?Mn(n.slice(2),r?2:8):pn.test(n)?s:+n}function Xf(n){return Vu(n,va(n))}function na(n){return null==n?'':ju(n)}var ta=Yu((function(n,t){if(Xi(t)||If(t))Vu(t,pa(t),n);else for(var r in t)Fn.call(t,r)&&ie(n,r,t[r])})),ra=Yu((function(n,t){Vu(t,va(t),n)})),ea=Yu((function(n,t,r,e){Vu(t,va(t),n,e)})),ua=Yu((function(n,t,r,e){Vu(t,pa(t),n,e)})),ia=zi(se);var oa=lu((function(n,r){n=An(n);var e=-1,u=r.length,i=u>2?r[2]:t;for(i&&Hi(r[0],r[1],i)&&(u=1);++e1),t})),Vu(n,Ii(n),r),e&&(r=pe(r,7,mi));for(var u=t.length;u--;)ku(r,t[u]);return r}));var ya=zi((function(n,t){return null==n?{}:ru(n,t)}));function xa(n,t){if(null==n)return{};var r=ct(Ii(n),(function(n){return[n]}));return t=Li(t),eu(n,r,(function(n,r){return t(n,r[0])}))}var ba=yi(pa),wa=yi(va);function ma(n){return null==n?[]:Lt(n,pa(n))}var ja=ri((function(n,t,r){return t=t.toLowerCase(),n+(r?Aa(t):t)}));function Aa(n){return La(na(n).toLowerCase())}function ka(n){return(n=na(n))&&n.replace(yn,Tt).replace(Rn,'')}var za=ri((function(n,t,r){return n+(r?'-':'')+t.toLowerCase()})),Oa=ri((function(n,t,r){return n+(r?' ':'')+t.toLowerCase()})),Ia=ti('toLowerCase');var Ra=ri((function(n,t,r){return n+(r?'_':'')+t.toLowerCase()}));var Ea=ri((function(n,t,r){return n+(r?' ':'')+La(t)}));var Sa=ri((function(n,t,r){return n+(r?' ':'')+t.toUpperCase()})),La=ti('toUpperCase');function Wa(n,r,e){return n=na(n),(r=e?t:r)===t?Nt(n)?er(n):gt(n):n.match(r)||[]}var Ca=lu((function(n,r){try{return tt(n,t,r)}catch(n){return Lf(n)?n:new wn(n)}})),Ua=zi((function(n,t){return et(t,(function(t){t=go(t),le(n,t,sf(n[t],n))})),n}));function Ba(n){return function(){return n}}var Ta=oi(),Da=oi(!0);function $a(n){return n}function Ma(n){return qe('function'==typeof n?n:pe(n,1))}var Fa=lu((function(n,t){return function(r){return $e(r,n,t)}})),Na=lu((function(n,t){return function(r){return $e(n,r,t)}}));function Za(n,t,r){var e=pa(t),u=Re(t,e);null!=r||Bf(t)&&(u.length||!e.length)||(r=t,t=n,n=this,u=Re(t,pa(t)));var i=!(Bf(r)&&'chain'in r&&!r.chain),o=Wf(n);return et(u,(function(r){var e=t[r];n[r]=e,o&&(n.prototype[r]=function(){var t=this.__chain__;if(i||t){var r=n(this.__wrapped__);return(r.__actions__=Ku(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,lt([this.value()],arguments))})})),n}function Pa(){}var qa=li(ct),Ka=li(it),Va=li(pt);function Ga(n){return Ji(n)?jt(go(n)):uu(n)}var Ha=pi(),Ja=pi(!0);function Ya(){return[]}function Qa(){return!1}var Xa=ci((function(n,t){return n+t}),0),nc=gi('ceil'),tc=ci((function(n,t){return n/t}),1),rc=gi('floor');var ec,uc=ci((function(n,t){return n*t}),1),ic=gi('round'),oc=ci((function(n,t){return n-t}),0);return Pr.after=function(n,t){if('function'!=typeof t)throw new On(r);return n=Jf(n),function(){if(--n<1)return t.apply(this,arguments)}},Pr.ary=cf,Pr.assign=ta,Pr.assignIn=ra,Pr.assignInWith=ea,Pr.assignWith=ua,Pr.at=ia,Pr.before=lf,Pr.bind=sf,Pr.bindAll=Ua,Pr.bindKey=hf,Pr.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return zf(n)?n:[n]},Pr.chain=Vo,Pr.chunk=function(n,r,e){r=(e?Hi(n,r,e):r===t)?1:mr(Jf(r),0);var u=null==n?0:n.length;if(!u||r<1)return[];for(var i=0,o=0,f=en(_r(u/r));i>>0)?(n=na(n))&&('string'==typeof r||null!=r&&!Ff(r))&&!(r=ju(r))&&Ft(n)?Uu(Qt(n),0,e):n.split(r,e):[]},Pr.spread=function(n,t){if('function'!=typeof n)throw new On(r);return t=null==t?0:mr(Jf(t),0),lu((function(r){var e=r[t],u=Uu(r,0,t);return e&<(u,e),tt(n,this,u)}))},Pr.tail=function(n){var t=null==n?0:n.length;return t?du(n,1,t):[]},Pr.take=function(n,r,e){return n&&n.length?du(n,0,(r=e||r===t?1:Jf(r))<0?0:r):[]},Pr.takeRight=function(n,r,e){var u=null==n?0:n.length;return u?du(n,(r=u-(r=e||r===t?1:Jf(r)))<0?0:r,u):[]},Pr.takeRightWhile=function(n,t){return n&&n.length?Ou(n,Li(t,3),!1,!0):[]},Pr.takeWhile=function(n,t){return n&&n.length?Ou(n,Li(t,3)):[]},Pr.tap=function(n,t){return t(n),n},Pr.throttle=function(n,t,e){var u=!0,i=!0;if('function'!=typeof n)throw new On(r);return Bf(e)&&(u='leading'in e?!!e.leading:u,i='trailing'in e?!!e.trailing:i),pf(n,t,{leading:u,maxWait:t,trailing:i})},Pr.thru=Go,Pr.toArray=Gf,Pr.toPairs=ba,Pr.toPairsIn=wa,Pr.toPath=function(n){return zf(n)?ct(n,go):Pf(n)?[n]:Ku(_o(na(n)))},Pr.toPlainObject=Xf,Pr.transform=function(n,t,r){var e=zf(n),u=e||Ef(n)||qf(n);if(t=Li(t,4),null==r){var i=n&&n.constructor;r=u?e?new i:[]:Bf(n)&&Wf(i)?qr(rr(n)):{}}return(u?et:Oe)(n,(function(n,e,u){return t(r,n,e,u)})),r},Pr.unary=function(n){return cf(n,1)},Pr.union=Bo,Pr.unionBy=To,Pr.unionWith=Do,Pr.uniq=function(n){return n&&n.length?Au(n):[]},Pr.uniqBy=function(n,t){return n&&n.length?Au(n,Li(t,2)):[]},Pr.uniqWith=function(n,r){return r='function'==typeof r?r:t,n&&n.length?Au(n,t,r):[]},Pr.unset=function(n,t){return null==n||ku(n,t)},Pr.unzip=$o,Pr.unzipWith=Mo,Pr.update=function(n,t,r){return null==n?n:zu(n,t,Lu(r))},Pr.updateWith=function(n,r,e,u){return u='function'==typeof u?u:t,null==n?n:zu(n,r,Lu(e),u)},Pr.values=ma,Pr.valuesIn=function(n){return null==n?[]:Lt(n,va(n))},Pr.without=Fo,Pr.words=Wa,Pr.wrap=function(n,t){return xf(Lu(t),n)},Pr.xor=No,Pr.xorBy=Zo,Pr.xorWith=Po,Pr.zip=qo,Pr.zipObject=function(n,t){return Eu(n||[],t||[],ie)},Pr.zipObjectDeep=function(n,t){return Eu(n||[],t||[],pu)},Pr.zipWith=Ko,Pr.entries=ba,Pr.entriesIn=wa,Pr.extend=ra,Pr.extendWith=ea,Za(Pr,Pr),Pr.add=Xa,Pr.attempt=Ca,Pr.camelCase=ja,Pr.capitalize=Aa,Pr.ceil=nc,Pr.clamp=function(n,r,e){return e===t&&(e=r,r=t),e!==t&&(e=(e=Qf(e))==e?e:0),r!==t&&(r=(r=Qf(r))==r?r:0),he(Qf(n),r,e)},Pr.clone=function(n){return pe(n,4)},Pr.cloneDeep=function(n){return pe(n,5)},Pr.cloneDeepWith=function(n,r){return pe(n,5,r='function'==typeof r?r:t)},Pr.cloneWith=function(n,r){return pe(n,4,r='function'==typeof r?r:t)},Pr.conformsTo=function(n,t){return null==t||_e(n,t,pa(t))},Pr.deburr=ka,Pr.defaultTo=function(n,t){return null==n||n!=n?t:n},Pr.divide=tc,Pr.endsWith=function(n,r,e){n=na(n),r=ju(r);var u=n.length,i=e=e===t?u:he(Jf(e),0,u);return(e-=r.length)>=0&&n.slice(e,i)==r},Pr.eq=mf,Pr.escape=function(n){return(n=na(n))&&V.test(n)?n.replace(q,Dt):n},Pr.escapeRegExp=function(n){return(n=na(n))&&tn.test(n)?n.replace(nn,'\\$&'):n},Pr.every=function(n,r,e){var u=zf(n)?it:be;return e&&Hi(n,r,e)&&(r=t),u(n,Li(r,3))},Pr.find=Yo,Pr.findIndex=Ao,Pr.findKey=function(n,t){return dt(n,Li(t,3),Oe)},Pr.findLast=Qo,Pr.findLastIndex=ko,Pr.findLastKey=function(n,t){return dt(n,Li(t,3),Ie)},Pr.floor=rc,Pr.forEach=Xo,Pr.forEachRight=nf,Pr.forIn=function(n,t){return null==n?n:ke(n,Li(t,3),va)},Pr.forInRight=function(n,t){return null==n?n:ze(n,Li(t,3),va)},Pr.forOwn=function(n,t){return n&&Oe(n,Li(t,3))},Pr.forOwnRight=function(n,t){return n&&Ie(n,Li(t,3))},Pr.get=aa,Pr.gt=jf,Pr.gte=Af,Pr.has=function(n,t){return null!=n&&Ni(n,t,Ce)},Pr.hasIn=ca,Pr.head=Oo,Pr.identity=$a,Pr.includes=function(n,t,r,e){n=If(n)?n:ma(n),r=r&&!e?Jf(r):0;var u=n.length;return r<0&&(r=mr(u+r,0)),Zf(n)?r<=u&&n.indexOf(t,r)>-1:!!u&&xt(n,t,r)>-1},Pr.indexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=null==r?0:Jf(r);return u<0&&(u=mr(e+u,0)),xt(n,t,u)},Pr.inRange=function(n,r,e){return r=Hf(r),e===t?(e=r,r=0):e=Hf(e),Be(n=Qf(n),r,e)},Pr.invoke=ha,Pr.isArguments=kf,Pr.isArray=zf,Pr.isArrayBuffer=Of,Pr.isArrayLike=If,Pr.isArrayLikeObject=Rf,Pr.isBoolean=function(n){return!0===n||!1===n||Tf(n)&&Le(n)==g},Pr.isBuffer=Ef,Pr.isDate=Sf,Pr.isElement=function(n){return Tf(n)&&1===n.nodeType&&!Mf(n)},Pr.isEmpty=function(n){if(null==n)return!0;if(If(n)&&(zf(n)||'string'==typeof n||'function'==typeof n.splice||Ef(n)||qf(n)||kf(n)))return!n.length;var t=$i(n);if(t==w||t==z)return!n.size;if(Xi(n))return!Ke(n).length;for(var r in n)if(Fn.call(n,r))return!1;return!0},Pr.isEqual=function(n,t){return Fe(n,t)},Pr.isEqualWith=function(n,r,e){var u=(e='function'==typeof e?e:t)?e(n,r):t;return u===t?Fe(n,r,t,e):!!u},Pr.isError=Lf,Pr.isFinite=function(n){return'number'==typeof n&&xr(n)},Pr.isFunction=Wf,Pr.isInteger=Cf,Pr.isLength=Uf,Pr.isMap=Df,Pr.isMatch=function(n,t){return n===t||Ze(n,t,Ci(t))},Pr.isMatchWith=function(n,r,e){return e='function'==typeof e?e:t,Ze(n,r,Ci(r),e)},Pr.isNaN=function(n){return $f(n)&&n!=+n},Pr.isNative=function(n){if(Qi(n))throw new wn("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return Pe(n)},Pr.isNil=function(n){return null==n},Pr.isNull=function(n){return null===n},Pr.isNumber=$f,Pr.isObject=Bf,Pr.isObjectLike=Tf,Pr.isPlainObject=Mf,Pr.isRegExp=Ff,Pr.isSafeInteger=function(n){return Cf(n)&&n>=-9007199254740991&&n<=l},Pr.isSet=Nf,Pr.isString=Zf,Pr.isSymbol=Pf,Pr.isTypedArray=qf,Pr.isUndefined=function(n){return n===t},Pr.isWeakMap=function(n){return Tf(n)&&$i(n)==R},Pr.isWeakSet=function(n){return Tf(n)&&"[object WeakSet]"==Le(n)},Pr.join=function(n,t){return null==n?'':br.call(n,t)},Pr.kebabCase=za,Pr.last=So,Pr.lastIndexOf=function(n,r,e){var u=null==n?0:n.length;if(!u)return-1;var i=u;return e!==t&&(i=(i=Jf(e))<0?mr(u+i,0):jr(i,u-1)),r==r?Jt(n,r,i):yt(n,wt,i,!0)},Pr.lowerCase=Oa,Pr.lowerFirst=Ia,Pr.lt=Kf,Pr.lte=Vf,Pr.max=function(n){return n&&n.length?we(n,$a,We):t},Pr.maxBy=function(n,r){return n&&n.length?we(n,Li(r,2),We):t},Pr.mean=function(n){return mt(n,$a)},Pr.meanBy=function(n,t){return mt(n,Li(t,2))},Pr.min=function(n){return n&&n.length?we(n,$a,Ge):t},Pr.minBy=function(n,r){return n&&n.length?we(n,Li(r,2),Ge):t},Pr.stubArray=Ya,Pr.stubFalse=Qa,Pr.stubObject=function(){return{}},Pr.stubString=function(){return''},Pr.stubTrue=function(){return!0},Pr.multiply=uc,Pr.nth=function(n,r){return n&&n.length?nu(n,Jf(r)):t},Pr.noConflict=function(){return Zn._===this&&(Zn._=Gn),this},Pr.noop=Pa,Pr.now=af,Pr.pad=function(n,t,r){n=na(n);var e=(t=Jf(t))?Yt(n):0;if(!t||e>=t)return n;var u=(t-e)/2;return si(gr(u),r)+n+si(_r(u),r)},Pr.padEnd=function(n,t,r){n=na(n);var e=(t=Jf(t))?Yt(n):0;return t&&er){var u=n;n=r,r=u}if(e||n%1||r%1){var i=zr();return jr(n+i*(r-n+$n('1e-'+((i+'').length-1))),r)}return fu(n,r)},Pr.reduce=function(n,t,r){var e=zf(n)?st:kt,u=arguments.length<3;return e(n,Li(t,4),r,u,ye)},Pr.reduceRight=function(n,t,r){var e=zf(n)?ht:kt,u=arguments.length<3;return e(n,Li(t,4),r,u,xe)},Pr.repeat=function(n,r,e){return r=(e?Hi(n,r,e):r===t)?1:Jf(r),cu(na(n),r)},Pr.replace=function(){var n=arguments,t=na(n[0]);return n.length<3?t:t.replace(n[1],n[2])},Pr.result=function(n,r,e){var u=-1,i=(r=Wu(r,n)).length;for(i||(i=1,n=t);++ul)return[];var r=h,e=jr(n,h);t=Li(t),n-=h;for(var u=It(e,t);++r=o)return n;var a=e-Yt(u);if(a<1)return u;var c=f?Uu(f,0,a).join(''):n.slice(0,a);if(i===t)return c+u;if(f&&(a+=c.length-a),Ff(i)){if(n.slice(a).search(i)){var l,s=c;for(i.global||(i=kn(i.source,na(hn.exec(i))+'g')),i.lastIndex=0;l=i.exec(s);)var h=l.index;c=c.slice(0,h===t?a:h)}}else if(n.indexOf(ju(i),a)!=a){var p=c.lastIndexOf(i);p>-1&&(c=c.slice(0,p))}return c+u},Pr.unescape=function(n){return(n=na(n))&&K.test(n)?n.replace(P,nr):n},Pr.uniqueId=function(n){var t=++Nn;return na(n)+t},Pr.upperCase=Sa,Pr.upperFirst=La,Pr.each=Xo,Pr.eachRight=nf,Pr.first=Oo,Za(Pr,(ec={},Oe(Pr,(function(n,t){Fn.call(Pr.prototype,t)||(ec[t]=n)})),ec),{chain:!1}),Pr.VERSION="4.17.21",et(['bind','bindKey','curry','curryRight','partial','partialRight'],(function(n){Pr[n].placeholder=Pr})),et(['drop','take'],(function(n,r){Gr.prototype[n]=function(e){e=e===t?1:mr(Jf(e),0);var u=this.__filtered__&&!r?new Gr(this):this.clone();return u.__filtered__?u.__takeCount__=jr(e,u.__takeCount__):u.__views__.push({size:jr(e,h),type:n+(u.__dir__<0?'Right':'')}),u},Gr.prototype[n+'Right']=function(t){return this.reverse()[n](t).reverse()}})),et(['filter','map','takeWhile'],(function(n,t){var r=t+1,e=1==r||3==r;Gr.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:Li(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}})),et(['head','last'],(function(n,t){var r='take'+(t?'Right':'');Gr.prototype[n]=function(){return this[r](1).value()[0]}})),et(['initial','tail'],(function(n,t){var r='drop'+(t?'':'Right');Gr.prototype[n]=function(){return this.__filtered__?new Gr(this):this[r](1)}})),Gr.prototype.compact=function(){return this.filter($a)},Gr.prototype.find=function(n){return this.filter(n).head()},Gr.prototype.findLast=function(n){return this.reverse().find(n)},Gr.prototype.invokeMap=lu((function(n,t){return'function'==typeof n?new Gr(this):this.map((function(r){return $e(r,n,t)}))})),Gr.prototype.reject=function(n){return this.filter(df(Li(n)))},Gr.prototype.slice=function(n,r){n=Jf(n);var e=this;return e.__filtered__&&(n>0||r<0)?new Gr(e):(n<0?e=e.takeRight(-n):n&&(e=e.drop(n)),r!==t&&(e=(r=Jf(r))<0?e.dropRight(-r):e.take(r-n)),e)},Gr.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Gr.prototype.toArray=function(){return this.take(h)},Oe(Gr.prototype,(function(n,r){var e=/^(?:filter|find|map|reject)|While$/.test(r),u=/^(?:head|last)$/.test(r),i=Pr[u?'take'+('last'==r?'Right':''):r],o=u||/^find/.test(r);i&&(Pr.prototype[r]=function(){var r=this.__wrapped__,f=u?[1]:arguments,a=r instanceof Gr,c=f[0],l=a||zf(r),s=function(n){var t=i.apply(Pr,lt([n],f));return u&&h?t[0]:t};l&&e&&'function'==typeof c&&1!=c.length&&(a=l=!1);var h=this.__chain__,p=!!this.__actions__.length,v=o&&!h,_=a&&!p;if(!o&&l){r=_?r:new Gr(this);var g=n.apply(r,f);return g.__actions__.push({func:Go,args:[s],thisArg:t}),new Vr(g,h)}return v&&_?n.apply(this,f):(g=this.thru(s),v?u?g.value()[0]:g.value():g)})})),et(['pop','push','shift','sort','splice','unshift'],(function(n){var t=En[n],r=/^(?:push|sort|unshift)$/.test(n)?'tap':'thru',e=/^(?:pop|shift)$/.test(n);Pr.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(zf(u)?u:[],n)}return this[r]((function(r){return t.apply(zf(r)?r:[],n)}))}})),Oe(Gr.prototype,(function(n,t){var r=Pr[t];if(r){var e=r.name+'';Fn.call(Ur,e)||(Ur[e]=[]),Ur[e].push({name:t,func:r})}})),Ur[fi(t,2).name]=[{name:'wrapper',func:t}],Gr.prototype.clone=function(){var n=new Gr(this.__wrapped__);return n.__actions__=Ku(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Ku(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Ku(this.__views__),n},Gr.prototype.reverse=function(){if(this.__filtered__){var n=new Gr(this);n.__dir__=-1,n.__filtered__=!0}else(n=this.clone()).__dir__*=-1;return n},Gr.prototype.value=function(){var n=this.__wrapped__.value(),t=this.__dir__,r=zf(n),e=t<0,u=r?n.length:0,i=Mi(0,u,this.__views__),o=i.start,f=i.end,a=f-o,c=e?f:o-1,l=this.__iteratees__,s=l.length,h=0,p=jr(a,this.__takeCount__);if(!r||!e&&u==a&&p==a)return Iu(n,this.__actions__);var v=[];n:for(;a--&&h=this.__values__.length;return{done:n,value:n?t:this.__values__[this.__index__++]}},Pr.prototype.plant=function(n){for(var r,e=this;e instanceof Kr;){var u=bo(e);u.__index__=0,u.__values__=t,r?i.__wrapped__=u:r=u;var i=u;e=e.__wrapped__}return i.__wrapped__=n,r},Pr.prototype.reverse=function(){var n=this.__wrapped__;if(n instanceof Gr){var r=n;return this.__actions__.length&&(r=new Gr(this)),(r=r.reverse()).__actions__.push({func:Go,args:[Uo],thisArg:t}),new Vr(r,this.__chain__)}return this.thru(Uo)},Pr.prototype.toJSON=Pr.prototype.valueOf=Pr.prototype.value=function(){return Iu(this.__wrapped__,this.__actions__)},Pr.prototype.first=Pr.prototype.head,cr&&(Pr.prototype[cr]=function(){return this}),Pr})();'function'==typeof define&&'object'==typeof define.amd&&define.amd?(Zn._=ur,define((function(){return ur}))):qn?((qn.exports=ur)._=ur,Pn._=ur):Zn._=ur}).call(this)}),1294,[]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.styles=void 0;var t=r(d[0]);e.styles=t.StyleSheet.create({mainWrap:{justifyContent:'center'},container:{flexShrink:1,borderWidth:.5,borderColor:'#EEEEEE',backgroundColor:'white',shadowColor:'#000',shadowOffset:{width:0,height:1},shadowOpacity:.2,shadowRadius:1.41,elevation:2},flex1:{flex:1},flexShrink:{flexShrink:1},wrapTop:{justifyContent:'flex-end'},dropdown:{flexDirection:t.I18nManager.isRTL?'row-reverse':'row',justifyContent:'space-between',alignItems:'center'},title:{marginVertical:5,fontSize:16,writingDirection:t.I18nManager.isRTL?'rtl':'ltr'},item:{padding:17,flexDirection:t.I18nManager.isRTL?'row-reverse':'row',justifyContent:'space-between',alignItems:'center'},textItem:{flex:1,fontSize:16,writingDirection:t.I18nManager.isRTL?'rtl':'ltr'},icon:{width:20,height:20},input:{borderWidth:.5,borderColor:'#DDDDDD',paddingHorizontal:8,marginBottom:8,margin:6,height:45},fullScreen:{alignItems:'center',justifyContent:'center'}})}),1295,[2]); +__d((function(g,r,i,a,m,e,d){m.exports=r(d[0]).registerAsset({__packager_asset:!0,httpServerLocation:"/assets/node_modules/react-native-element-dropdown/src/assets",width:48,height:48,scales:[1],hash:"9be992ed4bfb81e46ea7a5233c9601bf",name:"down",type:"png"})}),1296,[891]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),l=e(_r(d[2])),n=e(_r(d[3])),i=e(_r(d[4])),r=e(_r(d[5])),a=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var l=u(t);if(l&&l.has(e))return l.get(e);var n={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var r in e)if("default"!==r&&{}.hasOwnProperty.call(e,r)){var a=i?Object.getOwnPropertyDescriptor(e,r):null;a&&(a.get||a.set)?Object.defineProperty(n,r,a):n[r]=e[r]}return n.default=e,l&&l.set(e,n),n})(_r(d[6])),o=_r(d[7]),s=e(_r(d[8]));function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,l=new WeakMap;return(u=function(e){return e?l:t})(e)}var c=_r(d[9]).useDetectDevice.isTablet,f=o.StatusBar.currentHeight||0,h=a.default.forwardRef((function(e,u){var h=(0,_r(d[10]).useDeviceOrientation)(),y=e.testID,b=e.itemTestIDField,v=e.onChange,S=e.data,x=void 0===S?[]:S,p=e.value,I=e.style,j=void 0===I?{}:I,C=e.labelField,w=e.valueField,k=e.searchField,T=e.selectedStyle,F=e.selectedTextStyle,L=e.itemContainerStyle,D=e.itemTextStyle,P=e.iconStyle,M=e.selectedTextProps,O=void 0===M?{}:M,V=e.activeColor,W=void 0===V?'#F6F7F8':V,_=e.containerStyle,H=e.fontFamily,E=e.placeholderStyle,A=e.iconColor,R=void 0===A?'gray':A,B=e.inputSearchStyle,N=e.searchPlaceholder,K=e.searchPlaceholderTextColor,z=void 0===K?'gray':K,q=e.placeholder,Q=void 0===q?'Select item':q,U=e.search,G=void 0!==U&&U,J=e.maxHeight,X=void 0===J?340:J,Y=e.minHeight,Z=void 0===Y?0:Y,$=e.maxSelect,ee=e.disable,te=void 0!==ee&&ee,le=e.keyboardAvoiding,ne=void 0===le||le,ie=e.inside,re=void 0!==ie&&ie,ae=e.inverted,oe=void 0===ae||ae,se=e.renderItem,ue=e.renderLeftIcon,ce=e.renderRightIcon,de=e.renderSelectedItem,fe=e.renderInputSearch,he=e.onFocus,ye=e.onBlur,be=e.showsVerticalScrollIndicator,ve=void 0===be||be,Se=e.dropdownPosition,xe=void 0===Se?'auto':Se,me=e.flatListProps,pe=e.alwaysRenderSelectedItem,ge=void 0!==pe&&pe,Ie=e.searchQuery,je=e.backgroundColor,Ce=e.onChangeText,we=e.confirmSelectItem,ke=e.confirmUnSelectItem,Te=e.onConfirmSelectItem,Fe=e.accessibilityLabel,Le=e.itemAccessibilityLabelField,De=e.visibleSelectedItem,Pe=void 0===De||De,Me=e.mode,Oe=void 0===Me?'default':Me,Ve=e.excludeItems,We=void 0===Ve?[]:Ve,He=e.excludeSearchItems,Ee=void 0===He?[]:He,Ae=(0,a.useRef)(null),Re=(0,a.useState)(!1),Be=(0,l.default)(Re,2),Ne=Be[0],Ke=Be[1],ze=(0,a.useState)([]),qe=(0,l.default)(ze,2),Qe=qe[0],Ue=qe[1],Ge=(0,a.useState)(x),Je=(0,l.default)(Ge,2),Xe=Je[0],Ye=Je[1],Ze=(0,a.useState)(Math.random()),$e=(0,l.default)(Ze,2)[1],et=(0,a.useState)(),tt=(0,l.default)(et,2),lt=tt[0],nt=tt[1],it=(0,a.useState)(0),rt=(0,l.default)(it,2),at=rt[0],ot=rt[1],st=(0,a.useState)(''),ut=(0,l.default)(st,2),ct=ut[0],dt=ut[1],ft=o.Dimensions.get('window'),ht=ft.width,yt=ft.height,bt=(0,a.useMemo)((function(){return{backgroundColor:'rgba(0,0,0,0.1)',alignItems:'center'}}),[]),vt=(0,a.useMemo)((function(){return{width:'LANDSCAPE'===h?ht/2:'100%',alignSelf:'center'}}),[ht,h]);(0,a.useImperativeHandle)(u,(function(){return{open:xt,close:mt}})),(0,a.useEffect)((function(){return mt}),[]);var St=(0,a.useCallback)((function(e){return We.length>0?(0,i.default)(e,We,(function(e,t){return(0,r.default)(e,w)===(0,r.default)(t,w)}))||[]:e||[]}),[We,w]);(0,a.useEffect)((function(){if(x&&0===ct.length){var e=St(x);Ye((0,t.default)(e))}ct&&kt(ct)}),[x,ct]);var xt=function(){te||(It(),Ke(!0),he&&he(),ct.length>0&&kt(ct))},mt=function(){te||(Ke(!1),ye&&ye())},pt=(0,a.useCallback)((function(){return H?{fontFamily:H}:{}}),[H]),gt=(0,a.useCallback)((function(){Ue(p?(0,t.default)(p):[])}),[p]),It=(0,a.useCallback)((function(){Ae&&null!=Ae&&Ae.current&&Ae.current.measureInWindow((function(e,t,l,n){var i=!c&&('modal'===Oe||'LANDSCAPE'===h);'auto'===Oe&&(i=!1);var r=i?20:n+t+2,a=yt-r+n,s=o.I18nManager.isRTL?ht-l-e:e;nt({isFull:i,width:Math.floor(l),top:Math.floor(r+f),bottom:Math.floor(a-f),left:Math.floor(s),height:Math.floor(n)})}))}),[yt,ht,h,Oe]),jt=(0,a.useCallback)((function(e){It(),ot(e.endCoordinates.height)}),[It]),Ct=(0,a.useCallback)((function(){ot(0),It()}),[It]);(0,a.useEffect)((function(){var e=o.Keyboard.addListener('keyboardDidShow',jt),t=o.Keyboard.addListener('keyboardDidHide',Ct);return function(){'function'==typeof(null==e?void 0:e.remove)&&e.remove(),'function'==typeof(null==t?void 0:t.remove)&&t.remove()}}),[Ct,jt]),(0,a.useEffect)((function(){gt()}),[gt,p]);var wt=(0,a.useCallback)((function(){if(!te){var e=!Ne;if(at>0&&!e)return o.Keyboard.dismiss();if(It(),Ke(e),x){var t=St(x);Ye(t)}e?he&&he():ye&&ye(),ct.length>0&&kt(ct)}}),[te,at,Ne,It,x,ct,he,ye]),kt=(0,a.useCallback)((function(e){if(e.length>0){var t=x.filter(Ie?function(t){var l=(0,r.default)(t,k||C);return null==Ie?void 0:Ie(e,l)}:function(t){var l,n=null==(l=(0,r.default)(t,k||C))?void 0:l.toLowerCase().replace(/\s/g,'').normalize('NFD').replace(/[\u0300-\u036f]/g,''),i=e.toLowerCase().replace(/\s/g,'').normalize('NFD').replace(/[\u0300-\u036f]/g,'');return n.indexOf(i)>=0});if(Ee.length>0||We.length>0){var l=(0,i.default)(t,Ee,(function(e,t){return(0,r.default)(e,w)===(0,r.default)(t,w)})),n=St(l);Ye(n)}else Ye(t)}else{var a=St(x);Ye(a)}}),[x,Ie,Ee,We,k,C,w,St]),Tt=(0,a.useCallback)((function(e){var l=(0,t.default)(Qe),n=l.findIndex((function(t){return t===(0,r.default)(e,w)}));n>-1?l.splice(n,1):$?l.length<$&&l.push((0,r.default)(e,w)):l.push((0,r.default)(e,w)),Te?n>-1?ke?Te(l):v(l):we?Te(l):v(l):v(l),$e(Math.random())}),[we,ke,Qe,$,v,Te,w]),Ft=(0,a.useCallback)((function(e){return Qe.findIndex((function(t){return t===(0,r.default)(e,w)}))>-1}),[Qe,w]),Lt=(0,a.useCallback)((function(e){var t=e.item,l=e.index,i=Ft(t);return(0,n.default)(t,{_index:l}),(0,_r(d[11]).jsx)(o.TouchableHighlight,{testID:(0,r.default)(t,b||C),accessible:!!Fe,accessibilityLabel:(0,r.default)(t,Le||C),underlayColor:W,onPress:function(){return Tt(t)},children:(0,_r(d[11]).jsx)(o.View,{style:o.StyleSheet.flatten([L,i&&Object.assign({backgroundColor:W},_r(d[12]).styles.wrapItem)]),children:se?se(t,i):(0,_r(d[11]).jsx)(o.View,{style:_r(d[12]).styles.item,children:(0,_r(d[11]).jsx)(o.Text,{style:o.StyleSheet.flatten([_r(d[12]).styles.textItem,D,pt()]),children:(0,r.default)(t,C)})})})},l.toString())}),[Fe,W,Ft,pt,Le,L,b,D,C,Tt,se]),Dt=(0,a.useCallback)((function(){return G?fe?fe((function(e){Ce&&(dt(e),Ce(e)),kt(e)})):(0,_r(d[11]).jsx)(s.default,{testID:y+' input',accessibilityLabel:Fe+' input',style:[_r(d[12]).styles.input,B],inputStyle:[B,pt()],autoCorrect:!1,placeholder:N,onChangeText:function(e){Ce&&(dt(e),Ce(e)),kt(e)},showIcon:!0,placeholderTextColor:z,iconStyle:[{tintColor:R},P]}):null}),[Fe,pt,R,P,B,Ce,kt,fe,G,N,z,y]),Pt=(0,a.useCallback)((function(e){var t=!!oe&&e,l=function(){return(0,_r(d[11]).jsx)(o.FlatList,Object.assign({testID:y+' flatlist',accessibilityLabel:Fe+' flatlist'},me,{keyboardShouldPersistTaps:"handled",data:Xe,inverted:!!e&&oe,renderItem:Lt,keyExtractor:function(e,t){return t.toString()},showsVerticalScrollIndicator:ve}))};return(0,_r(d[11]).jsx)(o.TouchableWithoutFeedback,{children:(0,_r(d[11]).jsxs)(o.View,{style:_r(d[12]).styles.flexShrink,children:[t&&l(),Dt(),!t&&l()]})})}),[Lt,Fe,me,Xe,oe,Dt,ve,y]),Mt=(0,a.useCallback)((function(){if(Ne&<){var e=lt.isFull,t=lt.width,l=lt.height,n=lt.top,i=lt.bottom,r=lt.left;if(t&&n&&i){var a={left:r,maxHeight:X,minHeight:Z},s='auto'===xe?at>0?i0&&s&&'auto'===xe&&(u=at),(0,_r(d[11]).jsx)(o.Modal,{transparent:!0,statusBarTranslucent:!0,visible:Ne,supportedOrientations:['landscape','portrait'],onRequestClose:wt,children:(0,_r(d[11]).jsx)(o.TouchableWithoutFeedback,{onPress:wt,children:(0,_r(d[11]).jsx)(o.View,{style:o.StyleSheet.flatten([_r(d[12]).styles.flex1,e&&bt,je&&{backgroundColor:je},{}]),children:(0,_r(d[11]).jsx)(o.View,{style:o.StyleSheet.flatten([_r(d[12]).styles.flex1,s?{justifyContent:'flex-end',paddingBottom:u}:{paddingTop:u},e&&_r(d[12]).styles.fullScreen]),children:(0,_r(d[11]).jsx)(o.View,{style:o.StyleSheet.flatten([_r(d[12]).styles.container,e?vt:a,{width:t},_]),children:Pt(s)})})})})})}return null}return null}),[Ne,G,lt,at,X,Z,xe,ne,wt,bt,je,_,vt,Pt]),Ot=function(e){te||Tt(e)},Vt=function(e){var t=x.filter((function(e){if(-1!==(null==p?void 0:p.indexOf((0,r.default)(e,w))))return e}));return(0,_r(d[11]).jsx)(o.View,{style:o.StyleSheet.flatten([_r(d[12]).styles.rowSelectedItem,e&&_r(d[12]).styles.flex1]),children:t.map((function(e){return de?(0,_r(d[11]).jsx)(o.TouchableWithoutFeedback,{testID:(0,r.default)(e,b||C),accessible:!!Fe,accessibilityLabel:(0,r.default)(e,Le||C),onPress:function(){return Ot(e)},children:de(e,(function(){Ot(e)}))},(0,r.default)(e,C)):(0,_r(d[11]).jsx)(o.TouchableWithoutFeedback,{testID:(0,r.default)(e,b||C),accessible:!!Fe,accessibilityLabel:(0,r.default)(e,Le||C),onPress:function(){return Ot(e)},children:(0,_r(d[11]).jsxs)(o.View,{style:o.StyleSheet.flatten([_r(d[12]).styles.selectedItem,T]),children:[(0,_r(d[11]).jsx)(o.Text,{style:o.StyleSheet.flatten([_r(d[12]).styles.selectedTextLeftItem,F,pt()]),children:(0,r.default)(e,C)}),(0,_r(d[11]).jsx)(o.Text,{style:o.StyleSheet.flatten([_r(d[12]).styles.selectedTextItem,F]),children:"\u24e7"})]})},(0,r.default)(e,C))}))})},Wt=function(){return(0,_r(d[11]).jsx)(o.TouchableWithoutFeedback,{testID:y,accessible:!!Fe,accessibilityLabel:Fe,onPress:wt,children:(0,_r(d[11]).jsxs)(o.View,{style:_r(d[12]).styles.dropdownInside,children:[null==ue?void 0:ue(),p&&(null==p?void 0:p.length)>0?Vt(!0):(0,_r(d[11]).jsx)(o.Text,{style:o.StyleSheet.flatten([_r(d[12]).styles.textItem,E,pt()]),children:Q}),ce?ce():(0,_r(d[11]).jsx)(o.Image,{source:_r(d[13]),style:o.StyleSheet.flatten([_r(d[12]).styles.icon,{tintColor:R},P])})]})})};return re?(0,_r(d[11]).jsxs)(o.View,{style:o.StyleSheet.flatten([_r(d[12]).styles.mainWrap,j]),ref:Ae,onLayout:It,children:[Wt(),Mt()]}):(0,_r(d[11]).jsxs)(_r(d[11]).Fragment,{children:[(0,_r(d[11]).jsxs)(o.View,{style:o.StyleSheet.flatten([_r(d[12]).styles.mainWrap,j]),ref:Ae,onLayout:It,children:[(0,_r(d[11]).jsx)(o.TouchableWithoutFeedback,{testID:y,accessible:!!Fe,accessibilityLabel:Fe,onPress:wt,children:(0,_r(d[11]).jsxs)(o.View,{style:_r(d[12]).styles.dropdown,children:[null==ue?void 0:ue(Ne),(0,_r(d[11]).jsx)(o.Text,Object.assign({style:o.StyleSheet.flatten([_r(d[12]).styles.textItem,E,pt()])},O,{children:Q})),ce?ce(Ne):(0,_r(d[11]).jsx)(o.Image,{source:_r(d[13]),style:o.StyleSheet.flatten([_r(d[12]).styles.icon,{tintColor:R},P])})]})}),Mt()]}),(!Ne||ge)&&Pe&&Vt(!1)]})}));_e.default=h}),1297,[1,6,38,1142,1192,1246,178,2,1289,1292,1293,223,1298,1296]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.styles=void 0;var t=r(d[0]);e.styles=t.StyleSheet.create({mainWrap:{justifyContent:'center'},container:{flexShrink:1,backgroundColor:'white',borderWidth:.5,borderColor:'#EEEEEE',shadowColor:'#000',shadowOffset:{width:0,height:1},shadowOpacity:.2,shadowRadius:1.41,elevation:2},flex1:{flex:1},flexShrink:{flexShrink:1},wrapTop:{justifyContent:'flex-end'},dropdown:{flexDirection:t.I18nManager.isRTL?'row-reverse':'row',justifyContent:'space-between',alignItems:'center'},dropdownInside:{flexDirection:t.I18nManager.isRTL?'row-reverse':'row',justifyContent:'space-between',alignItems:'center',minHeight:35},title:{marginVertical:5,fontSize:16,writingDirection:t.I18nManager.isRTL?'rtl':'ltr'},wrapItem:{marginBottom:.5},item:{padding:17,flexDirection:t.I18nManager.isRTL?'row-reverse':'row',justifyContent:'space-between',alignItems:'center'},textItem:{flex:1,fontSize:16,writingDirection:t.I18nManager.isRTL?'rtl':'ltr'},icon:{width:20,height:20},input:{borderWidth:.5,borderColor:'#DDDDDD',paddingHorizontal:8,marginBottom:8,margin:6,height:45},rowSelectedItem:{flexDirection:t.I18nManager.isRTL?'row-reverse':'row',flexWrap:'wrap'},selectedItem:{padding:8,alignItems:'center',justifyContent:'center',borderWidth:.5,borderColor:'gray',paddingHorizontal:8,marginVertical:6,marginRight:8,flexDirection:t.I18nManager.isRTL?'row-reverse':'row'},selectedTextItem:{marginLeft:5,color:'gray',fontSize:16,writingDirection:t.I18nManager.isRTL?'rtl':'ltr'},selectedTextLeftItem:{fontSize:12,color:'gray',writingDirection:t.I18nManager.isRTL?'rtl':'ltr'},fullScreen:{alignItems:'center',justifyContent:'center'}})}),1298,[2]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=u(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var i=l?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n})(_r(d[1])),r=_r(d[2]),n=e(_r(d[3]));function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(u=function(e){return e?r:t})(e)}var l=t.default.forwardRef((function(e,u){var l=e.data,a=e.value,i=e.valueField,o=e.labelField,f=e.imageField,s=e.selectedTextStyle,c=e.imageStyle,y=(0,t.useRef)(null);(0,t.useImperativeHandle)(u,(function(){return{open:p,close:v}}));var p=function(){y.current.open()},v=function(){y.current.close()},j=(0,t.useMemo)((function(){var e=l.findIndex((function(e){return e[i]===a}));return l[e]}),[l,i,a]);return(0,_r(d[4]).jsx)(n.default,Object.assign({ref:y},e,{renderItem:function(e){return(0,_r(d[4]).jsxs)(r.View,{style:_r(d[5]).styles.item,children:[(0,_r(d[4]).jsx)(r.Image,{source:e[f],style:[_r(d[5]).styles.image,c]}),(0,_r(d[4]).jsx)(r.Text,{style:[_r(d[5]).styles.selectedTextStyle,s],children:e[o]})]})},renderLeftIcon:function(){return null!=j&&j.image?(0,_r(d[4]).jsx)(r.Image,{source:j.image,style:[_r(d[5]).styles.image,c]}):null}}))}));_e.default=l}),1299,[1,178,2,1141,223,1300]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.styles=void 0;var t=r(d[0]);e.styles=t.StyleSheet.create({dropdown:{width:58,paddingHorizontal:6,height:26},container:{width:60},item:{flexDirection:t.I18nManager.isRTL?'row-reverse':'row',padding:6,alignItems:'center'},image:{width:20,height:20,marginRight:3,marginVertical:4},selectedTextStyle:{flex:1,fontSize:12,writingDirection:t.I18nManager.isRTL?'rtl':'ltr'}})}),1300,[2]); +__d((function(g,r,i,a,m,e,d){Object.defineProperty(e,"__esModule",{value:!0}),e.styles=void 0;var o=r(d[0]);e.styles=function(t){return o.StyleSheet.create({dropdown:{height:50,borderColor:t?"#B28DFF":"#7D3C98",borderWidth:2,borderRadius:12,paddingHorizontal:10,backgroundColor:t?"#4B294F":"#F8F7FE"},placeholderStyle:{fontSize:16,color:t?"#E0D3F5":"#4B0082"},selectedTextStyle:{fontSize:16,color:t?"white":"black"},inputSearchStyle:{height:40,fontSize:16,color:"black"}})}}),1301,[2]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s=r(d[1]);t(r(d[2])),e.default=function(t){var n=t.uri,l=t.setUri,c=(0,r(d[3]).useSettingsContext)().language,u=(0,r(d[4]).useImageContext)().width;return(0,r(d[5]).jsx)(s.View,{className:"items-center",children:(0,r(d[5]).jsxs)(s.View,{className:"w-full bg-black items-center",children:[(0,r(d[5]).jsx)(s.Image,{className:"justify-center my-5",source:{uri:`file://${n}`},style:{width:1===u?250:140,height:250}}),(0,r(d[5]).jsx)(s.TouchableOpacity,{onPress:function(){return l(null)},className:"border-white border-2 rounded-lg mb-5",children:(0,r(d[5]).jsx)(s.Text,{className:"text-white font-bold text-xl text-center px-6 py-2",children:r(d[6]).translations[c||"en-EN"].screens.UploadForm.changePicture})})]})})}}),1302,[1,2,178,787,934,223,789]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.uploadImage=void 0;var n=t(r(d[1])),o=t(r(d[2])),u=t(r(d[3]));e.uploadImage=(function(){var t=(0,n.default)((function*(t){try{var n=yield u.default.get("token"),l={uri:"file://"+t,name:(new Date).toISOString().replace(/:/g,"-")+".png",type:"image/png"},p=new FormData;return p.append("file",l),(yield o.default.post(r(d[4]).uri+"/images/",p,{headers:{Authorization:`Bearer ${n}`,"Content-Type":"multipart/form-data"}})).data}catch(t){throw console.error("Error:",t.response.data),t}}));return function(n){return t.apply(this,arguments)}})()}),1303,[1,564,796,778,788]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;n(r(d[1]));var t=n(r(d[2])),o=n(r(d[3])),c=n(r(d[4])),l=n(r(d[5])),f=n(r(d[6])),s=n(r(d[7]));e.default=function(n){var u=(0,r(d[8]).createNativeStackNavigator)();return(0,r(d[9]).jsxs)(u.Navigator,{id:void 0,screenOptions:{headerShown:!1},children:[(0,r(d[9]).jsx)(u.Screen,{name:"Profile",component:t.default}),(0,r(d[9]).jsx)(u.Screen,{name:"FollowList",component:o.default}),(0,r(d[9]).jsx)(u.Screen,{name:"Settings",component:c.default}),(0,r(d[9]).jsx)(u.Screen,{name:"ProfileForm",component:l.default}),(0,r(d[9]).jsx)(u.Screen,{name:"ProfilePictureScreen",component:f.default}),(0,r(d[9]).jsx)(u.Screen,{name:"Comments",component:s.default})]})}}),1304,[1,178,1305,1312,1314,1316,1317,1318,937,223]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),l=e(_r(d[2])),n=e(_r(d[3])),r=_r(d[4]),a=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var l=x(t);if(l&&l.has(e))return l.get(e);var n={__proto__:null},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var i=r?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,l&&l.set(e,n),n})(_r(d[5])),i=e(_r(d[6])),o=e(_r(d[7])),s=e(_r(d[8])),u=e(_r(d[9])),c=e(_r(d[10])),f=e(_r(d[11])),h=e(_r(d[12]));function x(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,l=new WeakMap;return(x=function(e){return e?l:t})(e)}_e.default=function(e){var x,y,b,p,w=e.navigation,j=e.route,v=(0,a.useState)({}),S=(0,n.default)(v,2),N=S[0],P=S[1],O=(0,a.useState)(""),E=(0,n.default)(O,2),T=E[0],F=E[1],k=(0,a.useState)(""),_=(0,n.default)(k,2),V=_[0],C=_[1],z=(0,a.useState)(!1),B=(0,n.default)(z,2),D=B[0],M=B[1],I=(0,a.useState)(!1),R=(0,n.default)(I,2),U=R[0],W=R[1],A=(0,a.useState)(null),Q=(0,n.default)(A,2),L=Q[0],$=Q[1],G=(0,a.useState)(null),H=(0,n.default)(G,2),q=H[0],J=H[1],K=(0,_r(d[13]).useSettingsContext)(),X=K.language,Y=K.darkmode,Z=(0,_r(d[14]).useTokenContext)().email,ee=(0,a.useState)([]),te=(0,n.default)(ee,2),le=te[0],ne=te[1],re=(0,a.useRef)((new Date).toISOString().slice(0,19)),ae=(0,_r(d[15]).useImageContext)().uri,ie=(0,a.useState)([]),oe=(0,n.default)(ie,2),se=oe[0],ue=oe[1],ce=(function(){var e=(0,l.default)((function*(){yield fe(),yield de(),yield me()}));return function(){return e.apply(this,arguments)}})();(0,a.useEffect)((function(){ce()}),[null==(x=j.params)?void 0:x.email,ae]),(0,a.useEffect)((function(){(D||U)&&ce()}),[D,U]);var fe=(function(){var e=(0,l.default)((function*(){try{var e,t,l;if(null!=(e=j.params)&&e.email)t=yield(0,_r(d[16]).getUser)(null==(l=j.params)?void 0:l.email);else t=yield(0,_r(d[16]).getOwnUser)();P(t),F((0,_r(d[17]).convertQuantityToString)(t.followers)),C((0,_r(d[17]).convertQuantityToString)(t.following))}catch(e){r.Alert.alert("Error",e.response.data)}finally{M(!1)}}));return function(){return e.apply(this,arguments)}})(),de=(function(){var e=(0,l.default)((function*(){try{var e=yield(0,_r(d[18]).getUserPosts)(re.current,N.email);ne(U?[].concat((0,t.default)(le),(0,t.default)(e)):e)}catch(e){r.Alert.alert("Error",e.response.data)}finally{M(!1),W(!1)}}));return function(){return e.apply(this,arguments)}})(),me=(function(){var e=(0,l.default)((function*(){try{var e=yield(0,_r(d[19]).getBadgesByEmail)(N.email);ue(e)}catch(e){console.error("Error fetching badges:",e)}finally{M(!1)}}));return function(){return e.apply(this,arguments)}})(),he=(function(){var e=(0,l.default)((function*(){try{N.isFollowing?yield(0,_r(d[16]).unfollowUser)(N.email):yield(0,_r(d[16]).followUser)(N.email),P(Object.assign({},N,{isFollowing:!N.isFollowing,followers:N.isFollowing?N.followers-1:N.followers+1}));var e=N.isFollowing?Math.max(0,N.followers-1):N.followers+1;F((0,_r(d[17]).convertQuantityToString)(e))}catch(e){r.Alert.alert("Error",e.response.data)}}));return function(){return e.apply(this,arguments)}})();return(0,_r(d[20]).jsxs)(r.View,{className:`flex-1 ${(0,_r(d[17]).bgColor)(Y)}`,children:[L&&(0,_r(d[20]).jsxs)(r.View,{className:"absolute w-full h-full z-10",children:[(0,_r(d[20]).jsx)(r.TouchableWithoutFeedback,{onPress:function(){return $(null)},children:(0,_r(d[20]).jsx)(r.View,{className:"flex-1 bg-black opacity-80 w-full h-full absolute"})}),(0,_r(d[20]).jsx)(r.View,{className:"absolute justify-center h-full",children:(0,_r(d[20]).jsx)(f.default,{post:L,navigation:w})})]}),q&&(0,_r(d[20]).jsxs)(r.View,{className:"absolute w-full h-full z-10",children:[(0,_r(d[20]).jsx)(r.TouchableWithoutFeedback,{onPress:function(){return J(null)},children:(0,_r(d[20]).jsx)(r.View,{className:"absolute w-full h-full bg-black opacity-80"})}),(0,_r(d[20]).jsx)(r.View,{className:"flex-1 justify-center items-center",children:(0,_r(d[20]).jsx)(h.default,{item:q})})]}),!(null==(y=j.params)||!y.email)&&(0,_r(d[20]).jsx)(c.default,{navigation:w,message:N.username}),(0,_r(d[20]).jsxs)(r.View,{className:"bg-[#E4D8E9] flex-row border-b-2 border-[#4B0082]",children:[!(null!=(b=j.params)&&b.email)&&(0,_r(d[20]).jsx)(r.TouchableOpacity,{onPress:function(){return w.navigate("Settings")},className:"absolute top-5 right-5 z-10",children:(0,_r(d[20]).jsx)(i.default,{name:"settings",size:28,color:"black"})}),(0,_r(d[20]).jsx)(r.TouchableOpacity,{className:"m-5 items-center",onPress:function(){return w.navigate("ProfilePictureScreen",{email:N.email})},disabled:!(null==(p=j.params)||!p.email),children:(0,_r(d[20]).jsx)(u.default,{image:null==N?void 0:N.image,size:103,style:"rounded-full border-2 border-[#4B0082]"})}),(0,_r(d[20]).jsxs)(r.View,{className:"mt-5",children:[(0,_r(d[20]).jsx)(r.Text,{className:"text-black text-4xl font-bold",children:null==N?void 0:N.username}),(0,_r(d[20]).jsx)(s.default,{followers:T,following:V,email:N.email,navigation:w}),N.email!==Z&&(0,_r(d[20]).jsx)(r.TouchableOpacity,{className:"border-2 rounded-lg px-4 py-2 border-[#F65261]",onPress:he,children:(0,_r(d[20]).jsx)(r.Text,{className:"font-bold text-base text-center "+(Y?"text-[#B28DFF]":"text-[#4B0082]"),children:N.isFollowing?_r(d[21]).translations[X||"en-EN"].screens.Profile.unfollow:_r(d[21]).translations[X||"en-EN"].screens.Profile.follow})})]})]}),(0,_r(d[20]).jsx)(r.FlatList,{style:{minHeight:100,width:"100%",flexGrow:0},className:`border-b-2 border-[#4B0082] ${(0,_r(d[17]).bgColor)(Y)}`,horizontal:!0,data:se,renderItem:function(e){var t=e.item;return(0,_r(d[20]).jsx)(r.TouchableOpacity,{onPress:function(){return J(t)},children:(0,_r(d[20]).jsx)(u.default,{image:t.image,size:72,style:"rounded-full mt-4 ml-5"})})}}),(0,_r(d[20]).jsx)(r.FlatList,{refreshControl:(0,_r(d[20]).jsx)(r.RefreshControl,{refreshing:D,onRefresh:function(){re.current=(new Date).toISOString().slice(0,19),M(!0)}}),style:{width:"100%",marginTop:10},data:le,renderItem:function(e){var t=e.item;return(0,_r(d[20]).jsx)(o.default,{item:t,method:function(e){$(e)}})},keyExtractor:function(e){return e.id},numColumns:3,onEndReached:function(){U||0===le.length||(re.current=le[le.length-1].createdAt,W(!0))},onEndReachedThreshold:.5})]})}}),1305,[1,6,564,38,2,178,912,1306,1307,900,911,1308,1310,787,794,934,1311,788,1309,902,223,789]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var l=r(d[1]),n=(t(r(d[2])),t(r(d[3])));e.default=function(t){var s,o=t.item,c=t.method;return(0,r(d[4]).jsxs)(l.TouchableOpacity,{onPress:function(){return c(o)},className:"m-2 rounded-xl shadow-md shadow-black",children:[(0,r(d[4]).jsx)(n.default,{image:o.image,size:117,height:210,style:"rounded-xl"}),(0,r(d[4]).jsx)(l.View,{className:"z-index-10 -mt-10 bg-[#00000090] rounded-b-xl py-2",children:(0,r(d[4]).jsx)(l.Text,{className:"text-white text-xl font-bold text-center",children:null==(s=o.activity)?void 0:s.name})})]})}}),1306,[1,2,178,900,223]); +__d((function(g,r,i,a,m,e,d){var l=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=r(d[1]);l(r(d[2])),e.default=function(l){var t=(0,r(d[3]).useSettingsContext)().language;return(0,r(d[4]).jsxs)(n.View,{className:"flex-1 flex-col",children:[(0,r(d[4]).jsx)(n.TouchableOpacity,{onPress:function(){return l.navigation.navigate("FollowList",{email:l.email,type:"followers"})},children:(0,r(d[4]).jsxs)(n.Text,{className:"text-black text-lg",children:[r(d[5]).translations[t||'en-EN'].screens.Profile.followers,": ",l.followers]})}),(0,r(d[4]).jsx)(n.TouchableOpacity,{onPress:function(){return l.navigation.navigate("FollowList",{email:l.email,type:"following"})},children:(0,r(d[4]).jsxs)(n.Text,{className:"text-black text-lg",children:[r(d[5]).translations[t||'en-EN'].screens.Profile.following,": ",l.following]})})]})}}),1307,[1,2,178,787,223,789]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),i=e(_r(d[2])),r=_r(d[3]),n=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var i=a(t);if(i&&i.has(e))return i.get(e);var r={__proto__:null},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var s=n?Object.getOwnPropertyDescriptor(e,l):null;s&&(s.get||s.set)?Object.defineProperty(r,l,s):r[l]=e[l]}return r.default=e,i&&i.set(e,r),r})(_r(d[4])),l=e(_r(d[5])),s=e(_r(d[6]));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,i=new WeakMap;return(a=function(e){return e?i:t})(e)}_e.default=function(e){var a,o,c,u=(0,n.useState)({}),x=(0,i.default)(u,2),f=x[0],h=x[1],j=(0,_r(d[7]).useSettingsContext)(),p=j.darkmode,v=j.lefthand;(0,n.useEffect)((function(){h(Object.assign({},e.post))}),[e.post]);var y=(function(){var e=(0,t.default)((function*(){try{f.isLiked?yield(0,_r(d[8]).unLikePost)(f.id):yield(0,_r(d[8]).likePost)(f.id),h(Object.assign({},f,{likes:f.isLiked?f.likes-1:f.likes+1,isLiked:!f.isLiked}))}catch(e){console.error("Error liking post:",e)}}));return function(){return e.apply(this,arguments)}})();return(0,_r(d[9]).jsxs)(r.View,{className:`${(0,_r(d[10]).cardBgColor)(p)} flex-row rounded-xl m-5`,children:[v&&(0,_r(d[9]).jsxs)(r.View,{children:[(0,_r(d[9]).jsx)(s.default,{image:f.image,size:281,height:485,style:"rounded-l-xl"}),(0,_r(d[9]).jsx)(r.View,{className:"z-10 -mt-16 bg-[#33333395] rounded-bl-xl py-5",children:(0,_r(d[9]).jsx)(r.Text,{className:"text-white text-xl font-bold text-center",children:null==(a=f.activity)?void 0:a.name})})]}),(0,_r(d[9]).jsxs)(r.View,{className:"flex-col m-3",children:[(0,_r(d[9]).jsx)(r.TouchableOpacity,{onPress:function(){var t;return e.navigation.navigate("ProfileStackNavigation",{screen:"Profile",params:{email:null==(t=f.user)?void 0:t.email}})},children:(0,_r(d[9]).jsx)(s.default,{image:null==(o=f.user)?void 0:o.image,size:53,style:`rounded-full border-2 ${(0,_r(d[10]).borderColor)(p)}`})}),(0,_r(d[9]).jsxs)(r.TouchableOpacity,{onPress:y,className:"mt-10 items-center",children:[(0,_r(d[9]).jsx)(l.default,{name:f.isLiked?"heart":"heart-outline",size:53,color:f.isLiked?"#F65261":`${(0,_r(d[10]).iconColor)(p)}`}),(0,_r(d[9]).jsx)(r.Text,{className:`${(0,_r(d[10]).textColor)(p)} text-center text-lg`,children:f.likes})]}),(0,_r(d[9]).jsxs)(r.TouchableOpacity,{onPress:function(){return e.navigation.navigate("Comments",{postID:f.id})},className:"mt-10 items-center",children:[(0,_r(d[9]).jsx)(l.default,{name:"chatbox-outline",size:53,color:(0,_r(d[10]).iconColor)(p)}),(0,_r(d[9]).jsx)(r.Text,{className:`${(0,_r(d[10]).textColor)(p)} text-center text-lg`,children:f.comments})]}),(0,_r(d[9]).jsxs)(r.View,{className:"mt-32 items-center",children:[(0,_r(d[9]).jsx)(l.default,{name:"flame",size:53,color:"#F65261"}),(0,_r(d[9]).jsx)(r.Text,{className:`${(0,_r(d[10]).textColor)(p)} text-center text-lg`,children:f.streak})]})]}),!v&&(0,_r(d[9]).jsxs)(r.View,{children:[(0,_r(d[9]).jsx)(s.default,{image:f.image,size:281,height:485,style:"rounded-r-xl"}),(0,_r(d[9]).jsx)(r.View,{className:"z-10 -mt-16 bg-[#33333395] rounded-br-xl py-5",children:(0,_r(d[9]).jsx)(r.Text,{className:"text-white text-xl font-bold text-center",children:null==(c=f.activity)?void 0:c.name})})]})]})}}),1308,[1,564,38,2,178,912,900,787,1309,223,788]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.uploadPost=e.unLikePost=e.likePost=e.getUserPosts=e.getPostsFollowing=e.getPosts=e.getPostBySuscribedActivities=void 0;var n=t(r(d[1])),o=t(r(d[2])),s=t(r(d[3]));e.getPostsFollowing=(function(){var t=(0,n.default)((function*(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r(d[4]).limit;try{var u=yield s.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`query {\n postsFollowingV2(lastDate: "${t}", limit: ${n}) {\n id\n image\n updatedAt\n createdAt\n streak\n comments\n likes\n isLiked\n user {\n email\n image\n }\n activity {\n name\n }\n }\n }`},{headers:{Authorization:`Bearer ${u}`}})).data.data.postsFollowingV2}catch(t){throw console.error("Error:",t.response.data),t}}));return function(n){return t.apply(this,arguments)}})(),e.getPosts=(function(){var t=(0,n.default)((function*(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r(d[4]).limit;try{var u=yield s.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`query {\n postsV2(lastDate: "${t}", limit: ${n}) {\n id\n image\n updatedAt\n createdAt\n streak\n comments\n likes\n isLiked\n user {\n email\n image\n }\n activity {\n name\n }\n }\n }`},{headers:{Authorization:`Bearer ${u}`}})).data.data.postsV2}catch(t){throw console.error("Error:",t.response.data),t}}));return function(n){return t.apply(this,arguments)}})(),e.getUserPosts=(function(){var t=(0,n.default)((function*(t,n){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r(d[4]).limit;try{var l=yield s.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`query {\n postsByUserV2(lastDate: "${t}", userEmail: "${n}", limit: ${u}) {\n id\n streak\n comments\n image\n likes\n isLiked\n updatedAt\n createdAt\n user {\n email\n image\n }\n activity {\n name\n }\n }\n }`},{headers:{Authorization:`Bearer ${l}`}})).data.data.postsByUserV2}catch(t){throw console.error("Error:",t.response.data),t}}));return function(n,o){return t.apply(this,arguments)}})(),e.getPostBySuscribedActivities=(function(){var t=(0,n.default)((function*(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r(d[4]).limit;try{var u=yield s.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`query {\n postsSubscribedActivitiesV2(lastDate: "${t}", limit: ${n}) {\n id\n image\n updatedAt\n createdAt\n streak\n comments\n likes\n isLiked\n user {\n email\n image\n }\n activity {\n name\n }\n }\n }`},{headers:{Authorization:`Bearer ${u}`}})).data.data.postsSubscribedActivitiesV2}catch(t){throw console.error("Error:",t.response.data),t}}));return function(n){return t.apply(this,arguments)}})(),e.uploadPost=(function(){var t=(0,n.default)((function*(t,n){try{var u=yield s.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`mutation {\n uploadPost(activityID: "${t}", image: "${n}") {\n id\n }\n }`},{headers:{Authorization:`Bearer ${u}`}})).data.data.uploadPost}catch(t){throw console.error("Error:",t.response.data),t}}));return function(n,o){return t.apply(this,arguments)}})(),e.likePost=(function(){var t=(0,n.default)((function*(t){try{var n=yield s.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`mutation {\n likePost(postID: "${t}")\n }`},{headers:{Authorization:`Bearer ${n}`}})).data.data.likePost}catch(t){throw console.error("Error:",t.response.data),t}}));return function(n){return t.apply(this,arguments)}})(),e.unLikePost=(function(){var t=(0,n.default)((function*(t){try{var n=yield s.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`mutation {\n unLikePost(postID: "${t}")\n }`},{headers:{Authorization:`Bearer ${n}`}})).data.data.unLikePost}catch(t){throw console.error("Error:",t.response.data),t}}));return function(n){return t.apply(this,arguments)}})()}),1309,[1,564,796,778,788]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var l=r(d[1]),s=(t(r(d[2])),t(r(d[3])));e.default=function(t){var n,x,o,c=t.item;return(0,r(d[4]).jsxs)(l.View,{className:"flex-row items-center justify-start p-5 bg-[#E8E2F0] rounded-2xl w-11/12 mx-auto my-3",children:[(0,r(d[4]).jsx)(s.default,{image:c.image,size:90,style:"rounded-full border-2 border-[#4B0082]"}),(0,r(d[4]).jsxs)(l.View,{className:"ml-5 flex-1",children:[(0,r(d[4]).jsx)(l.Text,{className:"text-2xl font-bold text-[#4B0082] mb-1",children:null==(n=c.communityEvent)?void 0:n.name}),(0,r(d[4]).jsxs)(l.Text,{className:"text-lg text-[#333333]",children:["Level: ",c.level]}),(0,r(d[4]).jsxs)(l.Text,{className:"text-lg text-[#333333]",children:["Points Needed: ",null==(x=c.communityEvent)?void 0:x.totalRequired]}),(0,r(d[4]).jsxs)(l.Text,{className:"text-lg text-[#333333]",children:["End Date: ",null==(o=c.communityEvent)?void 0:o.finishDate.slice(0,10)]})]})]})}}),1310,[1,2,178,900,223]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.updateUser=e.unfollowUser=e.getUser=e.getOwnUserImageAndEmail=e.getOwnUser=e.getFollows=e.followUser=void 0;var t=n(r(d[1])),o=n(r(d[2])),l=n(r(d[3]));e.getOwnUser=(function(){var n=(0,t.default)((function*(){try{var n=yield l.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:"\n query {\n getOwnUser {\n id\n username\n email\n nationality\n phoneNumber\n image\n createdAt\n followers\n following\n }\n }\n "},{headers:{Authorization:`Bearer ${n}`}})).data.data.getOwnUser}catch(n){throw console.error("Error fetching user:",n),new Error("Error fetching user")}}));return function(){return n.apply(this,arguments)}})(),e.getOwnUserImageAndEmail=(function(){var n=(0,t.default)((function*(){try{var n=yield l.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:"\n query {\n getOwnUser {\n image\n email\n }\n }\n "},{headers:{Authorization:`Bearer ${n}`}})).data.data.getOwnUser}catch(n){throw console.error("Error fetching user image:",n),new Error("Error fetching user image")}}));return function(){return n.apply(this,arguments)}})(),e.getUser=(function(){var n=(0,t.default)((function*(n){try{return(yield o.default.post(r(d[4]).neo4jUri,{query:`\n query {\n getUserV2IsFollowing(email: "${n}") {\n id\n username\n email\n phoneNumber\n image\n followers\n following\n isFollowing\n }\n }\n `},{headers:{Authorization:`Bearer ${yield l.default.get("token")}`}})).data.data.getUserV2IsFollowing}catch(n){throw console.error("Error:",n.response.data),n}}));return function(t){return n.apply(this,arguments)}})(),e.getFollows=(function(){var n=(0,t.default)((function*(n,t){try{var u=yield l.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`\n query {\n followersByEmail(email: "${n}", usernameFilter: "${t}") {\n id\n username\n nationality\n image\n createdAt\n followers\n following\n isFollowing\n email\n }\n \n followedByEmail(email: "${n}", usernameFilter: "${t}") {\n id\n username\n nationality\n image\n createdAt\n followers\n following\n isFollowing\n email\n }\n }\n `},{headers:{Authorization:`Bearer ${u}`}})).data.data}catch(n){throw console.error("Error:",n.response.data),n}}));return function(t,o){return n.apply(this,arguments)}})(),e.followUser=(function(){var n=(0,t.default)((function*(n){try{var t=yield l.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`\n mutation {\n followUser(followingEmail: "${n}")\n }`},{headers:{Authorization:`Bearer ${t}`}})).data.data.followUser}catch(n){throw console.error("Error:",n.response.data),n}}));return function(t){return n.apply(this,arguments)}})(),e.unfollowUser=(function(){var n=(0,t.default)((function*(n){try{var t=yield l.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`\n mutation {\n unfollowUser(followingEmail: "${n}")\n }`},{headers:{Authorization:`Bearer ${t}`}})).data.data.unfollowUser}catch(n){throw console.error("Error:",n.response.data),n}}));return function(t){return n.apply(this,arguments)}})(),e.updateUser=(function(){var n=(0,t.default)((function*(n){var t=n.password?`, password: "${n.password}"`:"";try{var u=yield l.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`\n mutation {\n updateUserV2(\n user: {id: "", username: "${n.username}", image: "${n.image}", email: "${n.email}", nationality: "${n.nationality}", phoneNumber: "${n.phoneNumber}" ${t}}\n ) {\n id\n username\n email\n nationality\n phoneNumber\n image\n createdAt\n followers\n following\n }\n }`},{headers:{Authorization:`Bearer ${u}`}})).data.data.updateUserV2}catch(n){throw console.error("Error:",n.response.data),n}}));return function(t){return n.apply(this,arguments)}})()}),1311,[1,564,796,778,788]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(r(d[1])),l=t(r(d[2])),s=r(d[3]),o=r(d[4]),u=t(r(d[5])),f=t(r(d[6])),c=t(r(d[7]));e.default=function(t){var p=t.navigation,v=t.route,y=(0,o.useState)(!1),h=(0,l.default)(y,2),w=h[0],x=h[1],j=(0,o.useState)([]),E=(0,l.default)(j,2),F=E[0],C=E[1],N=(0,r(d[8]).useSettingsContext)(),S=N.language,_=N.darkmode,P=(0,o.useState)(""),V=(0,l.default)(P,2),$=V[0],b=V[1];(0,o.useEffect)((function(){k()}),[v.params.email,v.params.type,!0===w,$]);var k=(function(){var t=(0,n.default)((function*(){try{if("followers"===v.params.type){var t=(yield(0,r(d[9]).getFollows)(v.params.email,$)).followersByEmail;C(t)}else if("following"===v.params.type){var n=(yield(0,r(d[9]).getFollows)(v.params.email,$)).followedByEmail;C(n)}}catch(t){s.Alert.alert("Error",t.response.data)}finally{x(!1)}}));return function(){return t.apply(this,arguments)}})();return(0,r(d[10]).jsxs)(s.View,{className:`flex-1 ${(0,r(d[11]).bgColor)(_)}`,children:[(0,r(d[10]).jsx)(u.default,{navigation:p,message:`${r(d[12]).translations[S||"en-EN"].screens.Profile[v.params.type]}: ${F.length}`}),(0,r(d[10]).jsxs)(s.View,{className:"items-center",children:[(0,r(d[10]).jsx)(s.View,{className:"w-full",children:(0,r(d[10]).jsx)(c.default,{searchFunction:function(t){return b(t)}})}),(0,r(d[10]).jsx)(s.FlatList,{refreshControl:(0,r(d[10]).jsx)(s.RefreshControl,{refreshing:w,onRefresh:function(){return x(!0)}}),style:{width:"100%"},data:F,renderItem:function(t){var n=t.item;return(0,r(d[10]).jsx)(f.default,{navigateFunction:function(){return p.navigate("Profile",{email:n.email})},item:n})},keyExtractor:function(t){return t.id}})]})]})}}),1312,[1,564,38,2,178,911,1313,907,787,1311,223,788,789]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),r=e(_r(d[2])),n=_r(d[3]),o=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=s(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var a=o?Object.getOwnPropertyDescriptor(e,l):null;a&&(a.get||a.set)?Object.defineProperty(n,l,a):n[l]=e[l]}return n.default=e,r&&r.set(e,n),n})(_r(d[4])),l=e(_r(d[5]));function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(s=function(e){return e?r:t})(e)}_e.default=function(e){var s=(0,o.useState)({}),a=(0,r.default)(s,2),i=a[0],c=a[1],u=(0,_r(d[6]).useSettingsContext)(),f=u.language,x=u.darkmode,w=(0,_r(d[7]).useTokenContext)().email;(0,o.useEffect)((function(){c(Object.assign({},e.item))}),[e.item]);var p=(function(){var e=(0,t.default)((function*(){try{i.isFollowing?yield(0,_r(d[8]).unfollowUser)(i.email):yield(0,_r(d[8]).followUser)(i.email);var e=i.isFollowing?Math.max(0,i.followers-1):i.followers+1;c(Object.assign({},i,{isFollowing:!i.isFollowing,followers:e}))}catch(e){console.error("Error following/unfollowing user:",e)}}));return function(){return e.apply(this,arguments)}})();return(0,_r(d[9]).jsx)(n.View,{className:"w-11/12 mx-auto my-3",children:(0,_r(d[9]).jsxs)(n.TouchableOpacity,{onPress:e.navigateFunction,className:`flex-row items-center rounded-2xl p-4 ${(0,_r(d[10]).cardBgColor)(x)}`,children:[(0,_r(d[9]).jsx)(l.default,{image:i.image,size:80,style:"rounded-full border-2 "+(x?"border-[#B28DFF]":"border-[#4B0082]")}),(0,_r(d[9]).jsxs)(n.View,{className:"ml-5 flex-1",children:[(0,_r(d[9]).jsx)(n.Text,{className:"font-bold text-2xl mb-1 "+(x?"text-[#B28DFF]":"text-[#4B0082]"),children:i.username}),(0,_r(d[9]).jsxs)(n.Text,{className:""+(x?"text-white":"text-[#333333]"),children:[_r(d[11]).translations[f||"en-EN"].screens.Profile.followers,":"," ",(0,_r(d[10]).convertQuantityToString)(i.followers)]}),(0,_r(d[9]).jsxs)(n.Text,{className:""+(x?"text-white":"text-[#333333]"),children:[_r(d[11]).translations[f||"en-EN"].screens.Profile.following,":"," ",(0,_r(d[10]).convertQuantityToString)(i.following)]})]}),i.email!==w&&(0,_r(d[9]).jsx)(n.TouchableOpacity,{className:"border-2 border-[#F65261] rounded-lg px-4 py-2 ml-3",onPress:p,children:(0,_r(d[9]).jsx)(n.Text,{className:"font-bold text-base text-center "+(x?"text-[#B28DFF]":"text-[#4B0082]"),children:i.isFollowing?_r(d[11]).translations[f||"en-EN"].screens.Profile.unfollow:_r(d[11]).translations[f||"en-EN"].screens.Profile.follow})})]})})}}),1313,[1,564,38,2,178,900,787,794,1311,223,788,789]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(r(d[1])),s=r(d[2]),l=(t(r(d[3])),t(r(d[4]))),o=t(r(d[5])),u=t(r(d[6]));e.default=function(t){var c=t.navigation,f=(0,r(d[7]).useSettingsContext)(),h=f.language,p=f.setLanguage,v=f.darkmode,x=f.setDarkmode,y=f.lefthand,E=f.setLefthand,N=(function(){var t=(0,n.default)((function*(t){try{yield o.default.setItem("language",t),p(t)}catch(t){s.Alert.alert("Error",t.response.data)}}));return function(n){return t.apply(this,arguments)}})(),j=(function(){var t=(0,n.default)((function*(){try{yield o.default.setItem("darkMode",v?"false":"true"),x(!v)}catch(t){s.Alert.alert("Error",t.response.data)}}));return function(){return t.apply(this,arguments)}})(),F=(function(){var t=(0,n.default)((function*(){try{yield o.default.setItem("lefthand",y?"false":"true"),E(!y)}catch(t){s.Alert.alert("Error",t.response.data)}}));return function(){return t.apply(this,arguments)}})(),B=(function(){var t=(0,n.default)((function*(){try{yield(0,r(d[8]).logout)(),(0,r(d[9]).resetNavigation)(c,"Login")}catch(t){s.Alert.alert("Error",t.response.data)}}));return function(){return t.apply(this,arguments)}})();return(0,r(d[10]).jsxs)(s.View,{className:`flex-1 ${(0,r(d[9]).bgColor)(v)}`,children:[(0,r(d[10]).jsx)(u.default,{navigation:c,message:r(d[11]).translations[h||"en-EN"].screens.Settings.settings}),(0,r(d[10]).jsxs)(s.View,{className:`p-5 gap-5 m-4 ${v?"bg-[#4B294F]":"bg-[#E8E2F0]"} rounded-2xl`,children:[(0,r(d[10]).jsx)(s.Button,{title:r(d[11]).translations[h||"en-EN"].screens.Settings.editProfile,onPress:function(){return c.navigate("ProfileForm")},color:v?"#B28DFF":"#7D3C98"}),(0,r(d[10]).jsx)(s.View,{className:"rounded-xl px-4 py-2 "+(v?"bg-[#3A1D3C]":"bg-white"),children:(0,r(d[10]).jsx)(l.default,{data:(0,r(d[9]).languages)(h),message:r(d[11]).translations[h||"en-EN"].screens.Settings.language,value:h,setValue:N})}),(0,r(d[10]).jsx)(s.Button,{title:v?r(d[11]).translations[h||"en-EN"].screens.Settings.lightMode:r(d[11]).translations[h||"en-EN"].screens.Settings.darkMode,onPress:j,color:v?"#B28DFF":"#7D3C98"}),(0,r(d[10]).jsx)(s.Button,{title:r(d[11]).translations[h||"en-EN"].screens.Settings.leftHand[y?"left":"right"],onPress:F,color:v?"#B28DFF":"#7D3C98"}),(0,r(d[10]).jsx)(s.Button,{title:r(d[11]).translations[h||"en-EN"].screens.Settings.logout,onPress:B,color:"#F65261"})]})]})}}),1314,[1,564,2,178,1136,779,911,787,1315,788,223,789]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.logout=void 0;var o=t(r(d[1])),n=t(r(d[2]));e.logout=(function(){var t=(0,o.default)((function*(){yield n.default.remove("token")}));return function(){return t.apply(this,arguments)}})()}),1315,[1,564,778]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),n=e(_r(d[2])),r=_r(d[3]),a=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=o(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&{}.hasOwnProperty.call(e,s)){var l=a?Object.getOwnPropertyDescriptor(e,s):null;l&&(l.get||l.set)?Object.defineProperty(r,s,l):r[s]=e[s]}return r.default=e,n&&n.set(e,r),r})(_r(d[4])),s=e(_r(d[5]));function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(o=function(e){return e?n:t})(e)}_e.default=function(e){var o=e.navigation,l=(0,_r(d[6]).useSettingsContext)(),i=l.language,u=l.darkmode,c=(0,a.useState)({}),f=(0,n.default)(c,2),p=f[0],x=f[1];(0,a.useEffect)((function(){b()}),[]);var b=(function(){var e=(0,t.default)((function*(){try{var e=yield(0,_r(d[7]).getOwnUser)(),t={username:e.username,email:e.email,nationality:e.nationality,phoneNumber:e.phoneNumber,password:"",image:e.image};x(t)}catch(e){r.Alert.alert("Error",e.response.data)}}));return function(){return e.apply(this,arguments)}})(),y=(function(){var e=(0,t.default)((function*(){try{yield(0,_r(d[7]).updateUser)(p),r.Alert.alert("Profile updated"),o.navigate("Profile")}catch(e){r.Alert.alert("Error",e.response.data)}}));return function(){return e.apply(this,arguments)}})();return(0,_r(d[8]).jsx)(r.View,{className:`flex-1 ${(0,_r(d[9]).cardBgColor)(u)} items-center justify-center`,children:(0,_r(d[8]).jsx)(r.View,{className:(u?"bg-[#E8E2F0]":"bg-white")+" rounded-lg w-10/12",children:(0,_r(d[8]).jsxs)(r.View,{className:"m-10",children:[(0,_r(d[8]).jsx)(s.default,{label:_r(d[10]).translations[i||"en-EN"].screens.ProfileForm.email,name:p.email,setText:function(e){return x(Object.assign({},p,{email:e}))},mode:"text"}),(0,_r(d[8]).jsx)(s.default,{label:_r(d[10]).translations[i||"en-EN"].screens.ProfileForm.username,name:p.username,setText:function(e){return x(Object.assign({},p,{username:e}))},mode:"text"}),(0,_r(d[8]).jsx)(s.default,{label:_r(d[10]).translations[i||"en-EN"].screens.ProfileForm.password,name:p.password,setText:function(e){return x(Object.assign({},p,{password:e}))},mode:"text"}),(0,_r(d[8]).jsx)(s.default,{label:_r(d[10]).translations[i||"en-EN"].screens.ProfileForm.nationality,name:p.nationality,setText:function(e){return x(Object.assign({},p,{nationality:e}))},mode:"text"}),(0,_r(d[8]).jsx)(s.default,{label:_r(d[10]).translations[i||"en-EN"].screens.ProfileForm.phoneNumber,name:p.phoneNumber,setText:function(e){return x(Object.assign({},p,{phoneNumber:e}))},mode:"text"}),(0,_r(d[8]).jsx)(r.TouchableOpacity,{className:"bg-[#F65261] rounded-lg py-3 w-full",onPress:y,children:(0,_r(d[8]).jsx)(r.Text,{className:"text-white font-bold text-xl text-center",children:_r(d[10]).translations[i||"en-EN"].screens.ProfileForm.update})})]})})})}}),1316,[1,564,38,2,178,786,787,1311,223,788,789]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),r=e(_r(d[2])),n=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=l(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u]}return n.default=e,r&&r.set(e,n),n})(_r(d[3])),a=e(_r(d[4])),u=e(_r(d[5])),i=_r(d[6]);function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(l=function(e){return e?r:t})(e)}_e.default=function(e){var l,o=(0,_r(d[7]).useImageContext)(),f=o.uri,s=o.setUri,c=o.setWidth,p=o.setHeight,y=(0,n.useState)({}),v=(0,r.default)(y,2),h=v[0],j=v[1];(0,n.useEffect)((function(){w()}),[null==(l=e.route.params)?void 0:l.email]),(0,n.useEffect)((function(){c(1),p(1)}),[]);var w=(function(){var r=(0,t.default)((function*(){try{var t=yield(0,_r(d[8]).getUser)(e.route.params.email);j(t)}catch(e){i.Alert.alert("Error",e.response.data)}}));return function(){return r.apply(this,arguments)}})(),x=(function(){var r=(0,t.default)((function*(){try{var t=yield(0,_r(d[9]).uploadImage)(f),r={username:h.username,email:h.email,nationality:h.nationality,phoneNumber:h.phoneNumber,password:"",image:t};(yield(0,_r(d[8]).updateUser)(r))&&(s(null),e.navigation.goBack())}catch(e){i.Alert.alert("Error",e.response.data)}}));return function(){return r.apply(this,arguments)}})();return(0,_r(d[10]).jsx)(i.View,{className:"flex-1",children:f?(0,_r(d[10]).jsxs)(i.View,{className:"flex-1",children:[(0,_r(d[10]).jsx)(u.default,{uri:f,setUri:s}),(0,_r(d[10]).jsx)(i.Button,{title:"Upload",onPress:x})]}):(0,_r(d[10]).jsx)(i.View,{className:"flex-1 w-full h-3/5",children:(0,_r(d[10]).jsx)(a.default,{})})})}}),1317,[1,564,38,178,926,1302,2,934,1311,1303,223]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),r=e(_r(d[2])),n=_r(d[3]),a=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=i(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var u=a?Object.getOwnPropertyDescriptor(e,o):null;u&&(u.get||u.set)?Object.defineProperty(n,o,u):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n})(_r(d[4])),o=e(_r(d[5])),u=e(_r(d[6])),l=e(_r(d[7]));function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(i=function(e){return e?r:t})(e)}_e.default=function(e){var i=(0,a.useState)([]),s=(0,r.default)(i,2),f=s[0],c=s[1],p=(0,_r(d[8]).useSettingsContext)(),x=p.darkmode,h=p.language,y=(0,a.useState)(!1),v=(0,r.default)(y,2),b=v[0],j=v[1],w=(0,a.useState)(""),_=(0,r.default)(w,2),F=_[0],O=_[1];(0,a.useEffect)((function(){C()}),[]),(0,a.useEffect)((function(){b&&C()}),[b]);var C=(function(){var r=(0,t.default)((function*(){try{var t=yield(0,_r(d[9]).getComments)(e.route.params.postID);c(t)}catch(e){n.Alert.alert("Error",e.response.data)}finally{j(!1)}}));return function(){return r.apply(this,arguments)}})(),B=(function(){var r=(0,t.default)((function*(){try{(yield(0,_r(d[9]).postComment)(F,e.route.params.postID))&&(O(""),j(!0))}catch(e){n.Alert.alert("Error",e.response.data)}}));return function(){return r.apply(this,arguments)}})();return(0,_r(d[10]).jsxs)(n.View,{className:`flex-1 ${(0,_r(d[11]).bgColor)(x)}`,children:[(0,_r(d[10]).jsx)(o.default,{navigation:e.navigation}),(0,_r(d[10]).jsx)(n.FlatList,{refreshControl:(0,_r(d[10]).jsx)(n.RefreshControl,{refreshing:b,onRefresh:function(){return j(!0)}}),style:{width:"100%"},data:f,renderItem:function(t){var r=t.item;return(0,_r(d[10]).jsx)(u.default,{navigation:e.navigation,comment:r})},keyExtractor:function(e){return e.id}}),(0,_r(d[10]).jsxs)(n.View,{className:"flex-row justify-center items-center w-full px-4 pb-4",children:[(0,_r(d[10]).jsx)(n.TextInput,{value:F,placeholder:_r(d[12]).translations[h||"en-EN"].screens.Home.search,placeholderTextColor:x?"#D8BFFF":"#4B0082",className:"text-2xl w-10/12 pl-4 py-3 rounded-xl "+(x?"bg-[#4B294F] text-white border border-[#B28DFF]":"bg-white text-black border-2 border-[#4B0082]"),onChangeText:function(e){return O(e)}}),(0,_r(d[10]).jsx)(n.TouchableOpacity,{className:"ml-2 p-3 rounded-xl "+(x?"bg-[#B28DFF]":"bg-[#4B0082]"),onPress:B,children:(0,_r(d[10]).jsx)(l.default,{name:"send",size:30,color:"white"})})]})]})}}),1318,[1,564,38,2,178,911,1319,912,787,1320,223,788,789]); +__d((function(g,r,i,a,m,e,d){var l=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var t=r(d[1]),s=(l(r(d[2])),l(r(d[3]))),o=l(r(d[4]));e.default=function(l){var n,u,c=l.navigation,x=l.comment,f=(0,r(d[5]).useSettingsContext)().darkmode;return(0,r(d[6]).jsxs)(t.View,{className:`${(0,r(d[7]).cardBgColor)(f)} mt-5 w-11/12 mx-auto rounded-xl p-2 flex-row`,children:[(0,r(d[6]).jsx)(t.TouchableOpacity,{onPress:function(){return c.navigate("ProfileStackNavigation",{screen:"Profile",params:{email:x.user.email}})},children:(0,r(d[6]).jsx)(s.default,{image:null==(n=x.user)?void 0:n.image,size:80,style:`rounded-full border-2 ${(0,r(d[7]).borderColor)(f)}`})}),(0,r(d[6]).jsxs)(t.View,{className:"ml-4 flex-1",children:[(0,r(d[6]).jsx)(t.Text,{className:`${(0,r(d[7]).textColor)(f)} text-2xl font-bold`,children:null==(u=x.user)?void 0:u.username}),(0,r(d[6]).jsx)(t.Text,{className:`${(0,r(d[7]).textColor)(f)} text-lg mt-2`,children:x.message}),(0,r(d[6]).jsx)(t.View,{className:"mt-2",children:(0,r(d[6]).jsx)(o.default,{date:x.createdAt})})]})]})}}),1319,[1,2,178,900,899,787,223,788]); +__d((function(g,r,i,a,m,e,d){var t=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.postComment=e.getComments=void 0;var n=t(r(d[1])),o=t(r(d[2])),u=t(r(d[3]));e.getComments=(function(){var t=(0,n.default)((function*(t){try{var n=yield u.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`\n query {\n getComments(postID: "${t}") {\n createdAt\n id\n message\n user {\n image\n email\n username\n }\n }\n }`},{headers:{Authorization:`Bearer ${n}`}})).data.data.getComments}catch(t){throw console.error("Error:",t.response.data),t}}));return function(n){return t.apply(this,arguments)}})(),e.postComment=(function(){var t=(0,n.default)((function*(t,n){try{var s=yield u.default.get("token");return(yield o.default.post(r(d[4]).neo4jUri,{query:`\n mutation {\n postComment(\n commentInput: {message: "${t}", postID: "${n}"}\n ) {\n id\n }\n }`},{headers:{Authorization:`Bearer ${s}`}})).data.data.postComment}catch(t){throw console.error("Error:",t.response.data),t}}));return function(n,o){return t.apply(this,arguments)}})()}),1320,[1,564,796,778,788]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),n=e(_r(d[2])),r=_r(d[3]),a=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=s(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&{}.hasOwnProperty.call(e,l)){var i=a?Object.getOwnPropertyDescriptor(e,l):null;i&&(i.get||i.set)?Object.defineProperty(r,l,i):r[l]=e[l]}return r.default=e,n&&n.set(e,r),r})(_r(d[4])),l=e(_r(d[5])),i=e(_r(d[6]));function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(s=function(e){return e?n:t})(e)}_e.default=function(e){var s=(0,_r(d[7]).useImageContext)(),u=s.uri,o=s.setUri,c=s.setWidth,f=s.setHeight,p=(0,a.useState)([]),x=(0,n.default)(p,2),h=x[0],v=x[1],b=(0,a.useState)(null),y=(0,n.default)(b,2),j=y[0],w=y[1],N=(0,a.useState)({}),C=(0,n.default)(N,2),P=C[0],O=C[1],_=(0,_r(d[8]).useSettingsContext)(),R=_.language,E=_.darkmode;(0,a.useEffect)((function(){F(),c(9),f(16)}),[]),(0,a.useEffect)((function(){O(h.filter((function(e){return e.value===j}))[0])}),[j]);var F=(function(){var e=(0,t.default)((function*(){try{var e=(yield(0,_r(d[9]).getSubscribedActivities)()).map((function(e){return{label:e.name,value:e.id,timesRemaining:e.timesRemaining,timesRequiered:e.timesRequiered}}));v(e)}catch(e){r.Alert.alert("Error",e.response.data)}}));return function(){return e.apply(this,arguments)}})(),V=(function(){var e=(0,t.default)((function*(){try{var e,t=yield(0,_r(d[10]).uploadImage)(u);(yield(0,_r(d[11]).uploadPost)(null==(e=h.filter((function(e){return e.value===j}))[0])?void 0:e.value,t))&&(r.Alert.alert("Post created"),o(null),w(null))}catch(e){r.Alert.alert("Error",e.response.data)}}));return function(){return e.apply(this,arguments)}})();return(0,_r(d[12]).jsx)(r.View,{className:`flex-1 ${(0,_r(d[13]).bgColor)(E)} justify-center items-center px-4`,children:(0,_r(d[12]).jsxs)(r.View,{className:`w-full ${(0,_r(d[13]).cardBgColor)(E)} rounded-2xl overflow-hidden`,children:[u?(0,_r(d[12]).jsxs)(r.View,{className:"items-center p-6 bg-black",children:[(0,_r(d[12]).jsx)(r.Image,{source:{uri:`file://${u}`},style:{width:160,height:280,borderRadius:12}}),(0,_r(d[12]).jsx)(r.TouchableOpacity,{onPress:function(){return o(null)},className:"mt-4 border-2 border-white rounded-2xl px-8 py-3",children:(0,_r(d[12]).jsx)(r.Text,{className:"text-white font-bold text-lg text-center",children:_r(d[14]).translations[R||"en-EN"].screens.UploadForm.changePicture})})]}):(0,_r(d[12]).jsx)(r.View,{className:"w-full h-3/5",children:(0,_r(d[12]).jsx)(i.default,{})}),(0,_r(d[12]).jsx)(r.View,{className:"px-6 pt-6",children:(0,_r(d[12]).jsx)(l.default,{data:h,value:j,setValue:w,message:_r(d[14]).translations[R||"en-EN"].screens.UploadForm.selectactivity,onFocus:F})}),(0,_r(d[12]).jsx)(r.TouchableOpacity,{onPress:V,disabled:!j||!u||(null==P?void 0:P.timesRemaining)<1,className:"m-6 rounded-2xl py-4 "+(!j||!u||(null==P?void 0:P.timesRemaining)<1?"bg-[#CCCCCC]":"bg-[#F65261]"),children:(0,_r(d[12]).jsx)(r.Text,{className:"text-white font-bold text-xl text-center",children:_r(d[14]).translations[R||"en-EN"].screens.UploadForm.postButton})}),(0,_r(d[12]).jsxs)(r.Text,{className:`pb-6 text-center ${(0,_r(d[13]).textColor)(E)}`,children:[_r(d[14]).translations[R||"en-EN"].screens.UploadForm.timesRemaining,": ",`${(null==P?void 0:P.timesRemaining)||0}`]})]})})}}),1321,[1,564,38,2,178,1136,926,934,787,908,1303,1309,223,788,789]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;n(r(d[1]));var t=n(r(d[2])),o=n(r(d[3])),c=n(r(d[4])),u=n(r(d[5]));e.default=function(n){var f=(0,r(d[6]).createNativeStackNavigator)();return(0,r(d[7]).jsxs)(f.Navigator,{id:void 0,screenOptions:{headerShown:!1},children:[(0,r(d[7]).jsx)(f.Screen,{name:"Home",component:t.default}),(0,r(d[7]).jsx)(f.Screen,{name:"Search",component:o.default}),(0,r(d[7]).jsx)(f.Screen,{name:"Comments",component:u.default}),(0,r(d[7]).jsx)(f.Screen,{name:"ProfileStackNavigation",component:c.default})]})}}),1322,[1,178,1323,1324,1304,1318,937,223]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),n=e(_r(d[2])),r=e(_r(d[3])),a=_r(d[4]),o=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=c(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(r,o,i):r[o]=e[o]}return r.default=e,n&&n.set(e,r),r})(_r(d[5])),i=e(_r(d[6])),l=e(_r(d[7]));function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(c=function(e){return e?n:t})(e)}_e.default=function(e){var c=e.navigation,u=(0,o.useState)("following"),s=(0,r.default)(u,2),f=s[0],h=s[1],p=(0,o.useState)(!1),y=(0,r.default)(p,2),v=y[0],x=y[1],j=(0,o.useState)(!1),w=(0,r.default)(j,2),b=w[0],O=w[1],P=(0,o.useState)([]),S=(0,r.default)(P,2),_=S[0],k=S[1],E=(0,_r(d[8]).useSettingsContext)(),C=E.darkmode,N=E.language,$=(0,o.useRef)((new Date).toISOString().slice(0,19));(0,o.useEffect)((function(){M()}),[]),(0,o.useEffect)((function(){(v||b)&&M()}),[v,b]),(0,o.useEffect)((function(){R()}),[f]);var M=(function(){var e=(0,n.default)((function*(){try{var e=[];switch(f){case"following":e=yield(0,_r(d[9]).getPostsFollowing)($.current);break;case"home":e=yield(0,_r(d[9]).getPosts)($.current);break;case"activity":e=yield(0,_r(d[9]).getPostBySuscribedActivities)($.current)}k(b?[].concat((0,t.default)(_),(0,t.default)(e)):e)}catch(e){a.Alert.alert("Error",e.response.data)}finally{x(!1),O(!1)}}));return function(){return e.apply(this,arguments)}})(),R=function(){$.current=(new Date).toISOString().slice(0,19),x(!0)};return(0,_r(d[10]).jsxs)(a.View,{className:`flex-1 ${(0,_r(d[11]).bgColor)(C)}`,children:[(0,_r(d[10]).jsx)(a.TouchableWithoutFeedback,{className:"absolute z-10 right-5 top-5",onPress:function(){return c.navigate("Search")},children:(0,_r(d[10]).jsx)(l.default,{name:"search",size:40,color:`${(0,_r(d[11]).iconColor)(C)}`})}),(0,_r(d[10]).jsx)(a.View,{className:"flex-row justify-evenly items-center px-4 mt-2",children:["following","home","activity"].map((function(e){var t=f===e;return(0,_r(d[10]).jsx)(a.TouchableOpacity,{onPress:function(){return h(e)},className:`\n px-4 py-2 rounded-full\n ${t?"bg-[#F65261]":`${(0,_r(d[11]).cardBgColor)(C)}`}\n `,children:(0,_r(d[10]).jsx)(a.Text,{className:`\n font-bold text-lg\n ${t?"text-white":`text-[${(0,_r(d[11]).iconColor)(C)}]`}\n `,children:_r(d[12]).translations[N||"en-EN"].screens.Home.type[e]})},e)}))}),(0,_r(d[10]).jsx)(a.View,{className:"flex-1 pt-6",children:(0,_r(d[10]).jsx)(a.FlatList,{refreshControl:(0,_r(d[10]).jsx)(a.RefreshControl,{refreshing:v,onRefresh:R}),data:_,renderItem:function(e){var t=e.item;return(0,_r(d[10]).jsx)(i.default,{post:t,navigation:c})},keyExtractor:function(e){return e.id},onEndReached:function(){b||0===_.length||($.current=_[_.length-1].createdAt.slice(0,19),O(!0))},onEndReachedThreshold:.5})})]})}}),1323,[1,6,564,38,2,178,1308,912,787,1309,223,788,789]); +__d((function(g,_r,_i,_a,m,_e,d){var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.default=void 0;var t=e(_r(d[1])),n=e(_r(d[2])),r=e(_r(d[3])),a=_r(d[4]),u=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=f(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(r,u,i):r[u]=e[u]}return r.default=e,n&&n.set(e,r),r})(_r(d[5])),i=e(_r(d[6])),o=e(_r(d[7]));function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(f=function(e){return e?n:t})(e)}_e.default=function(e){var f=e.navigation,c=(0,u.useState)([]),l=(0,r.default)(c,2),s=l[0],p=l[1],v=(0,u.useState)(""),h=(0,r.default)(v,2),y=h[0],j=h[1],_=(0,u.useRef)(1),x=(0,u.useState)(!1),w=(0,r.default)(x,2),O=w[0],P=w[1],b=(0,u.useState)(!1),k=(0,r.default)(b,2),S=k[0],E=k[1],M=(0,_r(d[8]).useSettingsContext)().darkmode;(0,u.useEffect)((function(){(O||S)&&R()}),[O,S]);var R=(function(){var e=(0,n.default)((function*(){try{var e=yield(0,_r(d[9]).fetchUsersByName)(_.current,y);p(S?[].concat((0,t.default)(s),(0,t.default)(e)):e)}catch(e){a.Alert.alert("Error",e.response.data)}finally{P(!1),E(!1)}}));return function(){return e.apply(this,arguments)}})(),C=function(){_.current=1,P(!0)},N=function(e){j(e),C()};return(0,_r(d[10]).jsxs)(a.View,{className:`flex-1 ${(0,_r(d[11]).bgColor)(M)}`,children:[(0,_r(d[10]).jsx)(o.default,{navigation:f,searchFunction:function(e){return N(e)}}),(0,_r(d[10]).jsx)(a.View,{className:"items-center",children:(0,_r(d[10]).jsx)(a.FlatList,{refreshControl:(0,_r(d[10]).jsx)(a.RefreshControl,{refreshing:O,onRefresh:C}),style:{width:"100%"},data:s,renderItem:function(e){var t=e.item;return(0,_r(d[10]).jsx)(i.default,{navigateFunction:function(){return f.navigate("ProfileStackNavigation",{screen:"Profile",params:{email:t.email}})},item:t})},keyExtractor:function(e){return e.id},onEndReached:function(){S||s.length<10*_.current||(_.current+=1,E(!0))},onEndReachedThreshold:.5})})]})}}),1324,[1,6,564,38,2,178,1313,1325,787,1326,223,788]); +__d((function(g,r,i,a,m,e,d){var o=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;o(r(d[1]));var t=r(d[2]),n=o(r(d[3]));e.default=function(o){var l=(0,r(d[4]).useSettingsContext)(),c=l.language,s=l.darkmode;return(0,r(d[5]).jsxs)(t.View,{className:`flex-row items-center ${(0,r(d[6]).cardBgColor)(s)} border-b-2 ${(0,r(d[6]).borderColor)(s)} px-4 py-3`,children:[(0,r(d[5]).jsx)(t.TouchableOpacity,{onPress:function(){return o.navigation.goBack()},children:(0,r(d[5]).jsx)(n.default,{name:"arrow-back",size:28,color:(0,r(d[6]).iconColor)(s)})}),(0,r(d[5]).jsx)(t.TextInput,{placeholder:r(d[7]).translations[c||"en-EN"].screens.Home.search,placeholderTextColor:s?"#B28DFF":"#7D3C98",className:"ml-4 flex-1 rounded-xl border-2 px-4 py-2 text-2xl "+(s?"bg-[#1C1C1E] text-white border-[#B28DFF]":"bg-white text-black border-[#7D3C98]"),onChangeText:function(t){return o.searchFunction(t)}})]})}}),1325,[1,178,2,912,787,223,788,789]); +__d((function(g,r,i,a,m,e,d){var n=r(d[0]);Object.defineProperty(e,"__esModule",{value:!0}),e.fetchUsersByName=void 0;var t=n(r(d[1])),o=n(r(d[2])),l=n(r(d[3]));e.fetchUsersByName=(function(){var n=(0,t.default)((function*(n,t){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r(d[4]).limit;if(!t)return[];var s=yield l.default.get("token");try{return(yield o.default.post(r(d[4]).neo4jUri,{query:`\n query {\n getUserPaginationByName(page: ${n}, perPage: ${u}, userName: "${t}") {\n followers\n following\n id\n image\n username\n email\n isFollowing\n }\n }`},{headers:{Authorization:`Bearer ${s}`}})).data.data.getUserPaginationByName}catch(n){throw console.error("Error:",n.response.data),n}}));return function(t,o){return n.apply(this,arguments)}})()}),1326,[1,564,796,778,788]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),Object.defineProperty(_e,"BottomTabBar",{enumerable:!0,get:function(){return _r(d[0]).BottomTabBar}}),Object.defineProperty(_e,"BottomTabBarHeightCallbackContext",{enumerable:!0,get:function(){return _r(d[1]).BottomTabBarHeightCallbackContext}}),Object.defineProperty(_e,"BottomTabBarHeightContext",{enumerable:!0,get:function(){return _r(d[2]).BottomTabBarHeightContext}}),Object.defineProperty(_e,"BottomTabView",{enumerable:!0,get:function(){return _r(d[3]).BottomTabView}}),_e.TransitionSpecs=_e.TransitionPresets=_e.SceneStyleInterpolators=void 0,Object.defineProperty(_e,"createBottomTabNavigator",{enumerable:!0,get:function(){return _r(d[4]).createBottomTabNavigator}}),Object.defineProperty(_e,"useBottomTabBarHeight",{enumerable:!0,get:function(){return _r(d[5]).useBottomTabBarHeight}});var e=o(_r(d[6]));_e.SceneStyleInterpolators=e;var t=o(_r(d[7]));_e.TransitionPresets=t;var r=o(_r(d[8]));function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&{}.hasOwnProperty.call(e,i)){var u=a?Object.getOwnPropertyDescriptor(e,i):null;u&&(u.get||u.set)?Object.defineProperty(o,i,u):o[i]=e[i]}return o.default=e,r&&r.set(e,o),o}_e.TransitionSpecs=r}),1327,[1328,1330,1334,1335,1341,1342,1338,1336,1337]); +__d((function(g,r,i,a,m,_e,d){"use strict";var t=r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.BottomTabBar=function(e){var v=e.state,y=e.navigation,B=e.descriptors,S=e.insets,w=e.style,x=(0,r(d[4]).useTheme)().colors,k=(0,r(d[4]).useLocale)().direction,P=(0,r(d[4]).useLinkBuilder)().buildHref,C=v.routes[v.index],L=B[C.key].options,T=L.tabBarPosition,A=void 0===T?'bottom':T,I=L.tabBarShowLabel,W=L.tabBarLabelPosition,j=L.tabBarHideOnKeyboard,O=void 0!==j&&j,V=L.tabBarVisibilityAnimationConfig,D=L.tabBarVariant,E=void 0===D?'uikit':D,H=L.tabBarStyle,R=L.tabBarBackground,_=L.tabBarActiveTintColor,z=L.tabBarInactiveTintColor,F=L.tabBarActiveBackgroundColor,M=L.tabBarInactiveBackgroundColor;if('material'===E&&'left'!==A&&'right'!==A)throw new Error("The 'material' variant for tab bar is only supported when 'tabBarPosition' is set to 'left' or 'right'.");if('below-icon'===W&&'uikit'===E&&('left'===A||'right'===A))throw new Error("The 'below-icon' label position for tab bar is only supported when 'tabBarPosition' is set to 'top' or 'bottom' when using the 'uikit' variant.");var N=(0,r(d[5]).useSafeAreaFrame)(),$=(0,r(d[6]).useIsKeyboardShown)(),K=o.default.useContext(r(d[7]).BottomTabBarHeightCallbackContext),Y=!(O&&$),q=o.default.useRef(V);o.default.useEffect((function(){q.current=V}));var G=o.default.useState(!Y),J=t(G,2),Q=J[0],U=J[1],X=o.default.useState((function(){return new n.Animated.Value(Y?1:0)})),Z=t(X,1)[0];o.default.useEffect((function(){var t,e,o,l,s=q.current;Y?('spring'===(null==s||null==(t=s.show)?void 0:t.animation)?n.Animated.spring:n.Animated.timing)(Z,Object.assign({toValue:1,useNativeDriver:b,duration:250},null==s||null==(e=s.show)?void 0:e.config)).start((function(t){t.finished&&U(!1)})):(U(!0),('spring'===(null==s||null==(o=s.hide)?void 0:o.animation)?n.Animated.spring:n.Animated.timing)(Z,Object.assign({toValue:0,useNativeDriver:b,duration:200},null==s||null==(l=s.hide)?void 0:l.config)).start());return function(){return Z.stopAnimation()}}),[Z,Y]);var tt=o.default.useState({height:0}),et=t(tt,2),it=et[0],ot=et[1],at=v.routes,rt=f({state:v,descriptors:B,insets:S,dimensions:N,style:[H,w]}),nt=c({state:v,descriptors:B,dimensions:N}),lt=h({state:v,descriptors:B,dimensions:N}),st='left'===A||'right'===A,dt='material'===E?u:s,ut=null==R?void 0:R();return(0,l.jsxs)(n.Animated.View,{style:['left'===A?p.start:'right'===A?p.end:p.bottom,('web'===n.Platform.OS?'right'===A:'rtl'===k&&'left'===A||'rtl'!==k&&'right'===A)?{borderLeftWidth:n.StyleSheet.hairlineWidth}:('web'===n.Platform.OS?'left'===A:'rtl'===k&&'right'===A||'rtl'!==k&&'left'===A)?{borderRightWidth:n.StyleSheet.hairlineWidth}:'top'===A?{borderBottomWidth:n.StyleSheet.hairlineWidth}:{borderTopWidth:n.StyleSheet.hairlineWidth},{backgroundColor:null!=ut?'transparent':x.card,borderColor:x.border},st?{paddingTop:(nt?dt:dt/2)+S.top,paddingBottom:(nt?dt:dt/2)+S.bottom,paddingStart:dt+('left'===A?S.left:0),paddingEnd:dt+('right'===A?S.right:0),minWidth:nt?(0,r(d[8]).getDefaultSidebarWidth)(N):0}:[{transform:[{translateY:Z.interpolate({inputRange:[0,1],outputRange:[it.height+S['top'===A?'top':'bottom']+n.StyleSheet.hairlineWidth,0]})}],position:Q?'absolute':void 0},{height:rt,paddingBottom:'bottom'===A?S.bottom:0,paddingTop:'top'===A?S.top:0,paddingHorizontal:Math.max(S.left,S.right)}],H],pointerEvents:Q?'none':'auto',onLayout:st?void 0:function(t){var e=t.nativeEvent.layout.height;null==K||K(e),ot((function(t){return e===t.height?t:{height:e}}))},children:[(0,l.jsx)(n.View,{pointerEvents:"none",style:n.StyleSheet.absoluteFill,children:ut}),(0,l.jsx)(n.View,{accessibilityRole:"tablist",style:st?p.sideContent:p.bottomContent,children:at.map((function(t,e){var o,s=e===v.index,u=B[t.key].options,b='function'==typeof u.tabBarLabel?u.tabBarLabel:(0,r(d[8]).getLabel)({label:u.tabBarLabel,title:u.title},t.name),c=void 0!==u.tabBarAccessibilityLabel?u.tabBarAccessibilityLabel:'string'==typeof b&&'ios'===n.Platform.OS?`${b}, tab, ${e+1} of ${at.length}`:void 0;return(0,l.jsx)(r(d[4]).NavigationContext.Provider,{value:B[t.key].navigation,children:(0,l.jsx)(r(d[4]).NavigationRouteContext.Provider,{value:t,children:(0,l.jsx)(r(d[9]).BottomTabItem,{href:P(t.name,t.params),route:t,descriptor:B[t.key],focused:s,horizontal:nt,compact:lt,sidebar:st,variant:E,onPress:function(){var e=y.emit({type:'tabPress',target:t.key,canPreventDefault:!0});s||e.defaultPrevented||y.dispatch(Object.assign({},r(d[4]).CommonActions.navigate(t),{target:v.key}))},onLongPress:function(){y.emit({type:'tabLongPress',target:t.key})},accessibilityLabel:c,testID:u.tabBarButtonTestID,allowFontScaling:u.tabBarAllowFontScaling,activeTintColor:_,inactiveTintColor:z,activeBackgroundColor:F,inactiveBackgroundColor:M,button:u.tabBarButton,icon:null!=(o=u.tabBarIcon)?o:function(t){var e=t.color,o=t.size;return(0,l.jsx)(r(d[8]).MissingIcon,{color:e,size:o})},badge:u.tabBarBadge,badgeStyle:u.tabBarBadgeStyle,label:b,showLabel:I,labelStyle:u.tabBarLabelStyle,iconStyle:u.tabBarIconStyle,style:[st?{marginVertical:nt?'material'===E?0:1:dt/2}:p.bottomItem,u.tabBarItemStyle]})})},t.key)}))})]})},_e.getTabBarHeight=void 0;var e,o=(e=r(d[1]))&&e.__esModule?e:{default:e},n=r(d[2]),l=r(d[3]);var s=15,u=12,b='web'!==n.Platform.OS,c=function(t){var e=t.state,o=t.descriptors,l=t.dimensions,s=o[e.routes[e.index].key].options.tabBarLabelPosition;if(s)switch(s){case'beside-icon':return!0;case'below-icon':return!1}return l.width>=768?e.routes.reduce((function(t,e){var l=o[e.key].options.tabBarItemStyle,s=n.StyleSheet.flatten(l);if(s){if('number'==typeof s.width)return t+s.width;if('number'==typeof s.maxWidth)return t+s.maxWidth}return t+125}),0)<=l.width:l.width>l.height},h=function(t){var e=t.state,o=t.descriptors,l=t.dimensions,s=o[e.routes[e.index].key].options,u=s.tabBarPosition,b=s.tabBarVariant;if('left'===u||'right'===u||'material'===b)return!1;var h=l.width>l.height,f=c({state:e,descriptors:o,dimensions:l});return!('ios'!==n.Platform.OS||n.Platform.isPad||!h||!f)},f=function(t){var e=t.state,o=t.descriptors,l=t.dimensions,s=t.insets,u=t.style,b=o[e.routes[e.index].key].options.tabBarPosition,c=n.StyleSheet.flatten(u),f=c&&'height'in c?c.height:void 0;if('number'==typeof f)return f;var p=s['top'===b?'top':'bottom'];return h({state:e,descriptors:o,dimensions:l})?32+p:49+p};_e.getTabBarHeight=f;var p=n.StyleSheet.create({start:{top:0,bottom:0,start:0},end:{top:0,bottom:0,end:0},bottom:{start:0,end:0,bottom:0,elevation:8},bottomContent:{flex:1,flexDirection:'row'},sideContent:{flex:1,flexDirection:'column'},bottomItem:{flex:1}})}),1328,[38,178,2,224,939,459,1329,1330,1053,1331]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.useIsKeyboardShown=function(){var n=r.useState(!1),o=e(n,2),a=o[0],u=o[1];return r.useEffect((function(){var e,r=function(){return u(!0)},n=function(){return u(!1)};return e='ios'===t.Platform.OS?[t.Keyboard.addListener('keyboardWillShow',r),t.Keyboard.addListener('keyboardWillHide',n)]:[t.Keyboard.addListener('keyboardDidShow',r),t.Keyboard.addListener('keyboardDidHide',n)],function(){e.forEach((function(e){return e.remove()}))}}),[]),a};var r=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=n(r);if(t&&t.has(e))return t.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(o,u,i):o[u]=e[u]}return o.default=e,t&&t.set(e,o),o})(_r(d[1])),t=_r(d[2]);function n(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(n=function(e){return e?t:r})(e)}}),1329,[38,178,2]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.BottomTabBarHeightCallbackContext=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(o,u,i):o[u]=e[u]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.BottomTabBarHeightCallbackContext=e.createContext(void 0)}),1330,[178]); +__d((function(g,r,i,a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.BottomTabItem=function(o){var u=o.route,f=o.href,p=o.focused,v=o.descriptor,y=o.label,S=o.icon,h=o.badge,x=o.badgeStyle,B=o.button,C=void 0===B?s:B,w=o.accessibilityLabel,U=o.testID,k=o.onPress,j=o.onLongPress,L=o.horizontal,V=o.compact,I=o.sidebar,P=o.variant,z=o.activeTintColor,K=o.inactiveTintColor,M=o.activeBackgroundColor,T=o.inactiveBackgroundColor,D=void 0===T?'transparent':T,_=o.showLabel,O=void 0===_||_,F=o.allowFontScaling,H=void 0===F?!c&&void 0:F,R=o.labelStyle,E=o.iconStyle,q=o.style,A=(0,r(d[5]).useTheme)(),G=A.colors,J=A.fonts,N=null!=z?z:'uikit'===P&&I&&L?(0,e.default)(G.primary).isDark()?'white':(0,e.default)(G.primary).darken(.71).string():G.primary,Q=void 0===K?'material'===P?(0,e.default)(G.text).alpha(.68).rgb().string():(0,e.default)(G.text).mix((0,e.default)(G.card),.5).hex():K,W=null!=M?M:'material'===P?(0,e.default)(N).alpha(.12).rgb().string():I&&L?G.primary:'transparent',X=v.options,Y=(0,r(d[4]).getLabel)({label:'string'==typeof X.tabBarLabel?X.tabBarLabel:void 0,title:X.title},u.name),Z=Q,$=Q;'uikit'===P&&I&&L&&void 0===K&&($=G.primary,Z=G.text);var ee={route:u,focused:p},te=p?W:D,ae=l.StyleSheet.flatten(q||{}).flex,ie='material'===P?L?56:16:I&&L?10:0;return(0,n.jsx)(l.View,{style:[{borderRadius:ie,overflow:'material'===P?'hidden':'visible'},q],children:C({href:f,onPress:k,onLongPress:j,testID:U,accessibilityLabel:w,accessibilityLargeContentTitle:Y,accessibilityShowsLargeContentViewer:!0,accessibilityRole:l.Platform.select({ios:'button',default:'tab'}),accessibilityState:{selected:p},accessibilityStates:p?['selected']:[],android_ripple:{borderless:!0},hoverEffect:'material'===P||I&&L?{color:G.text}:void 0,pressOpacity:1,style:[b.tab,{flex:ae,backgroundColor:te,borderRadius:ie},I?'material'===P?L?b.tabBarSidebarMaterial:b.tabVerticalMaterial:L?b.tabBarSidebarUiKit:b.tabVerticalUiKit:'material'===P?b.tabVerticalMaterial:L?b.tabHorizontalUiKit:b.tabVerticalUiKit],children:(0,n.jsxs)(t.default.Fragment,{children:[(function(e){var t=e.focused;if(void 0===S)return null;var l=t?1:0,o=t?0:1;return(0,n.jsx)(r(d[6]).TabBarIcon,{route:u,variant:P,size:V?'compact':'regular',badge:h,badgeStyle:x,activeOpacity:l,allowFontScaling:H,inactiveOpacity:o,activeTintColor:N,inactiveTintColor:$,renderIcon:S,style:E})})(ee),(function(e){var t=e.focused;if(!1===O)return null;var l=t?N:Z;return'string'!=typeof y?y({focused:t,color:l,position:L?'beside-icon':'below-icon',children:Y}):(0,n.jsx)(r(d[4]).Label,{style:[L?[b.labelBeside,'material'===P?b.labelSidebarMaterial:I?b.labelSidebarUiKit:V?b.labelBesideUikitCompact:b.labelBesideUikit,null==S&&{marginStart:0}]:b.labelBeneath,V||'uikit'===P&&I&&L?J.regular:J.medium,R],allowFontScaling:H,tintColor:l,children:y})})(ee)]})})})};var e=o(r(d[0])),t=o(r(d[1])),l=r(d[2]),n=r(d[3]);function o(e){return e&&e.__esModule?e:{default:e}}var s=function(e){return(0,n.jsx)(r(d[4]).PlatformPressable,Object.assign({},e))},c='ios'===l.Platform.OS&&parseInt(l.Platform.Version,10)>=13;var b=l.StyleSheet.create({tab:{alignItems:'center',borderRadius:10},tabVerticalUiKit:{justifyContent:'flex-start',flexDirection:'column',padding:5},tabVerticalMaterial:{padding:10},tabHorizontalUiKit:{justifyContent:'center',alignItems:'center',flexDirection:'row',padding:5},tabBarSidebarUiKit:{justifyContent:'flex-start',alignItems:'center',flexDirection:'row',paddingVertical:7,paddingHorizontal:5},tabBarSidebarMaterial:{justifyContent:'flex-start',alignItems:'center',flexDirection:'row',paddingVertical:15,paddingStart:16,paddingEnd:24},labelSidebarMaterial:{marginStart:12},labelSidebarUiKit:{fontSize:17,marginStart:10},labelBeneath:{fontSize:10},labelBeside:{marginEnd:12,lineHeight:24},labelBesideUikit:{fontSize:13,marginStart:5},labelBesideUikitCompact:{fontSize:12,marginStart:5}})}),1331,[1056,178,2,224,1053,939,1332]); +__d((function(g,r,i,a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.TabBarIcon=function(e){e.route;var p=e.variant,h=e.size,w=e.badge,u=e.badgeStyle,y=e.activeOpacity,v=e.inactiveOpacity,b=e.activeTintColor,f=e.inactiveTintColor,j=e.renderIcon,S=e.allowFontScaling,_=e.style,C='material'===p?l:'compact'===h?n:c;return(0,o.jsxs)(t.View,{style:['material'===p?s.wrapperMaterial:'compact'===h?s.wrapperUikitCompact:s.wrapperUikit,_],children:[(0,o.jsx)(t.View,{style:[s.icon,{opacity:y,minWidth:C}],children:j({focused:!0,size:C,color:b})}),(0,o.jsx)(t.View,{style:[s.icon,{opacity:v}],children:j({focused:!1,size:C,color:f})}),(0,o.jsx)(r(d[3]).Badge,{visible:null!=w,size:.75*C,allowFontScaling:S,style:[s.badge,u],children:w})]})};(e=r(d[0]))&&e.__esModule;var e,t=r(d[1]),o=r(d[2]);var c=25,n=18,l=24;var s=t.StyleSheet.create({icon:{position:'absolute',alignSelf:'center',alignItems:'center',justifyContent:'center',height:'100%',width:'100%'},wrapperUikit:{width:31,height:28},wrapperUikitCompact:{width:23,height:20},wrapperMaterial:{width:l,height:l},badge:{position:'absolute',end:-3,top:-3}})}),1332,[178,2,224,1333]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),t=_r(d[1]),n=["children","style","visible","size"],r=["backgroundColor"];Object.defineProperty(_e,"__esModule",{value:!0}),_e.Badge=function(i){var f=i.children,p=i.style,v=i.visible,h=void 0===v||v,b=i.size,y=void 0===b?18:b,_=t(i,n),O=a.useState((function(){return new u.Animated.Value(h?1:0)})),w=e(O,1)[0],S=a.useState(h),j=e(S,2),k=j[0],M=j[1],P=(0,_r(d[6]).useTheme)(),A=P.colors,x=P.fonts;if(a.useEffect((function(){if(k)return u.Animated.timing(w,{toValue:h?1:0,duration:150,useNativeDriver:c}).start((function(e){e.finished&&!h&&M(!1)})),function(){return w.stopAnimation()}}),[w,k,h]),!k){if(!h)return null;M(!0)}var z=u.StyleSheet.flatten(p)||{},W=z.backgroundColor,C=void 0===W?A.notification:W,D=t(z,r),R=(0,o.default)(C).isLight()?'black':'white',H=y/2,L=Math.floor(3*y/4);return(0,l.jsx)(u.Animated.Text,Object.assign({numberOfLines:1,style:[{transform:[{scale:w.interpolate({inputRange:[0,1],outputRange:[.5,1]})}],color:R,lineHeight:y-1,height:y,minWidth:y,opacity:w,backgroundColor:C,fontSize:L,borderRadius:H},x.regular,s.container,D]},_,{children:f}))};var i,o=(i=_r(d[2]))&&i.__esModule?i:{default:i},a=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=f(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&{}.hasOwnProperty.call(e,o)){var a=i?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(r,o,a):r[o]=e[o]}return r.default=e,n&&n.set(e,r),r})(_r(d[3])),u=_r(d[4]),l=_r(d[5]);function f(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(f=function(e){return e?n:t})(e)}var c='web'!==u.Platform.OS;var s=u.StyleSheet.create({container:{alignSelf:'flex-end',textAlign:'center',paddingHorizontal:4,overflow:'hidden'}})}),1333,[38,134,1056,178,2,224,939]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.BottomTabBarHeightContext=void 0;var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(o,u,i):o[u]=e[u]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}_e.BottomTabBarHeightContext=e.createContext(void 0)}),1334,[178]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),t=_r(d[1]);Object.defineProperty(_e,"__esModule",{value:!0}),_e.BottomTabView=function(i){var y=i.tabBar,h=void 0===y?p:y,S=i.state,b=i.navigation,x=i.descriptors,k=i.safeAreaInsets,j=i.detachInactiveScreens,B=void 0===j?'web'===r.Platform.OS||'android'===r.Platform.OS||'ios'===r.Platform.OS:j,O=S.routes[S.index].key,P=(0,_r(d[7]).useLocale)().direction,T=n.useState([O]),w=t(T,2),C=w[0],A=w[1];C.includes(O)||A([].concat(e(C),[O]));var M=n.useRef(O),_=(0,_r(d[8]).useAnimatedHashMap)(S);n.useEffect((function(){var e,t,n=M.current;if(n!==O&&null!=(e=x[n])&&e.options.popToTopOnBlur){var o,i=S.routes.find((function(e){return e.key===n}));'stack'===(null==i||null==(o=i.state)?void 0:o.type)&&i.state.key&&(t=Object.assign({},_r(d[7]).StackActions.popToTop(),{target:i.state.key}))}n!==O&&b.emit({type:'transitionStart',target:O}),r.Animated.parallel(S.routes.map((function(e,t){var o=x[e.key].options,i=o.animation,a=void 0===i?'none':i,l=o.transitionSpec,s=void 0===l?u[a].transitionSpec:l;e.key!==n&&e.key!==O&&(s=u.none.transitionSpec),s=null!=s?s:u.none.transitionSpec;var f=t===S.index?0:t>=S.index?1:-1;return r.Animated[s.animation](_[e.key],Object.assign({},s.config,{toValue:f,useNativeDriver:c}))})).filter(Boolean)).start((function(e){e.finished&&t&&b.dispatch(t),n!==O&&b.emit({type:'transitionEnd',target:O})})),M.current=O}),[x,O,b,S.index,S.routes,_]);var H=_r(d[9]).SafeAreaProviderCompat.initialMetrics.frame,I=n.useState((function(){return(0,_r(d[6]).getTabBarHeight)({state:S,descriptors:x,dimensions:H,insets:Object.assign({},_r(d[9]).SafeAreaProviderCompat.initialMetrics.insets,i.safeAreaInsets),style:x[S.routes[S.index].key].options.tabBarStyle})})),z=t(I,2),D=z[0],R=z[1],F=function(){return(0,o.jsx)(_r(d[10]).SafeAreaInsetsContext.Consumer,{children:function(e){var t,n,r,o,i,a,l,s;return h({state:S,descriptors:x,navigation:b,insets:{top:null!=(t=null!=(n=null==k?void 0:k.top)?n:null==e?void 0:e.top)?t:0,right:null!=(r=null!=(o=null==k?void 0:k.right)?o:null==e?void 0:e.right)?r:0,bottom:null!=(i=null!=(a=null==k?void 0:k.bottom)?a:null==e?void 0:e.bottom)?i:0,left:null!=(l=null!=(s=null==k?void 0:k.left)?s:null==e?void 0:e.left)?l:0}})}})},W=S.routes,E=!W.some((function(e){return f(x[e.key].options)})),V=x[O].options.tabBarPosition,K=void 0===V?'bottom':V;return(0,o.jsxs)(_r(d[9]).SafeAreaProviderCompat,{style:{flexDirection:'left'===K||'right'===K?'left'===K&&'ltr'===P||'right'===K&&'rtl'===P?'row-reverse':'row':'column'},children:['top'===K?(0,o.jsx)(_r(d[11]).BottomTabBarHeightCallbackContext.Provider,{value:R,children:F()}):null,(0,o.jsx)(_r(d[12]).MaybeScreenContainer,{enabled:B,hasTwoStates:E,style:v.screens,children:W.map((function(e,t){var n,i=x[e.key],c=i.options,p=c.lazy,v=void 0===p||p,y=c.animation,h=void 0===y?'none':y,b=c.sceneStyleInterpolator,k=void 0===b?u[h].sceneStyleInterpolator:b,j=S.index===t,O=S.preloadedRouteKeys.includes(e.key);if(v&&!C.includes(e.key)&&!j&&!O)return null;var P=i.options,T=P.freezeOnBlur,w=P.header,A=void 0===w?function(t){var n=t.layout,r=t.options;return(0,o.jsx)(_r(d[9]).Header,Object.assign({},r,{layout:n,title:(0,_r(d[9]).getHeaderTitle)(r,e.name)}))}:w,M=P.headerShown,I=P.headerStatusBarHeight,z=P.headerTransparent,R=P.sceneStyle,F=(null!=(n=null==k?void 0:k({current:{progress:_[e.key]}}))?n:{}).sceneStyle,W=f(i.options),E=j?s:W?_[e.key].interpolate({inputRange:[0,.99999,1],outputRange:[l,l,a],extrapolate:'extend'}):a;return(0,o.jsx)(_r(d[12]).MaybeScreen,{style:[r.StyleSheet.absoluteFill,{zIndex:j?0:-1}],active:E,enabled:B,freezeOnBlur:T,shouldFreeze:E===a&&!O,children:(0,o.jsx)(_r(d[13]).BottomTabBarHeightContext.Provider,{value:'bottom'===K?D:0,children:(0,o.jsx)(_r(d[9]).Screen,{focused:j,route:i.route,navigation:i.navigation,headerShown:M,headerStatusBarHeight:I,headerTransparent:z,header:A({layout:H,route:i.route,navigation:i.navigation,options:i.options}),style:[R,W&&F],children:i.render()})})},e.key)}))}),'top'!==K?(0,o.jsx)(_r(d[11]).BottomTabBarHeightCallbackContext.Provider,{value:R,children:F()}):null]})};var n=(function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=i(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var l=o?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(r,a,l):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r})(_r(d[2])),r=_r(d[3]),o=_r(d[4]);function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(i=function(e){return e?n:t})(e)}var a=0,l=1,s=2,u={fade:_r(d[5]).FadeTransition,shift:_r(d[5]).ShiftTransition,none:{sceneStyleInterpolator:void 0,transitionSpec:{animation:'timing',config:{duration:0}}}},c='web'!==r.Platform.OS,f=function(e){var t=e.animation,n=e.transitionSpec;return t?'none'!==t:Boolean(n)},p=function(e){return(0,o.jsx)(_r(d[6]).BottomTabBar,Object.assign({},e))};var v=r.StyleSheet.create({screens:{flex:1,overflow:'hidden'}})}),1335,[6,38,178,2,224,1336,1328,939,1339,1053,459,1330,1340,1334]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ShiftTransition=e.FadeTransition=void 0;e.FadeTransition={transitionSpec:r(d[0]).FadeSpec,sceneStyleInterpolator:r(d[1]).forFade},e.ShiftTransition={transitionSpec:r(d[0]).ShiftSpec,sceneStyleInterpolator:r(d[1]).forShift}}),1336,[1337,1338]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ShiftSpec=e.FadeSpec=void 0;var n=r(d[0]);e.FadeSpec={animation:'timing',config:{duration:150,easing:n.Easing.in(n.Easing.linear)}},e.ShiftSpec={animation:'timing',config:{duration:150,easing:n.Easing.inOut(n.Easing.ease)}}}),1337,[2]); +__d((function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.forFade=function(t){return{sceneStyle:{opacity:t.current.progress.interpolate({inputRange:[-1,0,1],outputRange:[0,1,0]})}}},e.forShift=function(t){var n=t.current;return{sceneStyle:{opacity:n.progress.interpolate({inputRange:[-1,0,1],outputRange:[0,1,0]}),transform:[{translateX:n.progress.interpolate({inputRange:[-1,0,1],outputRange:[-50,0,50]})}]}}}}),1338,[]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useAnimatedHashMap=function(t){var n=t.routes,u=t.index,o=e.useRef({}),a=o.current,f=Object.keys(a);if(n.length===f.length&&n.every((function(e){return f.includes(e.key)})))return a;return o.current={},n.forEach((function(e,t){var n,f=e.key;o.current[f]=null!=(n=a[f])?n:new r.Animated.Value(t===u?0:t>=u?1:-1)})),o.current};var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&{}.hasOwnProperty.call(e,a)){var f=o?Object.getOwnPropertyDescriptor(e,a):null;f&&(f.get||f.set)?Object.defineProperty(u,a,f):u[a]=e[a]}return u.default=e,n&&n.set(e,u),u})(_r(d[0])),r=_r(d[1]);function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}}),1339,[178,2]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";var e=_r(d[0]),n=["enabled"],t=["enabled","active"];Object.defineProperty(_e,"__esModule",{value:!0}),_e.MaybeScreen=function(n){var i,l=n.enabled,u=n.active,s=e(n,t);if(null!=(i=r)&&null!=i.screensEnabled&&i.screensEnabled())return(0,c.jsx)(r.Screen,Object.assign({enabled:l,activityState:u},s));return(0,c.jsx)(a.View,Object.assign({},s))},_e.MaybeScreenContainer=void 0;!(function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=i(n);if(t&&t.has(e))return t.get(e);var r={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var c in e)if("default"!==c&&{}.hasOwnProperty.call(e,c)){var l=a?Object.getOwnPropertyDescriptor(e,c):null;l&&(l.get||l.set)?Object.defineProperty(r,c,l):r[c]=e[c]}r.default=e,t&&t.set(e,r)})(_r(d[1]));var r,a=_r(d[2]),c=_r(d[3]);function i(e){if("function"!=typeof WeakMap)return null;var n=new WeakMap,t=new WeakMap;return(i=function(e){return e?t:n})(e)}try{r=_r(d[4])}catch(e){}_e.MaybeScreenContainer=function(t){var i,l=t.enabled,u=e(t,n);return null!=(i=r)&&null!=i.screensEnabled&&i.screensEnabled()?(0,c.jsx)(r.ScreenContainer,Object.assign({enabled:l},u)):(0,c.jsx)(a.View,Object.assign({},u))}}),1340,[134,178,2,224,1098]); +__d((function(g,r,i,a,m,e,d){"use strict";var t=r(d[0]),n=["id","initialRouteName","backBehavior","children","layout","screenListeners","screenOptions","screenLayout","UNSTABLE_router"];Object.defineProperty(e,"__esModule",{value:!0}),e.createBottomTabNavigator=function(t){return(0,r(d[2]).createNavigatorFactory)(s)(t)};var o=r(d[1]);function s(s){var c=s.id,u=s.initialRouteName,l=s.backBehavior,v=s.children,N=s.layout,B=s.screenListeners,L=s.screenOptions,b=s.screenLayout,y=s.UNSTABLE_router,h=t(s,n),_=(0,r(d[2]).useNavigationBuilder)(r(d[2]).TabRouter,{id:c,initialRouteName:u,backBehavior:l,children:v,layout:N,screenListeners:B,screenOptions:L,screenLayout:b,UNSTABLE_router:y}),p=_.state,T=_.descriptors,O=_.navigation,f=_.NavigationContent;return(0,o.jsx)(f,{children:(0,o.jsx)(r(d[3]).BottomTabView,Object.assign({},h,{state:p,navigation:O,descriptors:T}))})}}),1341,[134,224,939,1335]); +__d((function(g,_r,_i,_a,m,_e,d){"use strict";Object.defineProperty(_e,"__esModule",{value:!0}),_e.useBottomTabBarHeight=function(){var t=e.useContext(_r(d[1]).BottomTabBarHeightContext);if(void 0===t)throw new Error("Couldn't find the bottom tab bar height. Are you inside a screen in Bottom Tab Navigator?");return t};var e=(function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=t(r);if(n&&n.has(e))return n.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(o,u,i):o[u]=e[u]}return o.default=e,n&&n.set(e,o),o})(_r(d[0]));function t(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,n=new WeakMap;return(t=function(e){return e?n:r})(e)}}),1342,[178,1334]); +__d((function(g,r,i,a,m,e,d){(0,r(d[0]).injectData)({"$compiled":true,flags:{darkMode:"media undefined",nativewind:"true"},rem:14,rules:{absolute:{n:[{s:[4,1],d:[[{position:"absolute"}]]}]},relative:{n:[{s:[5,1],d:[[{position:"relative"}]]}]},"right-5":{n:[{s:[6,1],d:[[{right:17.5}]]}]},"top-5":{n:[{s:[7,1],d:[[{top:17.5}]]}]},"z-10":{n:[{s:[8,1],d:[[{zIndex:10}]]}]},"m-10":{n:[{s:[9,1],d:[[{margin:35}]]}]},"m-2":{n:[{s:[10,1],d:[[{margin:7}]]}]},"m-3":{n:[{s:[11,1],d:[[{margin:10.5}]]}]},"m-4":{n:[{s:[12,1],d:[[{margin:14}]]}]},"m-5":{n:[{s:[13,1],d:[[{margin:17.5}]]}]},"m-6":{n:[{s:[14,1],d:[[{margin:21}]]}]},"m-auto":{n:[{s:[15,1],d:[[{margin:"auto"}]]}]},"mx-8":{n:[{s:[16,1],d:[[{marginLeft:28,marginRight:28}]]}]},"mx-auto":{n:[{s:[17,1],d:[[{marginLeft:"auto",marginRight:"auto"}]]}]},"my-3":{n:[{s:[18,1],d:[[{marginTop:10.5,marginBottom:10.5}]]}]},"my-5":{n:[{s:[19,1],d:[[{marginTop:17.5,marginBottom:17.5}]]}]},"-mt-10":{n:[{s:[20,1],d:[[{marginTop:-35}]]}]},"-mt-16":{n:[{s:[21,1],d:[[{marginTop:-56}]]}]},"-mt-24":{n:[{s:[22,1],d:[[{marginTop:-84}]]}]},"-mt-4":{n:[{s:[23,1],d:[[{marginTop:-14}]]}]},"-mt-40":{n:[{s:[24,1],d:[[{marginTop:-140}]]}]},"mb-1":{n:[{s:[25,1],d:[[{marginBottom:3.5}]]}]},"mb-2":{n:[{s:[26,1],d:[[{marginBottom:7}]]}]},"mb-5":{n:[{s:[27,1],d:[[{marginBottom:17.5}]]}]},"mb-6":{n:[{s:[28,1],d:[[{marginBottom:21}]]}]},"mb-8":{n:[{s:[29,1],d:[[{marginBottom:28}]]}]},"ml-2":{n:[{s:[30,1],d:[[{marginLeft:7}]]}]},"ml-3":{n:[{s:[31,1],d:[[{marginLeft:10.5}]]}]},"ml-4":{n:[{s:[32,1],d:[[{marginLeft:14}]]}]},"ml-5":{n:[{s:[33,1],d:[[{marginLeft:17.5}]]}]},"ml-auto":{n:[{s:[34,1],d:[[{marginLeft:"auto"}]]}]},"mr-5":{n:[{s:[35,1],d:[[{marginRight:17.5}]]}]},"mt-1":{n:[{s:[36,1],d:[[{marginTop:3.5}]]}]},"mt-10":{n:[{s:[37,1],d:[[{marginTop:35}]]}]},"mt-2":{n:[{s:[38,1],d:[[{marginTop:7}]]}]},"mt-3":{n:[{s:[39,1],d:[[{marginTop:10.5}]]}]},"mt-32":{n:[{s:[40,1],d:[[{marginTop:112}]]}]},"mt-4":{n:[{s:[41,1],d:[[{marginTop:14}]]}]},"mt-5":{n:[{s:[42,1],d:[[{marginTop:17.5}]]}]},"mt-6":{n:[{s:[43,1],d:[[{marginTop:21}]]}]},"mt-8":{n:[{s:[44,1],d:[[{marginTop:28}]]}]},flex:{n:[{s:[45,1],d:[[{display:"flex"}]]}]},"h-20":{n:[{s:[46,1],d:[[{height:70}]]}]},"h-3/5":{n:[{s:[47,1],d:[[{height:"60%"}]]}]},"h-36":{n:[{s:[48,1],d:[[{height:126}]]}]},"h-40":{n:[{s:[49,1],d:[[{height:140}]]}]},"h-56":{n:[{s:[50,1],d:[[{height:196}]]}]},"h-72":{n:[{s:[51,1],d:[[{height:252}]]}]},"h-full":{n:[{s:[52,1],d:[[{height:"100%"}]]}]},"w-10":{n:[{s:[53,1],d:[[{width:35}]]}]},"w-10/12":{n:[{s:[54,1],d:[[{width:"83.33%"}]]}]},"w-11/12":{n:[{s:[55,1],d:[[{width:"91.67%"}]]}]},"w-20":{n:[{s:[56,1],d:[[{width:70}]]}]},"w-44":{n:[{s:[57,1],d:[[{width:154}]]}]},"w-96":{n:[{s:[58,1],d:[[{width:336}]]}]},"w-full":{n:[{s:[59,1],d:[[{width:"100%"}]]}]},"flex-1":{n:[{s:[60,1],d:[[{flexGrow:1,flexShrink:1,flexBasis:"0%"}]]}]},"flex-row":{n:[{s:[61,1],d:[[{flexDirection:"row"}]]}]},"flex-col":{n:[{s:[62,1],d:[[{flexDirection:"column"}]]}]},"flex-col-reverse":{n:[{s:[63,1],d:[[{flexDirection:"column-reverse"}]]}]},"items-center":{n:[{s:[64,1],d:[[{alignItems:"center"}]]}]},"justify-start":{n:[{s:[65,1],d:[[{justifyContent:"flex-start"}]]}]},"justify-center":{n:[{s:[66,1],d:[[{justifyContent:"center"}]]}]},"justify-between":{n:[{s:[67,1],d:[[{justifyContent:"space-between"}]]}]},"justify-around":{n:[{s:[68,1],d:[[{justifyContent:"space-around"}]]}]},"justify-evenly":{n:[{s:[69,1],d:[[{justifyContent:"space-evenly"}]]}]},"gap-5":{n:[{s:[70,1],d:[[{rowGap:17.5,columnGap:17.5}]]}]},"overflow-hidden":{n:[{s:[71,1],d:[[{overflow:"hidden"}]]}]},"rounded-2xl":{n:[{s:[72,1],d:[[{borderRadius:14}]]}]},"rounded-3xl":{n:[{s:[73,1],d:[[{borderRadius:21}]]}]},"rounded-full":{n:[{s:[74,1],d:[[{borderRadius:9999}]]}]},"rounded-lg":{n:[{s:[75,1],d:[[{borderRadius:7}]]}]},"rounded-xl":{n:[{s:[76,1],d:[[{borderRadius:10.5}]]}]},"rounded-b-2xl":{n:[{s:[77,1],d:[[{borderBottomRightRadius:14,borderBottomLeftRadius:14}]]}]},"rounded-b-xl":{n:[{s:[78,1],d:[[{borderBottomRightRadius:10.5,borderBottomLeftRadius:10.5}]]}]},"rounded-l-xl":{n:[{s:[79,1],d:[[{borderTopLeftRadius:10.5,borderBottomLeftRadius:10.5}]]}]},"rounded-r-xl":{n:[{s:[80,1],d:[[{borderTopRightRadius:10.5,borderBottomRightRadius:10.5}]]}]},"rounded-t-2xl":{n:[{s:[81,1],d:[[{borderTopLeftRadius:14,borderTopRightRadius:14}]]}]},"rounded-bl-xl":{n:[{s:[82,1],d:[[{borderBottomLeftRadius:10.5}]]}]},"rounded-br-xl":{n:[{s:[83,1],d:[[{borderBottomRightRadius:10.5}]]}]},border:{n:[{s:[84,1],d:[[{borderWidth:1}]]}]},"border-2":{n:[{s:[85,1],d:[[{borderWidth:2}]]}]},"border-b-2":{n:[{s:[86,1],d:[[{borderBottomWidth:2}]]}]},"border-b-8":{n:[{s:[87,1],d:[[{borderBottomWidth:8}]]}]},"border-[#4B0082]":{n:[{s:[88,1],d:[[{borderColor:"#4b0082"}]]}]},"border-[#7D3C98]":{n:[{s:[89,1],d:[[{borderColor:"#7d3c98"}]]}]},"border-[#B28DFF]":{n:[{s:[90,1],d:[[{borderColor:"#b28dff"}]]}]},"border-[#F65261]":{n:[{s:[91,1],d:[[{borderColor:"#f65261"}]]}]},"border-white":{n:[{s:[92,1],d:[[{borderColor:"#ffffff"}]]}]},"bg-[#00000090]":{n:[{s:[93,1],d:[[{backgroundColor:"#00000090"}]]}]},"bg-[#1C1C1E]":{n:[{s:[94,1],d:[[{backgroundColor:"#1c1c1e"}]]}]},"bg-[#33333395]":{n:[{s:[95,1],d:[[{backgroundColor:"#33333395"}]]}]},"bg-[#333333]":{n:[{s:[96,1],d:[[{backgroundColor:"#333333"}]]}]},"bg-[#3A1D3C]":{n:[{s:[97,1],d:[[{backgroundColor:"#3a1d3c"}]]}]},"bg-[#4B0082]":{n:[{s:[98,1],d:[[{backgroundColor:"#4b0082"}]]}]},"bg-[#4B294F]":{n:[{s:[99,1],d:[[{backgroundColor:"#4b294f"}]]}]},"bg-[#B28DFF]":{n:[{s:[100,1],d:[[{backgroundColor:"#b28dff"}]]}]},"bg-[#CCCCCC]":{n:[{s:[101,1],d:[[{backgroundColor:"#cccccc"}]]}]},"bg-[#E4D8E9]":{n:[{s:[102,1],d:[[{backgroundColor:"#e4d8e9"}]]}]},"bg-[#E8E2F0]":{n:[{s:[103,1],d:[[{backgroundColor:"#e8e2f0"}]]}]},"bg-[#F65261]":{n:[{s:[104,1],d:[[{backgroundColor:"#f65261"}]]}]},"bg-[#F8F7FE]":{n:[{s:[105,1],d:[[{backgroundColor:"#f8f7fe"}]]}]},"bg-[#FCFCFC]":{n:[{s:[106,1],d:[[{backgroundColor:"#fcfcfc"}]]}]},"bg-black":{n:[{s:[107,1],d:[[{backgroundColor:"#000000"}]]}]},"bg-white":{n:[{s:[108,1],d:[[{backgroundColor:"#ffffff"}]]}]},"p-2":{n:[{s:[109,1],d:[[{padding:7}]]}]},"p-3":{n:[{s:[110,1],d:[[{padding:10.5}]]}]},"p-4":{n:[{s:[111,1],d:[[{padding:14}]]}]},"p-5":{n:[{s:[112,1],d:[[{padding:17.5}]]}]},"p-6":{n:[{s:[113,1],d:[[{padding:21}]]}]},"px-1":{n:[{s:[114,1],d:[[{paddingLeft:3.5,paddingRight:3.5}]]}]},"px-4":{n:[{s:[115,1],d:[[{paddingLeft:14,paddingRight:14}]]}]},"px-6":{n:[{s:[116,1],d:[[{paddingLeft:21,paddingRight:21}]]}]},"px-8":{n:[{s:[117,1],d:[[{paddingLeft:28,paddingRight:28}]]}]},"py-1":{n:[{s:[118,1],d:[[{paddingTop:3.5,paddingBottom:3.5}]]}]},"py-2":{n:[{s:[119,1],d:[[{paddingTop:7,paddingBottom:7}]]}]},"py-3":{n:[{s:[120,1],d:[[{paddingTop:10.5,paddingBottom:10.5}]]}]},"py-4":{n:[{s:[121,1],d:[[{paddingTop:14,paddingBottom:14}]]}]},"py-5":{n:[{s:[122,1],d:[[{paddingTop:17.5,paddingBottom:17.5}]]}]},"pb-4":{n:[{s:[123,1],d:[[{paddingBottom:14}]]}]},"pb-6":{n:[{s:[124,1],d:[[{paddingBottom:21}]]}]},"pl-3":{n:[{s:[125,1],d:[[{paddingLeft:10.5}]]}]},"pl-4":{n:[{s:[126,1],d:[[{paddingLeft:14}]]}]},"pt-6":{n:[{s:[127,1],d:[[{paddingTop:21}]]}]},"pt-8":{n:[{s:[128,1],d:[[{paddingTop:28}]]}]},"text-center":{n:[{s:[129,1],d:[[{textAlign:"center"}]]}]},"align-middle":{n:[{s:[130,1],d:[[{verticalAlign:"middle"}]]}]},"text-2xl":{n:[{s:[131,1],d:[[{fontSize:21,lineHeight:28}]]}]},"text-3xl":{n:[{s:[132,1],d:[[{fontSize:26.25,lineHeight:31.5}]]}]},"text-4xl":{n:[{s:[133,1],d:[[{fontSize:31.5,lineHeight:35}]]}]},"text-8xl":{n:[{s:[134,1],d:[[{fontSize:84}],[[{},"em",[1],1],"lineHeight",1]]}]},"text-base":{n:[{s:[135,1],d:[[{fontSize:14,lineHeight:21}]]}]},"text-lg":{n:[{s:[136,1],d:[[{fontSize:15.75,lineHeight:24.5}]]}]},"text-sm":{n:[{s:[137,1],d:[[{fontSize:12.25,lineHeight:17.5}]]}]},"text-xl":{n:[{s:[138,1],d:[[{fontSize:17.5,lineHeight:24.5}]]}]},"font-bold":{n:[{s:[139,1],d:[[{fontWeight:"700"}]]}]},"font-semibold":{n:[{s:[140,1],d:[[{fontWeight:"600"}]]}]},"text-[#1C1C1E]":{n:[{s:[141,1],d:[[{color:"#1c1c1e"}]]}]},"text-[#333333]":{n:[{s:[142,1],d:[[{color:"#333333"}]]}]},"text-[#4B0082]":{n:[{s:[143,1],d:[[{color:"#4b0082"}]]}]},"text-[#7D3C98]":{n:[{s:[144,1],d:[[{color:"#7d3c98"}]]}]},"text-[#B0A1C1]":{n:[{s:[145,1],d:[[{color:"#b0a1c1"}]]}]},"text-[#B28DFF]":{n:[{s:[146,1],d:[[{color:"#b28dff"}]]}]},"text-[#E0D3F5]":{n:[{s:[147,1],d:[[{color:"#e0d3f5"}]]}]},"text-black":{n:[{s:[148,1],d:[[{color:"#000000"}]]}]},"text-white":{n:[{s:[149,1],d:[[{color:"#ffffff"}]]}]},"opacity-100":{n:[{s:[150,1],d:[[{opacity:1}]]}]},"opacity-40":{n:[{s:[151,1],d:[[{opacity:0.4}]]}]},"opacity-80":{n:[{s:[152,1],d:[[{opacity:0.8}]]}]},"shadow-black":{n:[{s:[153,1],d:[],variables:[["--tw-shadow-color","#000000"]]},{s:[156,1],d:[],variables:[["--tw-shadow-color","#000000"]]}],variables:true},filter:{n:[{s:[154,1],d:[]}],warnings:[{type:"IncompatibleNativeProperty",property:"filter"},{type:"IncompatibleNativeProperty",property:"filter"}]},"shadow-md":{n:[{s:[155,1],d:[[[{},"var",["--tw-shadow-color"],1],"shadowColor",1],[0,["style","shadowOffset","width"]],[3,["style","shadowOffset","height"]],[{shadowRadius:10,shadowOpacity:1,elevation:6}]],variables:[["--tw-shadow-color","#00000059"]]}],variables:true}},universalVariables:{"--tw-shadow-colored":{light:[0,0,"#00000000"]}}})}),1343,[232]); +__d((function(e,t,i,a,n,o,s){n.exports={name:"RoutineFights",displayName:"RoutineFights",expo:{userInterfaceStyle:"automatic"}}}),1344,[]); +__r(62); +__r(0); \ No newline at end of file diff --git a/App/android/app/src/main/java/com/institutov2/MainActivity.kt b/App/android/app/src/main/java/com/institutov2/MainActivity.kt new file mode 100644 index 000000000..712015e99 --- /dev/null +++ b/App/android/app/src/main/java/com/institutov2/MainActivity.kt @@ -0,0 +1,27 @@ +package com.routinefights + +import com.facebook.react.ReactActivity +import com.facebook.react.ReactActivityDelegate +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled +import com.facebook.react.defaults.DefaultReactActivityDelegate +import android.os.Bundle; + +class MainActivity : ReactActivity() { + + /** + * Returns the name of the main component registered from JavaScript. This is used to schedule + * rendering of the component. + */ + override fun getMainComponentName(): String = "RoutineFights" + + /** + * 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 = + DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled) + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(null) + } +} diff --git a/App/android/app/src/main/java/com/institutov2/MainApplication.kt b/App/android/app/src/main/java/com/institutov2/MainApplication.kt new file mode 100644 index 000000000..42d9aecb9 --- /dev/null +++ b/App/android/app/src/main/java/com/institutov2/MainApplication.kt @@ -0,0 +1,44 @@ +package com.routinefights + +import android.app.Application +import com.facebook.react.PackageList +import com.facebook.react.ReactApplication +import com.facebook.react.ReactHost +import com.facebook.react.ReactNativeHost +import com.facebook.react.ReactPackage +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load +import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost +import com.facebook.react.defaults.DefaultReactNativeHost +import com.facebook.react.soloader.OpenSourceMergedSoMapping +import com.facebook.soloader.SoLoader + +class MainApplication : Application(), ReactApplication { + + override val reactNativeHost: ReactNativeHost = + object : DefaultReactNativeHost(this) { + override fun getPackages(): List = + PackageList(this).packages.apply { + // Packages that cannot be autolinked yet can be added manually here, for example: + // add(MyReactNativePackage()) + } + + override fun getJSMainModuleName(): String = "index" + + 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() = getDefaultReactHost(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() + } + } +} diff --git a/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnativecountrypickermodal_lib_assets_images_close.png b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnativecountrypickermodal_lib_assets_images_close.png new file mode 100644 index 000000000..f8a96b2a8 Binary files /dev/null and b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnativecountrypickermodal_lib_assets_images_close.png differ diff --git a/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnativecountrypickermodal_lib_assets_images_closeios.png b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnativecountrypickermodal_lib_assets_images_closeios.png new file mode 100644 index 000000000..e64d614e1 Binary files /dev/null and b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnativecountrypickermodal_lib_assets_images_closeios.png differ diff --git a/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnativeelementdropdown_src_assets_close.png b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnativeelementdropdown_src_assets_close.png new file mode 100644 index 000000000..8320babae Binary files /dev/null and b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnativeelementdropdown_src_assets_close.png differ diff --git a/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnativeelementdropdown_src_assets_down.png b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnativeelementdropdown_src_assets_down.png new file mode 100644 index 000000000..a8f5b4396 Binary files /dev/null and b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnativeelementdropdown_src_assets_down.png differ diff --git a/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_backicon.png b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_backicon.png new file mode 100644 index 000000000..083db295f Binary files /dev/null and b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_backicon.png differ diff --git a/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_backiconmask.png b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_backiconmask.png new file mode 100644 index 000000000..7c1fd8493 Binary files /dev/null and b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_backiconmask.png differ diff --git a/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_clearicon.png b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_clearicon.png new file mode 100644 index 000000000..01a7b6365 Binary files /dev/null and b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_clearicon.png differ diff --git a/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_closeicon.png b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_closeicon.png new file mode 100644 index 000000000..4e3e31b8c Binary files /dev/null and b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_closeicon.png differ diff --git a/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_searchicon.png b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_searchicon.png new file mode 100644 index 000000000..13071d6d8 Binary files /dev/null and b/App/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_searchicon.png differ diff --git a/App/android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_backicon.png b/App/android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_backicon.png new file mode 100644 index 000000000..6de0a1cbb Binary files /dev/null and b/App/android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_backicon.png differ diff --git a/App/android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_clearicon.png b/App/android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_clearicon.png new file mode 100644 index 000000000..c852b6ba5 Binary files /dev/null and b/App/android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_clearicon.png differ diff --git a/App/android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_closeicon.png b/App/android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_closeicon.png new file mode 100644 index 000000000..12981d865 Binary files /dev/null and b/App/android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_closeicon.png differ diff --git a/App/android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_searchicon.png b/App/android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_searchicon.png new file mode 100644 index 000000000..0bf153ecf Binary files /dev/null and b/App/android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_searchicon.png differ diff --git a/App/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_backicon.png b/App/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_backicon.png new file mode 100644 index 000000000..15a983a67 Binary files /dev/null and b/App/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_backicon.png differ diff --git a/App/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_clearicon.png b/App/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_clearicon.png new file mode 100644 index 000000000..5f44c5464 Binary files /dev/null and b/App/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_clearicon.png differ diff --git a/App/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_closeicon.png b/App/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_closeicon.png new file mode 100644 index 000000000..b4f5127fd Binary files /dev/null and b/App/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_closeicon.png differ diff --git a/App/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_searchicon.png b/App/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_searchicon.png new file mode 100644 index 000000000..32808ba92 Binary files /dev/null and b/App/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_searchicon.png differ diff --git a/App/android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_backicon.png b/App/android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_backicon.png new file mode 100644 index 000000000..17e52e855 Binary files /dev/null and b/App/android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_backicon.png differ diff --git a/App/android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_clearicon.png b/App/android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_clearicon.png new file mode 100644 index 000000000..d9af7b680 Binary files /dev/null and b/App/android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_clearicon.png differ diff --git a/App/android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_closeicon.png b/App/android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_closeicon.png new file mode 100644 index 000000000..34396d478 Binary files /dev/null and b/App/android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_closeicon.png differ diff --git a/App/android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_searchicon.png b/App/android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_searchicon.png new file mode 100644 index 000000000..87a30caff Binary files /dev/null and b/App/android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_elements_lib_commonjs_assets_searchicon.png differ diff --git a/App/android/app/src/main/res/drawable/rn_edit_text_material.xml b/App/android/app/src/main/res/drawable/rn_edit_text_material.xml new file mode 100644 index 000000000..5c25e728e --- /dev/null +++ b/App/android/app/src/main/res/drawable/rn_edit_text_material.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + diff --git a/App/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/App/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..31f118fad Binary files /dev/null and b/App/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/App/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/App/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..26bd7e7a0 Binary files /dev/null and b/App/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/App/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/App/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..eded8d8da Binary files /dev/null and b/App/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/App/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/App/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..b0e744176 Binary files /dev/null and b/App/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/App/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/App/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..2c718349b Binary files /dev/null and b/App/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/App/android/app/src/main/res/values/strings.xml b/App/android/app/src/main/res/values/strings.xml new file mode 100644 index 000000000..c9c34a79c --- /dev/null +++ b/App/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Routine Fights + diff --git a/App/android/app/src/main/res/values/styles.xml b/App/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000..7ba83a2ad --- /dev/null +++ b/App/android/app/src/main/res/values/styles.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/App/android/app/src/main/res/xml/network_security_config.xml b/App/android/app/src/main/res/xml/network_security_config.xml new file mode 100644 index 000000000..90d8ea03b --- /dev/null +++ b/App/android/app/src/main/res/xml/network_security_config.xml @@ -0,0 +1,15 @@ + + + + + + localhost + 64.226.71.234 + + + + + + + + \ No newline at end of file diff --git a/App/android/build.gradle b/App/android/build.gradle new file mode 100644 index 000000000..86f013ff9 --- /dev/null +++ b/App/android/build.gradle @@ -0,0 +1,22 @@ +buildscript { + ext { + buildToolsVersion = "35.0.0" + minSdkVersion = 24 + compileSdkVersion = 35 + targetSdkVersion = 34 + ndkVersion = "26.1.10909125" + kotlinVersion = "1.9.24" + } + repositories { + google() + mavenCentral() + } + dependencies { + 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" + diff --git a/App/android/gradle.properties b/App/android/gradle.properties new file mode 100644 index 000000000..613660d87 --- /dev/null +++ b/App/android/gradle.properties @@ -0,0 +1,41 @@ +# 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=-Xmx4g -XX:MaxMetaspaceSize=1g -Dfile.encoding=UTF-8 + +# 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 + +# 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 + +android.enableJetifier=true diff --git a/App/android/gradle/wrapper/gradle-wrapper.properties b/App/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..ed4c299ad --- /dev/null +++ b/App/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.13-all.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/App/android/gradlew b/App/android/gradlew new file mode 100755 index 000000000..faf93008b --- /dev/null +++ b/App/android/gradlew @@ -0,0 +1,251 @@ +#!/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\n' "$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, 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/App/android/gradlew.bat b/App/android/gradlew.bat new file mode 100644 index 000000000..9d21a2183 --- /dev/null +++ b/App/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/App/android/settings.gradle b/App/android/settings.gradle new file mode 100644 index 000000000..1714e4fd6 --- /dev/null +++ b/App/android/settings.gradle @@ -0,0 +1,6 @@ +pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") } +plugins { id("com.facebook.react.settings") } +extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() } +rootProject.name = 'RoutineFights' +include ':app' +includeBuild('../node_modules/@react-native/gradle-plugin') diff --git a/App/app.json b/App/app.json new file mode 100644 index 000000000..d14620a23 --- /dev/null +++ b/App/app.json @@ -0,0 +1,7 @@ +{ + "name": "RoutineFights", + "displayName": "RoutineFights", + "expo": { + "userInterfaceStyle": "automatic" + } +} diff --git a/App/assets/fonts/Lexend-Black.ttf b/App/assets/fonts/Lexend-Black.ttf new file mode 100644 index 000000000..f07fa5c06 Binary files /dev/null and b/App/assets/fonts/Lexend-Black.ttf differ diff --git a/App/assets/fonts/Lexend-Bold.ttf b/App/assets/fonts/Lexend-Bold.ttf new file mode 100644 index 000000000..09511dbf9 Binary files /dev/null and b/App/assets/fonts/Lexend-Bold.ttf differ diff --git a/App/assets/fonts/Lexend-ExtraBold.ttf b/App/assets/fonts/Lexend-ExtraBold.ttf new file mode 100644 index 000000000..5ab3b2a89 Binary files /dev/null and b/App/assets/fonts/Lexend-ExtraBold.ttf differ diff --git a/App/assets/fonts/Lexend-ExtraLight.ttf b/App/assets/fonts/Lexend-ExtraLight.ttf new file mode 100644 index 000000000..6777b564c Binary files /dev/null and b/App/assets/fonts/Lexend-ExtraLight.ttf differ diff --git a/App/assets/fonts/Lexend-Light.ttf b/App/assets/fonts/Lexend-Light.ttf new file mode 100644 index 000000000..213df2702 Binary files /dev/null and b/App/assets/fonts/Lexend-Light.ttf differ diff --git a/App/assets/fonts/Lexend-Medium.ttf b/App/assets/fonts/Lexend-Medium.ttf new file mode 100644 index 000000000..aed742580 Binary files /dev/null and b/App/assets/fonts/Lexend-Medium.ttf differ diff --git a/App/assets/fonts/Lexend-Regular.ttf b/App/assets/fonts/Lexend-Regular.ttf new file mode 100644 index 000000000..eb69863c0 Binary files /dev/null and b/App/assets/fonts/Lexend-Regular.ttf differ diff --git a/App/assets/fonts/Lexend-SemiBold.ttf b/App/assets/fonts/Lexend-SemiBold.ttf new file mode 100644 index 000000000..70060e1fe Binary files /dev/null and b/App/assets/fonts/Lexend-SemiBold.ttf differ diff --git a/App/assets/fonts/Lexend-Thin.ttf b/App/assets/fonts/Lexend-Thin.ttf new file mode 100644 index 000000000..70bcde307 Binary files /dev/null and b/App/assets/fonts/Lexend-Thin.ttf differ diff --git a/App/assets/fonts/Roboto-Black.ttf b/App/assets/fonts/Roboto-Black.ttf new file mode 100644 index 000000000..d51221af2 Binary files /dev/null and b/App/assets/fonts/Roboto-Black.ttf differ diff --git a/App/assets/fonts/Roboto-Bold.ttf b/App/assets/fonts/Roboto-Bold.ttf new file mode 100644 index 000000000..9d7cf220f Binary files /dev/null and b/App/assets/fonts/Roboto-Bold.ttf differ diff --git a/App/assets/fonts/Roboto-ExtraBold.ttf b/App/assets/fonts/Roboto-ExtraBold.ttf new file mode 100644 index 000000000..7092a880b Binary files /dev/null and b/App/assets/fonts/Roboto-ExtraBold.ttf differ diff --git a/App/assets/fonts/Roboto-ExtraLight.ttf b/App/assets/fonts/Roboto-ExtraLight.ttf new file mode 100644 index 000000000..75608c664 Binary files /dev/null and b/App/assets/fonts/Roboto-ExtraLight.ttf differ diff --git a/App/assets/fonts/Roboto-Italic.ttf b/App/assets/fonts/Roboto-Italic.ttf new file mode 100644 index 000000000..c3abaefb2 Binary files /dev/null and b/App/assets/fonts/Roboto-Italic.ttf differ diff --git a/App/assets/fonts/Roboto-Light.ttf b/App/assets/fonts/Roboto-Light.ttf new file mode 100644 index 000000000..6fcd5f964 Binary files /dev/null and b/App/assets/fonts/Roboto-Light.ttf differ diff --git a/App/assets/fonts/Roboto-Medium.ttf b/App/assets/fonts/Roboto-Medium.ttf new file mode 100644 index 000000000..d629e9848 Binary files /dev/null and b/App/assets/fonts/Roboto-Medium.ttf differ diff --git a/App/assets/fonts/Roboto-Regular.ttf b/App/assets/fonts/Roboto-Regular.ttf new file mode 100644 index 000000000..7e3bb2f8c Binary files /dev/null and b/App/assets/fonts/Roboto-Regular.ttf differ diff --git a/App/assets/fonts/Roboto-SemiBold.ttf b/App/assets/fonts/Roboto-SemiBold.ttf new file mode 100644 index 000000000..3f348341c Binary files /dev/null and b/App/assets/fonts/Roboto-SemiBold.ttf differ diff --git a/App/assets/fonts/Roboto-Thin.ttf b/App/assets/fonts/Roboto-Thin.ttf new file mode 100644 index 000000000..6ee97b889 Binary files /dev/null and b/App/assets/fonts/Roboto-Thin.ttf differ diff --git a/App/babel.config.js b/App/babel.config.js new file mode 100644 index 000000000..4240d490f --- /dev/null +++ b/App/babel.config.js @@ -0,0 +1,7 @@ +module.exports = { + presets: ["module:@react-native/babel-preset", "nativewind/babel"], + plugins: [ + "react-native-reanimated/plugin", + ["@babel/plugin-proposal-decorators", { legacy: true }], + ], +}; diff --git a/App/global.css b/App/global.css new file mode 100644 index 000000000..bd6213e1d --- /dev/null +++ b/App/global.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/App/google-services.json b/App/google-services.json new file mode 100644 index 000000000..d171c0702 --- /dev/null +++ b/App/google-services.json @@ -0,0 +1,29 @@ +{ + "project_info": { + "project_number": "161737061797", + "project_id": "routinefights-1", + "storage_bucket": "routinefights-1.firebasestorage.app" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:161737061797:android:57de4fb60145890efe244c", + "android_client_info": { + "package_name": "com.routinefights" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyDqyP0Gb34PYVc6MHyeagYi9TWSzZ8RULo" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/App/index.js b/App/index.js new file mode 100644 index 000000000..a850d031d --- /dev/null +++ b/App/index.js @@ -0,0 +1,9 @@ +/** + * @format + */ + +import {AppRegistry} from 'react-native'; +import App from './App'; +import {name as appName} from './app.json'; + +AppRegistry.registerComponent(appName, () => App); diff --git a/App/ios/.xcode.env b/App/ios/.xcode.env new file mode 100644 index 000000000..3d5782c71 --- /dev/null +++ b/App/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/App/ios/Podfile b/App/ios/Podfile new file mode 100644 index 000000000..91da26d42 --- /dev/null +++ b/App/ios/Podfile @@ -0,0 +1,35 @@ +# Resolve react_native_pods.rb with node to allow for hoisting +require Pod::Executable.execute_command('node', ['-p', + 'require.resolve( + "react-native/scripts/react_native_pods.rb", + {paths: [process.argv[1]]}, + )', __dir__]).strip + +platform :ios, min_ios_version_supported +prepare_react_native_project! + +linkage = ENV['USE_FRAMEWORKS'] +if linkage != nil + Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green + use_frameworks! :linkage => linkage.to_sym +end + +target 'RoutineFights' do + config = use_native_modules! + + use_react_native!( + :path => config[:reactNativePath], + # An absolute path to your application root. + :app_path => "#{Pod::Config.instance.installation_root}/.." + ) + + post_install do |installer| + # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 + react_native_post_install( + installer, + config[:reactNativePath], + :mac_catalyst_enabled => false, + # :ccache_enabled => true + ) + end +end diff --git a/App/ios/institutoV2.xcodeproj/project.pbxproj b/App/ios/institutoV2.xcodeproj/project.pbxproj new file mode 100644 index 000000000..117193eff --- /dev/null +++ b/App/ios/institutoV2.xcodeproj/project.pbxproj @@ -0,0 +1,505 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 0C80B921A6F3F58F76C31292 /* libPods-RoutineFights.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-RoutineFights.a */; }; + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761780EC2CA45674006654EE /* AppDelegate.swift */; }; + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 13B07F861A680F5B00A75B9A; + remoteInfo = RoutineFights; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* RoutineFights.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RoutineFights.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = RoutineFights/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = RoutineFights/Info.plist; sourceTree = ""; }; + 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = RoutineFights/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 3B4392A12AC88292D35C810B /* Pods-RoutineFights.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RoutineFights.debug.xcconfig"; path = "Target Support Files/Pods-RoutineFights/Pods-RoutineFights.debug.xcconfig"; sourceTree = ""; }; + 5709B34CF0A7D63546082F79 /* Pods-RoutineFights.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RoutineFights.release.xcconfig"; path = "Target Support Files/Pods-RoutineFights/Pods-RoutineFights.release.xcconfig"; sourceTree = ""; }; + 5DCACB8F33CDC322A6C60F78 /* libPods-RoutineFights.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RoutineFights.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 761780EC2CA45674006654EE /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = RoutineFights/AppDelegate.swift; sourceTree = ""; }; + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = RoutineFights/LaunchScreen.storyboard; sourceTree = ""; }; + ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0C80B921A6F3F58F76C31292 /* libPods-RoutineFights.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 00E356F01AD99517003FC87E /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 00E356F11AD99517003FC87E /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 13B07FAE1A68108700A75B9A /* RoutineFights */ = { + isa = PBXGroup; + children = ( + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 761780EC2CA45674006654EE /* AppDelegate.swift */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, + 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */, + ); + name = RoutineFights; + sourceTree = ""; + }; + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + isa = PBXGroup; + children = ( + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, + 5DCACB8F33CDC322A6C60F78 /* libPods-RoutineFights.a */, + ); + name = Frameworks; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + ); + name = Libraries; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 13B07FAE1A68108700A75B9A /* RoutineFights */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 83CBBA001A601CBA00E9B192 /* Products */, + 2D16E6871FA4F8E400B85C8A /* Frameworks */, + BBD78D7AC51CEA395F1C20DB /* Pods */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* RoutineFights.app */, + ); + name = Products; + sourceTree = ""; + }; + BBD78D7AC51CEA395F1C20DB /* Pods */ = { + isa = PBXGroup; + children = ( + 3B4392A12AC88292D35C810B /* Pods-RoutineFights.debug.xcconfig */, + 5709B34CF0A7D63546082F79 /* Pods-RoutineFights.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 13B07F861A680F5B00A75B9A /* RoutineFights */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RoutineFights" */; + buildPhases = ( + C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, + E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = RoutineFights; + productName = RoutineFights; + productReference = 13B07F961A680F5B00A75B9A /* RoutineFights.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1210; + TargetAttributes = { + 13B07F861A680F5B00A75B9A = { + LastSwiftMigration = 1120; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RoutineFights" */; + compatibilityVersion = "Xcode 12.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* RoutineFights */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 00E356EC1AD99517003FC87E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/.xcode.env.local", + "$(SRCROOT)/.xcode.env", + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; + }; + 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RoutineFights/Pods-RoutineFights-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RoutineFights/Pods-RoutineFights-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RoutineFights/Pods-RoutineFights-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + C38B50BA6285516D6DCD4F65 /* [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-RoutineFights-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; + }; + E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RoutineFights/Pods-RoutineFights-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RoutineFights/Pods-RoutineFights-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RoutineFights/Pods-RoutineFights-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 761780ED2CA45674006654EE /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 13B07F861A680F5B00A75B9A /* RoutineFights */; + targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-RoutineFights.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = RoutineFights/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 = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = RoutineFights; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-RoutineFights.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 1; + INFOPLIST_FILE = RoutineFights/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 = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; + PRODUCT_NAME = RoutineFights; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + 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; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; + 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 = ( + "\"$(SDKROOT)/usr/lib/swift\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-DFOLLY_NO_CONFIG", + "-DFOLLY_MOBILE=1", + "-DFOLLY_USE_LIBCPP=1", + "-DFOLLY_CFG_NO_COROUTINES=1", + "-DFOLLY_HAVE_CLOCK_GETTIME=1", + ); + 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + 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; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; + 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 = ( + "\"$(SDKROOT)/usr/lib/swift\"", + "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", + "\"$(inherited)\"", + ); + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_CPLUSPLUSFLAGS = ( + "$(OTHER_CFLAGS)", + "-DFOLLY_NO_CONFIG", + "-DFOLLY_MOBILE=1", + "-DFOLLY_USE_LIBCPP=1", + "-DFOLLY_CFG_NO_COROUTINES=1", + "-DFOLLY_HAVE_CLOCK_GETTIME=1", + ); + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RoutineFights" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RoutineFights" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/App/ios/institutoV2.xcodeproj/xcshareddata/xcschemes/institutoV2.xcscheme b/App/ios/institutoV2.xcodeproj/xcshareddata/xcschemes/institutoV2.xcscheme new file mode 100644 index 000000000..163f068cb --- /dev/null +++ b/App/ios/institutoV2.xcodeproj/xcshareddata/xcschemes/institutoV2.xcscheme @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/App/ios/institutoV2/AppDelegate.swift b/App/ios/institutoV2/AppDelegate.swift new file mode 100644 index 000000000..527388b39 --- /dev/null +++ b/App/ios/institutoV2/AppDelegate.swift @@ -0,0 +1,30 @@ +import UIKit +import React +import React_RCTAppDelegate +import ReactAppDependencyProvider + +@main +class AppDelegate: RCTAppDelegate { + override func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { + self.moduleName = "RoutineFights" + self.dependencyProvider = RCTAppDependencyProvider() + + // 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) + } + + override func sourceURL(for bridge: RCTBridge) -> URL? { + self.bundleURL() + } + + override func bundleURL() -> URL? { +#if DEBUG + RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index") +#else + Bundle.main.url(forResource: "main", withExtension: "jsbundle") +#endif + } +} diff --git a/App/ios/institutoV2/Images.xcassets/AppIcon.appiconset/Contents.json b/App/ios/institutoV2/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..81213230d --- /dev/null +++ b/App/ios/institutoV2/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,53 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/App/ios/institutoV2/Images.xcassets/Contents.json b/App/ios/institutoV2/Images.xcassets/Contents.json new file mode 100644 index 000000000..2d92bd53f --- /dev/null +++ b/App/ios/institutoV2/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/App/ios/institutoV2/Info.plist b/App/ios/institutoV2/Info.plist new file mode 100644 index 000000000..f24ec2448 --- /dev/null +++ b/App/ios/institutoV2/Info.plist @@ -0,0 +1,55 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + RoutineFights + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + LSRequiresIPhoneOS + + NSAppTransportSecurity + + + NSAllowsArbitraryLoads + + NSAllowsLocalNetworking + + + NSLocationWhenInUseUsageDescription + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + UIAppFonts + + + + diff --git a/App/ios/institutoV2/LaunchScreen.storyboard b/App/ios/institutoV2/LaunchScreen.storyboard new file mode 100644 index 000000000..287b59eca --- /dev/null +++ b/App/ios/institutoV2/LaunchScreen.storyboard @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/App/ios/institutoV2/PrivacyInfo.xcprivacy b/App/ios/institutoV2/PrivacyInfo.xcprivacy new file mode 100644 index 000000000..41b8317f0 --- /dev/null +++ b/App/ios/institutoV2/PrivacyInfo.xcprivacy @@ -0,0 +1,37 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategorySystemBootTime + NSPrivacyAccessedAPITypeReasons + + 35F9.1 + + + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/App/jest.config.js b/App/jest.config.js new file mode 100644 index 000000000..8eb675e9b --- /dev/null +++ b/App/jest.config.js @@ -0,0 +1,3 @@ +module.exports = { + preset: 'react-native', +}; diff --git a/App/metro.config.js b/App/metro.config.js new file mode 100644 index 000000000..e9758c81c --- /dev/null +++ b/App/metro.config.js @@ -0,0 +1,7 @@ +const { getDefaultConfig, mergeConfig } = require("@react-native/metro-config"); +const { withNativeWind } = require("nativewind/metro"); + +const config = mergeConfig(getDefaultConfig(__dirname), { +}); + +module.exports = withNativeWind(config, { input: "./global.css" }); diff --git a/App/nativewind-env.d.ts b/App/nativewind-env.d.ts new file mode 100644 index 000000000..c0d838073 --- /dev/null +++ b/App/nativewind-env.d.ts @@ -0,0 +1,3 @@ +/// + +// NOTE: This file should not be edited and should be committed with your source code. It is generated by NativeWind. \ No newline at end of file diff --git a/App/nativewind.d.ts b/App/nativewind.d.ts new file mode 100644 index 000000000..a13e3136b --- /dev/null +++ b/App/nativewind.d.ts @@ -0,0 +1 @@ +/// diff --git a/App/package-lock.json b/App/package-lock.json new file mode 100644 index 000000000..20806085c --- /dev/null +++ b/App/package-lock.json @@ -0,0 +1,14458 @@ +{ + "name": "routinefights", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "routinefights", + "version": "0.0.1", + "dependencies": { + "@react-native-async-storage/async-storage": "^2.1.2", + "@react-native-community/datetimepicker": "^8.2.0", + "@react-navigation/bottom-tabs": "^7.2.0", + "@react-navigation/drawer": "^7.1.1", + "@react-navigation/native": "^7.0.15", + "@react-navigation/native-stack": "^7.2.1", + "@types/react-dom": "^18.3.1", + "@types/react-native-vector-icons": "^6.4.18", + "axios": "^1.8.3", + "lightningcss-win32-x64-msvc": "^1.30.2", + "nativewind": "^4.1.23", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-jwt": "^1.2.2", + "react-native": "0.76.3", + "react-native-date-picker": "^5.0.9", + "react-native-element-dropdown": "^2.12.4", + "react-native-fs": "^2.20.0", + "react-native-geolocation-service": "^5.3.1", + "react-native-gesture-handler": "^2.24.0", + "react-native-image-crop-tools": "^1.6.4", + "react-native-image-picker": "^7.2.3", + "react-native-loading-spinner-overlay": "^3.0.1", + "react-native-modal-datetime-picker": "^18.0.0", + "react-native-permissions": "^5.2.3", + "react-native-phone-number-input": "^2.1.0", + "react-native-prompt-android": "^1.1.0", + "react-native-reanimated": "^3.17.1", + "react-native-rss-parser": "^1.5.1", + "react-native-safe-area-context": "^5.3.0", + "react-native-screens": "^4.9.2", + "react-native-secure-key-store": "^2.0.9", + "react-native-sqlite-storage": "^6.0.1", + "react-native-webview": "^13.13.1", + "reflect-metadata": "^0.2.2", + "tailwindcss": "^3.4.17", + "typeorm": "^0.3.20" + }, + "devDependencies": { + "@babel/core": "^7.25.2", + "@babel/plugin-proposal-decorators": "^7.25.9", + "@babel/preset-env": "^7.25.3", + "@babel/runtime": "^7.25.0", + "@react-native-community/cli": "15.0.1", + "@react-native-community/cli-platform-android": "15.0.1", + "@react-native-community/cli-platform-ios": "15.0.1", + "@react-native/babel-preset": "0.76.3", + "@react-native/eslint-config": "0.76.3", + "@react-native/gradle-plugin": "0.76.3", + "@react-native/metro-config": "0.76.3", + "@react-native/typescript-config": "0.76.3", + "@types/node": "^22.13.1", + "@types/react": "^18.3.20", + "@types/react-native-rss-parser": "^1.4.3", + "@types/react-test-renderer": "^18.0.0", + "babel-jest": "^29.6.3", + "babel-preset-expo": "^12.0.9", + "eslint": "^8.19.0", + "jest": "^29.6.3", + "prettier": "2.8.8", + "react-native-vector-icons": "^10.2.0", + "react-test-renderer": "18.3.1", + "typescript": "5.0.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", + "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/eslint-parser": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.27.0.tgz", + "integrity": "sha512-dtnzmSjXfgL/HDgMcmsLSzyGbEosi4DrGWoCNfuI+W4IkVJw6izpTe7LtOdwAXnkDqw5yweboYCTkM2rQizCng==", + "dev": true, + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", + "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", + "dependencies": { + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.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-compilation-targets": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz", + "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==", + "dependencies": { + "@babel/compat-data": "^7.26.8", + "@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-create-class-features-plugin": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz", + "integrity": "sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==", + "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.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.27.0", + "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.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.0.tgz", + "integrity": "sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.2.0", + "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.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", + "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", + "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-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.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", + "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.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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.27.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", + "dependencies": { + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "dependencies": { + "@babel/types": "^7.27.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-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz", + "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-decorators": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-default-from": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.25.9.tgz", + "integrity": "sha512-ykqgwNfSnNOB+C8fV5X4mG3AVmvu+WVxcaU9xHHtBb7PCrPeweMmPjGsn8eMaeJg6SJuoUuZENeeSWaarWqonQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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==", + "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==", + "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==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "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-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", + "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==", + "dev": true, + "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-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-default-from": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.25.9.tgz", + "integrity": "sha512-9MhJ/SMTsVqsd69GyQg89lYR4o9T+oDGv5F6IsigxxqFVOyR/IflDLYP8WDI1l8fkhNGGktqkvL5qwNCtGEpgQ==", + "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-flow": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz", + "integrity": "sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==", + "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-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==", + "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==", + "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==", + "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==", + "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==", + "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==", + "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==", + "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==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "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-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==", + "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.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "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-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.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", + "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.26.8" + }, + "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.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.0.tgz", + "integrity": "sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "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.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", + "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-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-flow-strip-types": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.26.5.tgz", + "integrity": "sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/plugin-syntax-flow": "^7.26.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", + "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", + "@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.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.26.0", + "@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-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.26.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "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==", + "dev": true, + "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-jsx-self": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", + "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "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-source": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", + "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "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-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==", + "dev": true, + "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.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.0.tgz", + "integrity": "sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", + "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-runtime": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz", + "integrity": "sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" + }, + "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.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", + "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz", + "integrity": "sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz", + "integrity": "sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.27.0", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^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.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz", + "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", + "dependencies": { + "@babel/compat-data": "^7.26.8", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-plugin-utils": "^7.26.5", + "@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.26.8", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.26.5", + "@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.26.3", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.26.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.26.3", + "@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.26.6", + "@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.26.8", + "@babel/plugin-transform-typeof-symbol": "^7.26.7", + "@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.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.40.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-flow": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.25.9.tgz", + "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" + }, + "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.26.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.26.3.tgz", + "integrity": "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==", + "dev": true, + "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/preset-typescript": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.0.tgz", + "integrity": "sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/plugin-transform-typescript": "^7.27.0" + }, + "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/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/@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.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse--for-generate-function-map": { + "name": "@babel/traverse", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "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 + }, + "node_modules/@egjs/hammerjs": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", + "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", + "dependencies": { + "@types/hammerjs": "^2.0.36" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", + "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/ttlcache": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "engines": { + "node": ">=12" + } + }, + "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==", + "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/load-nyc-config/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==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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==", + "dependencies": { + "p-limit": "^2.2.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==", + "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, + "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, + "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/core/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@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/@jest/core/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/create-cache-key-function": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", + "dependencies": { + "@jest/types": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "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==", + "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, + "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, + "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==", + "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, + "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, + "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/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "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, + "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, + "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, + "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==", + "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==", + "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.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "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.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "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/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "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/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@react-native-async-storage/async-storage": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-2.1.2.tgz", + "integrity": "sha512-dvlNq4AlGWC+ehtH12p65+17V0Dx7IecOWl6WanF2ja38O1Dcjjvn7jVzkUHJ5oWkQBlyASurTPlTHgKXyYiow==", + "dependencies": { + "merge-options": "^3.0.4" + }, + "peerDependencies": { + "react-native": "^0.0.0-0 || >=0.65 <1.0" + } + }, + "node_modules/@react-native-community/cli": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-15.0.1.tgz", + "integrity": "sha512-xIGPytx2bj5HxFk0c7S25AVuJowHmEFg5LFC9XosKc0TSOjP1r6zGC6OqC/arQV/pNuqmZN2IFnpgJn0Bn+hhQ==", + "dev": true, + "dependencies": { + "@react-native-community/cli-clean": "15.0.1", + "@react-native-community/cli-config": "15.0.1", + "@react-native-community/cli-debugger-ui": "15.0.1", + "@react-native-community/cli-doctor": "15.0.1", + "@react-native-community/cli-server-api": "15.0.1", + "@react-native-community/cli-tools": "15.0.1", + "@react-native-community/cli-types": "15.0.1", + "chalk": "^4.1.2", + "commander": "^9.4.1", + "deepmerge": "^4.3.0", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "fs-extra": "^8.1.0", + "graceful-fs": "^4.1.3", + "prompts": "^2.4.2", + "semver": "^7.5.2" + }, + "bin": { + "rnc-cli": "build/bin.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native-community/cli-clean": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-15.0.1.tgz", + "integrity": "sha512-flGTfT005UZvW2LAXVowZ/7ri22oiiZE4pPgMvc8klRxO5uofKIRuohgiHybHtiCo/HNqIz45JmZJvuFrhc4Ow==", + "dev": true, + "dependencies": { + "@react-native-community/cli-tools": "15.0.1", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-glob": "^3.3.2" + } + }, + "node_modules/@react-native-community/cli-config": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-15.0.1.tgz", + "integrity": "sha512-SL3/9zIyzQQPKWei0+W1gNHxCPurrxqpODUWnVLoP38DNcvYCGtsRayw/4DsXgprZfBC+FsscNpd3IDJrG59XA==", + "dev": true, + "dependencies": { + "@react-native-community/cli-tools": "15.0.1", + "chalk": "^4.1.2", + "cosmiconfig": "^9.0.0", + "deepmerge": "^4.3.0", + "fast-glob": "^3.3.2", + "joi": "^17.2.1" + } + }, + "node_modules/@react-native-community/cli-config-apple": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-15.0.1.tgz", + "integrity": "sha512-GEHUx4NRp9W9or6vygn0TgNeFkcJdNjrtko0vQEJAS4gJdWqP/9LqqwJNlUfaW5jHBN7TKALAMlfRmI12Op3sg==", + "dev": true, + "dependencies": { + "@react-native-community/cli-tools": "15.0.1", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-glob": "^3.3.2" + } + }, + "node_modules/@react-native-community/cli-debugger-ui": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-15.0.1.tgz", + "integrity": "sha512-xkT2TLS8zg5r7Vl9l/2f7JVUoFECnVBS+B5ivrSu2PNZhKkr9lRmJFxC9aVLFb5lIxQQKNDvEyiIDNfP7wjJiA==", + "devOptional": true, + "dependencies": { + "serve-static": "^1.13.1" + } + }, + "node_modules/@react-native-community/cli-doctor": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-15.0.1.tgz", + "integrity": "sha512-YCu44lZR3zZxJJYVTqYZFz9cT9KBfbKI4q2MnKOvkamt00XY3usooMqfuwBAdvM/yvpx7M5w8kbM/nPyj4YCvQ==", + "dev": true, + "dependencies": { + "@react-native-community/cli-config": "15.0.1", + "@react-native-community/cli-platform-android": "15.0.1", + "@react-native-community/cli-platform-apple": "15.0.1", + "@react-native-community/cli-platform-ios": "15.0.1", + "@react-native-community/cli-tools": "15.0.1", + "chalk": "^4.1.2", + "command-exists": "^1.2.8", + "deepmerge": "^4.3.0", + "envinfo": "^7.13.0", + "execa": "^5.0.0", + "node-stream-zip": "^1.9.1", + "ora": "^5.4.1", + "semver": "^7.5.2", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1", + "yaml": "^2.2.1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-platform-android": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-15.0.1.tgz", + "integrity": "sha512-QlAMomj6H6TY6pHwjTYMsHDQLP5eLzjAmyW1qb03w/kyS/72elK2bjsklNWJrscFY9TMQLqw7qoAsXf1m5t/dg==", + "dev": true, + "dependencies": { + "@react-native-community/cli-tools": "15.0.1", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-glob": "^3.3.2", + "fast-xml-parser": "^4.4.1", + "logkitty": "^0.7.1" + } + }, + "node_modules/@react-native-community/cli-platform-apple": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-15.0.1.tgz", + "integrity": "sha512-iQj1Dt2fr/Q7X2CQhyhWnece3eLDCark1osfiwpViksOfTH2WdpNS3lIwlFcIKhsieFU7YYwbNuFqQ3tF9Dlvw==", + "dev": true, + "dependencies": { + "@react-native-community/cli-config-apple": "15.0.1", + "@react-native-community/cli-tools": "15.0.1", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-xml-parser": "^4.4.1" + } + }, + "node_modules/@react-native-community/cli-platform-ios": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-15.0.1.tgz", + "integrity": "sha512-6pKzXEIgGL20eE1uOn8iSsNBlMzO1LG+pQOk+7mvD172EPhKm/lRzUVDX5gO/2jvsGoNw6VUW0JX1FI2firwqA==", + "dev": true, + "dependencies": { + "@react-native-community/cli-platform-apple": "15.0.1" + } + }, + "node_modules/@react-native-community/cli-server-api": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-15.0.1.tgz", + "integrity": "sha512-f3rb3t1ELLaMSX5/LWO/IykglBIgiP3+pPnyl8GphHnBpf3bdIcp7fHlHLemvHE06YxT2nANRxRPjy1gNskenA==", + "devOptional": true, + "dependencies": { + "@react-native-community/cli-debugger-ui": "15.0.1", + "@react-native-community/cli-tools": "15.0.1", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "nocache": "^3.0.1", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^6.2.3" + } + }, + "node_modules/@react-native-community/cli-tools": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-15.0.1.tgz", + "integrity": "sha512-N79A+u/94roanfmNohVcNGu6Xg+0idh63JHZFLC9OJJuZwTifGMLDfSTHZATpR1J7rebozQ5ClcSUePavErnSg==", + "devOptional": true, + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "open": "^6.2.0", + "ora": "^5.4.1", + "prompts": "^2.4.2", + "semver": "^7.5.2", + "shell-quote": "^1.7.3", + "sudo-prompt": "^9.0.0" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "devOptional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/cli-types": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-15.0.1.tgz", + "integrity": "sha512-sWiJ62kkGu2mgYni2dsPxOMBzpwTjNsDH1ubY4mqcNEI9Zmzs0vRwwDUEhYqwNGys9+KpBKoZRrT2PAlhO84xA==", + "dev": true, + "dependencies": { + "joi": "^17.2.1" + } + }, + "node_modules/@react-native-community/cli/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native-community/datetimepicker": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-8.3.0.tgz", + "integrity": "sha512-K/KgaJbLtjMpx4PaG4efrVIcSe6+DbLufeX1lwPB5YY8i3sq9dOh6WcAcMTLbaRTUpurebQTkl7puHPFm9GalA==", + "dependencies": { + "invariant": "^2.2.4" + }, + "peerDependencies": { + "expo": ">=50.0.0", + "react": "*", + "react-native": "*", + "react-native-windows": "*" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + }, + "react-native-windows": { + "optional": true + } + } + }, + "node_modules/@react-native/assets-registry": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.76.3.tgz", + "integrity": "sha512-7Fnc3lzCFFpnoyL1egua6d/qUp0KiIpeSLbfOMln4nI2g2BMzyFHdPjJnpLV2NehmS0omOOkrfRqK5u1F/MXzA==", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.76.3.tgz", + "integrity": "sha512-mZ7jmIIg4bUnxCqY3yTOkoHvvzsDyrZgfnIKiTGm5QACrsIGa5eT3pMFpMm2OpxGXRDrTMsYdPXE2rCyDX52VQ==", + "dependencies": { + "@react-native/codegen": "0.76.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/babel-preset": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.76.3.tgz", + "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" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/codegen": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.76.3.tgz", + "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" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/@react-native/community-cli-plugin": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.76.3.tgz", + "integrity": "sha512-vgsLixHS24jR0d0QqPykBWFaC+V8x9cM3cs4oYXw3W199jgBNGP9MWcUJLazD2vzrT/lUTVBVg0rBeB+4XR6fg==", + "dependencies": { + "@react-native/dev-middleware": "0.76.3", + "@react-native/metro-babel-transformer": "0.76.3", + "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" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@react-native-community/cli-server-api": "*" + }, + "peerDependenciesMeta": { + "@react-native-community/cli-server-api": { + "optional": true + } + } + }, + "node_modules/@react-native/community-cli-plugin/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@react-native/debugger-frontend": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.76.3.tgz", + "integrity": "sha512-pMHQ3NpPB28RxXciSvm2yD+uDx3pkhzfuWkc7VFgOduyzPSIr0zotUiOJzsAtrj8++bPbOsAraCeQhCqoOTWQw==", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/dev-middleware": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.76.3.tgz", + "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" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/dev-middleware/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/@react-native/dev-middleware/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native/dev-middleware/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/@react-native/dev-middleware/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native/eslint-config": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/@react-native/eslint-config/-/eslint-config-0.76.3.tgz", + "integrity": "sha512-TmZ1M6Aw1vnhB9LA0zFx7yq/lQYSWNPpq5fS1jFzz99XemFB92lI9vhqzwRun1VmztTs4Cv1kcJa51xYFRPh2w==", + "dev": true, + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/eslint-parser": "^7.25.1", + "@react-native/eslint-plugin": "0.76.3", + "@typescript-eslint/eslint-plugin": "^7.1.1", + "@typescript-eslint/parser": "^7.1.1", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-ft-flow": "^2.0.1", + "eslint-plugin-jest": "^27.9.0", + "eslint-plugin-react": "^7.30.1", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-native": "^4.0.0", + "hermes-eslint": "^0.23.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": ">=8", + "prettier": ">=2" + } + }, + "node_modules/@react-native/eslint-plugin": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/@react-native/eslint-plugin/-/eslint-plugin-0.76.3.tgz", + "integrity": "sha512-aHs61SGO61K/ULI6jUjrIajeYAz3thh0VT2r/cFsgOxeXgr8j98mqr6+beGlHo4BET0TC7u6+p+fxQNGoI9blg==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/gradle-plugin": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.76.3.tgz", + "integrity": "sha512-t0aYZ8ND7+yc+yIm6Yp52bInneYpki6RSIFZ9/LMUzgMKvEB62ptt/7sfho9QkKHCNxE1DJSWIqLIGi/iHHkyg==", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/js-polyfills": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.76.3.tgz", + "integrity": "sha512-pubJFArMMrdZiytH+W95KngcSQs+LsxOBsVHkwgMnpBfRUxXPMK4fudtBwWvhnwN76Oe+WhxSq7vOS5XgoPhmw==", + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/metro-babel-transformer": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.76.3.tgz", + "integrity": "sha512-b2zQPXmW7avw/7zewc9nzMULPIAjsTwN03hskhxHUJH5pzUf7pIklB3FrgYPZrRhJgzHiNl3tOPu7vqiKzBYPg==", + "dependencies": { + "@babel/core": "^7.25.2", + "@react-native/babel-preset": "0.76.3", + "hermes-parser": "0.23.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/@react-native/metro-config": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.76.3.tgz", + "integrity": "sha512-rRaFZAflH/OcH+rveH+hn2BUSLnfb0tXHyBY7xX+fF2dmxnWh7HiRD2npG36z079Kq3ApykUbxdCtpy8n+GlLw==", + "dev": true, + "dependencies": { + "@react-native/js-polyfills": "0.76.3", + "@react-native/metro-babel-transformer": "0.76.3", + "metro-config": "^0.81.0", + "metro-runtime": "^0.81.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@react-native/normalize-colors": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.76.3.tgz", + "integrity": "sha512-Yrpmrh4IDEupUUM/dqVxhAN8QW1VEUR3Qrk2lzJC1jB2s46hDe0hrMP2vs12YJqlzshteOthjwXQlY0TgIzgbg==" + }, + "node_modules/@react-native/typescript-config": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/@react-native/typescript-config/-/typescript-config-0.76.3.tgz", + "integrity": "sha512-7R4b3jB+0JXVOV5nQHZF6HwO3Dhy2EvOne+gPPrjxjfhy0o7453xKq/oGrmuy7tKlCJXf9A4YRvcCHucLRZA/w==", + "dev": true + }, + "node_modules/@react-native/virtualized-lists": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.76.3.tgz", + "integrity": "sha512-wTGv9pVh3vAOWb29xFm+J9VRe9dUcUcb9FyaMLT/Hxa88W4wqa5ZMe1V9UvrrBiA1G5DKjv8/1ZcDsJhyugVKA==", + "dependencies": { + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/react": "^18.2.6", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@react-navigation/bottom-tabs": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.3.8.tgz", + "integrity": "sha512-an/Uc5Rx+/CDbBMTic5NZqVU6XUGVOOyVfH/8tbgw3N3OmZLc788lGiSZ5H8jUF7CAA1a2o/83pJTeUe9Hnn9w==", + "dependencies": { + "@react-navigation/elements": "^2.3.6", + "color": "^4.2.3" + }, + "peerDependencies": { + "@react-navigation/native": "^7.1.4", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-screens": ">= 4.0.0" + } + }, + "node_modules/@react-navigation/core": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.8.3.tgz", + "integrity": "sha512-j46r3H71iLxWE8wJp/L6nMHheUH4iZxO6YJRRNgiUAw7khnlHaHMrv1Mzuq1mqOGS/dQzhTtpLW0zsmnL9vDwg==", + "dependencies": { + "@react-navigation/routers": "^7.3.3", + "escape-string-regexp": "^4.0.0", + "nanoid": "3.3.8", + "query-string": "^7.1.3", + "react-is": "^18.2.0", + "use-latest-callback": "^0.2.1", + "use-sync-external-store": "^1.2.2" + }, + "peerDependencies": { + "react": ">= 18.2.0" + } + }, + "node_modules/@react-navigation/drawer": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/@react-navigation/drawer/-/drawer-7.3.7.tgz", + "integrity": "sha512-Kt0B0HAfpIUCO7UnSNEkTJiMPs3Pqwr/0Ld8KjKRuMMauLFAizDdM/1mFnxI5ZNuhLs4+t8+jVgdedz5AtF1LQ==", + "dependencies": { + "@react-navigation/elements": "^2.3.6", + "color": "^4.2.3", + "react-native-drawer-layout": "^4.1.4", + "use-latest-callback": "^0.2.1" + }, + "peerDependencies": { + "@react-navigation/native": "^7.1.4", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-gesture-handler": ">= 2.0.0", + "react-native-reanimated": ">= 2.0.0", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-screens": ">= 4.0.0" + } + }, + "node_modules/@react-navigation/elements": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.3.6.tgz", + "integrity": "sha512-yT/iE2Wy+hm96lHiz2eeemnLTEb+nUzlGf3It2cOKcCSMB4OZOGABRsll1His6Xkf08AFBFuRmL8OcdVIju/NQ==", + "dependencies": { + "color": "^4.2.3" + }, + "peerDependencies": { + "@react-native-masked-view/masked-view": ">= 0.2.0", + "@react-navigation/native": "^7.1.4", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0" + }, + "peerDependenciesMeta": { + "@react-native-masked-view/masked-view": { + "optional": true + } + } + }, + "node_modules/@react-navigation/native": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.4.tgz", + "integrity": "sha512-eechVNCLJ8qQ0yeFZEzSGzQT4nqOI4oD3YAEzhCpVCRy+zWZSEXTGRr6VVjTMRlQCtF2uJm1mWr/o0vF91oAqg==", + "dependencies": { + "@react-navigation/core": "^7.8.3", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "3.3.8", + "use-latest-callback": "^0.2.1" + }, + "peerDependencies": { + "react": ">= 18.2.0", + "react-native": "*" + } + }, + "node_modules/@react-navigation/native-stack": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.3.8.tgz", + "integrity": "sha512-g10Xa8Wi996MgQSXg1m+6+2kip+2QN2daJXWylCVVzbLM4qVEnYlwYDfRfE0MUPUBxgAL7bggvW0zi7thX7H1A==", + "dependencies": { + "@react-navigation/elements": "^2.3.6", + "warn-once": "^0.1.1" + }, + "peerDependencies": { + "@react-navigation/native": "^7.1.4", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-screens": ">= 4.0.0" + } + }, + "node_modules/@react-navigation/routers": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-7.3.3.tgz", + "integrity": "sha512-CkaFhV46AToy52xKy9V8niqBXJvOq+WayJ7NtP8BX+rMx7mW/dNKB7Wn7dMtgxOZgzIae7AeiLO+nH74NBBTFg==", + "dependencies": { + "nanoid": "3.3.8" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true + }, + "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==" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "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==", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@sqltools/formatter": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz", + "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "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.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "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==", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "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==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hammerjs": { + "version": "2.0.46", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz", + "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==" + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.6.tgz", + "integrity": "sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "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==" + }, + "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==", + "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==", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "22.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", + "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==" + }, + "node_modules/@types/react": { + "version": "18.3.20", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.20.tgz", + "integrity": "sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.6.tgz", + "integrity": "sha512-nf22//wEbKXusP6E9pfOCDwFdHAX4u172eaJI4YkDRQEZiorm6KfYnSC2SWLDMVWUOWPERmJnN0ujeAfTBLvrw==", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@types/react-native": { + "version": "0.70.19", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.70.19.tgz", + "integrity": "sha512-c6WbyCgWTBgKKMESj/8b4w+zWcZSsCforson7UdXtXMecG3MxCinYi6ihhrHVPyUrVzORsvEzK8zg32z4pK6Sg==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-native-rss-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@types/react-native-rss-parser/-/react-native-rss-parser-1.4.3.tgz", + "integrity": "sha512-DZ1LbKUoZbiYl2AmiGwtWzc/QVn5Fxp6nBodzMklaekvUhBk/4+2DIdbfutvq4crUBO/AdVAjwYl+UEnzntl6g==", + "dev": true + }, + "node_modules/@types/react-native-vector-icons": { + "version": "6.4.18", + "resolved": "https://registry.npmjs.org/@types/react-native-vector-icons/-/react-native-vector-icons-6.4.18.tgz", + "integrity": "sha512-YGlNWb+k5laTBHd7+uZowB9DpIK3SXUneZqAiKQaj1jnJCZM0x71GDim5JCTMi4IFkhc9m8H/Gm28T5BjyivUw==", + "dependencies": { + "@types/react": "*", + "@types/react-native": "^0.70" + } + }, + "node_modules/@types/react-test-renderer": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.3.1.tgz", + "integrity": "sha512-vAhnk0tG2eGa37lkU9+s5SoroCsRI08xnsWFiAXOuPH2jqzMbcXvKExXViPi1P5fIklDeCvXqyrdmipFaSkZrA==", + "dev": true, + "dependencies": { + "@types/react": "^18" + } + }, + "node_modules/@types/semver": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", + "dev": true + }, + "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==" + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "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==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": 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/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/accepts/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/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-fragments": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", + "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", + "dev": true, + "dependencies": { + "colorette": "^1.0.7", + "slice-ansi": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "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/ansis": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz", + "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==", + "engines": { + "node": ">=14" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "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==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/app-root-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", + "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/appdirsjs": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", + "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", + "devOptional": true + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/art": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/art/-/art-0.10.3.tgz", + "integrity": "sha512-HXwbdofRTiJT6qZX/FnchtldzJjS3vkLJxQilc3Xj+ma2MXjY4UAyQ0ls1XZYVnDvVIBiFZbC6QsvtW86TD6tQ==", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/ast-types": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", + "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "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/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "peerDependencies": { + "@babel/core": "^7.0.0-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==", + "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==", + "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-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==", + "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.13", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz", + "integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.4", + "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.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", + "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.4" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-react-native-web": { + "version": "0.19.13", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz", + "integrity": "sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==", + "dev": true + }, + "node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.25.1.tgz", + "integrity": "sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==", + "dependencies": { + "hermes-parser": "0.25.1" + } + }, + "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==" + }, + "node_modules/babel-plugin-syntax-hermes-parser/node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/babel-plugin-transform-flow-enums": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", + "dependencies": { + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "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" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-expo": { + "version": "12.0.11", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-12.0.11.tgz", + "integrity": "sha512-4m6D92nKEieg+7DXa8uSvpr0GjfuRfM/G0t0I/Q5hF8HleEv5ms3z4dJ+p52qXSJsm760tMqLdO93Ywuoi7cCQ==", + "dev": true, + "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.9", + "babel-plugin-react-native-web": "~0.19.13", + "react-refresh": "^0.14.2" + }, + "peerDependencies": { + "babel-plugin-react-compiler": "^19.0.0-beta-9ee70a1-20241017", + "react-compiler-runtime": "^19.0.0-beta-8a03594-20241020" + }, + "peerDependenciesMeta": { + "babel-plugin-react-compiler": { + "optional": true + }, + "react-compiler-runtime": { + "optional": true + } + } + }, + "node_modules/babel-preset-expo/node_modules/@react-native/babel-plugin-codegen": { + "version": "0.76.9", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.76.9.tgz", + "integrity": "sha512-vxL/vtDEIYHfWKm5oTaEmwcnNGsua/i9OjIxBDBFiJDu5i5RU3bpmDiXQm/bJxrJNPRp5lW0I0kpGihVhnMAIQ==", + "dev": true, + "dependencies": { + "@react-native/codegen": "0.76.9" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/babel-preset-expo/node_modules/@react-native/babel-preset": { + "version": "0.76.9", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.76.9.tgz", + "integrity": "sha512-TbSeCplCM6WhL3hR2MjC/E1a9cRnMLz7i767T7mP90oWkklEjyPxWl+0GGoVGnJ8FC/jLUupg/HvREKjjif6lw==", + "dev": true, + "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.9", + "babel-plugin-syntax-hermes-parser": "^0.25.1", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/babel-preset-expo/node_modules/@react-native/codegen": { + "version": "0.76.9", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.76.9.tgz", + "integrity": "sha512-AzlCHMTKrAVC2709V4ZGtBXmGVtWTpWm3Ruv5vXcd3/anH4mGucfJ4rjbWKdaYQJMpXa3ytGomQrsIsT/s8kgA==", + "dev": true, + "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" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "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==", + "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==" + }, + "node_modules/base-64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz", + "integrity": "sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==" + }, + "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/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "devOptional": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "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==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "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.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "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==", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "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==", + "devOptional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001709", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001709.tgz", + "integrity": "sha512-NgL3vUTnDrPCZ3zTahp4fsugQ4dc7EKTSzwQDPEel6DMoMnfH2jhry9n2Zm8onbSR+f/QtKHFOA+iAQu4kbtWA==", + "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/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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, + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/chrome-launcher/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chromium-edge-launcher": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", + "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" + } + }, + "node_modules/chromium-edge-launcher/node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chromium-edge-launcher/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "devOptional": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "devOptional": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/cliui/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/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "devOptional": true, + "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, + "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 + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.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/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/comment-json": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz", + "integrity": "sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==", + "dependencies": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1", + "has-own-prop": "^2.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "devOptional": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz", + "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==", + "devOptional": true, + "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" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "devOptional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "devOptional": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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==" + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "hasInstallScript": true, + "peer": true + }, + "node_modules/core-js-compat": { + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", + "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", + "dependencies": { + "browserslist": "^4.24.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "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, + "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/create-react-class": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz", + "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==", + "peer": true, + "dependencies": { + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-in-js-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", + "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==", + "peer": true, + "dependencies": { + "hyphenate-style-name": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "peer": true + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-3.0.0.tgz", + "integrity": "sha512-YX2i9XjJ7h5q/aQ/IM9PEwEnDqETAIYbggmdDB3HLTlSgo1CxPsj6pvhPG68rq6SVE0+p+6Ywsm5fTYNrYtBWw==", + "deprecated": "Check out `lodash.merge` or `merge-options` instead.", + "peer": true, + "dependencies": { + "is-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "devOptional": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "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==", + "dev": true, + "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-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "engines": { + "node": ">=8" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/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.130", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.130.tgz", + "integrity": "sha512-Ou2u7L9j2XLZbhqzyX0jWDj6gA8D3jIfVzt4rikLf3cGBa0VdReuFimBKS9tQJA4+XpeCxj1NoWlfBXzbMa9IA==" + }, + "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, + "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/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/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "peer": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/envinfo": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/errorhandler": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", + "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", + "devOptional": true, + "dependencies": { + "accepts": "~1.3.7", + "escape-html": "~1.0.3" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-abstract": { + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "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/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-eslint-comments": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", + "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5", + "ignore": "^5.0.5" + }, + "engines": { + "node": ">=6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-plugin-ft-flow": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-2.0.3.tgz", + "integrity": "sha512-Vbsd/b+LYA99jUbsL6viEUWShFaYQt2YQs3QN3f+aeszOhh2sgdcU0mjzDyD4yyBvMc8qy2uwvBBWfMzEX06tg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "@babel/eslint-parser": "^7.12.0", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-jest": { + "version": "27.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz", + "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.10.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0 || ^6.0.0 || ^7.0.0", + "eslint": "^7.0.0 || ^8.0.0", + "jest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-jest/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-jest/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-native": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-4.1.0.tgz", + "integrity": "sha512-QLo7rzTBOl43FvVqDdq5Ql9IoElIuTdjrz9SKAXCvULvBoRZ44JGSkx9z4999ZusCsb4rK3gjS8gOGyeYqZv2Q==", + "dev": true, + "dependencies": { + "eslint-plugin-react-native-globals": "^0.1.1" + }, + "peerDependencies": { + "eslint": "^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-native-globals": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz", + "integrity": "sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==", + "dev": true + }, + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/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/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=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/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "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" + }, + "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, + "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, + "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/exponential-backoff": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz", + "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==" + }, + "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-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "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.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-xml-parser": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", + "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "dependencies": { + "strnum": "^1.1.1" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "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==", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fbjs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz", + "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==", + "peer": true, + "dependencies": { + "core-js": "^2.4.1", + "fbjs-css-vars": "^1.0.0", + "isomorphic-fetch": "^2.1.1", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.18" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", + "peer": true + }, + "node_modules/fbjs/node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "peer": true, + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "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" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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/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/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": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "devOptional": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true + }, + "node_modules/flow-enums-runtime": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==" + }, + "node_modules/flow-parser": { + "version": "0.266.1", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.266.1.tgz", + "integrity": "sha512-dON6h+yO7FGa/FO5NQCZuZHN0o3I23Ev6VYOJf9d8LpdrArHPt39wE++LLmueNV/hNY5hgWGIIrgnrDkRcXkPg==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 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/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "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==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "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/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fuse.js": { + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.4.5.tgz", + "integrity": "sha512-s9PGTaQIkT69HaeoTVjwGsLfb8V8ScJLx5XGFcKHg0MqLUH/UZ4EKOtqtXX9k7AFqCGxD1aJmYb8Q5VYDibVRQ==", + "engines": { + "node": ">=6" + } + }, + "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==", + "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.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.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==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/google-libphonenumber": { + "version": "3.2.40", + "resolved": "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-3.2.40.tgz", + "integrity": "sha512-bzGxX/vfggcV80LVcibki+JvR91x6zHpBpovDXSfmZUGn6uLzhbYXsWll2a80EG6qTmvf8lt7KZZ/pkMml8ckw==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "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==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-own-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", + "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", + "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==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "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.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hermes-eslint": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/hermes-eslint/-/hermes-eslint-0.23.1.tgz", + "integrity": "sha512-DaEpbJobK1KwpTSXrPIKkHs2h+B+RTw2F1g9S70tjtJ14a3zM+2gPVUtc8xyffQqRJ6tPfs+/zRKwV17lwDvqA==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "hermes-estree": "0.23.1", + "hermes-parser": "0.23.1" + } + }, + "node_modules/hermes-estree": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.1.tgz", + "integrity": "sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==" + }, + "node_modules/hermes-parser": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.1.tgz", + "integrity": "sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==", + "dependencies": { + "hermes-estree": "0.23.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/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/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/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-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", + "peer": true + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "peer": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": 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==", + "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==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "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/inline-style-prefixer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-5.1.2.tgz", + "integrity": "sha512-PYUF+94gDfhy+LsQxM0g3d6Hge4l1pAqOSOiZuHWzMvQEGsbRQ/ck2WioLqrY2ZkHyPgVUXxn+hrkF7D6QUGbA==", + "peer": true, + "dependencies": { + "css-in-js-utils": "^2.0.0" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "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==" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "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.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3" + }, + "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-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "devOptional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "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/isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==", + "peer": true, + "dependencies": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, + "node_modules/isomorphic-fetch/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isomorphic-fetch/node_modules/node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "peer": true, + "dependencies": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "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/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "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, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "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, + "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, + "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, + "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-circus/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@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/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, + "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, + "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-config/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@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/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.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-diff/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@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/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, + "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, + "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-each/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@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/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==", + "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==", + "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==", + "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, + "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-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@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/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, + "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-matcher-utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@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/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==", + "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-message-util/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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/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==", + "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/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "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, + "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==", + "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, + "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, + "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, + "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, + "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, + "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/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@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/jest-snapshot/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "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==", + "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==", + "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/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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/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==", + "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/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, + "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==", + "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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/joi": { + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "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==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsc-android": { + "version": "250231.0.0", + "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz", + "integrity": "sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==" + }, + "node_modules/jsc-safe-url": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", + "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==" + }, + "node_modules/jscodeshift": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", + "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" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/jscodeshift/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "dependencies": { + "debug": "^2.6.9", + "marky": "^1.2.2" + } + }, + "node_modules/lighthouse-logger/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/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/lightningcss": { + "version": "1.29.3", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.3.tgz", + "integrity": "sha512-GlOJwTIP6TMIlrTFsxTerwC0W6OpQpCGuX1ECRLBUVRh6fpJH3xTqjCjRgQHTb4ZXexH9rtHou1Lf03GKzmhhQ==", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.29.3", + "lightningcss-darwin-x64": "1.29.3", + "lightningcss-freebsd-x64": "1.29.3", + "lightningcss-linux-arm-gnueabihf": "1.29.3", + "lightningcss-linux-arm64-gnu": "1.29.3", + "lightningcss-linux-arm64-musl": "1.29.3", + "lightningcss-linux-x64-gnu": "1.29.3", + "lightningcss-linux-x64-musl": "1.29.3", + "lightningcss-win32-arm64-msvc": "1.29.3", + "lightningcss-win32-x64-msvc": "1.29.3" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.29.3", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.3.tgz", + "integrity": "sha512-fb7raKO3pXtlNbQbiMeEu8RbBVHnpyqAoxTyTRMEWFQWmscGC2wZxoHzZ+YKAepUuKT9uIW5vL2QbFivTgprZg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.29.3", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.3.tgz", + "integrity": "sha512-KF2XZ4ZdmDGGtEYmx5wpzn6u8vg7AdBHaEOvDKu8GOs7xDL/vcU2vMKtTeNe1d4dogkDdi3B9zC77jkatWBwEQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.29.3", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.3.tgz", + "integrity": "sha512-VUWeVf+V1UM54jv9M4wen9vMlIAyT69Krl9XjI8SsRxz4tdNV/7QEPlW6JASev/pYdiynUCW0pwaFquDRYdxMw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.29.3", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.3.tgz", + "integrity": "sha512-UhgZ/XVNfXQVEJrMIWeK1Laj8KbhjbIz7F4znUk7G4zeGw7TRoJxhb66uWrEsonn1+O45w//0i0Fu0wIovYdYg==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.29.3", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.3.tgz", + "integrity": "sha512-Pqau7jtgJNmQ/esugfmAT1aCFy/Gxc92FOxI+3n+LbMHBheBnk41xHDhc0HeYlx9G0xP5tK4t0Koy3QGGNqypw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.29.3", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.3.tgz", + "integrity": "sha512-dxakOk66pf7KLS7VRYFO7B8WOJLecE5OPL2YOk52eriFd/yeyxt2Km5H0BjLfElokIaR+qWi33gB8MQLrdAY3A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.29.3", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.3.tgz", + "integrity": "sha512-ySZTNCpbfbK8rqpKJeJR2S0g/8UqqV3QnzcuWvpI60LWxnFN91nxpSSwCbzfOXkzKfar9j5eOuOplf+klKtINg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.29.3", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.3.tgz", + "integrity": "sha512-3pVZhIzW09nzi10usAXfIGTTSTYQ141dk88vGFNCgawIzayiIzZQxEcxVtIkdvlEq2YuFsL9Wcj/h61JHHzuFQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.29.3", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.3.tgz", + "integrity": "sha512-VRnkAvtIkeWuoBJeGOTrZxsNp4HogXtcaaLm8agmbYtLDOhQdpgxW6NjZZjDXbvGF+eOehGulXZ3C1TiwHY4QQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss/node_modules/lightningcss-win32-x64-msvc": { + "version": "1.29.3", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.3.tgz", + "integrity": "sha512-IszwRPu2cPnDQsZpd7/EAr0x2W7jkaWqQ1SwCVIZ/tSbZVXPLt6k8s6FkcyBjViCzvB5CW0We0QbbP7zp2aBjQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "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==" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "devOptional": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "license": "MIT" + }, + "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.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, + "node_modules/lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "devOptional": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/logkitty": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", + "dev": true, + "dependencies": { + "ansi-fragments": "^0.2.1", + "dayjs": "^1.8.15", + "yargs": "^15.1.0" + }, + "bin": { + "logkitty": "bin/logkitty.js" + } + }, + "node_modules/logkitty/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/logkitty/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/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, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/logkitty/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/logkitty/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "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": "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/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "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==", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/marky": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, + "node_modules/merge-options": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "dependencies": { + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "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==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/metro": { + "version": "0.81.4", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.81.4.tgz", + "integrity": "sha512-78f0aBNPuwXW7GFnSc+Y0vZhbuQorXxdgqQfvSRqcSizqwg9cwF27I05h47tL8AzQcizS1JZncvq4xf5u/Qykw==", + "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", + "error-stack-parser": "^2.0.6", + "flow-enums-runtime": "^0.0.6", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.25.1", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^29.7.0", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.81.4", + "metro-cache": "0.81.4", + "metro-cache-key": "0.81.4", + "metro-config": "0.81.4", + "metro-core": "0.81.4", + "metro-file-map": "0.81.4", + "metro-resolver": "0.81.4", + "metro-runtime": "0.81.4", + "metro-source-map": "0.81.4", + "metro-symbolicate": "0.81.4", + "metro-transform-plugins": "0.81.4", + "metro-transform-worker": "0.81.4", + "mime-types": "^2.1.27", + "nullthrows": "^1.1.1", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "throat": "^5.0.0", + "ws": "^7.5.10", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-babel-transformer": { + "version": "0.81.4", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.81.4.tgz", + "integrity": "sha512-WW0yswWrW+eTVK9sYD+b1HwWOiUlZlUoomiw9TIOk0C+dh2V90Wttn/8g62kYi0Y4i+cJfISerB2LbV4nuRGTA==", + "dependencies": { + "@babel/core": "^7.25.2", + "flow-enums-runtime": "^0.0.6", + "hermes-parser": "0.25.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-babel-transformer/node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==" + }, + "node_modules/metro-babel-transformer/node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/metro-cache": { + "version": "0.81.4", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.81.4.tgz", + "integrity": "sha512-sxCPH3gowDxazSaZZrwdNPEpnxR8UeXDnvPjBF9+5btDBNN2DpWvDAXPvrohkYkFImhc0LajS2V7eOXvu9PnvQ==", + "dependencies": { + "exponential-backoff": "^3.1.1", + "flow-enums-runtime": "^0.0.6", + "metro-core": "0.81.4" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-cache-key": { + "version": "0.81.4", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.81.4.tgz", + "integrity": "sha512-3SaWQybvf1ivasjBegIxzVKLJzOpcz+KsnGwXFOYADQq0VN4cnM7tT+u2jkOhk6yJiiO1WIjl68hqyMOQJRRLg==", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-config": { + "version": "0.81.4", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.81.4.tgz", + "integrity": "sha512-QnhMy3bRiuimCTy7oi5Ug60javrSa3lPh0gpMAspQZHY9h6y86jwHtZPLtlj8hdWQESIlrbeL8inMSF6qI/i9Q==", + "dependencies": { + "connect": "^3.6.5", + "cosmiconfig": "^5.0.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.7.0", + "metro": "0.81.4", + "metro-cache": "0.81.4", + "metro-core": "0.81.4", + "metro-runtime": "0.81.4" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-config/node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/metro-config/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/metro-config/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/metro-config/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/metro-core": { + "version": "0.81.4", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.81.4.tgz", + "integrity": "sha512-GdL4IgmgJhrMA/rTy2lRqXKeXfC77Rg+uvhUEkbhyfj/oz7PrdSgvIFzziapjdHwk1XYq0KyFh/CcVm8ZawG6A==", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.81.4" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-file-map": { + "version": "0.81.4", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.81.4.tgz", + "integrity": "sha512-qUIBzkiqOi3qEuscu4cJ83OYQ4hVzjON19FAySWqYys9GKCmxlKa7LkmwqdpBso6lQl+JXZ7nCacX90w5wQvPA==", + "dependencies": { + "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.7.0", + "micromatch": "^4.0.4", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-file-map/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/metro-file-map/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/metro-minify-terser": { + "version": "0.81.4", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.81.4.tgz", + "integrity": "sha512-oVvq/AGvqmbhuijJDZZ9npeWzaVyeBwQKtdlnjcQ9fH7nR15RiBr5y2zTdgTEdynqOIb1Kc16l8CQIUSzOWVFA==", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "terser": "^5.15.0" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-resolver": { + "version": "0.81.4", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.81.4.tgz", + "integrity": "sha512-Ng7G2mXjSExMeRzj6GC19G6IJ0mfIbOLgjArsMWJgtt9ViZiluCwgWsMW9juBC5NSwjJxUMK2x6pC5NIMFLiHA==", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-runtime": { + "version": "0.81.4", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.81.4.tgz", + "integrity": "sha512-fBoRgqkF69CwyPtBNxlDi5ha26Zc8f85n2THXYoh13Jn/Bkg8KIDCdKPp/A1BbSeNnkH/++H2EIIfnmaff4uRg==", + "dependencies": { + "@babel/runtime": "^7.25.0", + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-source-map": { + "version": "0.81.4", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.81.4.tgz", + "integrity": "sha512-IOwVQ7mLqoqvsL70RZtl1EyE3f9jp43kVsAsb/B/zoWmu0/k4mwEhGLTxmjdXRkLJqPqPrh7WmFChAEf9trW4Q==", + "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.4", + "nullthrows": "^1.1.1", + "ob1": "0.81.4", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-symbolicate": { + "version": "0.81.4", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.81.4.tgz", + "integrity": "sha512-rWxTmYVN6/BOSaMDUHT8HgCuRf6acd0AjHkenYlHpmgxg7dqdnAG1hLq999q2XpW5rX+cMamZD5W5Ez2LqGaag==", + "dependencies": { + "flow-enums-runtime": "^0.0.6", + "invariant": "^2.2.4", + "metro-source-map": "0.81.4", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-symbolicate/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-transform-plugins": { + "version": "0.81.4", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.81.4.tgz", + "integrity": "sha512-nlP069nDXm4v28vbll4QLApAlvVtlB66rP6h+ml8Q/CCQCPBXu2JLaoxUmkIOJQjLhMRUcgTyQHq+TXWJhydOQ==", + "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" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro-transform-worker": { + "version": "0.81.4", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.81.4.tgz", + "integrity": "sha512-lKAeRZ8EUMtx2cA/Y4KvICr9bIr5SE03iK3lm+l9wyn2lkjLUuPjYVep159inLeDqC6AtSubsA8MZLziP7c03g==", + "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.4", + "metro-babel-transformer": "0.81.4", + "metro-cache": "0.81.4", + "metro-cache-key": "0.81.4", + "metro-minify-terser": "0.81.4", + "metro-source-map": "0.81.4", + "metro-transform-plugins": "0.81.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=18.18" + } + }, + "node_modules/metro/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/metro/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/metro/node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==" + }, + "node_modules/metro/node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/metro/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/metro/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "devOptional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "devOptional": true, + "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/mime-types/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/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "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/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nativewind": { + "version": "4.1.23", + "resolved": "https://registry.npmjs.org/nativewind/-/nativewind-4.1.23.tgz", + "integrity": "sha512-oLX3suGI6ojQqWxdQezOSM5GmJ4KvMnMtmaSMN9Ggb5j7ysFt4nHxb1xs8RDjZR7BWc+bsetNJU8IQdQMHqRpg==", + "dependencies": { + "comment-json": "^4.2.5", + "debug": "^4.3.7", + "react-native-css-interop": "0.1.22" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "tailwindcss": ">3.3.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "devOptional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/nocache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", + "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", + "devOptional": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "dependencies": { + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.10.5" + } + }, + "node_modules/node-dir/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==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/node-dir/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/node-emoji": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", + "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "dependencies": { + "lodash.toarray": "^4.4.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==" + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" + }, + "node_modules/node-stream-zip": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", + "dev": true, + "engines": { + "node": ">=0.12.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/antelle" + } + }, + "node_modules/normalize-css-color": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/normalize-css-color/-/normalize-css-color-1.0.2.tgz", + "integrity": "sha512-jPJ/V7Cp1UytdidsPqviKEElFQJs22hUUgK5BOPHTwOonNCk7/2qOxhhqzEajmFrWJowADFfOFh1V+aWkRfy+w==", + "peer": true + }, + "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==", + "engines": { + "node": ">=0.10.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==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" + }, + "node_modules/ob1": { + "version": "0.81.4", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.81.4.tgz", + "integrity": "sha512-EZLYM8hfPraC2SYOR5EWLFAPV5e6g+p83m2Jth9bzCpFxP1NDQJYXdmXRB2bfbaWQSmm6NkIQlbzk7uU5lLfgg==", + "dependencies": { + "flow-enums-runtime": "^0.0.6" + }, + "engines": { + "node": ">=18.18" + } + }, + "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.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "devOptional": true, + "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/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "devOptional": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "devOptional": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/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==", + "devOptional": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "devOptional": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "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/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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, + "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/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/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==", + "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==", + "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==", + "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-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "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, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/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, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-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==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "devOptional": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/pretty-format/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "devOptional": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/pretty-format/node_modules/@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "devOptional": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "devOptional": true + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dependencies": { + "asap": "~2.0.6" + } + }, + "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==", + "devOptional": 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/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/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "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" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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/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/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-art": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-art/-/react-art-16.13.1.tgz", + "integrity": "sha512-IDXRZCUlyl3AkQ6Xf3qg0C6MSDxKhOhf7amYzWNMaelH5K2W9KqUOUHL8mGwC0k/1BXFhhusSgsE1Bekz3aHEQ==", + "peer": true, + "dependencies": { + "art": "^0.10.1", + "create-react-class": "^15.6.2", + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.13.1" + } + }, + "node_modules/react-art/node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/react-async-hook": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/react-async-hook/-/react-async-hook-3.6.1.tgz", + "integrity": "sha512-YWBB2feVQF79t5u2raMPHlZ8975Jds+guCvkWVC4kRLDlSCouLsYpQm4DGSqPeHvoHYVVcDfqNayLZAXQmnxnw==", + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-devtools-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-5.3.2.tgz", + "integrity": "sha512-crr9HkVrDiJ0A4zot89oS0Cgv0Oa4OG1Em4jit3P3ZxZSKPMYyMjfwMqgcJna9o625g8oN87rBm8SWWrSTBZxg==", + "dependencies": { + "shell-quote": "^1.6.1", + "ws": "^7" + } + }, + "node_modules/react-devtools-core/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-freeze": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.4.tgz", + "integrity": "sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=17.0.0" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + }, + "node_modules/react-jwt": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-jwt/-/react-jwt-1.3.0.tgz", + "integrity": "sha512-aC+X6q8pi63zoO7A060/4mfF5jM6Ay+4YyY4QgdD8dDOqp89sPcg0IhWEHyPACnVETMjBWzmxMPgIPosQNeYyw==", + "engines": { + "node": ">=10" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-native": { + "version": "0.76.3", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.76.3.tgz", + "integrity": "sha512-0TUhgmlouRNf6yuDIIAdbQl0g1VsONgCMsLs7Et64hjj5VLMCA7np+4dMrZvGZ3wRNqzgeyT9oWJsUm49AcwSQ==", + "dependencies": { + "@jest/create-cache-key-function": "^29.6.3", + "@react-native/assets-registry": "0.76.3", + "@react-native/codegen": "0.76.3", + "@react-native/community-cli-plugin": "0.76.3", + "@react-native/gradle-plugin": "0.76.3", + "@react-native/js-polyfills": "0.76.3", + "@react-native/normalize-colors": "0.76.3", + "@react-native/virtualized-lists": "0.76.3", + "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" + }, + "bin": { + "react-native": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/react": "^18.2.6", + "react": "^18.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-native-country-picker-modal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-native-country-picker-modal/-/react-native-country-picker-modal-2.0.0.tgz", + "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" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*", + "react-native": "*", + "react-native-web": "*" + } + }, + "node_modules/react-native-country-picker-modal/node_modules/@callstack/react-theme-provider": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@callstack/react-theme-provider/-/react-theme-provider-3.0.3.tgz", + "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" + }, + "peerDependencies": { + "react": "^16.3.0" + } + }, + "node_modules/react-native-country-picker-modal/node_modules/deepmerge": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", + "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-native-country-picker-modal/node_modules/modal-react-native-web": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/modal-react-native-web/-/modal-react-native-web-0.2.0.tgz", + "integrity": "sha512-sC0/jL3ZL4bGtv1VS43TnrH7/FHUqgb7IU3VYWNDzuR223fYlpG5Gc974GsTP172Vi+lnnBL/G70xONmaggxeQ==", + "dependencies": { + "warning": "^4.0.1" + }, + "peerDependencies": { + "react": "16.x.x", + "react-art": "16.x.x", + "react-dom": "16.x.x", + "react-native-web": "0.9.x" + } + }, + "node_modules/react-native-country-picker-modal/node_modules/prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "node_modules/react-native-country-picker-modal/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/react-native-css-interop": { + "version": "0.1.22", + "resolved": "https://registry.npmjs.org/react-native-css-interop/-/react-native-css-interop-0.1.22.tgz", + "integrity": "sha512-Mu01e+H9G+fxSWvwtgWlF5MJBJC4VszTCBXopIpeR171lbeBInHb8aHqoqRPxmJpi3xIHryzqKFOJYAdk7PBxg==", + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/traverse": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.3.7", + "lightningcss": "^1.27.0", + "semver": "^7.6.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": ">=18", + "react-native": "*", + "react-native-reanimated": ">=3.6.2", + "tailwindcss": "~3" + }, + "peerDependenciesMeta": { + "react-native-safe-area-context": { + "optional": true + }, + "react-native-svg": { + "optional": true + } + } + }, + "node_modules/react-native-css-interop/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native-date-picker": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/react-native-date-picker/-/react-native-date-picker-5.0.11.tgz", + "integrity": "sha512-D7NSGVEhpgAEipo/PSy5oDJsLWRWaJQ5FS9ujr1HI1pVUIGJ0B6LaHoz2zR2X0LQ/IWWTA7mijUdeq5xbSXrEQ==", + "peerDependencies": { + "react": ">= 17.0.1", + "react-native": ">= 0.64.3" + } + }, + "node_modules/react-native-drawer-layout": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/react-native-drawer-layout/-/react-native-drawer-layout-4.1.4.tgz", + "integrity": "sha512-Q2PdUJBRmrR5VEYHDDgpKjDahmZPsoBKuDOt8aWjG/0zAqDIRED9eEbf77zJzfdb4BBPH36ERDSS2yV8KW/c9w==", + "dependencies": { + "use-latest-callback": "^0.2.1" + }, + "peerDependencies": { + "react": ">= 18.2.0", + "react-native": "*", + "react-native-gesture-handler": ">= 2.0.0", + "react-native-reanimated": ">= 2.0.0" + } + }, + "node_modules/react-native-element-dropdown": { + "version": "2.12.4", + "resolved": "https://registry.npmjs.org/react-native-element-dropdown/-/react-native-element-dropdown-2.12.4.tgz", + "integrity": "sha512-abZc5SVji9FIt7fjojRYrbuvp03CoeZJrgvezQoDoSOrpiTqkX69ix5m+j06W2AVncA0VWvbT+vCMam8SoVadw==", + "dependencies": { + "lodash": "^4.17.21" + }, + "engines": { + "node": ">= 16.0.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-fs": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/react-native-fs/-/react-native-fs-2.20.0.tgz", + "integrity": "sha512-VkTBzs7fIDUiy/XajOSNk0XazFE9l+QlMAce7lGuebZcag5CnjszB+u4BdqzwaQOdcYb5wsJIsqq4kxInIRpJQ==", + "dependencies": { + "base-64": "^0.1.0", + "utf8": "^3.0.0" + }, + "peerDependencies": { + "react-native": "*", + "react-native-windows": "*" + }, + "peerDependenciesMeta": { + "react-native-windows": { + "optional": true + } + } + }, + "node_modules/react-native-geolocation-service": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/react-native-geolocation-service/-/react-native-geolocation-service-5.3.1.tgz", + "integrity": "sha512-LTXPtPNmrdhx+yeWG47sAaCgQc3nG1z+HLLHlhK/5YfOgfLcAb9HAkhREPjQKPZOUx8pKZMIpdGFUGfJYtimXQ==" + }, + "node_modules/react-native-gesture-handler": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.25.0.tgz", + "integrity": "sha512-NPjJi6mislXxvjxQPU9IYwBjb1Uejp8GvAbE1Lhh+xMIMEvmgAvVIp5cz1P+xAbV6uYcRRArm278+tEInGOqWg==", + "dependencies": { + "@egjs/hammerjs": "^2.0.17", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-image-crop-tools": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/react-native-image-crop-tools/-/react-native-image-crop-tools-1.6.4.tgz", + "integrity": "sha512-GhI76SlKAI7vfUfg/UnG/MrPTe7ffwjsOowBnYYAB2npJ2ij/iAG4LRXOPlQygoY+yiCy158sYo4wmKDc0RfLQ==", + "peerDependencies": { + "react": ">=16.0.0", + "react-native": ">=0.59.0-rc.0 <1.0.x" + } + }, + "node_modules/react-native-image-picker": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/react-native-image-picker/-/react-native-image-picker-7.2.3.tgz", + "integrity": "sha512-zKIZUlQNU3EtqizsXSH92zPeve4vpUrsqHu2kkpCxWE9TZhJFZBb+irDsBOY8J21k0+Edgt06TMQGJ+iPUIXyA==", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-is-edge-to-edge": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.1.6.tgz", + "integrity": "sha512-1pHnFTlBahins6UAajXUqeCOHew9l9C2C8tErnpGC3IyLJzvxD+TpYAixnCbrVS52f7+NvMttbiSI290XfwN0w==", + "peerDependencies": { + "react": ">=18.2.0", + "react-native": ">=0.73.0" + } + }, + "node_modules/react-native-loading-spinner-overlay": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/react-native-loading-spinner-overlay/-/react-native-loading-spinner-overlay-3.0.1.tgz", + "integrity": "sha512-4GdR54HQnKg2HPSSisVizfTLuyhSh4splY9eb8mKiYF1Ihjn/5EmdNo5bN3S7uKPFRC3WLzIZIouX6G6fXfnjw==", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-modal-datetime-picker": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/react-native-modal-datetime-picker/-/react-native-modal-datetime-picker-18.0.0.tgz", + "integrity": "sha512-0jdvhhraZQlRACwr7pM6vmZ2kxgzJ4CpnmV6J3TVA6MrXMXK6Zo/upRBKkRp0+fTOiKuNblzesA2U59rYo6SGA==", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "@react-native-community/datetimepicker": ">=6.7.0", + "react-native": ">=0.65.0" + } + }, + "node_modules/react-native-permissions": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-native-permissions/-/react-native-permissions-5.3.0.tgz", + "integrity": "sha512-krDaImQ7J8tm7P+GqKmTIkojNqdO0E6v2x7TOlX/7rRc/zlpoqRXsN7210ecChcUmEOJEH6wzPcemYq+7AfZiw==", + "peerDependencies": { + "react": ">=18.1.0", + "react-native": ">=0.70.0", + "react-native-windows": ">=0.70.0" + }, + "peerDependenciesMeta": { + "react-native-windows": { + "optional": true + } + } + }, + "node_modules/react-native-phone-number-input": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/react-native-phone-number-input/-/react-native-phone-number-input-2.1.0.tgz", + "integrity": "sha512-EItzeDH6QUw6Kd1uwqFgcUl1YstxULB1M3HuCMHTvHVLoPE3ddjiuHyx+EHs0+4FcZtaXLQzLuC4cC/c4XIEuA==", + "dependencies": { + "google-libphonenumber": "^3.2.10", + "react-native-country-picker-modal": "^2.0.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-prompt-android": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/react-native-prompt-android/-/react-native-prompt-android-1.1.0.tgz", + "integrity": "sha512-4JoyEaT2ZnK9IH+tDFpbTiQBgva8UIFGQf4/Uw/tnEVWBERlVlzcs5B82T9BkeEhEqXhp89JaiSBnLWj30lciw==" + }, + "node_modules/react-native-reanimated": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.17.2.tgz", + "integrity": "sha512-8z4o8/qZRM02oI3qzVh48417/AXDx+aKl95X8qn+vqQx+s7Z1sGI8GPah645vYDB/DrPDRkoJOp0tAhrJdXs9w==", + "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-is-edge-to-edge": "1.1.6" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0", + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-rss-parser": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/react-native-rss-parser/-/react-native-rss-parser-1.5.1.tgz", + "integrity": "sha512-47JcRW8utdnA0nhxnj1FNRy5o0UNPQP7UT1OBJKYq0LEkzbQIVi44LlUivazCmGQnxlAKLXo0imepsM39WxwTQ==", + "dependencies": { + "xmldom": "^0.3.0" + } + }, + "node_modules/react-native-safe-area-context": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.3.0.tgz", + "integrity": "sha512-glV9bwuozTjf/JDBIBm+ITnukHNaUT3nucgdeADwjtHsfEN3RL5UO6nq99vvdWv5j/O9yCZBvFncM1BBQ+UvpQ==", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-screens": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.10.0.tgz", + "integrity": "sha512-Tw21NGuXm3PbiUGtZd0AnXirUixaAbPXDjNR0baBH7/WJDaDTTELLcQ7QRXuqAWbmr/EVCrKj1348ei1KFIr8A==", + "dependencies": { + "react-freeze": "^1.0.0", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-secure-key-store": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/react-native-secure-key-store/-/react-native-secure-key-store-2.0.10.tgz", + "integrity": "sha512-K7aVlIGxyklnjhCidVexVgZF3LsgUD9GIxMy2NB/xkQsS9E2SJWkD/fJ56e25L2I6a9Mp1zuJrKnCtfBs1CvAw==" + }, + "node_modules/react-native-sqlite-storage": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/react-native-sqlite-storage/-/react-native-sqlite-storage-6.0.1.tgz", + "integrity": "sha512-1tDFjrint6X6qSYKf3gDyz+XB+X79jfiL6xTugKHPRtF0WvqMtVgdLuNqZunIXjNEvNtNVEbXaeZ6MsguFu00A==", + "peerDependencies": { + "react-native": ">=0.14.0" + } + }, + "node_modules/react-native-vector-icons": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-10.2.0.tgz", + "integrity": "sha512-n5HGcxUuVaTf9QJPs/W22xQpC2Z9u0nb0KgLPnVltP8vdUvOp6+R26gF55kilP/fV4eL4vsAHUqUjewppJMBOQ==", + "dev": true, + "dependencies": { + "prop-types": "^15.7.2", + "yargs": "^16.1.1" + }, + "bin": { + "fa-upgrade.sh": "bin/fa-upgrade.sh", + "fa5-upgrade": "bin/fa5-upgrade.sh", + "fa6-upgrade": "bin/fa6-upgrade.sh", + "generate-icon": "bin/generate-icon.js" + } + }, + "node_modules/react-native-vector-icons/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/react-native-vector-icons/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-native-vector-icons/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native-vector-icons/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-native-web": { + "version": "0.9.13", + "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.9.13.tgz", + "integrity": "sha512-P1nCvBVFrv3J5BXu39iS4A3fR7m0vtGaCAy4MigAtZpakIuara/98h516fDQajPqoVy2T4cQgYZUQAr+FBnppQ==", + "deprecated": "< 0.16.0 is no longer supported", + "peer": true, + "dependencies": { + "array-find-index": "^1.0.2", + "create-react-class": "^15.6.2", + "debounce": "^1.2.0", + "deep-assign": "^3.0.0", + "fbjs": "^1.0.0", + "hyphenate-style-name": "^1.0.2", + "inline-style-prefixer": "^5.0.3", + "normalize-css-color": "^1.0.2", + "prop-types": "^15.6.0", + "react-timer-mixin": "^0.13.4" + }, + "peerDependencies": { + "react": ">=16.5.1", + "react-art": ">=16.5.1", + "react-dom": ">=16.5.1" + } + }, + "node_modules/react-native-webview": { + "version": "13.13.5", + "resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-13.13.5.tgz", + "integrity": "sha512-MfC2B+woL4Hlj2WCzcb1USySKk+SteXnUKmKktOk/H/AQy5+LuVdkPKm8SknJ0/RxaxhZ48WBoTRGaqgR137hw==", + "dependencies": { + "escape-string-regexp": "^4.0.0", + "invariant": "2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native/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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-native/node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.23.1.tgz", + "integrity": "sha512-uNLD0tk2tLUjGFdmCk+u/3FEw2o+BAwW4g+z2QVlxJrzZYOOPADroEcNtTPt5lNiScctaUmnsTkVEnOwZUOLhA==", + "dependencies": { + "hermes-parser": "0.23.1" + } + }, + "node_modules/react-native/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "engines": { + "node": ">=18" + } + }, + "node_modules/react-native/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==", + "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/react-native/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/react-native/node_modules/scheduler": { + "version": "0.24.0-canary-efb381bbf-20230505", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz", + "integrity": "sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/react-native/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-shallow-renderer": { + "version": "16.15.0", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", + "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-test-renderer": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.3.1.tgz", + "integrity": "sha512-KkAgygexHUkQqtvvx/otwxtuFu5cVjfzTCtjXLH9boS19/Nbtg84zS7wIQn39G8IlrhThBpQsMKkq5ZHZIYFXA==", + "dev": true, + "dependencies": { + "react-is": "^18.3.1", + "react-shallow-renderer": "^16.15.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-timer-mixin": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.4.tgz", + "integrity": "sha512-4+ow23tp/Tv7hBM5Az5/Be/eKKF7DIvJ09voz5LyHGQaqqz9WV8YMs31eFvcYQs7d451LSg7kDJV70XYN/Ug/Q==", + "peer": true + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "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==", + "devOptional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readline": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", + "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==" + }, + "node_modules/recast": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", + "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" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==" + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.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/regjsparser/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/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "engines": { + "node": ">=0.10" + } + }, + "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-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "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, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "devOptional": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "peer": true + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "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/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/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/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/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/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", + "engines": { + "node": ">=0.10.0" + } + }, + "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/serve-static/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/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "peer": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "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==", + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", + "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.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==" + }, + "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==", + "devOptional": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/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-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "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, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/sql-highlight": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/sql-highlight/-/sql-highlight-6.0.0.tgz", + "integrity": "sha512-+fLpbAbWkQ+d0JEchJT/NrRRXbYRNbG15gFpANx73EwxQB1PRjj+k/OI0GTU0J63g8ikGkJECQp9z8XEJZvPRw==", + "funding": [ + "https://github.com/scriptcoded/sql-highlight?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/scriptcoded" + } + ], + "engines": { + "node": ">=14" + } + }, + "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==", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + }, + "node_modules/stacktrace-parser": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz", + "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==", + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "engines": { + "node": ">=4" + } + }, + "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==", + "devOptional": true, + "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, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-length/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "dev": true + }, + "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/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/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/string-width-cjs/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/string-width/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/string-width/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/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "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==", + "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==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strnum": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", + "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ] + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "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" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "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" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "devOptional": true + }, + "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==", + "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/tailwindcss": { + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "dependencies": { + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/terser": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/terser/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/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==", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==" + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + }, + "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==", + "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/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "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/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-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==", + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typeorm": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.22.tgz", + "integrity": "sha512-P/Tsz3UpJ9+K0oryC0twK5PO27zejLYYwMsE8SISfZc1lVHX+ajigiOyWsKbuXpEFMjD9z7UjLzY3+ElVOMMDA==", + "dependencies": { + "@sqltools/formatter": "^1.2.5", + "ansis": "^3.17.0", + "app-root-path": "^3.1.0", + "buffer": "^6.0.3", + "dayjs": "^1.11.13", + "debug": "^4.4.0", + "dotenv": "^16.4.7", + "glob": "^10.4.5", + "sha.js": "^2.4.11", + "sql-highlight": "^6.0.0", + "tslib": "^2.8.1", + "uuid": "^11.1.0", + "yargs": "^17.7.2" + }, + "bin": { + "typeorm": "cli.js", + "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", + "typeorm-ts-node-esm": "cli-ts-node-esm.js" + }, + "engines": { + "node": ">=16.13.0" + }, + "funding": { + "url": "https://opencollective.com/typeorm" + }, + "peerDependencies": { + "@google-cloud/spanner": "^5.18.0 || ^6.0.0 || ^7.0.0", + "@sap/hana-client": "^2.12.25", + "better-sqlite3": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", + "hdb-pool": "^0.1.6", + "ioredis": "^5.0.4", + "mongodb": "^5.8.0 || ^6.0.0", + "mssql": "^9.1.1 || ^10.0.1 || ^11.0.1", + "mysql2": "^2.2.5 || ^3.0.1", + "oracledb": "^6.3.0", + "pg": "^8.5.1", + "pg-native": "^3.0.0", + "pg-query-stream": "^4.0.0", + "redis": "^3.1.1 || ^4.0.0", + "reflect-metadata": "^0.1.14 || ^0.2.0", + "sql.js": "^1.4.0", + "sqlite3": "^5.0.3", + "ts-node": "^10.7.0", + "typeorm-aurora-data-api-driver": "^2.0.0 || ^3.0.0" + }, + "peerDependenciesMeta": { + "@google-cloud/spanner": { + "optional": true + }, + "@sap/hana-client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "hdb-pool": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "mongodb": { + "optional": true + }, + "mssql": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-native": { + "optional": true + }, + "pg-query-stream": { + "optional": true + }, + "redis": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "ts-node": { + "optional": true + }, + "typeorm-aurora-data-api-driver": { + "optional": true + } + } + }, + "node_modules/typeorm/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/typeorm/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "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" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.40", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.40.tgz", + "integrity": "sha512-us1E3K+3jJppDBa3Tl0L3MOJiGhe1C6P0+nIvQAFYbxlMAx0h81eOwLmU57xgqToduDDPx3y5QsdjPfDu+FgOQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "peer": true, + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" + }, + "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-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/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/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.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "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.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-latest-callback": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.2.3.tgz", + "integrity": "sha512-7vI3fBuyRcP91pazVboc4qu+6ZqM8izPWX9k7cRnT8hbD5svslcknsh3S9BUhaK11OmgTV4oWZZVSeQAiV53SQ==", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + }, + "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": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": 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==", + "devOptional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==" + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/warn-once": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz", + "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==" + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "devOptional": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "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/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" + }, + "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==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/wrap-ansi-cjs": { + "name": "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/wrap-ansi-cjs/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/wrap-ansi/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/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==", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xmldom": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.3.0.tgz", + "integrity": "sha512-z9s6k3wxE+aZHgXYxSTpGDo7BYOUfJsIRyoZiX6HTjwpwfS2wpQBQKa2fD+ShLyPkqDYo5ud7KitmLZ2Cd6r0g==", + "deprecated": "Deprecated due to CVE-2021-21366 resolved in 0.5.0", + "engines": { + "node": ">=10.0.0" + } + }, + "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": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", + "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "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" + } + } + } +} diff --git a/App/package.json b/App/package.json new file mode 100644 index 000000000..c9c909634 --- /dev/null +++ b/App/package.json @@ -0,0 +1,80 @@ +{ + "name": "routinefights", + "version": "0.0.1", + "private": true, + "scripts": { + "android": "react-native run-android", + "ios": "react-native run-ios", + "lint": "eslint .", + "start": "react-native start", + "test": "jest" + }, + "dependencies": { + "@react-native-async-storage/async-storage": "^2.1.2", + "@react-native-community/datetimepicker": "^8.2.0", + "@react-navigation/bottom-tabs": "^7.2.0", + "@react-navigation/drawer": "^7.1.1", + "@react-navigation/native": "^7.0.15", + "@react-navigation/native-stack": "^7.2.1", + "@types/react-dom": "^18.3.1", + "@types/react-native-vector-icons": "^6.4.18", + "axios": "^1.8.3", + "lightningcss-win32-x64-msvc": "^1.30.2", + "nativewind": "^4.1.23", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "react-jwt": "^1.2.2", + "react-native": "0.76.3", + "react-native-date-picker": "^5.0.9", + "react-native-element-dropdown": "^2.12.4", + "react-native-fs": "^2.20.0", + "react-native-geolocation-service": "^5.3.1", + "react-native-gesture-handler": "^2.24.0", + "react-native-image-crop-tools": "^1.6.4", + "react-native-image-picker": "^7.2.3", + "react-native-loading-spinner-overlay": "^3.0.1", + "react-native-modal-datetime-picker": "^18.0.0", + "react-native-permissions": "^5.2.3", + "react-native-phone-number-input": "^2.1.0", + "react-native-prompt-android": "^1.1.0", + "react-native-reanimated": "^3.17.1", + "react-native-rss-parser": "^1.5.1", + "react-native-safe-area-context": "^5.3.0", + "react-native-screens": "^4.9.2", + "react-native-secure-key-store": "^2.0.9", + "react-native-sqlite-storage": "^6.0.1", + "react-native-webview": "^13.13.1", + "reflect-metadata": "^0.2.2", + "tailwindcss": "^3.4.17", + "typeorm": "^0.3.20" + }, + "devDependencies": { + "@babel/core": "^7.25.2", + "@babel/plugin-proposal-decorators": "^7.25.9", + "@babel/preset-env": "^7.25.3", + "@babel/runtime": "^7.25.0", + "@react-native-community/cli": "15.0.1", + "@react-native-community/cli-platform-android": "15.0.1", + "@react-native-community/cli-platform-ios": "15.0.1", + "@react-native/babel-preset": "0.76.3", + "@react-native/eslint-config": "0.76.3", + "@react-native/gradle-plugin": "0.76.3", + "@react-native/metro-config": "0.76.3", + "@react-native/typescript-config": "0.76.3", + "@types/node": "^22.13.1", + "@types/react": "^18.3.20", + "@types/react-native-rss-parser": "^1.4.3", + "@types/react-test-renderer": "^18.0.0", + "babel-jest": "^29.6.3", + "babel-preset-expo": "^12.0.9", + "eslint": "^8.19.0", + "jest": "^29.6.3", + "prettier": "2.8.8", + "react-native-vector-icons": "^10.2.0", + "react-test-renderer": "18.3.1", + "typescript": "5.0.4" + }, + "engines": { + "node": ">=18" + } +} diff --git a/App/react-native.config.js b/App/react-native.config.js new file mode 100644 index 000000000..d493c3ecd --- /dev/null +++ b/App/react-native.config.js @@ -0,0 +1,7 @@ +module.exports = { + project: { + ios: {}, + android: {}, + }, + assets: ['./assets/fonts/'], +}; diff --git a/App/src/components/ActivityCard.tsx b/App/src/components/ActivityCard.tsx new file mode 100644 index 000000000..6b8ea35ef --- /dev/null +++ b/App/src/components/ActivityCard.tsx @@ -0,0 +1,41 @@ +import { Text, TouchableOpacity } from "react-native"; +import React from "react"; +import { Activity } from "../utils/Activity"; +import Picture from "./Picture"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; + +type Props = { + navigateFunction: () => void; + item: Activity; +}; + +const ActivityCard = (props: Props) => { + const { darkmode } = useSettingsContext(); + + return ( + + + + {props.item.name} + + + ); +}; + +export default ActivityCard; diff --git a/App/src/components/ActivityDetailsBox.tsx b/App/src/components/ActivityDetailsBox.tsx new file mode 100644 index 000000000..53e290e44 --- /dev/null +++ b/App/src/components/ActivityDetailsBox.tsx @@ -0,0 +1,57 @@ +import { View, Text } from "react-native"; +import React from "react"; +import { Activity } from "../utils/Activity"; +import { translations } from "../../translations/translation"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; + +type Props = { + activity: Activity; +}; + +const ActivityDetailsBox = ({ activity }: Props) => { + const { language, darkmode } = useSettingsContext(); + + return ( + + + {activity.name} + + + + {activity.description} + + + + {translations[language || "en-EN"].screens.ActivityDetails.numOfTimes}:{" "} + {activity.timesRequiered} + + + + {translations[language || "en-EN"].screens.ActivityDetails.frequency}:{" "} + {translations[language || "en-EN"].screens.ActivityDetails.timeRates[activity.timeRate]} + + + ); +}; + +export default ActivityDetailsBox; diff --git a/App/src/components/AddButton.tsx b/App/src/components/AddButton.tsx new file mode 100644 index 000000000..c345af29b --- /dev/null +++ b/App/src/components/AddButton.tsx @@ -0,0 +1,19 @@ +import { Text, TouchableOpacity } from "react-native"; +import React from "react"; + +type Props = { + navigateFunction: () => void; +}; + +const AddButton = (props: Props) => { + return ( + + + + + ); +}; + +export default AddButton; diff --git a/App/src/components/BadgeInfo.tsx b/App/src/components/BadgeInfo.tsx new file mode 100644 index 000000000..048166033 --- /dev/null +++ b/App/src/components/BadgeInfo.tsx @@ -0,0 +1,34 @@ +import { Text, View } from "react-native"; +import React from "react"; +import { Badge } from "../utils/Badge"; +import Picture from "./Picture"; + +type Props = { + item: Badge; +}; + +const BadgeInfo = ({ item }: Props) => { + return ( + + + + + {item.communityEvent?.name} + + Level: {item.level} + + Points Needed: {item.communityEvent?.totalRequired} + + + End Date: {item.communityEvent?.finishDate.slice(0, 10)} + + + + ); +}; + +export default BadgeInfo; diff --git a/App/src/components/ChangePicture.tsx b/App/src/components/ChangePicture.tsx new file mode 100644 index 000000000..999c30912 --- /dev/null +++ b/App/src/components/ChangePicture.tsx @@ -0,0 +1,37 @@ +import { View, Text, TouchableOpacity, Image } from "react-native"; +import React from "react"; +import { translations } from "../../translations/translation"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { useImageContext } from "../contexts/ImageContextProvider"; + +type Props = { + uri: string; + setUri: React.Dispatch>; +}; + +const ChangePicture = ({ uri, setUri }: Props) => { + const { language } = useSettingsContext(); + const { width } = useImageContext(); + + return ( + + + + setUri(null)} + className="border-white border-2 rounded-lg mb-5" + > + + {translations[language || "en-EN"].screens.UploadForm.changePicture} + + + + + ); +}; + +export default ChangePicture; diff --git a/App/src/components/Comment.tsx b/App/src/components/Comment.tsx new file mode 100644 index 000000000..b7bb87524 --- /dev/null +++ b/App/src/components/Comment.tsx @@ -0,0 +1,53 @@ +import { View, Text, TouchableOpacity } from "react-native"; +import React from "react"; +import Picture from "./Picture"; +import { Comment as CommentDomain } from "../utils/Comment"; +import DateFormatString from "./DateFormatString"; +import { borderColor, cardBgColor, textColor } from "../utils/Utils"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; + +type Props = { + navigation: any; + comment: CommentDomain; +}; + +const Comment = ({ navigation, comment }: Props) => { + const { darkmode } = useSettingsContext(); + + return ( + + + navigation.navigate("ProfileStackNavigation", { + screen: "Profile", + params: { email: comment.user.email }, + }) + } + > + + + + + + {comment.user?.username} + + + {comment.message} + + + + + + + ); +}; + +export default Comment; diff --git a/App/src/components/DateFormatString.tsx b/App/src/components/DateFormatString.tsx new file mode 100644 index 000000000..7358c3204 --- /dev/null +++ b/App/src/components/DateFormatString.tsx @@ -0,0 +1,27 @@ +import { View, Text } from "react-native"; +import React from "react"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { textColor } from "../utils/Utils"; + +type Props = { + date: string; + textStyle?: string; + containerStyle?: string; +}; + +const DateFormatString = (props: Props) => { + const { darkmode } = useSettingsContext(); + + return ( + + + {props.date?.slice(12, 16)} + + + {props.date?.slice(0, 10)} + + + ); +}; + +export default DateFormatString; diff --git a/App/src/components/DropDown.tsx b/App/src/components/DropDown.tsx new file mode 100644 index 000000000..f8e103144 --- /dev/null +++ b/App/src/components/DropDown.tsx @@ -0,0 +1,44 @@ +import React, { useState } from "react"; +import { Dropdown } from "react-native-element-dropdown"; +import { styles } from "../styles/DropDownStyles"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; + +type Props = { + message: string; + data: { + label: string; + value: string; + }[]; + value: string; + setValue: (value: string) => void; + onFocus?: () => void; +}; + +const DropDown = (props: Props) => { + const [isFocus, setIsFocus] = useState(false); + const { darkmode } = useSettingsContext(); + + return ( + { + props.setValue(item.value); + }} + onFocus={props.onFocus} + /> + ); +}; + +export default DropDown; diff --git a/App/src/components/FollowBox.tsx b/App/src/components/FollowBox.tsx new file mode 100644 index 000000000..18b1083f7 --- /dev/null +++ b/App/src/components/FollowBox.tsx @@ -0,0 +1,99 @@ +import { View, Text, TouchableOpacity } from "react-native"; +import React, { useEffect, useState } from "react"; +import Picture from "./Picture"; +import { translations } from "../../translations/translation"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { cardBgColor, convertQuantityToString } from "../utils/Utils"; +import { Followers } from "../utils/User"; +import { followUser, unfollowUser } from "../repositories/UserRepository"; +import { useTokenContext } from "../contexts/TokenContextProvider"; + +type Props = { + item: Followers; + navigateFunction: () => void; +}; + +const FollowBox = (props: Props) => { + const [follower, setFollower] = useState({} as Followers); + const { language, darkmode } = useSettingsContext(); + const { email } = useTokenContext(); + + useEffect(() => { + setFollower({ ...props.item }); + }, [props.item]); + + const handleFollow = async () => { + try { + if (follower.isFollowing) { + await unfollowUser(follower.email); + } else { + await followUser(follower.email); + } + const updatedFollowers: number = follower.isFollowing + ? Math.max(0, follower.followers - 1) + : follower.followers + 1; + + setFollower({ + ...follower, + isFollowing: !follower.isFollowing, + followers: updatedFollowers, + }); + } catch (error) { + console.error("Error following/unfollowing user:", error); + } + }; + + return ( + + + + + + {follower.username} + + + {translations[language || "en-EN"].screens.Profile.followers}:{" "} + {convertQuantityToString(follower.followers)} + + + {translations[language || "en-EN"].screens.Profile.following}:{" "} + {convertQuantityToString(follower.following)} + + + {follower.email !== email && ( + + + {follower.isFollowing + ? translations[language || "en-EN"].screens.Profile.unfollow + : translations[language || "en-EN"].screens.Profile.follow} + + + )} + + + ); +}; + +export default FollowBox; diff --git a/App/src/components/FollowCount.tsx b/App/src/components/FollowCount.tsx new file mode 100644 index 000000000..ed49a4bc1 --- /dev/null +++ b/App/src/components/FollowCount.tsx @@ -0,0 +1,48 @@ +import { View, Text, TouchableOpacity } from "react-native"; +import React from "react"; +import { translations } from "../../translations/translation"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; + +type Props = { + followers: string; + following: string; + email: string; + navigation: { + navigate: (screen: string, params: object) => void; + }; +}; + +const FollowCount = (props: Props) => { + const { language } = useSettingsContext(); + + return ( + + + props.navigation.navigate("FollowList", { + email: props.email, + type: "followers", + }) + } + > + + {translations[language || 'en-EN'].screens.Profile.followers}: {props.followers} + + + + props.navigation.navigate("FollowList", { + email: props.email, + type: "following", + }) + } + > + + {translations[language || 'en-EN'].screens.Profile.following}: {props.following} + + + + ); +}; + +export default FollowCount; diff --git a/App/src/components/FormInput.tsx b/App/src/components/FormInput.tsx new file mode 100644 index 000000000..bfa90d785 --- /dev/null +++ b/App/src/components/FormInput.tsx @@ -0,0 +1,30 @@ +import { TextInput } from "react-native"; +import React from "react"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { borderColor, textColor } from "../utils/Utils"; + +type Props = { + setText: (text: string) => void; + name: string; + label: string; + mode: TextInput["props"]["inputMode"]; +}; + +const FormInput = (props: Props) => { + const { darkmode } = useSettingsContext(); + + return ( + props.setText(text)} + value={props.name} + /> + ); +}; + +export default FormInput; diff --git a/App/src/components/ImageCrop.tsx b/App/src/components/ImageCrop.tsx new file mode 100644 index 000000000..fad961487 --- /dev/null +++ b/App/src/components/ImageCrop.tsx @@ -0,0 +1,43 @@ +import { View, TouchableOpacity, Dimensions } from "react-native"; +import React, { useRef } from "react"; +import { NativeStackScreenProps } from "@react-navigation/native-stack"; +import { CropView } from "react-native-image-crop-tools"; +import Icon from "react-native-vector-icons/Ionicons"; +import { ImageStackProps } from "../navigation/ImageStackNavigation"; +import { useImageContext } from "../contexts/ImageContextProvider"; + +type Props = NativeStackScreenProps; + +const ImageCrop = ({ navigation, route }: Props) => { + const { setUri } = useImageContext(); + const cropViewRef = useRef(null); + const { width, height } = Dimensions.get("window"); + + return ( + + { + setUri(res.uri); + navigation.goBack(); + }} + keepAspectRatio + aspectRatio={{ width: width, height: height }} + /> + + navigation.goBack()}> + + + cropViewRef.current.saveImage(true, 90)} + > + + + + + ); +}; + +export default ImageCrop; diff --git a/App/src/components/Picture.tsx b/App/src/components/Picture.tsx new file mode 100644 index 000000000..61a127eab --- /dev/null +++ b/App/src/components/Picture.tsx @@ -0,0 +1,31 @@ +import { Image } from "react-native"; +import React from "react"; +import { uri } from "../utils/Utils"; +import { useTokenContext } from "../contexts/TokenContextProvider"; + +type Props = { + image: string; + size: number; + height?: number; + style: string; +}; + +const Picture = ({ image, size, style, height }: Props) => { + const { token } = useTokenContext(); + + return ( + + ); +}; + +export default Picture; diff --git a/App/src/components/Post.tsx b/App/src/components/Post.tsx new file mode 100644 index 000000000..3856b244b --- /dev/null +++ b/App/src/components/Post.tsx @@ -0,0 +1,127 @@ +import { View, TouchableOpacity, Text } from "react-native"; +import React, { useEffect, useState } from "react"; +import { Post as PostDomain } from "../utils/Post"; +import Icon from "react-native-vector-icons/Ionicons"; +import Picture from "./Picture"; +import { likePost, unLikePost } from "../repositories/PostRepository"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { borderColor, cardBgColor, iconColor, textColor } from "../utils/Utils"; + +type Props = { + post: PostDomain; + navigation: any; +}; + +const Post = (props: Props) => { + const [post, setPost] = useState({} as PostDomain); + const { darkmode, lefthand } = useSettingsContext(); + + useEffect(() => { + setPost({ ...props.post }); + }, [props.post]); + + const handleLike = async () => { + try { + if (post.isLiked) { + await unLikePost(post.id); + } else { + await likePost(post.id); + } + setPost({ + ...post, + likes: post.isLiked ? post.likes - 1 : post.likes + 1, + isLiked: !post.isLiked, + }); + } catch (error) { + console.error("Error liking post:", error); + } + }; + + return ( + + {lefthand && ( + + + + + {post.activity?.name} + + + + )} + + + + props.navigation.navigate("ProfileStackNavigation", { + screen: "Profile", + params: { email: post.user?.email }, + }) + } + > + + + + + { + if (post.isLiked) return "#F65261"; + return `${iconColor(darkmode)}`; + })()} + /> + + {post.likes} + + + + + props.navigation.navigate("Comments", { postID: post.id }) + } + className="mt-10 items-center" + > + + + {post.comments} + + + + + + + {post.streak} + + + + + {!lefthand && ( + + + + + {post.activity?.name} + + + + )} + + ); +}; + +export default Post; diff --git a/App/src/components/ProfileNavigation.tsx b/App/src/components/ProfileNavigation.tsx new file mode 100644 index 000000000..1a41f9d26 --- /dev/null +++ b/App/src/components/ProfileNavigation.tsx @@ -0,0 +1,35 @@ +import { View, Text, TouchableOpacity } from "react-native"; +import React from "react"; +import Icon from "react-native-vector-icons/Ionicons"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { borderColor, cardBgColor, iconColor } from "../utils/Utils"; + +type Props = { + message?: string; + navigation: any; +}; + +const ProfileNavigation = (props: Props) => { + const { darkmode } = useSettingsContext(); + + return ( + + props.navigation.goBack()}> + + + + {props.message} + + + ); +}; + +export default ProfileNavigation; diff --git a/App/src/components/ProfilePost.tsx b/App/src/components/ProfilePost.tsx new file mode 100644 index 000000000..a271994a5 --- /dev/null +++ b/App/src/components/ProfilePost.tsx @@ -0,0 +1,27 @@ +import { View, Text, TouchableOpacity } from "react-native"; +import React from "react"; +import { Post } from "../utils/Post"; +import Picture from "./Picture"; + +type Props = { + item: Post; + method: (item: Post) => void; +}; + +const ProfilePost = ({ item, method }: Props) => { + return ( + method(item)} + className="m-2 rounded-xl shadow-md shadow-black" + > + + + + {item.activity?.name} + + + + ); +}; + +export default ProfilePost; diff --git a/App/src/components/SearchBar.tsx b/App/src/components/SearchBar.tsx new file mode 100644 index 000000000..22418ac18 --- /dev/null +++ b/App/src/components/SearchBar.tsx @@ -0,0 +1,29 @@ +import { View, TextInput } from "react-native"; +import React from "react"; +import { translations } from "../../translations/translation"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; + +type Props = { + searchFunction: (text: string) => void; +}; + +const SearchBar = (props: Props) => { + const { language, darkmode } = useSettingsContext(); + + return ( + + props.searchFunction(text)} + /> + + ); +}; + +export default SearchBar; diff --git a/App/src/components/SearchBarHeader.tsx b/App/src/components/SearchBarHeader.tsx new file mode 100644 index 000000000..cf9caeb57 --- /dev/null +++ b/App/src/components/SearchBarHeader.tsx @@ -0,0 +1,39 @@ +import React from "react"; +import { TextInput, TouchableOpacity, View } from "react-native"; +import Icon from "react-native-vector-icons/Ionicons"; +import { translations } from "../../translations/translation"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { borderColor, cardBgColor, iconColor } from "../utils/Utils"; + +type Props = { + navigation: any; + searchFunction: (text: string) => void; +}; + +const SearchBarHeader = (props: Props) => { + const { language, darkmode } = useSettingsContext(); + + return ( + + props.navigation.goBack()}> + + + props.searchFunction(text)} + /> + + ); +}; + +export default SearchBarHeader; diff --git a/App/src/components/Streak.tsx b/App/src/components/Streak.tsx new file mode 100644 index 000000000..7816be801 --- /dev/null +++ b/App/src/components/Streak.tsx @@ -0,0 +1,56 @@ +import { View, Text, TouchableOpacity } from "react-native"; +import React from "react"; +import Icon from "react-native-vector-icons/Ionicons"; +import { ActivityWithStreak } from "../utils/Activity"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { cardBgColor, iconColor, textColor } from "../utils/Utils"; +import { translations } from "../../translations/translation"; + +type Props = { + streak: ActivityWithStreak; + unsubscribeFunction: () => void; + selectFunction: () => void; +}; + +const Streak = (props: Props) => { + const { darkmode, language } = useSettingsContext(); + + return ( + + + + {props.streak?.streak} + + + + + + {props.streak?.name} + + + {translations[language || "en-EN"].screens.Streaks.timesRemaining} + {": "} + {props.streak?.timesRemaining == null + ? props.streak?.timesRequiered + : props.streak?.timesRemaining} + + + + + + + + ); +}; + +export default Streak; diff --git a/App/src/components/Upload.tsx b/App/src/components/Upload.tsx new file mode 100644 index 000000000..67b854b8b --- /dev/null +++ b/App/src/components/Upload.tsx @@ -0,0 +1,62 @@ +import { View, TouchableOpacity, Text } from "react-native"; +import React from "react"; +import { launchCamera, launchImageLibrary } from "react-native-image-picker"; +import Icon from "react-native-vector-icons/Ionicons"; +import { NativeStackScreenProps } from "@react-navigation/native-stack"; +import { ImageStackProps } from "../navigation/ImageStackNavigation"; +import { translations } from "../../translations/translation"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { cardBgColor, textColor } from "../utils/Utils"; + +type Props = NativeStackScreenProps; + +const Upload = ({ navigation }: Props) => { + const { language, darkmode } = useSettingsContext(); + + return ( + + + {translations[language || "en-EN"].screens.UploadForm.title} + + + + launchCamera( + { mediaType: "photo" }, + ({ assets }) => + assets && navigation.navigate("ImageCrop", { uri: assets[0].uri }) + ) + } + > + + + {translations[language || "en-EN"].screens.UploadForm.takeFromCamera} + + + + + launchImageLibrary( + { mediaType: "photo" }, + ({ assets }) => + assets && navigation.navigate("ImageCrop", { uri: assets[0].uri }) + ) + } + > + + + { + translations[language || "en-EN"].screens.UploadForm + .selectFromLibrary + } + + + + ); +}; + +export default Upload; diff --git a/App/src/contexts/ImageContextProvider.tsx b/App/src/contexts/ImageContextProvider.tsx new file mode 100644 index 000000000..d9fc08ffe --- /dev/null +++ b/App/src/contexts/ImageContextProvider.tsx @@ -0,0 +1,47 @@ +import React, { + createContext, + Dispatch, + SetStateAction, + useContext, + useState, +} from "react"; + +export interface ImageContextType { + uri: string; + setUri: Dispatch>; + width: number; + setWidth: Dispatch>; + height: number; + setHeight: Dispatch>; +} + +export const ImageContext = createContext( + {} as ImageContextType +); + +const ImageContextProvider = (props: any) => { + const [uri, setUri] = useState(""); + const [width, setWidth] = useState(9); + const [height, setHeight] = useState(16); + + const contextValues: ImageContextType = { + width, + setWidth, + height, + setHeight, + uri, + setUri, + }; + + return ( + + {props.children} + + ); +}; + +export const useImageContext = () => { + return useContext(ImageContext); +}; + +export default ImageContextProvider; diff --git a/App/src/contexts/SettingsContextProvider.tsx b/App/src/contexts/SettingsContextProvider.tsx new file mode 100644 index 000000000..b0d68cfb8 --- /dev/null +++ b/App/src/contexts/SettingsContextProvider.tsx @@ -0,0 +1,45 @@ +import React, { + createContext, + Dispatch, + SetStateAction, + useContext, + useState, +} from "react"; + +export interface AppContextType { + language: string; + setLanguage: Dispatch>; + darkmode: boolean; + setDarkmode: Dispatch>; + lefthand: boolean; + setLefthand: Dispatch>; +} + +export const AppContext = createContext({} as AppContextType); + +const SettingsContextProvider = (props: any) => { + const [language, setLanguage] = useState("en-EN"); + const [darkmode, setDarkmode] = useState(true); + const [lefthand, setLefthand] = useState(false); + + const contextValues: AppContextType = { + language: language, + setLanguage: setLanguage, + darkmode: darkmode, + setDarkmode: setDarkmode, + lefthand: lefthand, + setLefthand: setLefthand, + }; + + return ( + + {props.children} + + ); +}; + +export const useSettingsContext = () => { + return useContext(AppContext); +}; + +export default SettingsContextProvider; diff --git a/App/src/contexts/TokenContextProvider.tsx b/App/src/contexts/TokenContextProvider.tsx new file mode 100644 index 000000000..1f4403b80 --- /dev/null +++ b/App/src/contexts/TokenContextProvider.tsx @@ -0,0 +1,40 @@ +import React, { + createContext, + Dispatch, + SetStateAction, + useContext, + useState, +} from "react"; + +export interface AppContextType { + token: string; + setToken: Dispatch>; + email: string; + setEmail: Dispatch>; +} + +export const AppContext = createContext({} as AppContextType); + +const TokenContextProvider = (props: any) => { + const [token, setToken] = useState(""); + const [email, setEmail] = useState(""); + + const contextValues: AppContextType = { + token, + setToken, + email, + setEmail, + }; + + return ( + + {props.children} + + ); +}; + +export const useTokenContext = () => { + return useContext(AppContext); +}; + +export default TokenContextProvider; diff --git a/App/src/navigation/ActivitiesStackNavigation.tsx b/App/src/navigation/ActivitiesStackNavigation.tsx new file mode 100644 index 000000000..968f49bc6 --- /dev/null +++ b/App/src/navigation/ActivitiesStackNavigation.tsx @@ -0,0 +1,31 @@ +import React from "react"; +import { createNativeStackNavigator } from "@react-navigation/native-stack"; +import ActivitiesScreen from "../screens/ActivitiesScreen"; +import ActivityDetailsScreen from "../screens/ActivityDetailsScreen"; +import { Activity } from "../utils/Activity"; +import StreaksScreen from "../screens/StreaksScreen"; +import ActivityFormScreen from "../screens/ActivityFormScreen"; + +type Props = {}; + +export type ActivitiesStackProps = { + Streaks: undefined; + Activities: undefined; + ActivityDetails: { activity: Activity, suscribed: boolean }; + ActivityForm: undefined; +}; + +const ActivitiesStackNavigation = (props: Props) => { + const Stack = createNativeStackNavigator(); + + return ( + + + + + + + ); +}; + +export default ActivitiesStackNavigation; diff --git a/App/src/navigation/HomeStackNavigation.tsx b/App/src/navigation/HomeStackNavigation.tsx new file mode 100644 index 000000000..8544ca468 --- /dev/null +++ b/App/src/navigation/HomeStackNavigation.tsx @@ -0,0 +1,33 @@ +import React from "react"; +import { createNativeStackNavigator } from "@react-navigation/native-stack"; +import HomeScreen from "../screens/HomeScreen"; +import SearchScreen from "../screens/SearchScreen"; +import ProfileStackNavigation from "./ProfileStackNavigation"; +import CommentsScreen from "../screens/CommentsScreen"; + +type Props = {}; + +export type HomeStackProps = { + Home: undefined; + Search: undefined; + ProfileStackNavigation: { screen: string; params: { email: string } }; + Comments: { postID: string }; +}; + +const HomeStackNavigation = (props: Props) => { + const Stack = createNativeStackNavigator(); + + return ( + + + + + + + ); +}; + +export default HomeStackNavigation; diff --git a/App/src/navigation/ImageStackNavigation.tsx b/App/src/navigation/ImageStackNavigation.tsx new file mode 100644 index 000000000..99a19b4fa --- /dev/null +++ b/App/src/navigation/ImageStackNavigation.tsx @@ -0,0 +1,24 @@ +import React from "react"; +import { createNativeStackNavigator } from "@react-navigation/native-stack"; +import Upload from "../components/Upload"; +import ImageCrop from "../components/ImageCrop"; + +type Props = {}; + +export type ImageStackProps = { + Upload: undefined; + ImageCrop: { uri: string }; +}; + +const ImageStackNavigation = (props: Props) => { + const Stack = createNativeStackNavigator(); + + return ( + + + + + ); +}; + +export default ImageStackNavigation; diff --git a/App/src/navigation/LoginStackNavigation.tsx b/App/src/navigation/LoginStackNavigation.tsx new file mode 100644 index 000000000..4c3591705 --- /dev/null +++ b/App/src/navigation/LoginStackNavigation.tsx @@ -0,0 +1,42 @@ +import React from "react"; +import { createNativeStackNavigator } from "@react-navigation/native-stack"; +import LoginScreen from "../screens/LoginScreen"; +import RegisterScreen from "../screens/RegisterScreen"; +import MainTabNavigation from "./MainTabNavigation"; +import TokenContextProvider from "../contexts/TokenContextProvider"; +import SettingsContextProvider from "../contexts/SettingsContextProvider"; +import ImageContextProvider from "../contexts/ImageContextProvider"; + +type Props = {}; + +export type LoginStackProps = { + Login: undefined; + Register: undefined; + MainTabNavigation: undefined; +}; + +const LoginStackNavigation = (props: Props) => { + const Stack = createNativeStackNavigator(); + + return ( + + + + + + + + + + + + ); +}; + +export default LoginStackNavigation; diff --git a/App/src/navigation/MainTabNavigation.tsx b/App/src/navigation/MainTabNavigation.tsx new file mode 100644 index 000000000..015b3a668 --- /dev/null +++ b/App/src/navigation/MainTabNavigation.tsx @@ -0,0 +1,127 @@ +import React, { useEffect, useState } from "react"; +import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"; +import EventsScreen from "../screens/EventsScreen"; +import ActivitiesStackNavigation from "./ActivitiesStackNavigation"; +import Icon from "react-native-vector-icons/Ionicons"; +import ProfileStackNavigation from "./ProfileStackNavigation"; +import UploadFormScreen from "../screens/UploadFormScreen"; +import { useImageContext } from "../contexts/ImageContextProvider"; +import { UserOut } from "../utils/User"; +import { getOwnUserImageAndEmail } from "../repositories/UserRepository"; +import HomeStackNavigation from "./HomeStackNavigation"; +import Picture from "../components/Picture"; +import { useTokenContext } from "../contexts/TokenContextProvider"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { borderColor, iconColor } from "../utils/Utils"; + +type Props = {}; + +type MainTabProps = { + Home: undefined; + ActivitiesStackNavigation: undefined; + UploadForm: undefined; + Events: undefined; + ProfileStackNavigation: undefined; +}; + +const MainTabNavigation = (props: Props) => { + const Tab = createBottomTabNavigator(); + const [image, setImage] = useState(null); + const { setEmail } = useTokenContext(); + const { uri } = useImageContext(); + const { darkmode } = useSettingsContext(); + const baseBg = darkmode ? "#4B294F" : "#E8E2F0"; + + useEffect(() => { + const fetchImageAndEmail = async () => { + const user: UserOut = await getOwnUserImageAndEmail(); + setImage(user.image); + setEmail(user.email); + }; + fetchImageAndEmail(); + }, [uri]); + + return ( + + ( + + ), + }} + /> + ( + + ), + }} + /> + ( + + ), + }} + /> + ( + + ), + }} + /> + ( + + ), + }} + /> + + ); +}; + +export default MainTabNavigation; diff --git a/App/src/navigation/ProfileStackNavigation.tsx b/App/src/navigation/ProfileStackNavigation.tsx new file mode 100644 index 000000000..94f68bccf --- /dev/null +++ b/App/src/navigation/ProfileStackNavigation.tsx @@ -0,0 +1,39 @@ +import React from "react"; +import { createNativeStackNavigator } from "@react-navigation/native-stack"; +import ProfileScreen from "../screens/ProfileScreen"; +import FollowListScreen from "../screens/FollowListScreen"; +import SettingsScreen from "../screens/SettingsScreen"; +import ProfileFormScreen from "../screens/ProfileFormScreen"; +import ProfilePictureScreen from "../screens/ProfilePictureScreen"; +import CommentsScreen from "../screens/CommentsScreen"; + +type Props = {}; + +export type ProfileStackProps = { + Profile: { email?: string }; + FollowList: { email: string; type: "followers" | "following" }; + Settings: undefined; + ProfileForm: undefined; + ProfilePictureScreen: { email: string }; + Comments: { postId: string }; +}; + +const ProfileStackNavigation = (props: Props) => { + const Stack = createNativeStackNavigator(); + + return ( + + + + + + + + + ); +}; + +export default ProfileStackNavigation; diff --git a/App/src/repositories/ActivityRepository.tsx b/App/src/repositories/ActivityRepository.tsx new file mode 100644 index 000000000..a55b857aa --- /dev/null +++ b/App/src/repositories/ActivityRepository.tsx @@ -0,0 +1,172 @@ +import axios from "axios"; +import { limit, neo4jUri } from "../utils/Utils"; +import RNSecureKeyStore from "react-native-secure-key-store"; +import { Activity, ActivityWithStreak } from "../utils/Activity"; + +export const getActivitiesNotSubscribed = async ( + page: number, + name: string, + perPage: number = limit +): Promise => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: ` + query { + paginationActivitiesNotSubscribed(page: ${page}, perPage: ${perPage}, activityName: "${name}") { + id + image + name + description + timeRate + timesRequiered + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.paginationActivitiesNotSubscribed; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const getSubscribedActivities = async (): Promise< + ActivityWithStreak[] +> => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: ` + query { + getSubscribedActivitiesWithStreakByName(activityName: "") { + id, + name, + description, + image, + timeRate, + timesRequiered, + timesRemaining, + streak + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.getSubscribedActivitiesWithStreakByName; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const subscribeActivity = async (activityId: string) => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: ` + mutation { + subscribeActivity(activityID: "${activityId}") + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.subscribeActivity; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const unsubscribeActivity = async (activityId: string) => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: ` + mutation { + unSubscribeActivity(activityID: "${activityId}") + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.unSubscribeActivity; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const createActivity = async ( + name: string, + description: string, + timeRate: string, + timesRequiered: string, + image: string +): Promise => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: ` + mutation { + createActivity( + activityInput: { + name: "${name}", + description: "${description}", + image: "${image}", + timeRate: "${timeRate}", + timesRequiered: "${timesRequiered}" + } + ) { + id + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.createActivity; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; diff --git a/App/src/repositories/BadgeRepository.tsx b/App/src/repositories/BadgeRepository.tsx new file mode 100644 index 000000000..754ed0bae --- /dev/null +++ b/App/src/repositories/BadgeRepository.tsx @@ -0,0 +1,80 @@ +import axios from "axios"; +import { Badge } from "../utils/Badge"; +import RNSecureKeyStore from "react-native-secure-key-store"; +import { neo4jUri } from "../utils/Utils"; + +export const getBadgesByEmail = async (userEmail: string): Promise => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: ` + query { + getBadgesByEmail(email: "${userEmail}") { + image + level + id + communityEvent { + id + name + totalRequired + finishDate + image + startDate + } + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.getBadgesByEmail; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const getBadgesByEvent = async (eventId: string): Promise => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: ` + query { + findBadgeByCommunityEvent(communityEventId: "${eventId}") { + image + level + id + communityEvent { + id + name + totalRequired + finishDate + image + startDate + } + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.findBadgeByCommunityEvent; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; diff --git a/App/src/repositories/CommentRepository.tsx b/App/src/repositories/CommentRepository.tsx new file mode 100644 index 000000000..e461d2e6f --- /dev/null +++ b/App/src/repositories/CommentRepository.tsx @@ -0,0 +1,68 @@ +import axios from "axios"; +import { neo4jUri } from "../utils/Utils"; +import RNSecureKeyStore from "react-native-secure-key-store"; + +export const getComments = async (postID: string) => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: ` + query { + getComments(postID: "${postID}") { + createdAt + id + message + user { + image + email + username + } + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.getComments; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const postComment = async (message: string, postID: string) => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: ` + mutation { + postComment( + commentInput: {message: "${message}", postID: "${postID}"} + ) { + id + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.postComment; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; diff --git a/App/src/repositories/EventRepository.tsx b/App/src/repositories/EventRepository.tsx new file mode 100644 index 000000000..8353c9954 --- /dev/null +++ b/App/src/repositories/EventRepository.tsx @@ -0,0 +1,59 @@ +import RNSecureKeyStore from "react-native-secure-key-store"; +import { neo4jUri } from "../utils/Utils"; +import axios from "axios"; +import { Event } from "../utils/Event"; + +export const getNearestEvent = async (): Promise => { + try { + const token = await RNSecureKeyStore.get("token"); + const response = await axios.post( + neo4jUri, + { + query: `query { + getNearestCommunityEvent { + finishDate + id + image + name + startDate + totalRequired + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.getNearestCommunityEvent; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const getCurrentPoints = async (eventId: string): Promise => { + try { + const token = await RNSecureKeyStore.get("token"); + const response = await axios.post( + neo4jUri, + { + query: `query { + getCommunityEventPointsById(id: "${eventId}") + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.getCommunityEventPointsById; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; diff --git a/App/src/repositories/ImageRepository.tsx b/App/src/repositories/ImageRepository.tsx new file mode 100644 index 000000000..7731b8659 --- /dev/null +++ b/App/src/repositories/ImageRepository.tsx @@ -0,0 +1,39 @@ +import axios from "axios"; +import RNSecureKeyStore from "react-native-secure-key-store"; +import { uri } from "../utils/Utils"; + +// const getBinaryImage = async (uri: string): Promise => { +// try { +// const base64: string = await RNFS.readFile(uri, "base64"); +// const binary = Buffer.from(base64, "base64"); +// return binary; +// } catch (error) { +// throw new Error("Error reading file"); +// } +// }; + +export const uploadImage = async (imageUri: string): Promise => { + try { + const token = await RNSecureKeyStore.get("token"); + const image = { + uri: "file://" + imageUri, + name: new Date().toISOString().replace(/:/g, "-") + ".png", + type: "image/png", + }; + + const formData = new FormData(); + formData.append("file", image); + + const response = await axios.post(uri + "/images/", formData, { + headers: { + Authorization: `Bearer ${token}`, + "Content-Type": "multipart/form-data", + }, + }); + + return response.data; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; diff --git a/App/src/repositories/LoginRepository.tsx b/App/src/repositories/LoginRepository.tsx new file mode 100644 index 000000000..9dd2c1d4a --- /dev/null +++ b/App/src/repositories/LoginRepository.tsx @@ -0,0 +1,30 @@ +import axios from "axios"; +import RNSecureKeyStore, { ACCESSIBLE } from "react-native-secure-key-store"; +import { uri } from "../utils/Utils"; + +export const login = async (email: string, password: string) => { + try { + const { status, data } = await axios.post( + uri + "/auth/login?email=" + email + "&password=" + password + ); + + if (status === 200) { + await RNSecureKeyStore.set("token", data, { + accessible: ACCESSIBLE.ALWAYS_THIS_DEVICE_ONLY, + }); + return await RNSecureKeyStore.get("token"); + } + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const getToken = async (): Promise => { + try { + return await RNSecureKeyStore.get("token"); + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; diff --git a/App/src/repositories/PostRepository.tsx b/App/src/repositories/PostRepository.tsx new file mode 100644 index 000000000..87a2b6e92 --- /dev/null +++ b/App/src/repositories/PostRepository.tsx @@ -0,0 +1,257 @@ +import axios from "axios"; +import RNSecureKeyStore from "react-native-secure-key-store"; +import { limit, neo4jUri } from "../utils/Utils"; +import { Post } from "../utils/Post"; + +export const getPostsFollowing = async ( + lastDate: string, + perPage: number = limit +): Promise => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: `query { + postsFollowingV2(lastDate: "${lastDate}", limit: ${perPage}) { + id + image + updatedAt + createdAt + streak + comments + likes + isLiked + user { + email + image + } + activity { + name + } + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.postsFollowingV2; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const getPosts = async ( + lastDate: string, + perPage: number = limit +): Promise => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: `query { + postsV2(lastDate: "${lastDate}", limit: ${perPage}) { + id + image + updatedAt + createdAt + streak + comments + likes + isLiked + user { + email + image + } + activity { + name + } + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.postsV2; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const getUserPosts = async ( + lastDate: string, + email: string, + perPage: number = limit +) => { + try { + const token = await RNSecureKeyStore.get("token"); + const response = await axios.post( + neo4jUri, + { + query: `query { + postsByUserV2(lastDate: "${lastDate}", userEmail: "${email}", limit: ${perPage}) { + id + streak + comments + image + likes + isLiked + updatedAt + createdAt + user { + email + image + } + activity { + name + } + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.postsByUserV2; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const getPostBySuscribedActivities = async ( + lastDate: string, + perPage: number = limit +) => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: `query { + postsSubscribedActivitiesV2(lastDate: "${lastDate}", limit: ${perPage}) { + id + image + updatedAt + createdAt + streak + comments + likes + isLiked + user { + email + image + } + activity { + name + } + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.postsSubscribedActivitiesV2; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const uploadPost = async (activityID: string, image: string) => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: `mutation { + uploadPost(activityID: "${activityID}", image: "${image}") { + id + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.uploadPost; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const likePost = async (postID: string) => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: `mutation { + likePost(postID: "${postID}") + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.likePost; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const unLikePost = async (postID: string) => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: `mutation { + unLikePost(postID: "${postID}") + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.unLikePost; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; diff --git a/App/src/repositories/RegisterRepository.tsx b/App/src/repositories/RegisterRepository.tsx new file mode 100644 index 000000000..3b9df68d6 --- /dev/null +++ b/App/src/repositories/RegisterRepository.tsx @@ -0,0 +1,12 @@ +import axios from "axios"; +import { UserIn } from "../utils/User"; +import { uri } from "../utils/Utils"; + +export const register = async (userIn: UserIn): Promise => { + try { + return (await axios.post(uri+"/auth/register", userIn)).status; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; diff --git a/App/src/repositories/SearchRepository.tsx b/App/src/repositories/SearchRepository.tsx new file mode 100644 index 000000000..c0e4ebbf1 --- /dev/null +++ b/App/src/repositories/SearchRepository.tsx @@ -0,0 +1,42 @@ +import axios from "axios"; +import { limit, neo4jUri } from "../utils/Utils"; +import RNSecureKeyStore from "react-native-secure-key-store"; +import { Followers } from "../utils/User"; + +export const fetchUsersByName = async (pageNum: number, text: string, perPage: number = limit): Promise => { + if (!text) { + return []; + } + + const token = await RNSecureKeyStore.get("token"); + + try { + const response = await axios.post( + neo4jUri, + { + query: ` + query { + getUserPaginationByName(page: ${pageNum}, perPage: ${perPage}, userName: "${text}") { + followers + following + id + image + username + email + isFollowing + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.getUserPaginationByName; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; diff --git a/App/src/repositories/SettingsRepository.tsx b/App/src/repositories/SettingsRepository.tsx new file mode 100644 index 000000000..630eb46af --- /dev/null +++ b/App/src/repositories/SettingsRepository.tsx @@ -0,0 +1,5 @@ +import RNSecureKeyStore from 'react-native-secure-key-store'; + +export const logout = async () => { + await RNSecureKeyStore.remove("token"); +} \ No newline at end of file diff --git a/App/src/repositories/UserRepository.tsx b/App/src/repositories/UserRepository.tsx new file mode 100644 index 000000000..c51d808e1 --- /dev/null +++ b/App/src/repositories/UserRepository.tsx @@ -0,0 +1,239 @@ +import axios from "axios"; +import RNSecureKeyStore from "react-native-secure-key-store"; +import { UserIn, UserOut } from "../utils/User"; +import { neo4jUri } from "../utils/Utils"; + +export const getOwnUser = async (): Promise => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: ` + query { + getOwnUser { + id + username + email + nationality + phoneNumber + image + createdAt + followers + following + } + } + `, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data.data.getOwnUser; + } catch (error) { + console.error("Error fetching user:", error); + throw new Error("Error fetching user"); + } +}; + +export const getOwnUserImageAndEmail = async (): Promise => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: ` + query { + getOwnUser { + image + email + } + } + `, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data.data.getOwnUser; + } catch (error) { + console.error("Error fetching user image:", error); + throw new Error("Error fetching user image"); + } +}; + +export const getUser = async (email: string): Promise => { + try { + const response = await axios.post( + neo4jUri, + { + query: ` + query { + getUserV2IsFollowing(email: "${email}") { + id + username + email + phoneNumber + image + followers + following + isFollowing + } + } + `, + }, + { + headers: { + Authorization: `Bearer ${await RNSecureKeyStore.get("token")}`, + }, + } + ); + return response.data.data.getUserV2IsFollowing; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const getFollows = async (email: string, name?: string) => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: ` + query { + followersByEmail(email: "${email}", usernameFilter: "${name}") { + id + username + nationality + image + createdAt + followers + following + isFollowing + email + } + + followedByEmail(email: "${email}", usernameFilter: "${name}") { + id + username + nationality + image + createdAt + followers + following + isFollowing + email + } + } + `, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const followUser = async (email: string) => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: ` + mutation { + followUser(followingEmail: "${email}") + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data.data.followUser; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const unfollowUser = async (email: string) => { + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: ` + mutation { + unfollowUser(followingEmail: "${email}") + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data.data.unfollowUser; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; + +export const updateUser = async (user: UserIn): Promise => { + let password = user.password ? `, password: "${user.password}"` : ""; + try { + const token = await RNSecureKeyStore.get("token"); + + const response = await axios.post( + neo4jUri, + { + query: ` + mutation { + updateUserV2( + user: {id: "", username: "${user.username}", image: "${user.image}", email: "${user.email}", nationality: "${user.nationality}", phoneNumber: "${user.phoneNumber}" ${password}} + ) { + id + username + email + nationality + phoneNumber + image + createdAt + followers + following + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data.data.updateUserV2; + } catch (error) { + console.error("Error:", error.response.data); + throw error; + } +}; diff --git a/App/src/screens/ActivitiesScreen.tsx b/App/src/screens/ActivitiesScreen.tsx new file mode 100644 index 000000000..d9072ee32 --- /dev/null +++ b/App/src/screens/ActivitiesScreen.tsx @@ -0,0 +1,97 @@ +import { View, FlatList, RefreshControl, Alert } from "react-native"; +import React, { useEffect, useRef, useState } from "react"; +import { NativeStackScreenProps } from "@react-navigation/native-stack"; +import { ActivitiesStackProps } from "../navigation/ActivitiesStackNavigation"; +import { Activity } from "../utils/Activity"; +import { getActivitiesNotSubscribed } from "../repositories/ActivityRepository"; +import ActivityCard from "../components/ActivityCard"; +import AddButton from "../components/AddButton"; +import SearchBar from "../components/SearchBar"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { bgColor } from "../utils/Utils"; + +type Props = NativeStackScreenProps; + +const ActivitiesScreen = ({ navigation }: Props) => { + const [load, setLoad] = useState(false); + const [isLoadingMore, setIsLoadingMore] = useState(false); + const [activities, setActivities] = useState([]); + const [searchText, setSearchText] = useState(""); + const pageNum = useRef(1); + const { darkmode } = useSettingsContext(); + + useEffect(() => { + fetchActivities(); + }, []); + + useEffect(() => { + if (load || isLoadingMore) { + fetchActivities(); + } + }, [load, isLoadingMore]); + + const fetchActivities = async () => { + try { + const response = await getActivitiesNotSubscribed( + pageNum.current, + searchText + ); + if (isLoadingMore) { + setActivities([...activities, ...response]); + } else { + setActivities(response); + } + } catch (error) { + Alert.alert("Error", error.response.data); + } finally { + setLoad(false); + setIsLoadingMore(false); + } + }; + + const changeText = (text: string) => { + pageNum.current = 1; + setSearchText(text); + setLoad(true); + }; + + const reload = () => { + pageNum.current = 1; + setLoad(true); + }; + + const loadMore = () => { + if (isLoadingMore || activities.length === 0) return; + pageNum.current += 1; + setIsLoadingMore(true); + }; + + return ( + + + } + style={{ width: "100%" }} + data={activities} + renderItem={({ item }) => ( + + navigation.navigate("ActivityDetails", { + activity: item, + suscribed: false, + }) + } + /> + )} + keyExtractor={(item) => item.id} + numColumns={2} + onEndReached={loadMore} + onEndReachedThreshold={0.5} + /> + navigation.navigate("ActivityForm")} /> + + ); +}; + +export default ActivitiesScreen; diff --git a/App/src/screens/ActivityDetailsScreen.tsx b/App/src/screens/ActivityDetailsScreen.tsx new file mode 100644 index 000000000..09c224496 --- /dev/null +++ b/App/src/screens/ActivityDetailsScreen.tsx @@ -0,0 +1,74 @@ +import { View, Text, TouchableOpacity, Alert } from "react-native"; +import React, { useEffect, useState } from "react"; +import { NativeStackScreenProps } from "@react-navigation/native-stack"; +import { ActivitiesStackProps } from "../navigation/ActivitiesStackNavigation"; +import { Activity } from "../utils/Activity"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { translations } from "../../translations/translation"; +import { subscribeActivity } from "../repositories/ActivityRepository"; +import ActivityDetailsBox from "../components/ActivityDetailsBox"; +import { resetNavigation } from "../utils/Utils"; +import Picture from "../components/Picture"; +import ProfileNavigation from "../components/ProfileNavigation"; + +type Props = NativeStackScreenProps; + +const ActivityDetailsScreen = ({ navigation, route }: Props) => { + const { language, darkmode } = useSettingsContext(); + const [activity, setActivity] = useState({} as Activity); + + useEffect(() => { + setActivity(route.params.activity); + }, [route.params.activity]); + + const suscribe = async () => { + try { + await subscribeActivity(activity.id); + resetNavigation(navigation, "Streaks"); + } catch (error) { + Alert.alert("Error", error.response.data); + } + } + + return ( + + + + + + + + + + + {!route.params.suscribed && ( + + + {translations[language || "en-EN"].screens.ActivityDetails.add} + + + )} + + + ); +}; + +export default ActivityDetailsScreen; diff --git a/App/src/screens/ActivityFormScreen.tsx b/App/src/screens/ActivityFormScreen.tsx new file mode 100644 index 000000000..7fbb4d7d0 --- /dev/null +++ b/App/src/screens/ActivityFormScreen.tsx @@ -0,0 +1,143 @@ +import { View, TouchableOpacity, Text, ScrollView, Alert } from "react-native"; +import React, { useEffect, useState } from "react"; +import { NativeStackScreenProps } from "@react-navigation/native-stack"; +import { ActivitiesStackProps } from "../navigation/ActivitiesStackNavigation"; +import { useImageContext } from "../contexts/ImageContextProvider"; +import ImageStackNavigation from "../navigation/ImageStackNavigation"; +import { translations } from "../../translations/translation"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { Activity } from "../utils/Activity"; +import { createActivity } from "../repositories/ActivityRepository"; +import DropDown from "../components/DropDown"; +import ChangePicture from "../components/ChangePicture"; +import FormInput from "../components/FormInput"; +import { uploadImage } from "../repositories/ImageRepository"; +import { bgColor, cardBgColor } from "../utils/Utils"; + +type Props = NativeStackScreenProps; + +const ActivityFormScreen = (props: Props) => { + const { language, darkmode } = useSettingsContext(); + const { uri, setUri, setWidth, setHeight } = useImageContext(); + const [activity, setActivity] = useState({} as Activity); + const [timeRate, setTimeRate] = useState("daily"); + + useEffect(() => { + setWidth(9); + setHeight(16); + }, []); + + const timeRates = [ + { + label: + translations[language || "en-EN"].screens.ActivityForm.timeRates.daily, + value: "daily", + }, + { + label: + translations[language || "en-EN"].screens.ActivityForm.timeRates.weekly, + value: "weekly", + }, + { + label: + translations[language || "en-EN"].screens.ActivityForm.timeRates + .monthly, + value: "monthly", + }, + { + label: + translations[language || "en-EN"].screens.ActivityForm.timeRates.yearly, + value: "yearly", + }, + ]; + + const addActivity = async () => { + try { + const imageName = await uploadImage(uri); + + await createActivity( + activity.name, + activity.description, + timeRate, + activity.timesRequiered, + imageName + ); + + Alert.alert( + translations[language || "en-EN"].screens.ActivityForm.success + ); + setUri(null); + props.navigation.goBack(); + } catch (error) { + Alert.alert("Error", error.response.data); + } + }; + + return ( + + + + {uri ? ( + + ) : ( + + + + )} + + setActivity({ ...activity, name: text })} + mode="text" + /> + + setActivity({ ...activity, description: text })} + mode="text" + /> + + + + + + + setActivity({ ...activity, timesRequiered: text }) + } + mode="numeric" + /> + + + + {translations[language || "en-EN"].screens.ActivityForm.post} + + + + + + ); +}; + +export default ActivityFormScreen; diff --git a/App/src/screens/CommentsScreen.tsx b/App/src/screens/CommentsScreen.tsx new file mode 100644 index 000000000..2a847a574 --- /dev/null +++ b/App/src/screens/CommentsScreen.tsx @@ -0,0 +1,106 @@ +import { + View, + FlatList, + RefreshControl, + TextInput, + TouchableOpacity, + Alert, +} from "react-native"; +import React, { useEffect, useState } from "react"; +import { NativeStackScreenProps } from "@react-navigation/native-stack"; +import { HomeStackProps } from "../navigation/HomeStackNavigation"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { getComments, postComment } from "../repositories/CommentRepository"; +import ProfileNavigation from "../components/ProfileNavigation"; +import Comment from "../components/Comment"; +import { Comment as CommentDomain } from "../utils/Comment"; +import { translations } from "../../translations/translation"; +import Icon from "react-native-vector-icons/Ionicons"; +import { bgColor } from "../utils/Utils"; + +type Props = NativeStackScreenProps; + +const CommentsScreen = (props: Props) => { + const [comments, setComments] = useState([]); + const { darkmode, language } = useSettingsContext(); + const [load, setLoad] = useState(false); + const [text, setText] = useState(""); + + useEffect(() => { + fetchComments(); + }, []); + + useEffect(() => { + if (load) { + fetchComments(); + } + }, [load]); + + const fetchComments = async () => { + try { + const response = await getComments(props.route.params.postID); + setComments(response); + } catch (error) { + Alert.alert("Error", error.response.data); + } finally { + setLoad(false); + } + }; + + const sendMessage = async () => { + try { + const response = await postComment(text, props.route.params.postID); + if (response) { + setText(""); + setLoad(true); + } + } catch (error) { + Alert.alert("Error", error.response.data); + } + }; + + return ( + + + + setLoad(true)} /> + } + style={{ width: "100%" }} + data={comments} + renderItem={({ item }) => ( + + )} + keyExtractor={(item) => item.id} + /> + + + setText(text)} + /> + + + + + + ); +}; + +export default CommentsScreen; diff --git a/App/src/screens/EventsScreen.tsx b/App/src/screens/EventsScreen.tsx new file mode 100644 index 000000000..332ac1ee5 --- /dev/null +++ b/App/src/screens/EventsScreen.tsx @@ -0,0 +1,233 @@ +import { Alert, RefreshControl, ScrollView, Text, View } from "react-native"; +import { useEffect, useRef, useState } from "react"; +import { Event } from "../utils/Event"; +import { + getCurrentPoints, + getNearestEvent, +} from "../repositories/EventRepository"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { bgColor, borderColor, cardBgColor, textColor } from "../utils/Utils"; +import DateFormatString from "../components/DateFormatString"; +import { translations } from "../../translations/translation"; +import { getBadgesByEvent } from "../repositories/BadgeRepository"; +import Picture from "../components/Picture"; + +type Props = {}; + +const EventsScreen = (props: Props) => { + const { darkmode, language } = useSettingsContext(); + const [event, setEvent] = useState(null); + const [timeLeft, setTimeLeft] = useState(0); + const [currentPoints, setCurrentPoints] = useState(0); + const barHeight = useRef(0); + const [load, setLoad] = useState(false); + const secToMillis = 1000; + const totalHight = 550; + const [milestones, setMilestones] = useState([250, 500]); + const [badges, setBadges] = useState([]); + + const formatTime = (millis: number): string => { + const totalSeconds = Math.floor(millis / 1000); + const totalMinutes = Math.floor(totalSeconds / 60); + + const hours = Math.floor(totalMinutes / 60); + const minutes = totalMinutes % 60; + const seconds = totalSeconds % 60; + return `${Math.max(0, hours)}h ${Math.max(0, minutes)}m ${Math.max( + 0, + seconds + )}s`; + }; + + const getBarHeight = () => { + barHeight.current = (currentPoints * totalHight) / event.totalRequired; + }; + + const getMilestones = () => { + const milestonePoints = []; + const milestoneCount = event.totalRequired / badges.length; + for (let i = 1; i <= badges.length; i++) { + milestonePoints.push(Math.floor(i * milestoneCount)); + } + setMilestones([...milestonePoints]); + }; + + useEffect(() => { + const init = async () => { + await fetchNearestEvent(); + await fetchEventPoints(); + await fetchBadges(); + }; + init(); + }, [load === true]); + + useEffect(() => { + if (!event?.finishDate) return; + + const interval = setInterval(() => { + const nowMillis = new Date().getTime(); + const endDateMillis = Date.parse(event.finishDate); + const timeRemaining = endDateMillis - nowMillis; + + if (timeRemaining <= 0) { + clearInterval(interval); + setTimeLeft(0); + } else { + setTimeLeft(timeRemaining); + } + }, secToMillis); + + return () => clearInterval(interval); + }, [event?.finishDate]); + + const fetchNearestEvent = async () => { + try { + const response = await getNearestEvent(); + setEvent(response); + getMilestones(); + } catch (error) { + Alert.alert("Error", error.response.data); + } finally { + setLoad(false); + } + }; + + const fetchEventPoints = async () => { + try { + const response = await getCurrentPoints(event.id); + setCurrentPoints(response); + getBarHeight(); + } catch (error) { + Alert.alert("Error", error.response.data); + } finally { + setLoad(false); + } + }; + + const fetchBadges = async () => { + try { + const response = await getBadgesByEvent(event.id); + setBadges(response); + } catch (error) { + Alert.alert("Error", error.response.data); + } finally { + setLoad(false); + } + }; + + return ( + setLoad(true)} /> + } + > + + + {event?.name} + + + + + + + {translations[language || "en-EN"].screens.Events.timeLeft} + {": "} + {formatTime(timeLeft)} + + + + + {translations[language || "en-EN"].screens.Events.progress} + {": "} + {currentPoints + "pts / " + event?.totalRequired + "pts"} + + + + + + + + {milestones.map((ms, i) => { + const y = (ms * totalHight) / (event?.totalRequired ?? 1); + return ( + + + + ); + })} + + + {milestones.map((ms, i) => { + const y = (ms * totalHight) / (event?.totalRequired ?? 1); + return ( + + + + {`${ms} pts`} + + + ); + })} + + + {translations[language || "en-EN"].screens.Events.finalMessage} + + + ); +}; + +export default EventsScreen; diff --git a/App/src/screens/FollowListScreen.tsx b/App/src/screens/FollowListScreen.tsx new file mode 100644 index 000000000..e048bd8e2 --- /dev/null +++ b/App/src/screens/FollowListScreen.tsx @@ -0,0 +1,83 @@ +import { View, FlatList, RefreshControl, Alert } from "react-native"; +import { Followers } from "../utils/User"; +import { NativeStackScreenProps } from "@react-navigation/native-stack"; +import { ProfileStackProps } from "../navigation/ProfileStackNavigation"; +import { useEffect, useState } from "react"; +import { translations } from "../../translations/translation"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import ProfileNavigation from "../components/ProfileNavigation"; +import FollowBox from "../components/FollowBox"; +import SearchBar from "../components/SearchBar"; +import { getFollows } from "../repositories/UserRepository"; +import { bgColor } from "../utils/Utils"; + +type Props = NativeStackScreenProps; + +const FollowListScreen = ({ navigation, route }: Props) => { + const [load, setLoad] = useState(false); + const [users, setUsers] = useState([]); + const { language, darkmode } = useSettingsContext(); + const [searchText, setSearchText] = useState(""); + + useEffect(() => { + fetchFollows(); + }, [route.params.email, route.params.type, load === true, searchText]); + + const fetchFollows = async () => { + try { + if (route.params.type === "followers") { + const { followersByEmail } = await getFollows( + route.params.email, + searchText + ); + setUsers(followersByEmail); + } else if (route.params.type === "following") { + const { followedByEmail } = await getFollows( + route.params.email, + searchText + ); + setUsers(followedByEmail); + } + } catch (error) { + Alert.alert("Error", error.response.data); + } finally { + setLoad(false); + } + }; + + return ( + + + + + setSearchText(text)} /> + + setLoad(true)} /> + } + style={{ width: "100%" }} + data={users} + renderItem={({ item }) => { + return ( + + navigation.navigate("Profile", { email: item.email }) + } + item={item} + /> + ); + }} + keyExtractor={(item) => item.id} + /> + + + ); +}; + +export default FollowListScreen; diff --git a/App/src/screens/HomeScreen.tsx b/App/src/screens/HomeScreen.tsx new file mode 100644 index 000000000..d8758fb78 --- /dev/null +++ b/App/src/screens/HomeScreen.tsx @@ -0,0 +1,145 @@ +import { + View, + FlatList, + RefreshControl, + TouchableWithoutFeedback, + TouchableOpacity, + Text, + Alert, +} from "react-native"; +import React, { useEffect, useRef, useState } from "react"; +import { Post as PostDomain } from "../utils/Post"; +import Post from "../components/Post"; +import Icon from "react-native-vector-icons/Ionicons"; +import { NativeStackScreenProps } from "@react-navigation/native-stack"; +import { HomeStackProps } from "../navigation/HomeStackNavigation"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { + getPostBySuscribedActivities, + getPosts, + getPostsFollowing, +} from "../repositories/PostRepository"; +import { bgColor, cardBgColor, iconColor } from "../utils/Utils"; +import { translations } from "../../translations/translation"; + +type Props = NativeStackScreenProps; + +const HomeScreen = ({ navigation }: Props) => { + const [type, setType] = useState<"following" | "home" | "activity">( + "following" + ); + const [load, setLoad] = useState(false); + const [isLoadingMore, setIsLoadingMore] = useState(false); + const [posts, setPosts] = useState([]); + const { darkmode, language } = useSettingsContext(); + const lastDate = useRef(new Date().toISOString().slice(0, 19)); + + useEffect(() => { + fetchPosts(); + }, []); + + useEffect(() => { + if (load || isLoadingMore) { + fetchPosts(); + } + }, [load, isLoadingMore]); + + useEffect(() => { + reload(); + }, [type]); + + const fetchPosts = async () => { + try { + let response = []; + switch (type) { + case "following": + response = await getPostsFollowing(lastDate.current); + break; + case "home": + response = await getPosts(lastDate.current); + break; + case "activity": + response = await getPostBySuscribedActivities(lastDate.current); + break; + } + if (isLoadingMore) { + setPosts([...posts, ...response]); + } else { + setPosts(response); + } + } catch (error) { + Alert.alert("Error", error.response.data); + } finally { + setLoad(false); + setIsLoadingMore(false); + } + }; + + const reload = () => { + lastDate.current = new Date().toISOString().slice(0, 19); + setLoad(true); + }; + + const loadMore = () => { + if (isLoadingMore || posts.length === 0) return; + lastDate.current = posts[posts.length - 1].createdAt.slice(0, 19); + setIsLoadingMore(true); + }; + + return ( + + navigation.navigate("Search")} + > + + + + {["following", "home", "activity"].map((selectedType) => { + const isActive = type === selectedType; + return ( + + setType(selectedType as "following" | "home" | "activity") + } + className={` + px-4 py-2 rounded-full + ${isActive ? "bg-[#F65261]" : `${cardBgColor(darkmode)}`} + `} + > + + { + translations[language || "en-EN"].screens.Home.type[ + selectedType + ] + } + + + ); + })} + + + + } + data={posts} + renderItem={({ item }) => { + return ; + }} + keyExtractor={(item) => item.id} + onEndReached={loadMore} + onEndReachedThreshold={0.5} + /> + + + ); +}; + +export default HomeScreen; diff --git a/App/src/screens/LoginScreen.tsx b/App/src/screens/LoginScreen.tsx new file mode 100644 index 000000000..06970def7 --- /dev/null +++ b/App/src/screens/LoginScreen.tsx @@ -0,0 +1,142 @@ +import { View, Text, TextInput, TouchableOpacity, Alert } from "react-native"; +import React, { useEffect, useState } from "react"; +import { NativeStackScreenProps } from "@react-navigation/native-stack"; +import { LoginStackProps } from "../navigation/LoginStackNavigation"; +import { login } from "../repositories/LoginRepository"; +import { cardBgColor, resetNavigation } from "../utils/Utils"; +import RNSecureKeyStore from "react-native-secure-key-store"; +import AsyncStorage from "@react-native-async-storage/async-storage"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { translations } from "../../translations/translation"; +import style from "../styles/Styles.json"; +import { useTokenContext } from "../contexts/TokenContextProvider"; +import FormInput from "../components/FormInput"; + +type Props = NativeStackScreenProps; + +const LoginScreen = ({ navigation }: Props) => { + const [passwordShown, setPasswordShown] = useState(false); + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const { setToken } = useTokenContext(); + const { language, setLanguage, darkmode, setDarkmode, setLefthand } = + useSettingsContext(); + + useEffect(() => { + fetchMode(); + fetchLanguage(); + fetchToken(); + fetchLefthand(); + }, []); + + const fetchToken = async () => { + const token = await RNSecureKeyStore.get("token"); + if (token) { + setToken(token); + resetNavigation(navigation, "MainTabNavigation"); + } + }; + + const fetchMode = async () => { + try { + const darkMode = await AsyncStorage.getItem("darkMode"); + setDarkmode(darkMode === "true"); + } catch (error) { + Alert.alert("Error", error.response.data); + } + }; + + const fetchLanguage = async () => { + try { + const language = await AsyncStorage.getItem("language"); + setLanguage(language); + } catch (error) { + Alert.alert("Error", error.response.data); + } + }; + + const fetchLefthand = async () => { + try { + const lefthand = await AsyncStorage.getItem("lefthand"); + setLefthand(lefthand === "true"); + } catch (error) { + Alert.alert("Error", error.response.data); + } + }; + + const log = async () => { + try { + const token = await login(email, password); + setToken(token); + resetNavigation(navigation, "MainTabNavigation"); + } catch (error) { + Alert.alert("Error", error.response.data); + } + }; + + return ( + + + + setEmail(text)} + mode="email" + /> + setPassword(text)} + /> + setPasswordShown(!passwordShown)}> + + {passwordShown ? "Hide" : "Show"} + + + + + + + {translations[language || "en-EN"].screens.Login.login} + + + resetNavigation(navigation, "Register")} + className="border-[#F65261] border-2 rounded-lg py-1" + > + + {translations[language || "en-EN"].screens.Login.register} + + + + + + ); +}; + +export default LoginScreen; diff --git a/App/src/screens/ProfileFormScreen.tsx b/App/src/screens/ProfileFormScreen.tsx new file mode 100644 index 000000000..31d115f65 --- /dev/null +++ b/App/src/screens/ProfileFormScreen.tsx @@ -0,0 +1,112 @@ +import { Alert, Text, TouchableOpacity, View } from "react-native"; +import React, { useEffect, useState } from "react"; +import FormInput from "../components/FormInput"; +import { useSettingsContext } from "../contexts/SettingsContextProvider"; +import { translations } from "../../translations/translation"; +import { UserIn, UserOut } from "../utils/User"; +import { getOwnUser, updateUser } from "../repositories/UserRepository"; +import { NativeStackScreenProps } from "@react-navigation/native-stack"; +import { ProfileStackProps } from "../navigation/ProfileStackNavigation"; +import { cardBgColor } from "../utils/Utils"; + +type Props = NativeStackScreenProps; + +const ProfileFormScreen = ({ navigation }: Props) => { + const { language, darkmode } = useSettingsContext(); + const [user, setUser] = useState({} as UserIn); + + useEffect(() => { + fetchOwnUser(); + }, []); + + const fetchOwnUser = async () => { + try { + const response: UserOut = await getOwnUser(); + const ownUser: UserIn = { + username: response.username, + email: response.email, + nationality: response.nationality, + phoneNumber: response.phoneNumber, + password: "", + image: response.image, + }; + + setUser(ownUser); + } catch (error) { + Alert.alert("Error", error.response.data); + } + }; + + const updateProfile = async () => { + try { + await updateUser(user); + Alert.alert("Profile updated"); + navigation.navigate("Profile"); + } catch (error) { + Alert.alert("Error", error.response.data); + } + }; + + return ( + + + + setUser({ ...user, email: text })} + mode="text" + /> + setUser({ ...user, username: text })} + mode="text" + /> + setUser({ ...user, password: text })} + mode="text" + /> + setUser({ ...user, nationality: text })} + mode="text" + /> + setUser({ ...user, phoneNumber: text })} + mode="text" + /> + + + {translations[language || "en-EN"].screens.ProfileForm.update} + + + + + + ); +}; + +export default ProfileFormScreen; diff --git a/App/src/screens/ProfilePictureScreen.tsx b/App/src/screens/ProfilePictureScreen.tsx new file mode 100644 index 000000000..bc205180e --- /dev/null +++ b/App/src/screens/ProfilePictureScreen.tsx @@ -0,0 +1,73 @@ +import React, { useEffect, useState } from "react"; +import ImageStackNavigation from "../navigation/ImageStackNavigation"; +import { useImageContext } from "../contexts/ImageContextProvider"; +import ChangePicture from "../components/ChangePicture"; +import { Alert, Button, View } from "react-native"; +import { uploadImage } from "../repositories/ImageRepository"; +import { NativeStackScreenProps } from "@react-navigation/native-stack"; +import { ProfileStackProps } from "../navigation/ProfileStackNavigation"; +import { getUser, updateUser } from "../repositories/UserRepository"; +import { UserIn, UserOut } from "../utils/User"; + +type Props = NativeStackScreenProps; + +const ProfilePictureScreen = (props: Props) => { + const { uri, setUri, setWidth, setHeight } = useImageContext(); + const [user, setUser] = useState({} as UserOut); + + useEffect(() => { + fetchUser(); + }, [props.route.params?.email]); + + useEffect(() => { + setWidth(1); + setHeight(1); + }, []); + + const fetchUser = async () => { + try { + const response = await getUser(props.route.params.email); + setUser(response); + } catch (error) { + Alert.alert("Error", error.response.data); + } + }; + + const handleChange = async () => { + try { + const imageName = await uploadImage(uri); + const foundUser: UserIn = { + username: user.username, + email: user.email, + nationality: user.nationality, + phoneNumber: user.phoneNumber, + password: "", + image: imageName, + }; + const response = await updateUser(foundUser); + if (response) { + setUri(null); + props.navigation.goBack(); + } + } catch (error) { + Alert.alert("Error", error.response.data); + } + }; + + return ( + + {uri ? ( + + + + + + + + {showModal && ( +
+
+ +
+
+ + setLevel(Number(e.target.value))} + style={styles.modalInput} + /> +
+
+ + setFile(e.target.files?.[0] || null)} + style={styles.modalInput} + /> +
+ {error &&

{error}

} + +
+
+
+ )} + + ) +} + +export default CommunityEventComponent diff --git a/administration/src/components/GraphCard.tsx b/administration/src/components/GraphCard.tsx new file mode 100644 index 000000000..2ece73fbc --- /dev/null +++ b/administration/src/components/GraphCard.tsx @@ -0,0 +1,30 @@ +import { BarChart } from '@mui/x-charts/BarChart'; +import GraphData from "../models/GraphData"; +import styles from "../styles/Styles"; + +type GraphCardProps = { + title: string; + data?: GraphData; +}; + +const GraphCard = ({ title, data }: GraphCardProps) => ( +
+

{title}

+ + +
+); +export default GraphCard; \ No newline at end of file diff --git a/administration/src/components/MainContext.tsx b/administration/src/components/MainContext.tsx new file mode 100644 index 000000000..32cb61316 --- /dev/null +++ b/administration/src/components/MainContext.tsx @@ -0,0 +1,28 @@ +import React, { Dispatch, ReactNode, SetStateAction, useState, createContext } from 'react' + +type Props = { + children: ReactNode +} + +interface MainContextType { + token: string; + setToken: Dispatch>; +} +export const MainContext = createContext({} as MainContextType); + +const MainContextProvider = (props: Props) => { + const [token, setToken] = useState(localStorage.getItem('token') ?? ''); + + const contextValues = { + token, + setToken + } + + return ( + + {props.children} + + ); +} + +export default MainContextProvider; \ No newline at end of file diff --git a/administration/src/components/Navbar.tsx b/administration/src/components/Navbar.tsx new file mode 100644 index 000000000..b34648ec1 --- /dev/null +++ b/administration/src/components/Navbar.tsx @@ -0,0 +1,63 @@ +import React, { useContext, useState } from 'react'; +import { Link } from 'react-router-dom'; +import styles from '../styles/Styles'; +import { MainContext } from './MainContext'; +import { AuthRepository } from '../repositories/AuthRepository'; + +const Navbar = () => { + const [open, setOpen] = useState(false); + const { token, setToken } = useContext(MainContext); + + const toggleMenu = () => setOpen(!open); + const closeMenu = () => setOpen(false); + const handleLogout = () => { + closeMenu(); + AuthRepository.logout(setToken); + + } + + return ( + <> + {!open && ( + + )} + + {open &&
} + +
+ + +
+ + Home + + {!token && ( + + Login + + )} + + + Community Events + + {token && ( + + Logout + + )} +
+
+ + ); +}; + +export default Navbar; diff --git a/administration/src/index.css b/administration/src/index.css new file mode 100644 index 000000000..bd6213e1d --- /dev/null +++ b/administration/src/index.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/administration/src/index.tsx b/administration/src/index.tsx new file mode 100644 index 000000000..032464fb6 --- /dev/null +++ b/administration/src/index.tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import './index.css'; +import App from './App'; +import reportWebVitals from './reportWebVitals'; + +const root = ReactDOM.createRoot( + document.getElementById('root') as HTMLElement +); +root.render( + + + +); + +// If you want to start measuring performance in your app, pass a function +// to log results (for example: reportWebVitals(console.log)) +// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals +reportWebVitals(); diff --git a/administration/src/models/Activity.ts b/administration/src/models/Activity.ts new file mode 100644 index 000000000..1fb2b670d --- /dev/null +++ b/administration/src/models/Activity.ts @@ -0,0 +1,5 @@ +type Activity = { + id: string; + name: string; +}; +export default Activity; \ No newline at end of file diff --git a/administration/src/models/Badge.ts b/administration/src/models/Badge.ts new file mode 100644 index 000000000..cdf1252ec --- /dev/null +++ b/administration/src/models/Badge.ts @@ -0,0 +1,6 @@ +type Badge = { + id: string; + image: string; + level: number; +}; +export default Badge diff --git a/administration/src/models/CommunityEvent.ts b/administration/src/models/CommunityEvent.ts new file mode 100644 index 000000000..0a9fd689f --- /dev/null +++ b/administration/src/models/CommunityEvent.ts @@ -0,0 +1,10 @@ +type CommunityEvent = { + finishDate: Date; + id: string; + image: string; + name: string; + startDate: Date; + totalRequired: number; +}; + +export default CommunityEvent diff --git a/administration/src/models/GraphData.ts b/administration/src/models/GraphData.ts new file mode 100644 index 000000000..5078a4428 --- /dev/null +++ b/administration/src/models/GraphData.ts @@ -0,0 +1,5 @@ +interface GraphData { + labels: string[]; + data: number[]; +} +export default GraphData; diff --git a/administration/src/react-app-env.d.ts b/administration/src/react-app-env.d.ts new file mode 100644 index 000000000..6431bc5fc --- /dev/null +++ b/administration/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/administration/src/reportWebVitals.ts b/administration/src/reportWebVitals.ts new file mode 100644 index 000000000..49a2a16e0 --- /dev/null +++ b/administration/src/reportWebVitals.ts @@ -0,0 +1,15 @@ +import { ReportHandler } from 'web-vitals'; + +const reportWebVitals = (onPerfEntry?: ReportHandler) => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { + getCLS(onPerfEntry); + getFID(onPerfEntry); + getFCP(onPerfEntry); + getLCP(onPerfEntry); + getTTFB(onPerfEntry); + }); + } +}; + +export default reportWebVitals; diff --git a/administration/src/repositories/AuthRepository.ts b/administration/src/repositories/AuthRepository.ts new file mode 100644 index 000000000..e2376c19b --- /dev/null +++ b/administration/src/repositories/AuthRepository.ts @@ -0,0 +1,32 @@ +import axios from "axios"; +import { CommonData } from "../utils/CommonData"; +import { Dispatch } from "react"; + +export class AuthRepository { + static async login(email: string, password: string) { + if (email && password) { + try { + const response = await axios.post( + CommonData.BASE_URL + + "auth/login?email=" + + email + + "&password=" + + password + ); + if (response.status === 200) { + localStorage.setItem("token", response.data); + return response.data; + } + } catch (error) { + if (axios.isAxiosError(error)) { + throw new Error(error.response?.data); + } + throw new Error("Login failed"); + } + } + } + static async logout(state: Dispatch>) { + localStorage.removeItem("token"); + state(""); + } +} diff --git a/administration/src/repositories/CommunityEventRepository.ts b/administration/src/repositories/CommunityEventRepository.ts new file mode 100644 index 000000000..a07d66d4c --- /dev/null +++ b/administration/src/repositories/CommunityEventRepository.ts @@ -0,0 +1,154 @@ +import axios from "axios"; +import { CommonData } from "../utils/CommonData"; +import CommunityEvent from "../models/CommunityEvent"; +import Activity from "../models/Activity"; +import Badge from "../models/Badge"; +import { ImageRepository } from "./ImageRepository"; + +export class CommunityEventRepository { + static async uploadBadge( + token: string, + id: string, + file: File, + level: number + ) { + const imageResponse = await ImageRepository.uploadImage(token, file); + if (!imageResponse) { + throw new Error("Image upload failed"); + } + try { + const response = await axios.post( + CommonData.BASE_URL + "graphql", + { + query: `mutation { + createBadge(communityEventId: "${id}", image: "${imageResponse}", level: ${level}) { + id + level + image + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.createBadge as Badge; + } catch (error) { + console.error("Error creating badge:", error); + throw new Error("Badge creation failed"); + } + } + static async getAllEvents(token: string) { + const response = await axios.post( + CommonData.BASE_URL + "graphql", + { + query: `query{ + getAllCommunityEvents { + finishDate + id + image + name + startDate + totalRequired + }}`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data.data.getAllCommunityEvents as [CommunityEvent]; + } + + static async createEvent( + token: string, + event: CommunityEvent, + activitiesIDs: string[] + ) { + try { + const response = await axios.post( + CommonData.BASE_URL + "graphql", + { + query: `mutation { + createCommunityEvent( + activitiesIDs: [${activitiesIDs.map((id) => `"${id}"`).join(",")}], + finishDate: "${event.finishDate.toISOString().slice(0, -1)}", + image: "${event.image}", + name: "${event.name}", + startDate: "${event.startDate.toISOString().slice(0, -1)}", + totalRequired: ${event.totalRequired} + ) { + finishDate + id + image + name + startDate + totalRequired + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.createCommunityEvent as CommunityEvent; + } catch (error) { + console.error("Error creating community event:", error); + throw new Error("Community event creation failed"); + } + } + + static async getActivities(token: string) { + const response = await axios.post( + CommonData.BASE_URL + "graphql", + { + query: `query{ + findAllActivities { + id + name + } +}`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + + return response.data.data.findAllActivities as [Activity]; + } + + static async getBadges(token: string, eventId: string) { + try { + const response = await axios.post( + CommonData.BASE_URL + "graphql", + { + query: `query { + findBadgeByCommunityEvent(communityEventId: "${eventId}") { + id + image + level + } + }`, + }, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data.data.findBadgeByCommunityEvent as [Badge]; + } catch (error) { + console.error("Error fetching badges:", error); + throw new Error("Failed to fetch badges"); + } + } +} diff --git a/administration/src/repositories/GraphRepository.ts b/administration/src/repositories/GraphRepository.ts new file mode 100644 index 000000000..1983acfc2 --- /dev/null +++ b/administration/src/repositories/GraphRepository.ts @@ -0,0 +1,44 @@ +import axios from "axios"; +import GraphData from "../models/GraphData"; +import { CommonData } from "../utils/CommonData"; +import { Dispatch } from "react"; + +export class GraphRepository { + static async getGraphsData( + token: string, + setUsersCreationGraph: Dispatch< + React.SetStateAction + >, + setPostsCreationGraph: Dispatch< + React.SetStateAction + >, + setActivitiesTimeRateGraph: Dispatch< + React.SetStateAction + >, + setPointsPerUserGraph: Dispatch> + ) { + const getGraphData = async ( + endpoint: string, + state: React.Dispatch> + ) => { + try { + const response = await axios.get( + CommonData.BASE_URL + "graphs/" + endpoint, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + state(response.data as GraphData); + } catch (error) { + console.error("Error fetching data:", error); + } + }; + + await getGraphData("users/creation", setUsersCreationGraph); + await getGraphData("posts/creation", setPostsCreationGraph); + await getGraphData("activities/timerate", setActivitiesTimeRateGraph); + await getGraphData("users/points", setPointsPerUserGraph); + } +} diff --git a/administration/src/repositories/ImageRepository.ts b/administration/src/repositories/ImageRepository.ts new file mode 100644 index 000000000..032e914d6 --- /dev/null +++ b/administration/src/repositories/ImageRepository.ts @@ -0,0 +1,37 @@ +import axios from "axios"; +import { CommonData } from "../utils/CommonData"; + +export class ImageRepository { + static async getImage(imageId: string, token: string) { + const response = await axios.get( + CommonData.BASE_URL + "images/" + imageId, + { + headers: { + Authorization: `Bearer ${token}`, + }, + responseType: "blob", + } + ); + return URL.createObjectURL(response.data); + } + static async uploadImage(token: string, file: File) { + const formData = new FormData(); + formData.append("file", file, file.name); + + try { + const response = await axios.post( + CommonData.BASE_URL + "images/", + formData, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data; + } catch (error) { + console.error("Error uploading image:", error); + throw new Error("Image upload failed"); + } + } +} diff --git a/administration/src/screens/CommunityScreen.tsx b/administration/src/screens/CommunityScreen.tsx new file mode 100644 index 000000000..760f05776 --- /dev/null +++ b/administration/src/screens/CommunityScreen.tsx @@ -0,0 +1,184 @@ +import React, { FormEvent, useContext, useEffect, useState } from 'react' +import { CommunityEventRepository } from '../repositories/CommunityEventRepository' +import { MainContext } from '../components/MainContext' +import CommunityEvent from '../models/CommunityEvent' +import CommunityEventComponent from '../components/CommunityEventComponent' +import styles from '../styles/Styles' +import Activity from '../models/Activity' +import { ImageRepository } from '../repositories/ImageRepository' + +type Props = {} + +const CommunityScreen = (props: Props) => { + const { token } = useContext(MainContext) + const [events, setEvents] = useState>() + const [activities, setActivities] = useState>() + + + useEffect(() => { + if (!token) { + window.location.href = "/login"; + } + async function getEvents() { + try { + const eventsData = await CommunityEventRepository.getAllEvents(token); + const events = eventsData.map((event: any) => ({ + ...event, + startDate: new Date(event.startDate), + finishDate: new Date(event.finishDate), + })) as CommunityEvent[]; + setEvents(events); + + } catch (error) { + console.error("Error fetching events:", error); + } + } + async function getActivities() { + try { + const activitiesData = await CommunityEventRepository.getActivities(token); + setActivities(activitiesData); + } catch (error) { + console.error("Error fetching activities:", error); + } + } + getEvents(); + getActivities(); + }, []) + async function onSubmitEvent(event: FormEvent) { + event.preventDefault(); + const formData = new FormData(event.currentTarget); + const name = formData.get("name") as string; + const startDate = formData.get("startDate") as string; + const finishDate = formData.get("finishDate") as string; + const totalRequired = parseInt(formData.get("totalRequired") as string); + const image = formData.get("image") as File; + const activities = formData.getAll("activities") as string[]; + if (new Date(startDate) > new Date(finishDate)) { + alert("Start date must be before finish date") + return + } + if (totalRequired <= 0) { + alert("Total required must be greater than 0") + return + } + if (activities.length === 0) { + alert("You must select at least one activity") + return + } + + const imageName = await ImageRepository.uploadImage( + token, + image + ) + + CommunityEventRepository.createEvent( + token, + { + id: "", + name, + startDate: new Date(startDate), + finishDate: new Date(finishDate), + totalRequired, + image: imageName, + }, + activities + ) + .then(() => { + alert("Event created successfully"); + window.location.reload(); + }) + .catch((error) => { + console.error("Error creating event:", error); + alert("Error creating event"); + }); + } + + return ( +
+
+ {events && events.length > 0 ? ( + events.map((event) => ( + + )) + ) : ( +

LOADING...

+ )} +
+

Create Community Event

+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+ +
+ ) +} + +export default CommunityScreen \ No newline at end of file diff --git a/administration/src/screens/HomeScreen.tsx b/administration/src/screens/HomeScreen.tsx new file mode 100644 index 000000000..eea85b0a3 --- /dev/null +++ b/administration/src/screens/HomeScreen.tsx @@ -0,0 +1,58 @@ +import React, { useContext, useEffect, useState } from "react"; +import { MainContext } from "../components/MainContext"; +import GraphData from "../models/GraphData"; +import styles from "../styles/Styles"; +import GraphCard from "../components/GraphCard"; +import { GraphRepository } from "../repositories/GraphRepository"; + +type Props = {}; + +const HomeScreen = (props: Props) => { + const { token } = useContext(MainContext); + const [pointsPerUserGraph, setPointsPerUserGraph] = useState(); + const [usersCreationGraph, setUsersCreationGraph] = useState(); + const [postsCreationGraph, setPostsCreationGraph] = useState(); + const [activitiesTimeRateGraph, setActivitiesTimeRateGraph] = useState(); + const [lastGraphDate, setLastGraphDate] = useState(new Date()); + + useEffect(() => { + if (!token) { + window.location.href = "/login"; + } + + + + GraphRepository.getGraphsData( + token, + setUsersCreationGraph, + setPostsCreationGraph, + setActivitiesTimeRateGraph, + setPointsPerUserGraph + ); + + }, [token]); + + return ( +
+ Logo +
+
+

Graphs of {lastGraphDate.toDateString()} at 00:00

+
+ +
+ + + + +
+
+
+ ); +}; + + + + + +export default HomeScreen; \ No newline at end of file diff --git a/administration/src/screens/LoginScreen.tsx b/administration/src/screens/LoginScreen.tsx new file mode 100644 index 000000000..c071e6d69 --- /dev/null +++ b/administration/src/screens/LoginScreen.tsx @@ -0,0 +1,69 @@ +import React, { FormEvent, useContext, useState } from "react"; +import { MainContext } from "../components/MainContext"; +import { AuthRepository } from "../repositories/AuthRepository"; +import styles from "../styles/Styles"; + + +type Props = {}; + +const LoginScreen = (props: Props) => { + const { setToken } = useContext(MainContext); + const [error, setError] = useState(null); + + const handleSubmit = async (event: FormEvent) => { + event.preventDefault(); + const formData = new FormData(event.currentTarget as HTMLFormElement); + const email = formData.get("email") as string; + const password = formData.get("password") as string; + try { + const token = await AuthRepository.login(email, password); + if (token) { + setToken(token); + window.location.href = "/"; + } + } catch (error) { + if (error instanceof Error) { + setError(error.message); + } else { + setError("An unknown error occurred"); + } + } + }; + + return ( +
+
+

Login

+
+
+ + +
+
+ + +
+ {error &&

{error}

} + +
+ +
+
+ ); +}; + +export default LoginScreen; diff --git a/administration/src/setupTests.ts b/administration/src/setupTests.ts new file mode 100644 index 000000000..8f2609b7b --- /dev/null +++ b/administration/src/setupTests.ts @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom'; diff --git a/administration/src/styles/Styles.ts b/administration/src/styles/Styles.ts new file mode 100644 index 000000000..54b7c71c4 --- /dev/null +++ b/administration/src/styles/Styles.ts @@ -0,0 +1,314 @@ +const styles: { [key: string]: React.CSSProperties } = { + page: { + fontFamily: "Arial, sans-serif", + backgroundColor: "#f4f4f9", + color: "#333", + minHeight: "100vh", + padding: "2vw 1vw", + }, + container: { + maxWidth: "95vw", + margin: "0 auto", + background: "#ffffff", + borderRadius: "10px", + boxShadow: "0 4px 6px rgba(0, 0, 0, 0.1)", + overflow: "hidden", + width: "100%", + }, + header: { + background: "rgb(130, 76, 175)", + color: "#fff", + padding: "2vw 1vw", + textAlign: "center", + fontSize: "clamp(1.2rem, 3vw, 2rem)", + }, + grid: { + display: "grid", + gridTemplateColumns: "repeat(auto-fit, minmax(180px, 1fr))", + gap: "1vw", + padding: "1vw", + }, + hamburger: { + position: "fixed", + top: "10px", + left: "10px", + fontSize: "1.5rem", + background: "transparent", + border: "none", + cursor: "pointer", + zIndex: 999, + }, + + overlay: { + position: "fixed", + top: 0, + left: 0, + height: "100vh", + width: "100vw", + backgroundColor: "rgba(0, 0, 0, 0.4)", + zIndex: 1000, + }, + + sidebar: { + position: "fixed", + top: 0, + left: 0, + height: "100%", + width: "200px", + backgroundColor: "rgb(130, 76, 175)", + transition: "transform 0.3s ease", + zIndex: 1001, + boxShadow: "2px 0 8px rgba(0,0,0,0.2)", + overflowY: "auto", + }, + + sidebarContent: { + display: "flex", + flexDirection: "column", + gap: "8px", + padding: "12px", + paddingTop: "40px", + }, + + link: { + color: "#fff", + backgroundColor: "rgba(255, 255, 255, 0.1)", + padding: "8px 10px", + borderRadius: "8px", + textDecoration: "none", + fontSize: "16px", + transition: "background-color 0.3s ease, transform 0.2s ease", + cursor: "pointer", + }, + + closeButton: { + position: "absolute", + top: "8px", + right: "8px", + background: "transparent", + border: "none", + color: "#fff", + fontSize: "20px", // Ajuste de tamaño + cursor: "pointer", + zIndex: 1002, + }, + graphGrid: { + display: "grid", + gridTemplateColumns: "repeat(auto-fit, minmax(180px, 1fr))", + gap: "12px", + padding: "12px", + }, + + graphCard: { + background: "#e6e6f0", + borderRadius: "10px", + boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)", + padding: "12px", // Ajuste de padding + textAlign: "center", + transition: "transform 0.2s ease, background-color 0.2s ease", + cursor: "pointer", + }, + form: { + display: "flex", + flexDirection: "column", + gap: "1rem", // Ajuste de gap + padding: "1rem", // Ajuste de padding + }, + formGroup: { + display: "flex", + flexDirection: "column", + }, + label: { + marginBottom: "0.3rem", // Ajuste de margen + fontWeight: "600", + color: "#444", + fontSize: "0.95rem", // Ajuste de tamaño de fuente + }, + input: { + padding: "0.5rem 0.8rem", // Ajuste de padding + fontSize: "0.95rem", // Ajuste de tamaño de fuente + borderRadius: "6px", + border: "1px solid #ccc", + outline: "none", + transition: "border-color 0.2s ease", + }, + inputFocus: { + borderColor: "rgb(130, 76, 175)", + }, + button: { + padding: "0.5rem 0.8rem", // Ajuste de padding + fontSize: "0.95rem", // Ajuste de tamaño de fuente + borderRadius: "6px", + border: "none", + backgroundColor: "rgb(130, 76, 175)", + color: "#fff", + fontWeight: "700", + cursor: "pointer", + transition: "background-color 0.3s ease", + }, + buttonHover: { + backgroundColor: "rgb(110, 60, 155)", + }, + errorText: { + color: "red", + marginTop: "0.5rem", // Ajuste de margen + fontWeight: "600", + }, + communityEventCard: { + borderRadius: "1rem", + padding: "1rem", // Ajuste de padding + color: "white", + display: "flex", + flexDirection: "column", + justifyContent: "flex-end", + height: "350px", // Ajuste de altura + maxWidth: "100%", + boxShadow: "0 8px 16px rgba(0, 0, 0, 0.3)", + margin: "1rem 0", // Ajuste de margen + position: "relative", + backgroundSize: "cover", + backgroundPosition: "center", + backgroundRepeat: "no-repeat", + width: "95vw", // Ajuste de ancho + }, + + communityEventOverlay: { + backgroundColor: "rgba(0, 0, 0, 0.6)", + borderRadius: "1rem", + padding: "1rem", // Ajuste de padding + height: "100%", + display: "flex", + flexDirection: "column", + justifyContent: "flex-end", + backdropFilter: "blur(2px)", + }, + + communityEventTitle: { + fontSize: "clamp(1.2rem, 3vw, 2rem)", // Ajuste de tamaño de fuente + fontWeight: "bold", + marginBottom: "0.5rem", // Ajuste de margen + textShadow: "1px 1px 5px rgba(0,0,0,0.5)", + }, + + communityEventText: { + fontSize: "1rem", // Ajuste de tamaño de fuente + lineHeight: "1.4", // Ajuste de line-height + textShadow: "1px 1px 3px rgba(0,0,0,0.5)", + marginBottom: "0.3rem", // Ajuste de margen + }, + + communityEventBadgeWrapper: { + position: "relative", + width: "2.5vw", + height: "2.5vw", + display: "flex", + alignItems: "center", + justifyContent: "center", + flexDirection: "column", + }, + + communityEventBadge: { + width: "2.5vw", + height: "2.5vw", + objectFit: "contain", + borderRadius: "50%", + border: "2px solid white", + backgroundColor: "rgba(255, 255, 255, 0.3)", + boxShadow: "0 4px 10px rgba(0,0,0,0.3)", + textAlign: "center", + }, + + communityEventBadgeText: { + position: "absolute", + bottom: "-1.5rem", + fontSize: "0.85rem", + color: "#fff", + fontWeight: "bold", + textShadow: "1px 1px 3px rgba(0,0,0,0.7)", + }, + communityEventBadgeContainer: { + display: "flex", + flexWrap: "wrap", + justifyContent: "center", + gap: "1.5rem", + padding: "2rem 3rem", + backgroundColor: "rgba(255, 255, 255, 0.2)", + borderRadius: "0 0 1rem 1rem", + marginTop: "auto", + alignItems: "center", + width: "100%", + }, + + communityEventAddButton: { + padding: "0.75rem 1rem", + fontSize: "1rem", + borderRadius: "6px", + border: "none", + backgroundColor: "#824CAF", + color: "#fff", + cursor: "pointer", + transition: "background-color 0.3s ease", + marginLeft: "1rem", + }, + + modalOverlay: { + position: "fixed", + top: 0, + left: 0, + width: "100vw", + height: "100vh", + backgroundColor: "rgba(0,0,0,0.5)", + display: "flex", + justifyContent: "center", + alignItems: "center", + zIndex: 2000, + }, + + modalContent: { + backgroundColor: "#fff", + borderRadius: "10px", + padding: "2rem", + width: "90%", + maxWidth: "400px", + boxShadow: "0 8px 16px rgba(0,0,0,0.3)", + position: "relative", + }, + + modalFormGroup: { + display: "flex", + flexDirection: "column", + marginBottom: "1rem", + }, + + modalInput: { + padding: "0.75rem 1rem", + fontSize: "1rem", + borderRadius: "6px", + border: "1px solid #ccc", + outline: "none", + marginTop: "0.5rem", + }, + + modalSubmitButton: { + padding: "0.75rem 1rem", + fontSize: "1rem", + borderRadius: "6px", + border: "none", + backgroundColor: "#4CAF50", + color: "#fff", + cursor: "pointer", + width: "100%", + }, + + modalCloseButton: { + position: "absolute", + top: "0.5rem", + right: "0.5rem", + background: "transparent", + border: "none", + fontSize: "1.5rem", + cursor: "pointer", + }, + +}; +export default styles; diff --git a/administration/src/utils/CommonData.ts b/administration/src/utils/CommonData.ts new file mode 100644 index 000000000..22250fe0f --- /dev/null +++ b/administration/src/utils/CommonData.ts @@ -0,0 +1,3 @@ +export class CommonData{ + static readonly BASE_URL = "https://routinefights.ddns.net:6342/"; +} diff --git a/administration/tailwind.config.js b/administration/tailwind.config.js new file mode 100644 index 000000000..c0958ec4a --- /dev/null +++ b/administration/tailwind.config.js @@ -0,0 +1,11 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + "./src/**/*.{js,jsx,ts,tsx}", + ], + theme: { + extend: {}, + }, + plugins: [], +} + diff --git a/administration/tsconfig.json b/administration/tsconfig.json new file mode 100644 index 000000000..a273b0cfc --- /dev/null +++ b/administration/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": [ + "src" + ] +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..aec204fac --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,51 @@ +version: '3.3' + +services: + app: + image: jonaykb/apiroutinefights:latest + container_name: apiroutinefights + restart: always + ports: + - "6342:8080" + environment: + - SPRING_NEO4J_URI=bolt://db:7687 + - SPRING_AUTHENTICATION_NEO4J_USER=neo4j + - SPRING_AUTHENTICATION_NEO4J_PASSWORD=1q2w3e4r + - MAIL_FROM=routinefights@gmail.com + - MAIL_PASSWORD=MAIL_PASSWORD + - JWT_SECRET=SECRET + depends_on: + - db + networks: + - apiNetwork + volumes: + - app_uploads:/$HOME/uploads + - /etc/letsencrypt:/etc/letsencrypt:ro + db: + image: neo4j:latest + volumes: + - /$HOME/neo4j/logs:/logs + - /$HOME/neo4j/config:/config + - /$HOME/neo4j/data:/data + - /$HOME/neo4j/plugins:/plugins + environment: + - NEO4J_AUTH=neo4j/1q2w3e4r + restart: always + ports: + - "7687:7687" + networks: + - apiNetwork + admin: + image: jonaykb/administrationroutinefights:latest + restart: always + ports: + - "8023:80" + networks: + - apiNetwork + volumes: + - /etc/letsencrypt:/etc/letsencrypt:ro +volumes: + db_data: + app_uploads: +networks: + apiNetwork: diff --git a/documentation/Classes.md b/documentation/Classes.md new file mode 100644 index 000000000..a75d8b44e --- /dev/null +++ b/documentation/Classes.md @@ -0,0 +1,127 @@ +# Entities (Nodes) + +## 1. User +- **id:** String (PK) +- **username:** String +- **email:** String +- **password:** String +- **nationality:** String +- **phoneNumber:** String +- **image:** String +- **createdAt:** Timestamp +- **updatedAt:** Timestamp +- **deletedAt:** Timestamp + +## 3. Post +- **id:** String (PK) +- **image:** String +- **streak:** Integer +- **points:** Integer +- **createdAt:** Timestamp +- **updatedAt:** Timestamp +- **deletedAt:** Timestamp +- **filedAt:** Timestamp + +## 4. Comment +- **id:** String (PK) +- **message:** String +- **createdAt:** Timestamp +- **updatedAt:** Timestamp +- **deletedAt:** Timestamp + +## 6. Report +- **id:** String (PK) +- **message:** String +- **createdAt:** Timestamp + +## 8. Badge +- **id:** String (PK) +- **image:** String +- **level:** Integer + +## 10. CommunityEvent +- **id:** String (PK) +- **name:** String +- **totalRequiered:** Integer +- **createdAt:** Timestamp + +## 12. Activity +- **id:** String (PK) +- **image:** String +- **name:** String +- **description:** String +- **timeRate:** String +- **timesRequired:** String +- **createdAt:** Timestamp +- **updatedAt:** Timestamp +- **deletedAt:** Timestamp + +## 14. Category +- **id:** String (PK) +- **name:** String + +## 16. Team +- **id:** String (PK) +- **name:** String +- **createdAt:** Timestamp +- **deletedAt:** Timestamp + +## 18. Meeting +- **id:** String (PK) +- **date:** Timestamp +- **latitude:** Float (10,6) +- **longitude:** Float (10,6) + +# Relationships + +- **FOLLOWS** + - Between: (User) → (User) + - Properties: createdAt, deletedAt + +- **POSTED** + - Between: (User) → (Post) + +- **RELATED_TO** + - Between: (Post) → (Activity) + +- **COMMENTED** + - Between: (User) → (Comment) + +- **ON** + - Between: (Comment) → (Post) + +- **REPLIED_TO** + - Between: (Comment) → (Comment) + - Properties: createdAt, deletedAt + +- **REPORTED** + - Between: (User) → (Report) + - Complementary: (Report) → (Post) + +- **HAS_BADGE** + - Between: (User) → (Badge) + +- **ASSOCIATED_WITH** + - Between: (Badge) → (CommunityEvent) + +- **CREATED_ACTIVITY** + - Between: (User) → (Activity) + +- **BELONGS_TO** + - Between: (Activity) → (Category) + +- **MEMBER_OF** + - Between: (User) → (Team) + - Properties: createdAt, deletedAt + +- **HAS_MEETING** + - Between: (Team) → (Meeting) + - Properties: createdAt, deletedAt + +- **ATTENDED** + - Between: (User) → (Meeting) + +- **PART_OF** + - Between: (Meeting) → (CommunityEvent) +- **RELATED** +- Between: (CommunityEvent) → (Activity) diff --git a/documentation/DatabaseDiagram.png b/documentation/DatabaseDiagram.png new file mode 100644 index 000000000..8e3896e7b Binary files /dev/null and b/documentation/DatabaseDiagram.png differ diff --git "a/documentation/Entity\342\200\223Relationship Diagram.drawio.png" "b/documentation/Entity\342\200\223Relationship Diagram.drawio.png" new file mode 100644 index 000000000..38d18c3fd Binary files /dev/null and "b/documentation/Entity\342\200\223Relationship Diagram.drawio.png" differ diff --git a/documentation/RoutineFightsStructureService.drawio.png b/documentation/RoutineFightsStructureService.drawio.png new file mode 100644 index 000000000..e1ca7b00a Binary files /dev/null and b/documentation/RoutineFightsStructureService.drawio.png differ diff --git "a/documentation/databaseDiagrams/Entity\342\200\223Relationship Diagram.drawio.png" "b/documentation/databaseDiagrams/Entity\342\200\223Relationship Diagram.drawio.png" deleted file mode 100644 index 55992a7fa..000000000 Binary files "a/documentation/databaseDiagrams/Entity\342\200\223Relationship Diagram.drawio.png" and /dev/null differ diff --git a/documentation/mockup.png b/documentation/mockup.png new file mode 100644 index 000000000..acb06c770 Binary files /dev/null and b/documentation/mockup.png differ diff --git a/img/logoRoutineFights.png b/img/logoRoutineFights.png new file mode 100644 index 000000000..b40b03075 Binary files /dev/null and b/img/logoRoutineFights.png differ diff --git a/img/routineFightsApk.png b/img/routineFightsApk.png new file mode 100644 index 000000000..b6138ff3f Binary files /dev/null and b/img/routineFightsApk.png differ